From fb9207c40c53b9a795d434aaa854b6f4347095eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=C4=8Curi=C4=87?= Date: Sat, 28 Oct 2023 23:51:09 +0200 Subject: [PATCH] Release 1.1.0 --- .changeset/config.json | 4 +- .gitignore | 12 +- .vscode/settings.json | 34 - README.md | 21 +- apps/example-react/CHANGELOG.md | 4 +- apps/example-react/package.json | 28 +- apps/example-react/public/vite.svg | 1 - apps/example-solidjs-dist/.env | 6 - apps/example-solidjs-dist/.eslintrc.cjs | 53 - apps/example-solidjs-dist/.gitignore | 6 - apps/example-solidjs-dist/CHANGELOG.md | 49 - apps/example-solidjs-dist/README.md | 32 - apps/example-solidjs-dist/index.html | 20 - .../lint-staged.config.cjs | 7 - apps/example-solidjs-dist/netlify.toml | 8 - apps/example-solidjs-dist/package.json | 50 - apps/example-solidjs-dist/serve.json | 27 - apps/example-solidjs-dist/src/App.tsx | 128 - .../src/ImageDataDisplay.tsx | 47 - .../src/ResultDisplay.tsx | 59 - .../src/assets/favicon.ico | Bin 15086 -> 0 bytes apps/example-solidjs-dist/src/index.css | 12 - apps/example-solidjs-dist/src/index.tsx | 16 - apps/example-solidjs-dist/src/vite-env.d.ts | 20 - apps/example-solidjs-dist/tsconfig.json | 21 - apps/example-solidjs-dist/vite.config.ts | 82 - apps/example-solidjs/.gitignore | 3 +- apps/example-solidjs/CHANGELOG.md | 8 +- apps/example-solidjs/README.md | 32 - apps/example-solidjs/index.html | 2 +- apps/example-solidjs/package.json | 67 +- apps/example-solidjs/src/App.tsx | 14 +- apps/example-solidjs/src/ResultDisplay.tsx | 2 +- apps/example-solidjs/tsconfig.json | 10 +- apps/example-solidjs/vite.config.ts | 9 +- apps/example-vanilla-ts-headless/CHANGELOG.md | 4 +- apps/example-vanilla-ts-headless/package.json | 22 +- apps/example-vanilla-ts/CHANGELOG.md | 4 +- apps/example-vanilla-ts/package.json | 22 +- package.json | 27 +- packages/capture-main/.eslintrc.cjs | 30 +- packages/capture-main/CHANGELOG.md | 7 - packages/capture-main/package.json | 93 +- packages/capture-main/src/core/CaptureSdk.ts | 691 ++++ .../src/{ => core}/ConfiguredCamera.ts | 0 packages/capture-main/src/core/DirectApi.ts | 224 + .../src/{ => core}/FeedbackParser.ts | 58 +- .../src/{ => core}/cameraUtils.ts | 0 .../src/{ => core}/captureFrame.ts | 24 +- .../src/core/createCustomImageData.ts} | 19 +- .../src/{ => core}/createProxyWorker.ts | 6 +- .../src/{ => core}/deviceOrientation.ts | 0 .../src/{ => core}/getCrossOriginWorkerURL.ts | 0 .../capture-main/src/{ => core}/getUserId.ts | 4 + .../src/{ => core}/imageDataUtils.ts | 0 .../capture-main/src/{ => core}/licencing.ts | 0 packages/capture-main/src/{ => core}/utils.ts | 0 .../src/{ => core}/zustandStore.ts | 61 +- packages/capture-main/src/createCaptureSdk.ts | 769 ---- packages/capture-main/src/devUtils.ts | 6 +- .../capture-main/src/{main.ts => index.ts} | 24 +- .../src/typeUtils.ts | 9 +- packages/capture-main/src/types.d.ts | 14 - .../src/ui}/CameraSelector.tsx | 1 + .../src/ui}/CaptureScreen.tsx | 23 +- .../src/ui}/CustomButton.tsx | 0 .../src/ui}/DebugControls.tsx | 0 .../src/ui}/ErrorAlert.tsx | 6 +- .../src => capture-main/src/ui}/Header.tsx | 0 .../src/ui}/HelpButton.tsx | 2 +- .../src/ui}/HelpDialog.tsx | 0 .../src/ui}/LocalizationContext.tsx | 0 .../src/ui}/OnboardingDialog.tsx | 0 .../src/ui}/RootComponent.tsx | 2 +- .../src/ui}/ScoreDisplay.tsx | 2 +- .../src/ui}/StoreContext.tsx | 14 +- .../src/ui}/UiFeedbackOverlay.tsx | 77 +- .../src/ui}/assets/camera.svg | 0 .../src/ui}/assets/check.svg | 0 .../src/ui}/assets/close.svg | 0 .../src/ui}/assets/general-c-chevron-down.svg | 0 .../ui}/assets/help/help_fields_visible.svg | 0 .../src/ui}/assets/help/help_harsh_light.svg | 0 .../src/ui}/assets/help/help_keep_still.svg | 0 .../src/ui}/assets/help/onboarding.svg | 0 .../src/ui}/assets/icons/icon-back.svg | 0 .../src/ui}/assets/icons/icon-camera.svg | 0 .../src/ui}/assets/icons/icon-close.svg | 0 .../ui}/assets/icons/icon-image-capture.svg | 0 .../src/ui}/assets/icons/icon-question.svg | 0 .../src/ui}/assets/microblink.svg | 0 .../src/ui}/assets/reticles/card-back.svg | 0 .../src/ui}/assets/reticles/card-front.svg | 0 .../src/ui}/assets/reticles/done.svg | 0 .../src/ui}/assets/reticles/full.svg | 0 .../src/ui}/assets/reticles/searching.svg | 0 .../src/ui}/assets/reticles/spin.svg | 0 .../src/ui}/createCaptureUi.tsx | 11 +- .../src/ui}/dialogStyles.ts | 2 +- .../src/ui}/feedbackMessages.ts | 7 +- .../src => capture-main/src/ui}/locales/en.ts | 4 +- .../src/ui}/root-styles.scss | 2 + .../svgo.config.cjs | 0 packages/capture-main/tsconfig.json | 13 +- packages/capture-main/vite.config.mts | 27 +- packages/capture-published/.gitignore | 4 + packages/capture-published/CHANGELOG.md | 92 + .../api-extractor.json | 11 +- packages/capture-published/create-npm.mts | 102 + .../capture-published/package-description.md | 1 + packages/capture-published/package.json | 60 + .../tsconfig.json | 4 +- .../turbo.json | 2 +- packages/capture-ui/.eslintrc.cjs | 53 - packages/capture-ui/.gitignore | 5 - packages/capture-ui/CHANGELOG.md | 43 - packages/capture-ui/lint-staged.config.cjs | 7 - packages/capture-ui/package.json | 75 - packages/capture-ui/src/index.ts | 14 - packages/capture-ui/tsconfig.json | 20 - packages/capture-ui/vite.config.ts | 54 - packages/capture-wasm/CHANGELOG.md | 4 + .../dist/advanced-threads/capture-wasm.data | Bin 1573062 -> 1573062 bytes .../dist/advanced-threads/capture-wasm.js | 3024 +++++++------- .../dist/advanced-threads/capture-wasm.wasm | Bin 829863 -> 836983 bytes .../dist/advanced/capture-wasm.data | Bin 1573062 -> 1573062 bytes .../dist/advanced/capture-wasm.js | 2900 ++++++------- .../dist/advanced/capture-wasm.wasm | Bin 797468 -> 811792 bytes .../capture-wasm/dist/basic/capture-wasm.data | Bin 1573062 -> 1573062 bytes .../capture-wasm/dist/basic/capture-wasm.js | 2949 +++++++------- .../capture-wasm/dist/basic/capture-wasm.wasm | Bin 711318 -> 716041 bytes packages/capture-wasm/package.json | 30 +- packages/capture-wasm/src/Analyzer.ts | 41 +- packages/capture-wasm/src/AnalyzerResult.ts | 24 +- packages/capture-wasm/src/AnalyzerSettings.ts | 16 +- .../capture-wasm/src/FrameAnalysisResult.ts | 44 +- packages/capture-wasm/src/wasm-module.ts | 2 + packages/capture-worker/CHANGELOG.md | 6 - packages/capture-worker/package.json | 52 +- packages/capture-worker/src/worker.ts | 250 +- packages/capture/.gitignore | 5 - packages/capture/CHANGELOG.md | 65 - packages/capture/README.md | 177 - packages/capture/duplicate-types.mts | 3 - packages/capture/npm-publish/README.md | 177 - packages/capture/npm-publish/package.json | 32 - packages/capture/package.json | 62 - packages/capture/src/index.ts | 13 - packages/capture/vite.config.mts | 48 - packages/tsconfig/base.json | 2 +- packages/tsconfig/package.json | 4 +- packages/utils/package.json | 10 +- packages/utils/tsconfig.json | 1 + pnpm-lock.yaml | 3607 +++++++++-------- pnpm-workspace.yaml | 2 +- syncpack.config.js | 24 + 156 files changed, 8423 insertions(+), 8903 deletions(-) delete mode 100644 .vscode/settings.json delete mode 100644 apps/example-react/public/vite.svg delete mode 100644 apps/example-solidjs-dist/.env delete mode 100644 apps/example-solidjs-dist/.eslintrc.cjs delete mode 100644 apps/example-solidjs-dist/.gitignore delete mode 100644 apps/example-solidjs-dist/CHANGELOG.md delete mode 100644 apps/example-solidjs-dist/README.md delete mode 100644 apps/example-solidjs-dist/index.html delete mode 100644 apps/example-solidjs-dist/lint-staged.config.cjs delete mode 100644 apps/example-solidjs-dist/netlify.toml delete mode 100644 apps/example-solidjs-dist/package.json delete mode 100644 apps/example-solidjs-dist/serve.json delete mode 100644 apps/example-solidjs-dist/src/App.tsx delete mode 100644 apps/example-solidjs-dist/src/ImageDataDisplay.tsx delete mode 100644 apps/example-solidjs-dist/src/ResultDisplay.tsx delete mode 100644 apps/example-solidjs-dist/src/assets/favicon.ico delete mode 100644 apps/example-solidjs-dist/src/index.css delete mode 100644 apps/example-solidjs-dist/src/index.tsx delete mode 100644 apps/example-solidjs-dist/src/vite-env.d.ts delete mode 100644 apps/example-solidjs-dist/tsconfig.json delete mode 100644 apps/example-solidjs-dist/vite.config.ts delete mode 100644 apps/example-solidjs/README.md create mode 100644 packages/capture-main/src/core/CaptureSdk.ts rename packages/capture-main/src/{ => core}/ConfiguredCamera.ts (100%) create mode 100644 packages/capture-main/src/core/DirectApi.ts rename packages/capture-main/src/{ => core}/FeedbackParser.ts (90%) rename packages/capture-main/src/{ => core}/cameraUtils.ts (100%) rename packages/capture-main/src/{ => core}/captureFrame.ts (61%) rename packages/{capture-ui/src/vite-env.d.ts => capture-main/src/core/createCustomImageData.ts} (53%) rename packages/capture-main/src/{ => core}/createProxyWorker.ts (90%) rename packages/capture-main/src/{ => core}/deviceOrientation.ts (100%) rename packages/capture-main/src/{ => core}/getCrossOriginWorkerURL.ts (100%) rename packages/capture-main/src/{ => core}/getUserId.ts (87%) rename packages/capture-main/src/{ => core}/imageDataUtils.ts (100%) rename packages/capture-main/src/{ => core}/licencing.ts (100%) rename packages/capture-main/src/{ => core}/utils.ts (100%) rename packages/capture-main/src/{ => core}/zustandStore.ts (64%) delete mode 100644 packages/capture-main/src/createCaptureSdk.ts rename packages/capture-main/src/{main.ts => index.ts} (52%) rename packages/{capture-ui => capture-main}/src/typeUtils.ts (77%) delete mode 100644 packages/capture-main/src/types.d.ts rename packages/{capture-ui/src => capture-main/src/ui}/CameraSelector.tsx (99%) rename packages/{capture-ui/src => capture-main/src/ui}/CaptureScreen.tsx (88%) rename packages/{capture-ui/src => capture-main/src/ui}/CustomButton.tsx (100%) rename packages/{capture-ui/src => capture-main/src/ui}/DebugControls.tsx (100%) rename packages/{capture-ui/src => capture-main/src/ui}/ErrorAlert.tsx (97%) rename packages/{capture-ui/src => capture-main/src/ui}/Header.tsx (100%) rename packages/{capture-ui/src => capture-main/src/ui}/HelpButton.tsx (98%) rename packages/{capture-ui/src => capture-main/src/ui}/HelpDialog.tsx (100%) rename packages/{capture-ui/src => capture-main/src/ui}/LocalizationContext.tsx (100%) rename packages/{capture-ui/src => capture-main/src/ui}/OnboardingDialog.tsx (100%) rename packages/{capture-ui/src => capture-main/src/ui}/RootComponent.tsx (95%) rename packages/{capture-ui/src => capture-main/src/ui}/ScoreDisplay.tsx (97%) rename packages/{capture-ui/src => capture-main/src/ui}/StoreContext.tsx (97%) rename packages/{capture-ui/src => capture-main/src/ui}/UiFeedbackOverlay.tsx (79%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/camera.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/check.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/close.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/general-c-chevron-down.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/help/help_fields_visible.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/help/help_harsh_light.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/help/help_keep_still.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/help/onboarding.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/icons/icon-back.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/icons/icon-camera.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/icons/icon-close.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/icons/icon-image-capture.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/icons/icon-question.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/microblink.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/reticles/card-back.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/reticles/card-front.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/reticles/done.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/reticles/full.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/reticles/searching.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/assets/reticles/spin.svg (100%) rename packages/{capture-ui/src => capture-main/src/ui}/createCaptureUi.tsx (93%) rename packages/{capture-ui/src => capture-main/src/ui}/dialogStyles.ts (97%) rename packages/{capture-ui/src => capture-main/src/ui}/feedbackMessages.ts (82%) rename packages/{capture-ui/src => capture-main/src/ui}/locales/en.ts (94%) rename packages/{capture-ui/src => capture-main/src/ui}/root-styles.scss (99%) rename packages/{capture-ui => capture-main}/svgo.config.cjs (100%) create mode 100644 packages/capture-published/.gitignore create mode 100644 packages/capture-published/CHANGELOG.md rename packages/{capture => capture-published}/api-extractor.json (99%) create mode 100644 packages/capture-published/create-npm.mts create mode 100644 packages/capture-published/package-description.md create mode 100644 packages/capture-published/package.json rename packages/{capture => capture-published}/tsconfig.json (78%) rename packages/{capture-ui => capture-published}/turbo.json (70%) delete mode 100644 packages/capture-ui/.eslintrc.cjs delete mode 100644 packages/capture-ui/.gitignore delete mode 100644 packages/capture-ui/CHANGELOG.md delete mode 100644 packages/capture-ui/lint-staged.config.cjs delete mode 100644 packages/capture-ui/package.json delete mode 100644 packages/capture-ui/src/index.ts delete mode 100644 packages/capture-ui/tsconfig.json delete mode 100644 packages/capture-ui/vite.config.ts delete mode 100644 packages/capture/.gitignore delete mode 100644 packages/capture/CHANGELOG.md delete mode 100644 packages/capture/README.md delete mode 100644 packages/capture/duplicate-types.mts delete mode 100644 packages/capture/npm-publish/README.md delete mode 100644 packages/capture/npm-publish/package.json delete mode 100644 packages/capture/package.json delete mode 100644 packages/capture/src/index.ts delete mode 100644 packages/capture/vite.config.mts create mode 100644 syncpack.config.js diff --git a/.changeset/config.json b/.changeset/config.json index 494d17f..2caca8e 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -8,8 +8,8 @@ "capture-main", "capture-wasm", "capture-worker", - "capture-ui", - "@microblink/capture" + "@microblink/capture", + "example-*" ] ], "access": "public", diff --git a/.gitignore b/.gitignore index 93cfad9..da31bef 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ # Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode,macos,conan,cmake,c++,node .turbo + +# Python virtual environments .venv ### C++ ### @@ -51,6 +53,8 @@ install_manifest.txt compile_commands.json CTestTestfile.cmake _deps +CMakeUserPresets.json +CMakeSettings.json ### CMake Patch ### # External projects @@ -58,7 +62,6 @@ _deps ### Conan ### # Conan build information -conan.lock conanbuildinfo.* conaninfo.txt graph_info.json @@ -275,3 +278,10 @@ dist # Local Netlify folder .netlify + +# Python virtual environment +.venv + +# vim files +Session.vim +*.sw? \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 2d078e7..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "typescript.tsdk": "node_modules/typescript/lib", - "cmake.sourceDirectory": "${workspaceFolder}/packages/capture-wasm/binding/Source", - "cmake.configureOnEdit": false, - "cmake.copyCompileCommands": "${workspaceFolder}/compile_commands.json", - "cmake.configureOnOpen": false, - "clangd.arguments": [ - "-header-insertion=never", - "-query-driver=/Users/ivan/.conan/data/emsdk_installer/3.1.32/microblink/stable/package/3c9d8fb1b383ce27cf8b0942dcbdbb6add8cbee9/upstream/emscripten/em++" - ], - "svg.preview.background": "dark-transparent", - "cSpell.words": [ - "acab", - "Baltazar", - "clsx", - "comlink", - "deepmerge", - "ecsstatic", - "Embind", - "Emscripten", - "kobalte", - "linkcode", - "motionone", - "proxified", - "pthreads", - "rvfc", - "stringifying", - "Tbrand", - "tsbuildinfo", - "userid", - "wessberg", - "zustand" - ] -} diff --git a/README.md b/README.md index 513bf5f..4cd65bc 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ The Capture Browser SDK gives you the ability to auto-capture high-quality images of identity documents in a user-friendly way. The SDK provides you with a rectified image of the document, ensuring a high success rate in extracting document text or verifying the document's validity. -Users are guided to avoid glare, blurred images, bad lighting conditions, fingers over the document, or too much tilt. The SDK is able to recognize if a document is single-sided (i.e., passport) or double-sided (i.e., driving license) and prompt the user to scan the back side of the document when needed. +Users are guided to avoid glare, blurred images, bad lighting conditions, fingers covering the document, or too much tilt. The SDK is able to recognize if a document is single-sided (i.e., passport) or double-sided (i.e., driving license) and prompt the user to scan the back side of the document when needed. In the results, you can obtain a cropped, perspective-corrected image of the document, along with the original frame. These can be processed by your webapp in any way required. The SDK is lightweight and can be easily integrated into your webapp, blending seamlessly with your design. @@ -25,7 +25,7 @@ pnpm add @microblink/capture ## Obtaining a licence -A valid license key is required to initialize scanning. You can request a free trial license key after registering on [Microblink Developer Hub](https://account.microblink.com/signin). The license is bound to the application ID of your app. +A valid license key is required to initialize scanning. You can request a free trial license key after registering on [Microblink Developer Hub](https://account.microblink.com/signin). The license is bound to the domain of your app. ## Hosting environment @@ -39,7 +39,7 @@ Cross-Origin-Opener-Policy: same-origin Otherwise, you will only be able to run the single-threaded version of the SDK. -In order to load the accompanying Wasm files and Web Workers, you also need to host them locally on your dev server. These files can be found inside the `node_modules/@microblink/capture/dist/resources` directory after installation. +In order to load the accompanying Wasm files and Web Workers, you also need to host them locally on your dev server. These files can be found inside the `node_modules/@microblink/capture/dist/resources` directory after installation. The `/resources` directory must be hosted without modification of the directory name or its contents. The dev environments for the example apps have these set and you can use them as a reference. @@ -159,6 +159,21 @@ All components rendered by the UI are nested under `.mb-style-scope` which provi You can find details on the internal state of the capture process using the [`onFrameAnalysis`](/packages/capture-main/src/createCaptureSdk.ts#57) callback. This callback will provide you with an `ImageData` instance of the previously processed frame and the [`FrameAnalysisResult`](/packages/capture-wasm/src/FrameAnalysisResult.ts). +### Low-level access Direct API + +This mode gives users the capability to directly interact with the `Analyzer` instance, bypassing the provided functionality in the Capture SDK such as camera and video management, user feedback, callbacks and state management. + +```typescript +import { createDirectApi } from "@microblink/capture"; + +const directApi = await createDirectApi({ + licenseKey: "YOUR_LICENCE", +}); + +// The user is free to use methods available on +// the `directApi` to fit their use case +``` + ## Troubleshooting ### Integration problems diff --git a/apps/example-react/CHANGELOG.md b/apps/example-react/CHANGELOG.md index e39af65..bd18415 100644 --- a/apps/example-react/CHANGELOG.md +++ b/apps/example-react/CHANGELOG.md @@ -1,11 +1,11 @@ # example-react -## 0.0.7 +## 1.1.0 ### Patch Changes - Updated dependencies - - @microblink/capture@1.0.8 + - @microblink/capture@1.1.0 ## 0.0.6 diff --git a/apps/example-react/package.json b/apps/example-react/package.json index a6259fd..02fb594 100644 --- a/apps/example-react/package.json +++ b/apps/example-react/package.json @@ -1,31 +1,33 @@ { "name": "example-react", "private": true, - "version": "0.0.7", - "type": "module", + "version": "1.1.0", "scripts": { - "dev": "vite", "build": "tsc && vite build", + "clean": "rimraf .turbo types dist public/resources *.tsbuildinfo", + "dev": "vite", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview" }, + "type": "module", "dependencies": { - "@microblink/capture": "workspace:^", + "@microblink/capture": "workspace:*", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { - "@mb/utils": "workspace:^", - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "@typescript-eslint/eslint-plugin": "^6.1.0", - "@typescript-eslint/parser": "^6.1.0", - "@vitejs/plugin-react": "^4.0.3", - "eslint": "^8.45.0", + "@mb/utils": "workspace:*", + "@types/react": "^18.2.32", + "@types/react-dom": "^18.2.14", + "@typescript-eslint/eslint-plugin": "^6.9.0", + "@typescript-eslint/parser": "^6.9.0", + "@vitejs/plugin-react": "^4.1.0", + "eslint": "^8.52.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.3", - "typescript": "^5.1.6", - "vite": "^4.4.6", + "rimraf": "^5.0.5", + "typescript": "^5.2.2", + "vite": "^4.5.0", "vite-plugin-mkcert": "^1.16.0", "zx": "^7.2.3" } diff --git a/apps/example-react/public/vite.svg b/apps/example-react/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/apps/example-react/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/example-solidjs-dist/.env b/apps/example-solidjs-dist/.env deleted file mode 100644 index 709a8fb..0000000 --- a/apps/example-solidjs-dist/.env +++ /dev/null @@ -1,6 +0,0 @@ -# For development, create a .env.local or a .env.production using this template -# Never put your licence key in this file as it will be commited - -# https://vitejs.dev/guide/env-and-mode.html#env-files - -VITE_LICENCE_KEY=PLACE_YOUR_LICENCE_KEY_HERE diff --git a/apps/example-solidjs-dist/.eslintrc.cjs b/apps/example-solidjs-dist/.eslintrc.cjs deleted file mode 100644 index 4b6a985..0000000 --- a/apps/example-solidjs-dist/.eslintrc.cjs +++ /dev/null @@ -1,53 +0,0 @@ -const { defineConfig } = require("eslint-define-config"); - -module.exports = defineConfig({ - root: true, - - parserOptions: { - ecmaVersion: "2022", - sourceType: "module", - }, - - overrides: [ - { - files: ["src/**/*.{ts,tsx}"], - plugins: ["@typescript-eslint", "solid"], - parser: "@typescript-eslint/parser", - // have to duplicate in override... - rules: { - "@typescript-eslint/no-unused-vars": 0, - // the following two are causing errors in vscode. See: - // https://typescript-eslint.io/linting/troubleshooting/#changes-to-one-file-are-not-reflected-when-linting-other-files-in-my-ide - "@typescript-eslint/no-unsafe-assignment": 0, - "@typescript-eslint/no-unsafe-member-access": 0, - // only use in tsx - "@typescript-eslint/no-non-null-assertion": 0, - "@typescript-eslint/consistent-type-definitions": 0, - "prefer-const": 0, - }, - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json"], - }, - extends: [ - "eslint:recommended", - "plugin:solid/typescript", - "plugin:@typescript-eslint/recommended-type-checked", - "plugin:@typescript-eslint/stylistic-type-checked", - "prettier", - ], - }, - { - files: ["**/*.{js,mjs,cjs}"], - env: { - node: true, - browser: true, - es2021: true, - }, - extends: ["eslint:recommended"], - rules: { - "no-unused-vars": 0, - }, - }, - ], -}); diff --git a/apps/example-solidjs-dist/.gitignore b/apps/example-solidjs-dist/.gitignore deleted file mode 100644 index cd8a19d..0000000 --- a/apps/example-solidjs-dist/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -node_modules -dist -public -types -certs -*.local \ No newline at end of file diff --git a/apps/example-solidjs-dist/CHANGELOG.md b/apps/example-solidjs-dist/CHANGELOG.md deleted file mode 100644 index 64a0042..0000000 --- a/apps/example-solidjs-dist/CHANGELOG.md +++ /dev/null @@ -1,49 +0,0 @@ -# example-solidjs-dist - -## 0.0.7 - -### Patch Changes - -- Updated dependencies - - @microblink/capture@1.0.8 - -## 0.0.6 - -### Patch Changes - -- Updated dependencies [15bde2b] - - @microblink/capture@1.0.7 - -## 0.0.5 - -### Patch Changes - -- @microblink/capture@1.0.6 - -## 0.0.4 - -### Patch Changes - -- Updated dependencies - - @microblink/capture@1.0.5 - -## 0.0.3 - -### Patch Changes - -- Updated dependencies - - @microblink/capture@1.0.4 - -## 0.0.2 - -### Patch Changes - -- Updated dependencies - - @microblink/capture@1.0.3 - -## 0.0.1 - -### Patch Changes - -- Updated dependencies - - @microblink/capture@1.0.2 diff --git a/apps/example-solidjs-dist/README.md b/apps/example-solidjs-dist/README.md deleted file mode 100644 index 5a26491..0000000 --- a/apps/example-solidjs-dist/README.md +++ /dev/null @@ -1,32 +0,0 @@ -## Usage - -To install: - -```bash -$ npm install -``` - -## Available Scripts - -In the project directory, you can run: - -### `npm dev` or `npm start` - -Runs the app in the development mode.
-Open [https://localhost:3000](https://localhost:3000) to view it in the browser. - -The page will reload if you make edits.
- -### `npm run build` - -Builds the app for production to the `dist` folder.
-It correctly bundles Solid in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.
-Your app is ready to be deployed! - -## Deployment - -You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.) - -To override the licence key in the `.env` file, create a new one named `.env.production`. diff --git a/apps/example-solidjs-dist/index.html b/apps/example-solidjs-dist/index.html deleted file mode 100644 index bbcef4b..0000000 --- a/apps/example-solidjs-dist/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - BlinkID Capture Demo - - - -
- - - - diff --git a/apps/example-solidjs-dist/lint-staged.config.cjs b/apps/example-solidjs-dist/lint-staged.config.cjs deleted file mode 100644 index 13dc136..0000000 --- a/apps/example-solidjs-dist/lint-staged.config.cjs +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - "*.{js,jsx,ts,tsx}": [() => "eslint --max-warnings=0"], - "*.{ts,tsx}": [ - () => "tsc-files --skipLibCheck --emitDeclarationOnly false --noEmit", - ], - "*.{js,jsx,ts,tsx,css,md}": ["prettier --write"], -}; diff --git a/apps/example-solidjs-dist/netlify.toml b/apps/example-solidjs-dist/netlify.toml deleted file mode 100644 index 3de7dc3..0000000 --- a/apps/example-solidjs-dist/netlify.toml +++ /dev/null @@ -1,8 +0,0 @@ -[[headers]] - for = "/*" - [headers.values] - Cross-Origin-Embedder-Policy = "require-corp" - Cross-Origin-Opener-Policy = "same-origin" - - for = "/resources/*" - Cache-Control = "max-age=300" diff --git a/apps/example-solidjs-dist/package.json b/apps/example-solidjs-dist/package.json deleted file mode 100644 index 23404bd..0000000 --- a/apps/example-solidjs-dist/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "example-solidjs-dist", - "version": "0.0.7", - "private": true, - "type": "module", - "description": "This example runs uses the @microblink/capture bundled module", - "scripts": { - "clean": "rimraf dist public .turbo types tsconfig.tsbuildinfo", - "dev": "vite", - "watch": "vite build --watch --mode development", - "build": "vite build", - "build:js-dev": "vite build --mode development", - "preview": "vite preview", - "make-certs": "mkcert-cli -y --outDir certs", - "serve": "pnpm make-certs && serve --ssl-cert ./certs/dev.cert --ssl-key ./certs/dev.key", - "lint:eslint": "eslint ./src --max-warnings 0", - "lint:types": "tsc --emitDeclarationOnly false --noEmit", - "lint": "concurrently pnpm:lint:types pnpm:lint:eslint" - }, - "license": "MIT", - "devDependencies": { - "@acab/ecsstatic": "^0.7.1", - "@mb/utils": "workspace:*", - "@styled/typescript-styled-plugin": "^1.0.0", - "@typescript-eslint/eslint-plugin": "^6.1.0", - "concurrently": "^8.2.0", - "eslint": "^8.45.0", - "eslint-config-prettier": "^8.8.0", - "eslint-define-config": "^1.21.0", - "eslint-plugin-solid": "^0.12.1", - "mkcert-cli": "^1.5.0", - "prettier": "^3.0.0", - "rimraf": "^5.0.1", - "sass": "^1.64.0", - "serve": "^14.2.0", - "tsc-files": "^1.1.4", - "tsconfig": "workspace:*", - "typescript": "^5.1.6", - "vite": "^4.4.6", - "vite-plugin-full-reload": "^1.0.5", - "vite-plugin-mkcert": "^1.16.0", - "vite-plugin-solid": "^2.7.0", - "vite-plugin-solid-svg": "^0.6.4", - "zx": "^7.2.3" - }, - "dependencies": { - "@microblink/capture": "workspace:^", - "solid-js": "^1.7.8" - } -} diff --git a/apps/example-solidjs-dist/serve.json b/apps/example-solidjs-dist/serve.json deleted file mode 100644 index 9d2a3b1..0000000 --- a/apps/example-solidjs-dist/serve.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "public": "dist", - "headers": [ - { - "source": "**/*", - "headers": [ - { - "key": "Cross-Origin-Embedder-Policy", - "value": "require-corp" - }, - { - "key": "Cross-Origin-Opener-Policy", - "value": "same-origin" - } - ] - }, - { - "source": "resources/**/*", - "headers": [ - { - "key": "Cache-Control", - "value": "max-age=300" - } - ] - } - ] -} diff --git a/apps/example-solidjs-dist/src/App.tsx b/apps/example-solidjs-dist/src/App.tsx deleted file mode 100644 index 1902008..0000000 --- a/apps/example-solidjs-dist/src/App.tsx +++ /dev/null @@ -1,128 +0,0 @@ -/** - * Copyright (c) 2023 Microblink Ltd. All rights reserved. - * - * ANY UNAUTHORIZED USE OR SALE, DUPLICATION, OR DISTRIBUTION - * OF THIS PROGRAM OR ANY OF ITS PARTS, IN SOURCE OR BINARY FORMS, - * WITH OR WITHOUT MODIFICATION, WITH THE PURPOSE OF ACQUIRING - * UNLAWFUL MATERIAL OR ANY OTHER BENEFIT IS PROHIBITED! - * THIS PROGRAM IS PROTECTED BY COPYRIGHT LAWS AND YOU MAY NOT - * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. - */ - -/* @refresh reload */ - -import { - AnalyzerResult, - CaptureSdkSettings, - CaptureComponent, - createCaptureUi, -} from "@microblink/capture"; -import "@microblink/capture/style.css"; -import { - Component, - Match, - Show, - Switch, - batch, - createEffect, - createSignal, - onCleanup, -} from "solid-js"; -import { ResultDisplay } from "./ResultDisplay"; - -export const App: Component = () => { - let mountPoint: HTMLDivElement; - - const [captureComponent, setCaptureComponent] = - createSignal(); - const [result, setResult] = createSignal(); - const [loading, setLoading] = createSignal(false); - - const sdkSettings: CaptureSdkSettings = { - licenseKey: import.meta.env.VITE_LICENCE_KEY, - callbacks: { - // onFrameAnalysis: () => void captureComponent()?.captureSdk?.resetAnalyzer(), - onCaptureResult: (result) => { - setResult(result); - captureComponent()!.dismount(); - }, - }, - }; - - const load = async () => { - setLoading(true); - // THE MAIN PART - const captureComponent = await createCaptureUi({ - sdkSettings, - }); - - // janky way of pausing capture for dev purposes - // captureComponent.api?.subscribe( - // (s) => s.isCapturing, - // (x) => x && captureComponent.api?.pauseCapture(), - // ); - - // subscribe to error state - // captureComponent.api?.subscribe( - // (s) => s.errorState, - // (x) => { - // console.error(x); - // captureComponent.dismount(); - // }, - // ); - - batch(() => { - setCaptureComponent(captureComponent); - setLoading(false); - // reset - setResult(undefined); - }); - }; - - // load on mount - createEffect(() => { - void load(); - }); - - // subscribe to dismount - createEffect(() => { - const captureSdk = captureComponent()?.captureSdk; - - if (!captureSdk) { - return; - } - - const unsubDismount = captureSdk.subscribe( - (s) => s.videoElement, - (videoElement) => { - if (!videoElement) { - setCaptureComponent(undefined); - } - }, - ); - - onCleanup(() => { - unsubDismount(); - }); - }); - - return ( -
-
-

This content is always visible to test portalling.

- - {/* TODO: localize these */} - - Loading SDK - - - - - - - - {(result) => } - -
- ); -}; diff --git a/apps/example-solidjs-dist/src/ImageDataDisplay.tsx b/apps/example-solidjs-dist/src/ImageDataDisplay.tsx deleted file mode 100644 index 9cc5d8b..0000000 --- a/apps/example-solidjs-dist/src/ImageDataDisplay.tsx +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Copyright (c) 2023 Microblink Ltd. All rights reserved. - * - * ANY UNAUTHORIZED USE OR SALE, DUPLICATION, OR DISTRIBUTION - * OF THIS PROGRAM OR ANY OF ITS PARTS, IN SOURCE OR BINARY FORMS, - * WITH OR WITHOUT MODIFICATION, WITH THE PURPOSE OF ACQUIRING - * UNLAWFUL MATERIAL OR ANY OTHER BENEFIT IS PROHIBITED! - * THIS PROGRAM IS PROTECTED BY COPYRIGHT LAWS AND YOU MAY NOT - * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. - */ - -import { Component, createEffect, createSignal } from "solid-js"; - -export const ImageDataDisplay: Component<{ imageData: ImageData }> = ( - props, -) => { - const [canvas, setCanvas] = createSignal(); - - createEffect(() => { - let ctx: CanvasRenderingContext2D | null; - const imageData = props.imageData; - - const $canvas = canvas(); - if (!$canvas) { - return; - } - - if (!(ctx = $canvas.getContext("2d"))) { - throw new Error(`2d context not supported or canvas already initialized`); - } - - $canvas.width = imageData.width; - $canvas.height = imageData.height; - ctx.putImageData(imageData, 0, 0); - }); - - return ( - - ); -}; diff --git a/apps/example-solidjs-dist/src/ResultDisplay.tsx b/apps/example-solidjs-dist/src/ResultDisplay.tsx deleted file mode 100644 index e637050..0000000 --- a/apps/example-solidjs-dist/src/ResultDisplay.tsx +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Copyright (c) 2023 Microblink Ltd. All rights reserved. - * - * ANY UNAUTHORIZED USE OR SALE, DUPLICATION, OR DISTRIBUTION - * OF THIS PROGRAM OR ANY OF ITS PARTS, IN SOURCE OR BINARY FORMS, - * WITH OR WITHOUT MODIFICATION, WITH THE PURPOSE OF ACQUIRING - * UNLAWFUL MATERIAL OR ANY OTHER BENEFIT IS PROHIBITED! - * THIS PROGRAM IS PROTECTED BY COPYRIGHT LAWS AND YOU MAY NOT - * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. - */ - -import { AnalyzerResult } from "@microblink/capture"; -import { Component, Show } from "solid-js"; -import { ImageDataDisplay } from "./ImageDataDisplay"; - -export const ResultDisplay: Component<{ - result: AnalyzerResult; -}> = (props) => { - const firstCapture = () => props.result.firstCapture; - const secondCapture = () => props.result.secondCapture; - - return ( -
-

Classification: {props.result.documentGroup}

- - {(imageResult) => ( -
-

{firstCapture()?.side}

- -
- )} -
- - {(imageResult) => ( -
-

{secondCapture()?.side}

- -
- )} -
- - {(imageResult) => ( -
-

{firstCapture()?.side}

- -
- )} -
- - {(imageResult) => ( -
-

{secondCapture()?.side}

- -
- )} -
-
- ); -}; diff --git a/apps/example-solidjs-dist/src/assets/favicon.ico b/apps/example-solidjs-dist/src/assets/favicon.ico deleted file mode 100644 index b836b2bccac650e0e7d90514083add91d2c027ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 WLaxim%Fn{v*G , document.getElementById("root")!); diff --git a/apps/example-solidjs-dist/src/vite-env.d.ts b/apps/example-solidjs-dist/src/vite-env.d.ts deleted file mode 100644 index fd2df98..0000000 --- a/apps/example-solidjs-dist/src/vite-env.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) 2023 Microblink Ltd. All rights reserved. - * - * ANY UNAUTHORIZED USE OR SALE, DUPLICATION, OR DISTRIBUTION - * OF THIS PROGRAM OR ANY OF ITS PARTS, IN SOURCE OR BINARY FORMS, - * WITH OR WITHOUT MODIFICATION, WITH THE PURPOSE OF ACQUIRING - * UNLAWFUL MATERIAL OR ANY OTHER BENEFIT IS PROHIBITED! - * THIS PROGRAM IS PROTECTED BY COPYRIGHT LAWS AND YOU MAY NOT - * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. - */ - -/// - -interface ImportMetaEnv { - readonly VITE_LICENCE_KEY: string; -} - -interface ImportMeta { - readonly env: ImportMetaEnv; -} diff --git a/apps/example-solidjs-dist/tsconfig.json b/apps/example-solidjs-dist/tsconfig.json deleted file mode 100644 index e861997..0000000 --- a/apps/example-solidjs-dist/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": "tsconfig/base.json", - "compilerOptions": { - "noEmit": true, - "declaration": false, - "declarationMap": false, - "rootDir": "src", - "jsx": "preserve", - "jsxImportSource": "solid-js", - "types": ["vite/client", "vite-plugin-solid-svg/types"], - "plugins": [ - { - "name": "@styled/typescript-styled-plugin", - "lint": { - "validProperties": ["overscroll-behavior"] - } - } - ] - }, - "include": ["src"] -} diff --git a/apps/example-solidjs-dist/vite.config.ts b/apps/example-solidjs-dist/vite.config.ts deleted file mode 100644 index 764a88a..0000000 --- a/apps/example-solidjs-dist/vite.config.ts +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Copyright (c) 2023 Microblink Ltd. All rights reserved. - * - * ANY UNAUTHORIZED USE OR SALE, DUPLICATION, OR DISTRIBUTION - * OF THIS PROGRAM OR ANY OF ITS PARTS, IN SOURCE OR BINARY FORMS, - * WITH OR WITHOUT MODIFICATION, WITH THE PURPOSE OF ACQUIRING - * UNLAWFUL MATERIAL OR ANY OTHER BENEFIT IS PROHIBITED! - * THIS PROGRAM IS PROTECTED BY COPYRIGHT LAWS AND YOU MAY NOT - * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. - */ - -import { getPackagePath, linkResources } from "@mb/utils"; -import dns from "dns"; -import { ServerOptions, defineConfig } from "vite"; -import mkcert from "vite-plugin-mkcert"; -import solidPlugin from "vite-plugin-solid"; -import { fs } from "zx"; -import { dependencies } from "./package.json"; -import { ecsstatic } from "@acab/ecsstatic/vite"; -import solidSvg from "vite-plugin-solid-svg"; - -// https://vitejs.dev/guide/migration.html#architecture-changes-and-legacy-options -dns.setDefaultResultOrder("verbatim"); - -const serverOptions: ServerOptions = { - port: 3000, - https: true, - // hmr: false, - // host: true, - headers: { - "Cross-Origin-Embedder-Policy": "require-corp", - "Cross-Origin-Opener-Policy": "same-origin", - }, - // host: true, -}; - -export default defineConfig((config) => { - return { - build: { - sourcemap: config.mode === "development", - target: "es2022", - }, - plugins: [ - // FullReload(["public/**/*"]), - ecsstatic({ - classNamePrefix: "mb", - }), - { - name: "move-resources", - buildStart: async () => { - if (ranOnce) { - return; - } - moveDist("@microblink/capture"); - ranOnce = true; - }, - }, - solidPlugin(), - solidSvg(), - // Generates certificates for https - mkcert(), - ], - server: serverOptions, - preview: serverOptions, - }; -}); - -let ranOnce = false; - -type Dependency = keyof typeof dependencies; - -async function moveDist(packagePath: Dependency) { - const pkgPath = getPackagePath(packagePath); - const resourcesPath = `${pkgPath}/dist/resources`; - const files = fs.readdirSync(resourcesPath); - - fs.ensureDirSync(`public/resources`); - - for (const path of files) { - await linkResources(`${resourcesPath}/${path}`, `public/resources/${path}`); - } -} diff --git a/apps/example-solidjs/.gitignore b/apps/example-solidjs/.gitignore index cd8a19d..dd89a0e 100644 --- a/apps/example-solidjs/.gitignore +++ b/apps/example-solidjs/.gitignore @@ -3,4 +3,5 @@ dist public types certs -*.local \ No newline at end of file +*.local +.env.production \ No newline at end of file diff --git a/apps/example-solidjs/CHANGELOG.md b/apps/example-solidjs/CHANGELOG.md index dbc02ba..73cc986 100644 --- a/apps/example-solidjs/CHANGELOG.md +++ b/apps/example-solidjs/CHANGELOG.md @@ -1,18 +1,18 @@ # example-solidjs -## 0.0.4 +## 1.1.0 ### Patch Changes -- capture-main@1.0.8 -- capture-ui@1.0.8 +- Updated dependencies + - @microblink/capture@1.1.0 ## 0.0.3 ### Patch Changes - Updated dependencies [15bde2b] - - capture-main@1.0.7 + - @microblink/capture@1.0.7 - capture-ui@1.0.7 ## 0.0.2 diff --git a/apps/example-solidjs/README.md b/apps/example-solidjs/README.md deleted file mode 100644 index 5a26491..0000000 --- a/apps/example-solidjs/README.md +++ /dev/null @@ -1,32 +0,0 @@ -## Usage - -To install: - -```bash -$ npm install -``` - -## Available Scripts - -In the project directory, you can run: - -### `npm dev` or `npm start` - -Runs the app in the development mode.
-Open [https://localhost:3000](https://localhost:3000) to view it in the browser. - -The page will reload if you make edits.
- -### `npm run build` - -Builds the app for production to the `dist` folder.
-It correctly bundles Solid in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.
-Your app is ready to be deployed! - -## Deployment - -You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.) - -To override the licence key in the `.env` file, create a new one named `.env.production`. diff --git a/apps/example-solidjs/index.html b/apps/example-solidjs/index.html index bbcef4b..9c024cf 100644 --- a/apps/example-solidjs/index.html +++ b/apps/example-solidjs/index.html @@ -9,7 +9,7 @@ http-equiv="Content-Security-Policy" content="worker-src 'self' blob:" /> - BlinkID Capture Demo + Capture Demo diff --git a/apps/example-solidjs/package.json b/apps/example-solidjs/package.json index dca8387..5d338cb 100644 --- a/apps/example-solidjs/package.json +++ b/apps/example-solidjs/package.json @@ -1,57 +1,46 @@ { "name": "example-solidjs", - "version": "0.0.4", - "private": true, - "type": "module", "description": "", + "private": true, + "version": "1.1.0", "scripts": { - "clean": "rimraf dist public .turbo types tsconfig.tsbuildinfo", - "dev": "vite", - "watch": "vite build --watch --mode development", "build": "vite build", "build:js-dev": "vite build --mode development", - "preview": "vite preview", - "make-certs": "mkcert-cli -y --outDir certs", - "serve": "pnpm make-certs && serve --ssl-cert ./certs/dev.cert --ssl-key ./certs/dev.key", + "clean": "rimraf dist public .turbo types tsconfig.tsbuildinfo", + "dev": "vite", + "lint": "concurrently pnpm:lint:types pnpm:lint:eslint", "lint:eslint": "eslint ./src --max-warnings 0", "lint:types": "tsc --emitDeclarationOnly false --noEmit", - "lint": "concurrently pnpm:lint:types pnpm:lint:eslint" + "make-certs": "mkcert-cli -y --outDir certs", + "preview": "vite preview", + "serve": "pnpm make-certs && serve --ssl-cert ./certs/dev.cert --ssl-key ./certs/dev.key", + "watch": "vite build --watch --mode development" + }, + "type": "module", + "dependencies": { + "@microblink/capture": "workspace:*", + "solid-js": "^1.8.1" }, - "license": "MIT", "devDependencies": { - "@acab/ecsstatic": "^0.7.1", "@mb/utils": "workspace:*", - "@styled/typescript-styled-plugin": "^1.0.0", - "@typescript-eslint/eslint-plugin": "^6.1.0", - "concurrently": "^8.2.0", - "eslint": "^8.45.0", - "eslint-config-prettier": "^8.8.0", - "eslint-define-config": "^1.21.0", - "eslint-plugin-solid": "^0.12.1", + "@typescript-eslint/eslint-plugin": "^6.9.0", + "concurrently": "^8.2.2", + "eslint": "^8.52.0", + "eslint-config-prettier": "^9.0.0", + "eslint-define-config": "^1.24.1", + "eslint-plugin-solid": "^0.13.0", "mkcert-cli": "^1.5.0", - "prettier": "^3.0.0", - "rimraf": "^5.0.1", - "sass": "^1.64.0", - "serve": "^14.2.0", + "prettier": "^3.0.3", + "rimraf": "^5.0.5", + "sass": "^1.69.4", + "serve": "^14.2.1", "tsc-files": "^1.1.4", "tsconfig": "workspace:*", - "typescript": "^5.1.6", - "vite": "^4.4.6", - "vite-plugin-full-reload": "^1.0.5", + "typescript": "^5.2.2", + "vite": "^4.5.0", "vite-plugin-mkcert": "^1.16.0", - "vite-plugin-solid": "^2.7.0", - "vite-plugin-solid-svg": "^0.6.4", + "vite-plugin-solid": "^2.7.2", "zx": "^7.2.3" }, - "dependencies": { - "@kobalte/core": "^0.9.8", - "@motionone/solid": "^10.16.2", - "@solid-primitives/keyed": "^1.2.0", - "clsx": "^2.0.0", - "capture-main": "workspace:*", - "capture-ui": "workspace:^", - "solid-js": "^1.7.8", - "solid-zustand": "^1.7.0", - "yy-fps": "^2.0.1" - } + "license": "MIT" } diff --git a/apps/example-solidjs/src/App.tsx b/apps/example-solidjs/src/App.tsx index 784212f..c72579e 100644 --- a/apps/example-solidjs/src/App.tsx +++ b/apps/example-solidjs/src/App.tsx @@ -11,9 +11,13 @@ /* @refresh reload */ -import { AnalyzerResult, CaptureSdkSettings } from "capture-main"; -import { CaptureComponent, createCaptureUi } from "capture-ui"; -import "capture-ui/style.css"; +import { + AnalyzerResult, + CaptureComponent, + CaptureSdkSettings, + createCaptureUi, +} from "@microblink/capture"; +import "@microblink/capture/style.css"; import { Component, Match, @@ -111,9 +115,9 @@ export const App: Component = () => { return (
-

This content is always visible to test portalling.

+ {/*

This content is always visible to test portal.

*/} -
+
{/* TODO: localize these */} diff --git a/apps/example-solidjs/src/ResultDisplay.tsx b/apps/example-solidjs/src/ResultDisplay.tsx index 65e9e07..e637050 100644 --- a/apps/example-solidjs/src/ResultDisplay.tsx +++ b/apps/example-solidjs/src/ResultDisplay.tsx @@ -9,7 +9,7 @@ * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. */ -import { AnalyzerResult } from "capture-main"; +import { AnalyzerResult } from "@microblink/capture"; import { Component, Show } from "solid-js"; import { ImageDataDisplay } from "./ImageDataDisplay"; diff --git a/apps/example-solidjs/tsconfig.json b/apps/example-solidjs/tsconfig.json index e861997..0ddb17a 100644 --- a/apps/example-solidjs/tsconfig.json +++ b/apps/example-solidjs/tsconfig.json @@ -7,15 +7,7 @@ "rootDir": "src", "jsx": "preserve", "jsxImportSource": "solid-js", - "types": ["vite/client", "vite-plugin-solid-svg/types"], - "plugins": [ - { - "name": "@styled/typescript-styled-plugin", - "lint": { - "validProperties": ["overscroll-behavior"] - } - } - ] + "types": ["vite/client"], }, "include": ["src"] } diff --git a/apps/example-solidjs/vite.config.ts b/apps/example-solidjs/vite.config.ts index 8727bd7..da89dbf 100644 --- a/apps/example-solidjs/vite.config.ts +++ b/apps/example-solidjs/vite.config.ts @@ -16,8 +16,6 @@ import mkcert from "vite-plugin-mkcert"; import solidPlugin from "vite-plugin-solid"; import { fs } from "zx"; import { dependencies } from "./package.json"; -import { ecsstatic } from "@acab/ecsstatic/vite"; -import solidSvg from "vite-plugin-solid-svg"; // https://vitejs.dev/guide/migration.html#architecture-changes-and-legacy-options dns.setDefaultResultOrder("verbatim"); @@ -41,22 +39,17 @@ export default defineConfig((config) => { target: "es2022", }, plugins: [ - // FullReload(["public/**/*"]), - ecsstatic({ - classNamePrefix: "mb", - }), { name: "move-resources", buildStart: async () => { if (ranOnce) { return; } - moveDist("capture-main"); + moveDist("@microblink/capture"); ranOnce = true; }, }, solidPlugin(), - solidSvg(), // Generates certificates for https mkcert(), ], diff --git a/apps/example-vanilla-ts-headless/CHANGELOG.md b/apps/example-vanilla-ts-headless/CHANGELOG.md index 170716b..6433090 100644 --- a/apps/example-vanilla-ts-headless/CHANGELOG.md +++ b/apps/example-vanilla-ts-headless/CHANGELOG.md @@ -1,11 +1,11 @@ # example-vanilla-ts-headless -## 0.0.7 +## 1.1.0 ### Patch Changes - Updated dependencies - - @microblink/capture@1.0.8 + - @microblink/capture@1.1.0 ## 0.0.6 diff --git a/apps/example-vanilla-ts-headless/package.json b/apps/example-vanilla-ts-headless/package.json index 1a1f3f5..6356698 100644 --- a/apps/example-vanilla-ts-headless/package.json +++ b/apps/example-vanilla-ts-headless/package.json @@ -1,24 +1,24 @@ { "name": "example-vanilla-ts-headless", "private": true, - "version": "0.0.7", - "type": "module", + "version": "1.1.0", "scripts": { - "dev": "vite", "build": "tsc && vite build", - "preview": "vite preview", - "clean": "rimraf dist public .turbo types" + "clean": "rimraf dist public .turbo types", + "dev": "vite", + "preview": "vite preview" + }, + "type": "module", + "dependencies": { + "@microblink/capture": "workspace:*" }, "devDependencies": { "@mb/utils": "workspace:*", - "rimraf": "^5.0.1", + "rimraf": "^5.0.5", "tsconfig": "workspace:*", - "typescript": "^5.1.6", - "vite": "^4.4.6", + "typescript": "^5.2.2", + "vite": "^4.5.0", "vite-plugin-mkcert": "^1.16.0", "zx": "^7.2.3" - }, - "dependencies": { - "@microblink/capture": "workspace:^" } } diff --git a/apps/example-vanilla-ts/CHANGELOG.md b/apps/example-vanilla-ts/CHANGELOG.md index f669936..bf94008 100644 --- a/apps/example-vanilla-ts/CHANGELOG.md +++ b/apps/example-vanilla-ts/CHANGELOG.md @@ -1,11 +1,11 @@ # example-vanilla-ts -## 0.0.7 +## 1.1.0 ### Patch Changes - Updated dependencies - - @microblink/capture@1.0.8 + - @microblink/capture@1.1.0 ## 0.0.6 diff --git a/apps/example-vanilla-ts/package.json b/apps/example-vanilla-ts/package.json index b94c750..ec500e3 100644 --- a/apps/example-vanilla-ts/package.json +++ b/apps/example-vanilla-ts/package.json @@ -1,24 +1,24 @@ { "name": "example-vanilla-ts", "private": true, - "version": "0.0.7", - "type": "module", + "version": "1.1.0", "scripts": { - "dev": "vite", "build": "tsc && vite build", - "preview": "vite preview", - "clean": "rimraf dist public .turbo types" + "clean": "rimraf dist public .turbo types", + "dev": "vite", + "preview": "vite preview" + }, + "type": "module", + "dependencies": { + "@microblink/capture": "workspace:*" }, "devDependencies": { "@mb/utils": "workspace:*", - "rimraf": "^5.0.1", + "rimraf": "^5.0.5", "tsconfig": "workspace:*", - "typescript": "^5.1.6", - "vite": "^4.4.6", + "typescript": "^5.2.2", + "vite": "^4.5.0", "vite-plugin-mkcert": "^1.16.0", "zx": "^7.2.3" - }, - "dependencies": { - "@microblink/capture": "workspace:^" } } diff --git a/package.json b/package.json index f8e11ae..6e5091d 100644 --- a/package.json +++ b/package.json @@ -1,23 +1,22 @@ { "name": "capture-sdk", - "version": "1.0.0", "description": "", + "version": "1.1.0", "author": "", - "license": "ISC", + "scripts": { + "build": "FORCE_COLOR=1 turbo build --no-daemon", + "clean": "FORCE_COLOR=1 turbo clean --no-daemon", + "lint": "FORCE_COLOR=1 turbo lint --no-daemon", + "prepare": "husky install", + "upgrade-packages": "pnpm dlx npm-check-updates -ui -ws --root", + "watch": "FORCE_COLOR=1 turbo watch --filter='./packages/*' --no-daemon" + }, "devDependencies": { "@changesets/cli": "^2.26.2", "husky": "^8.0.3", - "lint-staged": "^13.2.3", - "syncpack": "^10.7.3", - "turbo": "^1.10.8" + "lint-staged": "^15.0.2", + "syncpack": "^11.2.1", + "turbo": "^1.10.16" }, - "scripts": { - "lint": "turbo lint --no-daemon", - "build": "turbo build --no-daemon", - "clean": "turbo clean --no-daemon", - "watch": "turbo watch --filter='./packages/*' --no-daemon", - "prepare": "husky install", - "upgrade-packages": "pnpm dlx npm-check-updates -ui -ws --root", - "create-release": "pnpm run clean && pnpm run build && pnpm --filter 'release' create-release" - } + "license": "ISC" } diff --git a/packages/capture-main/.eslintrc.cjs b/packages/capture-main/.eslintrc.cjs index 07fa53d..4b6a985 100644 --- a/packages/capture-main/.eslintrc.cjs +++ b/packages/capture-main/.eslintrc.cjs @@ -11,25 +11,43 @@ module.exports = defineConfig({ overrides: [ { files: ["src/**/*.{ts,tsx}"], + plugins: ["@typescript-eslint", "solid"], parser: "@typescript-eslint/parser", - plugins: ["@typescript-eslint"], + // have to duplicate in override... + rules: { + "@typescript-eslint/no-unused-vars": 0, + // the following two are causing errors in vscode. See: + // https://typescript-eslint.io/linting/troubleshooting/#changes-to-one-file-are-not-reflected-when-linting-other-files-in-my-ide + "@typescript-eslint/no-unsafe-assignment": 0, + "@typescript-eslint/no-unsafe-member-access": 0, + // only use in tsx + "@typescript-eslint/no-non-null-assertion": 0, + "@typescript-eslint/consistent-type-definitions": 0, + "prefer-const": 0, + }, parserOptions: { tsconfigRootDir: __dirname, project: ["./tsconfig.json"], }, extends: [ "eslint:recommended", + "plugin:solid/typescript", "plugin:@typescript-eslint/recommended-type-checked", "plugin:@typescript-eslint/stylistic-type-checked", "prettier", ], - rules: { - "@typescript-eslint/no-unused-vars": "off", - "@typescript-eslint/consistent-type-definitions": 0, - }, }, { - files: ["*.{js,mjs,cjs}"], + files: ["**/*.{js,mjs,cjs}"], + env: { + node: true, + browser: true, + es2021: true, + }, + extends: ["eslint:recommended"], + rules: { + "no-unused-vars": 0, + }, }, ], }); diff --git a/packages/capture-main/CHANGELOG.md b/packages/capture-main/CHANGELOG.md index bc38ff6..3975c3d 100644 --- a/packages/capture-main/CHANGELOG.md +++ b/packages/capture-main/CHANGELOG.md @@ -1,12 +1,5 @@ # capture-main -## 1.0.8 - -### Patch Changes - -- Updated dependencies - - capture-worker@1.0.8 - ## 1.0.7 ### Patch Changes diff --git a/packages/capture-main/package.json b/packages/capture-main/package.json index 4d22388..b380c81 100644 --- a/packages/capture-main/package.json +++ b/packages/capture-main/package.json @@ -1,71 +1,90 @@ { "name": "capture-main", - "version": "1.0.8", - "private": true, "description": "", + "private": true, + "version": "1.0.7", + "author": "", "scripts": { + "build": "concurrently pnpm:build:js pnpm:build:types", + "build:dev": "concurrently pnpm:build:js-dev pnpm:build:types", "build:js": "vite build", "build:js-dev": "vite build --mode development", "build:types": "tsc", - "watch:js": "pnpm run build:js --watch --mode development", - "watch:types": "pnpm run build:types --watch", - "watch": "concurrently pnpm:watch:js pnpm:watch:types", - "build": "concurrently pnpm:build:js pnpm:build:types", - "build:dev": "concurrently pnpm:build:js-dev pnpm:build:types", - "lint:types": "tsc --emitDeclarationOnly false --noEmit", - "lint:eslint": "eslint ./src --max-warnings 0", + "clean": "rimraf .turbo types dist public/resources/* *.tsbuildinfo", "lint": "concurrently pnpm:lint:types pnpm:lint:eslint", - "clean": "rimraf .turbo types dist public/resources/* *.tsbuildinfo" + "lint:eslint": "eslint ./src --max-warnings 0", + "lint:types": "tsc --emitDeclarationOnly false --noEmit", + "test": "vitest", + "watch": "concurrently pnpm:watch:js pnpm:watch:types", + "watch:js": "pnpm run build:js --watch --mode development", + "watch:types": "pnpm run build:types --watch" }, "type": "module", - "files": [ - "dist", - "types" - ], - "types": "./types/main.d.ts", "main": "./dist/capture.umd.cjs", "module": "./dist/capture.js", + "types": "./types/index.d.ts", "exports": { ".": { "import": "./dist/capture.js", "require": "./dist/capture.umd.cjs" }, + "./style.css": "./dist/style.css", "./dist/*": "./dist/*", "./package.json": "./package.json" }, - "keywords": [], - "author": "", - "license": "ISC", + "files": [ + "dist", + "types" + ], "dependencies": { + "@kobalte/core": "^0.11.0", "@mb/utils": "workspace:*", + "@motionone/solid": "^10.16.4", + "@solid-primitives/keyed": "^1.2.0", "@wessberg/connection-observer": "^1.0.5", "capture-wasm": "workspace:*", "capture-worker": "workspace:*", + "clsx": "^2.0.0", "comlink": "^4.4.1", "common-tags": "^1.8.2", - "nanoid": "^4.0.2", - "rvfc-polyfill": "^1.0.6", + "deepmerge": "^4.3.1", + "is-plain-obj": "^4.1.0", + "nanoid": "^5.0.2", + "rvfc-polyfill": "^1.0.7", + "solid-js": "^1.8.1", + "solid-slider": "^1.3.15", "solid-zustand": "^1.7.0", "tiny-invariant": "^1.3.1", - "ts-pattern": "^5.0.4", - "ua-parser-js": "^1.0.35", - "zustand": "^4.3.9" + "ts-pattern": "^5.0.5", + "ua-parser-js": "^1.0.36", + "zustand": "^4.4.3" }, "devDependencies": { - "@types/common-tags": "^1.8.1", - "@types/emscripten": "^1.39.6", - "@types/ua-parser-js": "^0.7.36", - "@typescript-eslint/eslint-plugin": "^6.1.0", - "concurrently": "^8.2.0", - "dotenv-cli": "^7.2.1", - "eslint": "^8.45.0", - "eslint-config-prettier": "^8.8.0", - "eslint-define-config": "^1.21.0", - "rimraf": "^5.0.1", + "@acab/ecsstatic": "^0.7.1", + "@styled/typescript-styled-plugin": "^1.0.0", + "@types/common-tags": "^1.8.3", + "@types/emscripten": "^1.39.9", + "@types/ua-parser-js": "^0.7.38", + "@typescript-eslint/eslint-plugin": "^6.9.0", + "concurrently": "^8.2.2", + "dotenv-cli": "^7.3.0", + "eslint": "^8.52.0", + "eslint-config-prettier": "^9.0.0", + "eslint-define-config": "^1.24.1", + "eslint-plugin-solid": "^0.13.0", + "happy-dom": "^12.9.1", + "rimraf": "^5.0.5", + "sass": "^1.69.4", "tsconfig": "workspace:*", - "tsx": "^3.12.7", - "typescript": "^5.1.6", - "vite": "^4.4.6", + "tsx": "^3.14.0", + "typescript": "^5.2.2", + "vite": "^4.5.0", + "vite-plugin-css-injected-by-js": "^3.3.0", + "vite-plugin-solid": "^2.7.2", + "vite-plugin-solid-svg": "^0.7.0", + "vitest": "^0.34.6", "zx": "^7.2.3" - } + }, + "keywords": [], + "license": "ISC" } diff --git a/packages/capture-main/src/core/CaptureSdk.ts b/packages/capture-main/src/core/CaptureSdk.ts new file mode 100644 index 0000000..59190b1 --- /dev/null +++ b/packages/capture-main/src/core/CaptureSdk.ts @@ -0,0 +1,691 @@ +/** + * Copyright (c) 2023 Microblink Ltd. All rights reserved. + * + * ANY UNAUTHORIZED USE OR SALE, DUPLICATION, OR DISTRIBUTION + * OF THIS PROGRAM OR ANY OF ITS PARTS, IN SOURCE OR BINARY FORMS, + * WITH OR WITHOUT MODIFICATION, WITH THE PURPOSE OF ACQUIRING + * UNLAWFUL MATERIAL OR ANY OTHER BENEFIT IS PROHIBITED! + * THIS PROGRAM IS PROTECTED BY COPYRIGHT LAWS AND YOU MAY NOT + * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. + */ + +import { ConnectionObserver } from "@wessberg/connection-observer"; + +import { ConfiguredCamera } from "./ConfiguredCamera"; +import { + findIdealCameraId, + getCapableCameras, + renameCameras, +} from "./cameraUtils"; + +import { stripIndents } from "common-tags"; +import { DirectApi, DirectApiSettings, createDirectApi } from "./DirectApi"; +import { feedbackParser, uiStateMap } from "./FeedbackParser"; + +import { + AnalyzerResult, + AnalyzerSettings, + FrameAnalysisResult, +} from "capture-wasm"; +import { Prettify } from "../typeUtils"; +import { videoToImageData } from "./captureFrame"; +import { asError } from "./utils"; +import { resetCoreStore, zustandStore } from "./zustandStore"; + +// we need a reusable copy because of the transfer if we want to return it in a callback +let imageDataCopy: ImageData; +let captureSdk: CaptureSdk; + +export type CaptureSdkSettings = Prettify< + DirectApiSettings & { + /** Optional callbacks */ + callbacks?: CaptureCallbacks; + } +>; + +/** + * Singleton that represents the Capture SDK + */ +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface CaptureSdk extends _CaptureSdk {} + +export type CaptureCallbacks = Partial<{ + /** + * Will be called on every frame after it has finished processing + * @param frameResult Detailed information on the frame analysis result {@linkcode FrameAnalysisResult} + * @param frame {@linkcode ImageData} of the frame. Make sure to copy it as it + * will be overwritten when the next frame finishes processing. + */ + onFrameAnalysis: (frameResult: FrameAnalysisResult, frame: ImageData) => void; + /** + * Will be called after the entire recognition process has finished successfully. + * @param result The result of the recognition process {@linkcode AnalyzerResult} + */ + onCaptureResult: (result: AnalyzerResult) => void; +}>; + +/** + * The class that represents the Capture SDK. + * Not exported to prevent manual instantiation. + * @private + */ +class _CaptureSdk { + #directApi: DirectApi; + #videoFrameRequestId: + | ReturnType + | undefined; + + constructor(directApi: DirectApi) { + this.#directApi = directApi; + } + + /** + * Single-time setup for a video element + */ + setupVideoElement(videoElement: HTMLVideoElement) { + // video disconnect / dismount callback + const connectionObserver = new ConnectionObserver((entries) => { + if (!entries[0].connected) { + void this.destroy(); + } + }); + connectionObserver.observe(videoElement); + + // set up video for autoplay + videoElement.playsInline = true; + // videoElement.muted = true; // doesn't work + videoElement.setAttribute("muted", ""); + } + + /** + * Updates the analyzer. Capture process can't be active. Stop it using + * {@linkcode updateAnalyzerSettings} if required. + * @param settings {@linkcode AnalyzerSettings}. Will merge with the current + * settings. + */ + async updateAnalyzerSettings(settings: Partial) { + if (zustandStore.getState().isCapturing) { + console.warn( + "Cancel the capture process using `cancelCapture()` before updating settings", + ); + return; + } + try { + await this.#directApi.updateSettings(settings); + } catch (error) { + console.error("Error updating analyzer settings", error); + } + } + + /** + * Select a camera device from available ones. + * + * @param camera A camera device configured by the SDK. You can see available + * devices using on {@linkcode ReactiveStore.cameras} available by calling {@linkcode captureSdk.getState()} + */ + async selectCamera(camera: ConfiguredCamera) { + const state = zustandStore.getState(); + + if (state.selectedCamera === camera) { + console.warn("Already selected"); + return; + } + + // prevent race conditions + if (state.isSwappingCamera) { + return; + } + + const selectedCamera = state.selectedCamera; + + // TODO: do we need to set selectedCamera to undefined? + zustandStore.setState({ + isSwappingCamera: true, + }); + + if (selectedCamera) { + // Need to stop the current stream, as multiple cameras can share resources + // on the same device + // TODO: Test this assumption on mobile devices. + selectedCamera.stopStream(); + } + + if (state.videoElement) { + // pausePlayback(); + state.videoElement.srcObject = null; + } + + try { + const stream = await camera.startStream(); + + if (state.videoElement) { + state.videoElement.srcObject = stream; + + // resume currently playing session + if (state.isPlaying) { + await state.videoElement.play(); + } + } + + zustandStore.setState({ + selectedCamera: camera, + isSwappingCamera: false, + }); + } catch (error) { + console.error(error); + } + } + + /** + * Refreshes available devices on the system and updates the state. + */ + async updateCameraDevices() { + // prevent race conditions + if ( + zustandStore.getState().isQueryingCameras || + zustandStore.getState().isSwappingCamera + ) { + return; + } + + zustandStore.setState({ + isQueryingCameras: true, + }); + const capableCameras = await getCapableCameras(); + + // TODO: handle as error + if (capableCameras.length < 1) { + throw new Error( + "No capable devices found! Your camera needs to have a minimum resolution of 1920x1080", + ); + } + + renameCameras(capableCameras); + const idealCameraId = findIdealCameraId(capableCameras); + + // TODO: better way to handle undefined + const idealCamera = capableCameras.find( + (camera) => camera.deviceInfo.deviceId === idealCameraId, + )!; + + zustandStore.setState({ + cameras: capableCameras, + selectedCamera: idealCamera, + isQueryingCameras: false, + }); + } + + /** + * Starts the video playback + * + * @returns resolves when playback starts + */ + async startPlayback() { + const state = zustandStore.getState(); + + if (state.isPlaying) { + return; + } + + if (!state.videoElement) { + console.warn("No video element present."); + return; + } + + if (!state.videoElement.srcObject) { + console.warn("No source present. Start a camera stream first."); + return; + } + + if (!state.selectedCamera) { + console.warn("No selected camera"); + return; + } + + await state.selectedCamera.startStream(); + + // not using `startPlayback` as we haven't stopped playing as far as the state + // is concerned + await state.videoElement.play(); + zustandStore.setState({ isPlaying: true }); + + // handle resume for iOS + if (state.isCapturing === true) { + state.videoElement.requestVideoFrameCallback(() => void this.#loop()); + } + } + + /** + * Starts a best-effort camera stream on a provided video element + */ + async startCameraStream(videoElement: HTMLVideoElement, autoplay = true) { + if (zustandStore.getState().isPlaying) { + console.warn("Already streaming"); + return; + } + + // Reuse previously selected camera + if (zustandStore.getState().selectedCamera) { + console.log("Reusing previous device"); + } else { + try { + await this.updateCameraDevices(); + } catch (error) { + zustandStore.setState({ + errorState: asError(error), + }); + return; + } + } + + // capture new state as it's been modified by `updateCameraDevices` + const state = zustandStore.getState(); + + // something went wrong during `updateCameras`? + if (!state.selectedCamera) { + console.warn("No selected camera!"); + return; + } + + const stream = await state.selectedCamera.startStream(); + const videoTrack = stream.getVideoTracks()[0]; + const videoTrackSettings = videoTrack.getSettings(); + + // can this happen? + if (!videoTrackSettings.width || !videoTrackSettings.height) { + throw new Error(`Video doesn't have dimensions!`); + } + + if (!videoElement.isConnected) { + throw new Error("Video element needs to be in the document!"); + } + + // only setup if it isn't set up already + if (!zustandStore.getState().videoElement) { + this.setupVideoElement(videoElement); + } + + videoElement.srcObject = stream; + videoElement.width = videoTrackSettings.width; + videoElement.height = videoTrackSettings.height; + + // We mirror the video if the camera is front-facing. Assume that desktop + // devices don't return a facing mode and that they are front-facing. + const cameraFacing = videoTrack.getSettings().facingMode; + + if (cameraFacing === "environment") { + zustandStore.setState({ + mirrorX: false, + }); + } else { + zustandStore.setState({ + mirrorX: true, + }); + } + + // set the state + zustandStore.setState({ + videoElement, + }); + + if (autoplay) { + await this.startPlayback(); + } + } + + /** + * Starts playback and capture. + */ + async startCapture() { + const state = zustandStore.getState(); + + if (state.isCapturing) { + return; + } + + if (!state.videoElement) { + console.warn("Missing video element"); + return; + } + + if (!state.selectedCamera) { + console.warn("No active camera!"); + return; + } + + await this.startPlayback(); + + // handle side-effect from `startPlayback()` + if (!zustandStore.getState().isPlaying) { + return; + } + + zustandStore.setState({ + isCapturing: true, + }); + + this.#videoFrameRequestId = state.videoElement.requestVideoFrameCallback( + () => void this.#loop(), + ); + } + + /** + * Pauses the capture process without resetting the recognizer. + */ + pauseCapture() { + const video = zustandStore.getState().videoElement; + if (video && this.#videoFrameRequestId) { + video.cancelVideoFrameCallback(this.#videoFrameRequestId); + } + zustandStore.setState({ + isCapturing: false, + }); + } + + /** + * Cancels the capture process. Unlike {@linkcode pauseCapture}, it also resets + * the analyzer. + */ + async cancelCapture() { + await this.resetCapture(); + feedbackParser.reset(); + + this.pauseCapture(); + + zustandStore.setState({ + uiState: uiStateMap.SENSING_FRONT, + }); + } + + /** + * Resets the currently active capturing process. + */ + async resetCapture() { + await this.#directApi.resetCapture(); + this.#resetLandscape(); + } + + /** + * Stops the currently active stream + */ + async stopStream() { + console.log("stopStream called"); + const state = zustandStore.getState(); + + state.selectedCamera?.stopStream(); + + if (!state.videoElement) { + console.log("no video element"); + return; + } + + state.videoElement.srcObject = null; + await this.cancelCapture(); + this.pausePlayback(); + } + + /** + * Attempts to finish the side capture early. + * + * @returns `true` if there are enough captured frames to finish the current + * side capture, `false` otherwise. + */ + async finishSideCapture() { + return await this.#directApi.finishSideCapture(); + } + + /** + * Pauses the video playback. This will also stop the capturing process. + */ + pausePlayback() { + console.log("pausePlayback called"); + const state = zustandStore.getState(); + + if (!state.videoElement) { + zustandStore.setState({ isPlaying: false }); + return; + } + + this.pauseCapture(); + + state.videoElement.pause(); + zustandStore.setState({ isPlaying: false }); + } + + #resetLandscape() { + zustandStore.setState({ + captureRequiresLandscape: false, + }); + } + + /** + * The main recognition loop + * @private + * @internal + */ + async #loop() { + const state = zustandStore.getState(); + + if (!state.isCapturing) { + return; + } + + // fix for iOS which triggers `requestVideoFrameCallback` even if the video + // is not playing + if (!state.isPlaying) { + return; + } + + if (!state.videoElement) { + // shouldn't happen as disconnecting is handled by an observer which will + // pause the loop + console.error("Missing video element"); + return; + } + + const onFrameAnalysis = state.callbacks?.onFrameAnalysis; + const hasFrameCallback = typeof onFrameAnalysis === "function"; + const capturedFrame = videoToImageData(state.videoElement); + + imageDataCopy = new ImageData( + Uint8ClampedArray.from(capturedFrame.data), + capturedFrame.width, + capturedFrame.height, + ); + + const frameResult = await this.#directApi.analyze(capturedFrame); + + if ("error" in frameResult) { + zustandStore.setState({ + errorState: asError(frameResult.error), + }); + return; + } + + const uiState = feedbackParser.getUiState(frameResult); + + // trigger frame callback + if (hasFrameCallback) { + try { + onFrameAnalysis(frameResult, imageDataCopy); + + // force GC before next `ImageData` creation + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + window.setTimeout(() => (imageDataCopy = null), 0); + } catch (err) { + console.warn("onFrameAnalysis callback exception"); + throw err; + } + } + + // Manually handle DOCUMENT_FRAMING_CAMERA_ORIENTATION_UNSUITABLE + if (uiState.key === "DOCUMENT_FRAMING_CAMERA_ORIENTATION_UNSUITABLE") { + // We show the animation only on the first event + if (!zustandStore.getState().captureRequiresLandscape) { + this.pauseCapture(); + + // This state can only be manually triggered + const nextState = + uiStateMap.DOCUMENT_FRAMING_CAMERA_ORIENTATION_UNSUITABLE_ANIMATION; + + zustandStore.setState({ + uiState: nextState, + captureRequiresLandscape: true, + }); + + await new Promise((f) => setTimeout(f, nextState.minDuration)); + await this.startCapture(); + + return; + } + + // subsequent invocations don't have an animation + zustandStore.setState({ + uiState: uiStateMap.DOCUMENT_FRAMING_CAMERA_ORIENTATION_UNSUITABLE, + }); + } + + // Manually handle SIDE_CAPTURED + if (uiState.key === "SIDE_CAPTURED") { + this.pauseCapture(); + zustandStore.setState({ + uiState: uiStateMap.SIDE_CAPTURED, + }); + await new Promise((f) => + setTimeout(f, uiStateMap.SIDE_CAPTURED.minDuration), + ); + await this.startCapture(); + return; + } + + // Manually handle DOCUMENT_CAPTURED + if (uiState.key === "DOCUMENT_CAPTURED") { + this.pausePlayback(); + zustandStore.setState({ + uiState: uiStateMap.DOCUMENT_CAPTURED, + }); + await new Promise((f) => + setTimeout(f, uiStateMap.DOCUMENT_CAPTURED.minDuration), + ); + const result = await this.#directApi.getResult(); + + try { + state.callbacks?.onCaptureResult?.(result); + } catch (err) { + console.warn("onCaptureResult callback exception", err); + } + + this.#resetLandscape(); + + // End capture loop + return; + } + + // For all other cases, just update the state + zustandStore.setState({ + uiState, + }); + + this.#videoFrameRequestId = state.videoElement.requestVideoFrameCallback( + () => void this.#loop(), + ); + } + + /** + * Set up callbacks on the SDK + * + * @param newCallbacks A subset of available + * {@linkcode CaptureCallbacks}. Will overwrite the previously set one. + * + * Send an empty object (`{}`) to clear callbacks. + */ + setCallbacks(newCallbacks: CaptureCallbacks) { + zustandStore.setState({ + callbacks: newCallbacks, + }); + } + + /** + * If true, the video and captured frames will be mirrored horizontally. + */ + setMirrorX(mirrorX: boolean) { + zustandStore.setState({ + mirrorX, + }); + } + + /** + * Allows the user to subscribe to state changes inside the Capture SDK. + * Implemented using Zustand. For usage information, see + * {@link https://github.com/pmndrs/zustand#using-subscribe-with-selector} + */ + subscribe = zustandStore.subscribe; + /** + * Gets the current internal state of the Capture SDK. + */ + getState = zustandStore.getState; + + /** + * Resets the captureSdk and terminates the workers and the Wasm runtime. + */ + async destroy() { + resetCoreStore(); + await this.#directApi.terminateWorker(); + } +} + +/** + * Creates a singleton instance of the Capture SDK. + * @param settings {@linkcode CaptureSdkSettings} + * @returns A singleton instance of {@linkcode CaptureSdk} + */ +export async function createCaptureSdk( + settings: CaptureSdkSettings, +): Promise { + try { + if (!window.isSecureContext) { + throw new Error(stripIndents` + Can't load the SDK outside a secure context: + https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts + `); + } + + if (zustandStore.getState().initialized && captureSdk) { + console.warn("Already initialized, reusing previous SDK instance."); + return captureSdk; + } + + // We need to remove callbacks from the settings object before passing it to + // the DirectApi constructor (Thank you TS structural typing /s) + const { callbacks, ...directApiSettings } = settings; + + const directApi = await createDirectApi(directApiSettings); + + const analyzerSettings = await directApi.getSettings(); + + zustandStore.setState({ + analyzerSettings: analyzerSettings, + }); + + if (callbacks) { + zustandStore.setState({ + callbacks, + }); + } + + zustandStore.setState({ + initialized: true, + }); + + captureSdk = new _CaptureSdk(directApi); + + return captureSdk; + } catch (error) { + // We set any error as a single state to make it easier to handle + zustandStore.setState({ + errorState: asError(error), + }); + throw error; + } +} diff --git a/packages/capture-main/src/ConfiguredCamera.ts b/packages/capture-main/src/core/ConfiguredCamera.ts similarity index 100% rename from packages/capture-main/src/ConfiguredCamera.ts rename to packages/capture-main/src/core/ConfiguredCamera.ts diff --git a/packages/capture-main/src/core/DirectApi.ts b/packages/capture-main/src/core/DirectApi.ts new file mode 100644 index 0000000..ff3d729 --- /dev/null +++ b/packages/capture-main/src/core/DirectApi.ts @@ -0,0 +1,224 @@ +/** + * Copyright (c) 2023 Microblink Ltd. All rights reserved. + * + * ANY UNAUTHORIZED USE OR SALE, DUPLICATION, OR DISTRIBUTION + * OF THIS PROGRAM OR ANY OF ITS PARTS, IN SOURCE OR BINARY FORMS, + * WITH OR WITHOUT MODIFICATION, WITH THE PURPOSE OF ACQUIRING + * UNLAWFUL MATERIAL OR ANY OTHER BENEFIT IS PROHIBITED! + * THIS PROGRAM IS PROTECTED BY COPYRIGHT LAWS AND YOU MAY NOT + * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. + */ + +import { + Analyzer, + AnalyzerSettings, + LicenseTokenState, + ServerPermissionSubmitResultStatus, + StringifiedBaltazarResponse, +} from "capture-wasm"; +import type { ProxyWorker } from "capture-worker"; +import { ProxyMarked, Remote, transfer } from "comlink"; +import { createCustomImageData } from "./createCustomImageData"; +import { createProxyWorker } from "./createProxyWorker"; +import { getUserId } from "./getUserId"; +import { obtainNewServerPermission } from "./licencing"; + +export type DirectApiSettings = { + /** The licence key for loading the Capture SDK. Required. */ + licenseKey: string; + /** Custom settings for the Capture analyzer */ + analyzerSettings?: Partial; + /** By default, the SDK will look for the required `/resources` directory on + the current URL path. + * + If you are hosting the resources on a different URL, provide a new relative + or absolute one. The SDK will then search for files in the `/resources` + directory of that URL. + */ + resourceUrl?: string; +}; + +/** + * The `DirectApi` is a wrapper around the `capture-worker` module. + * + * This is a low-level API that exposes the `capture-worker` module directly and + * should only be used if the `CaptureSDK` API isn't sufficient. + */ +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface DirectApi extends _DirectApi {} + +/** + * The `_DirectApi` class is private to prevent manual instantiation. + * @private + */ +class _DirectApi { + #remoteWorker: Remote; + #remoteAnalyzer: Remote; + + constructor( + remoteWorker: Remote, + remoteAnalyzer: Remote, + ) { + this.#remoteWorker = remoteWorker; + this.#remoteAnalyzer = remoteAnalyzer; + } + + /** + * Analyzes a single frame. + * + * @remarks + * This method is a proxy to the `capture-worker` module. + * It is a workaround to avoid memory leaks when using the `Remote` object + * directly. + * + * @param image - The image to analyze. + * @returns The analysis result or an error. + */ + analyze = async (image: ImageData) => { + const customImageData = createCustomImageData(image); + + // We don't use the `remoteAnalyzer.analyze()`, but a proxy method exposed + // on the worker as we need to clean up the memory from the worker side + const frameResult = await this.#remoteWorker.analyze( + transfer(customImageData, [customImageData.data.buffer]), + ); + + return frameResult; + }; + + /** + * Attempts to finish the side capture early. + * + * If there aren't enough captured frames, the method returns `false` and + * further `Analyzer.analyze` calls are required. + * + * Otherwise, the method returns `true` and the `Analyzer` uses the best frame + * candidate to finish the side capture and either finish the capture process + * or continue to the next side. + * + * @returns `true` if there are enough captured frames to finish the capture + * process and `getResult` can be called, `false` otherwise. + */ + finishSideCapture = async () => { + const canGetResult = await this.#remoteAnalyzer.finishSideCapture(); + return canGetResult; + }; + + /** + * Returns the analyzer result. + * @returns The analysis result. + */ + getResult = async () => { + const result = await this.#remoteAnalyzer.getResult(); + return result; + }; + + /** + * Returns the analyzer settings. + * @returns The analyzer settings. + */ + getSettings = async () => { + const settings = await this.#remoteAnalyzer.getSettings(); + return settings; + }; + + /** + * Updates the analyzer settings. The new settings are merged with the current + * settings. + * + * Don't update settings in the middle of a capture session. Call + * `resetCapture` first. + * + * @param newSettings - The new analyzer settings. Can be a partial object. + */ + updateSettings = async (newSettings: Partial) => { + const currentSettings = await this.getSettings(); + + const mergedSettings: AnalyzerSettings = { + ...currentSettings, + ...newSettings, + }; + + await this.#remoteAnalyzer.updateSettings(mergedSettings); + }; + + /** + * Resets the currently active capturing process. + */ + resetCapture = async () => { + await this.#remoteAnalyzer.reset(); + }; + + /** + * Terminates the workers and the Wasm runtime. + */ + async terminateWorker() { + await this.#remoteWorker.terminate(); + } +} + +/** + * Creates a new `DirectApi` instance. + * @param settings - The settings for the `DirectApi` instance. + * @returns A new `DirectApi` instance. + */ +export async function createDirectApi( + settings: DirectApiSettings, +): Promise { + const remoteWorker = await createProxyWorker(settings.resourceUrl); + const userId = getUserId(); + + const remoteWasm = await remoteWorker.loadWasm(); + const licenceUnlockResult = await remoteWasm.initializeWithLicenseKey( + settings.licenseKey, + userId, + false, + ); + + // check if we need to obtain a server permission + if ( + licenceUnlockResult.unlockResult === + LicenseTokenState.RequiresServerPermission + ) { + const serverPermissionResponse = + await obtainNewServerPermission(licenceUnlockResult); + + const serverPermissionResult = await remoteWasm.submitServerPermission( + JSON.stringify(serverPermissionResponse) as StringifiedBaltazarResponse, + ); + + console.log(serverPermissionResult); + + if ( + serverPermissionResult.status !== ServerPermissionSubmitResultStatus.Ok + ) { + // TODO: more robust error messages + throw new Error("Server unlock not ok."); + } + } + + const remoteAnalyzer = await remoteWorker.createAnalyzer(); + + if (!remoteAnalyzer) { + throw new Error("Failed to create analyzer"); + } + + const defaultAnalyzerSettings = await remoteAnalyzer.getSettings(); + + // Tweak default settings in JS instead of Wasm + let customSettings: AnalyzerSettings = { + ...defaultAnalyzerSettings, + minimumDocumentDpi: 220, + }; + + if (settings.analyzerSettings) { + // Merge the default settings with the user-provided settings + Object.assign(customSettings, settings.analyzerSettings); + } + + await remoteAnalyzer.updateSettings(customSettings); + + const directApi = new _DirectApi(remoteWorker, remoteAnalyzer); + + return directApi; +} diff --git a/packages/capture-main/src/FeedbackParser.ts b/packages/capture-main/src/core/FeedbackParser.ts similarity index 90% rename from packages/capture-main/src/FeedbackParser.ts rename to packages/capture-main/src/core/FeedbackParser.ts index 306f948..e476d83 100644 --- a/packages/capture-main/src/FeedbackParser.ts +++ b/packages/capture-main/src/core/FeedbackParser.ts @@ -9,9 +9,9 @@ * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. */ +import { FrameAnalysisResult } from "capture-wasm"; import { P, match } from "ts-pattern"; import { getKeyWithHighestValue } from "./utils"; -import { AnalyzerSettings, FrameAnalysisResult } from "capture-wasm"; export type UiStateEvent = { stateKey: Readonly; @@ -24,17 +24,19 @@ export type ReticleType = | "processing" | "error" | "done" - | "flip"; + | "flip" + | "rotate"; export type UiStateKey = | "PROCESSING" | "SIDE_CAPTURED" - | "FLIP_CARD" | "DOCUMENT_CAPTURED" | "SENSING_FRONT" | "SENSING_BACK" | "DOCUMENT_FRAMING_CAMERA_TOO_FAR" | "DOCUMENT_FRAMING_CAMERA_TOO_CLOSE" + | "DOCUMENT_FRAMING_CAMERA_ORIENTATION_UNSUITABLE" + | "DOCUMENT_FRAMING_CAMERA_ORIENTATION_UNSUITABLE_ANIMATION" | "DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP" | "DOCUMENT_TOO_CLOSE_TO_FRAME_EDGE" | "LIGHTING_TOO_DARK" @@ -58,12 +60,6 @@ export const uiStateMap: Readonly> = { }, SIDE_CAPTURED: { key: "SIDE_CAPTURED", - reticleType: "done", - minDuration: 1000, - }, - // `FLIP_CARD` can only be triggered programmatically! - FLIP_CARD: { - key: "FLIP_CARD", reticleType: "flip", minDuration: 3000, }, @@ -92,6 +88,20 @@ export const uiStateMap: Readonly> = { reticleType: "error", minDuration: 1500, }, + /** + * This is a special case where we want to show the animation only once It's + * handled manually inside `CaptureSdk`, and not in `getUiStateKeyFromResult()` + */ + DOCUMENT_FRAMING_CAMERA_ORIENTATION_UNSUITABLE_ANIMATION: { + key: "DOCUMENT_FRAMING_CAMERA_ORIENTATION_UNSUITABLE_ANIMATION", + reticleType: "rotate", + minDuration: 3000, + }, + DOCUMENT_FRAMING_CAMERA_ORIENTATION_UNSUITABLE: { + key: "DOCUMENT_FRAMING_CAMERA_ORIENTATION_UNSUITABLE", + reticleType: "error", + minDuration: 1500, + }, DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP: { key: "DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP", reticleType: "error", @@ -134,28 +144,18 @@ export const uiStateMap: Readonly> = { }, }; -export class FeedbackParser { +class FeedbackParser { private timeWindow = 3000; private decayRate = 0.95; private eventStack: UiStateEvent[] = []; - // not currently used - private analyzerSettings: AnalyzerSettings; // used for tracking current state private currentUiState = uiStateMap.SENSING_FRONT; private currentStateStartTime = performance.now(); - constructor(analyzerSettings: AnalyzerSettings) { - this.analyzerSettings = analyzerSettings; - } - reset() { this.eventStack = []; } - updateSettings(analyzerSettings: AnalyzerSettings) { - this.analyzerSettings = analyzerSettings; - } - /** * Returns a weighted UI state based on the history */ @@ -288,14 +288,6 @@ export class FeedbackParser { }, () => "SIDE_CAPTURED", ) - // This state is a side-effect of "side-captured" - - // .with( - // { - // captureState: "side-captured", - // }, - // () => "FLIP_CARD" - // ) .with( { frameAnalysisStatus: { @@ -321,6 +313,14 @@ export class FeedbackParser { }, () => "DOCUMENT_FRAMING_CAMERA_TOO_CLOSE", ) + .with( + { + frameAnalysisStatus: { + framingStatus: "camera-orientation-unsuitable", + }, + }, + () => "DOCUMENT_FRAMING_CAMERA_ORIENTATION_UNSUITABLE", + ) .with( { frameAnalysisStatus: { @@ -384,3 +384,5 @@ export class FeedbackParser { ); } } + +export const feedbackParser = new FeedbackParser(); diff --git a/packages/capture-main/src/cameraUtils.ts b/packages/capture-main/src/core/cameraUtils.ts similarity index 100% rename from packages/capture-main/src/cameraUtils.ts rename to packages/capture-main/src/core/cameraUtils.ts diff --git a/packages/capture-main/src/captureFrame.ts b/packages/capture-main/src/core/captureFrame.ts similarity index 61% rename from packages/capture-main/src/captureFrame.ts rename to packages/capture-main/src/core/captureFrame.ts index c891c36..b05667e 100644 --- a/packages/capture-main/src/captureFrame.ts +++ b/packages/capture-main/src/core/captureFrame.ts @@ -15,7 +15,7 @@ const ctx = canvas.getContext("2d", { alpha: false, }); -export function captureFrame(video: HTMLVideoElement) { +export function videoToImageData(video: HTMLVideoElement, mirrorX = false) { if (!ctx) { throw new Error("CanvasRenderingContext2D is missing!"); } @@ -27,22 +27,12 @@ export function captureFrame(video: HTMLVideoElement) { canvas.height = h; ctx.drawImage(video, 0, 0, w, h); + + if (mirrorX) { + ctx.scale(-1, 1); + } + const imageData = ctx.getImageData(0, 0, w, h); - const customImageData = createCustomImageData(imageData); - return customImageData; -} -/** - * fix for postmessage performance - * https://bugs.chromium.org/p/chromium/issues/detail?id=1439768&q=&can=4 - */ -export function createCustomImageData(imageData: ImageData) { - const customImageData = { - data: imageData.data, - width: imageData.width, - height: imageData.height, - colorSpace: imageData.colorSpace, - } satisfies ImageData; - - return customImageData; + return imageData; } diff --git a/packages/capture-ui/src/vite-env.d.ts b/packages/capture-main/src/core/createCustomImageData.ts similarity index 53% rename from packages/capture-ui/src/vite-env.d.ts rename to packages/capture-main/src/core/createCustomImageData.ts index fd2df98..7a59663 100644 --- a/packages/capture-ui/src/vite-env.d.ts +++ b/packages/capture-main/src/core/createCustomImageData.ts @@ -9,12 +9,17 @@ * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. */ -/// - -interface ImportMetaEnv { - readonly VITE_LICENCE_KEY: string; -} +/** + * fix for postmessage performance + * https://bugs.chromium.org/p/chromium/issues/detail?id=1439768&q=&can=4 + */ +export function createCustomImageData(imageData: ImageData) { + const customImageData = { + data: imageData.data, + width: imageData.width, + height: imageData.height, + colorSpace: imageData.colorSpace, + } satisfies ImageData; -interface ImportMeta { - readonly env: ImportMetaEnv; + return customImageData; } diff --git a/packages/capture-main/src/createProxyWorker.ts b/packages/capture-main/src/core/createProxyWorker.ts similarity index 90% rename from packages/capture-main/src/createProxyWorker.ts rename to packages/capture-main/src/core/createProxyWorker.ts index 3dab72d..0b908fa 100644 --- a/packages/capture-main/src/createProxyWorker.ts +++ b/packages/capture-main/src/core/createProxyWorker.ts @@ -26,8 +26,10 @@ export const createProxyWorker = async ( resourcesLocation + "/resources/capture-worker.js", ); const worker = new Worker(workerUrl); - // TODO: find a way to handle generic worker loading failures (CSP, network requests, etc) - worker.onerror = (e) => console.error(e); + + worker.onerror = (e) => { + console.error("Worker error:", e); + }; const proxyWorker = wrap(worker); await proxyWorker.setResourceUrl(resourcesLocation + "/resources"); diff --git a/packages/capture-main/src/deviceOrientation.ts b/packages/capture-main/src/core/deviceOrientation.ts similarity index 100% rename from packages/capture-main/src/deviceOrientation.ts rename to packages/capture-main/src/core/deviceOrientation.ts diff --git a/packages/capture-main/src/getCrossOriginWorkerURL.ts b/packages/capture-main/src/core/getCrossOriginWorkerURL.ts similarity index 100% rename from packages/capture-main/src/getCrossOriginWorkerURL.ts rename to packages/capture-main/src/core/getCrossOriginWorkerURL.ts diff --git a/packages/capture-main/src/getUserId.ts b/packages/capture-main/src/core/getUserId.ts similarity index 87% rename from packages/capture-main/src/getUserId.ts rename to packages/capture-main/src/core/getUserId.ts index 6a1e4f9..3898572 100644 --- a/packages/capture-main/src/getUserId.ts +++ b/packages/capture-main/src/core/getUserId.ts @@ -13,6 +13,10 @@ import { nanoid } from "nanoid"; const key = "capture-userid"; +/** + * Gets the user id from local storage, or generates a new one + * @returns a unique user id + */ export function getUserId() { const previousId = localStorage.getItem(key); if (previousId) { diff --git a/packages/capture-main/src/imageDataUtils.ts b/packages/capture-main/src/core/imageDataUtils.ts similarity index 100% rename from packages/capture-main/src/imageDataUtils.ts rename to packages/capture-main/src/core/imageDataUtils.ts diff --git a/packages/capture-main/src/licencing.ts b/packages/capture-main/src/core/licencing.ts similarity index 100% rename from packages/capture-main/src/licencing.ts rename to packages/capture-main/src/core/licencing.ts diff --git a/packages/capture-main/src/utils.ts b/packages/capture-main/src/core/utils.ts similarity index 100% rename from packages/capture-main/src/utils.ts rename to packages/capture-main/src/core/utils.ts diff --git a/packages/capture-main/src/zustandStore.ts b/packages/capture-main/src/core/zustandStore.ts similarity index 64% rename from packages/capture-main/src/zustandStore.ts rename to packages/capture-main/src/core/zustandStore.ts index 0485625..5bcfbe3 100644 --- a/packages/capture-main/src/zustandStore.ts +++ b/packages/capture-main/src/core/zustandStore.ts @@ -14,21 +14,67 @@ import { subscribeWithSelector } from "zustand/middleware"; import { createStore as createZustandStore } from "zustand/vanilla"; import { ConfiguredCamera } from "./ConfiguredCamera"; import { UiState, uiStateMap } from "./FeedbackParser"; -import { CaptureCallbacks } from "./createCaptureSdk"; +import { CaptureCallbacks } from "./CaptureSdk"; export type ReactiveStore = { + /** + * The video element that is currently being used for capture. + */ videoElement: HTMLVideoElement | null; + /** + * The list of cameras that are available to the user. + */ cameras: ConfiguredCamera[]; + /** + * The currently selected camera. + */ selectedCamera: ConfiguredCamera | null; + /** + * The callbacks that are used to communicate with the capture sdk. + */ callbacks: CaptureCallbacks; + /** + * Whether the camera stream is currently active and playing back on the video + * element. + */ isPlaying: boolean; + /** + * Whether the active video stream is currently being captured and processed + * by the Analyzer. + */ isCapturing: boolean; + /** + * Whether the camera is currently being swapped. + */ isSwappingCamera: boolean; + /** + * Whether the camera list is currently being queried. + */ isQueryingCameras: boolean; + /** + * The analyzer settings that are currently being used. + */ analyzerSettings: AnalyzerSettings; + /** + * Indicates if the captured frames will be mirrored horizontally + */ + mirrorX: boolean; + /** + * The current UI state. Represents the current feedback messages being shown + * to the user. + */ uiState: UiState; - /** If Wasm is initialized successfully */ + /** + * Whether the capture requires landscape mode. + */ + captureRequiresLandscape: boolean; + /** + * Whether the SDK has been initialized. + */ initialized: boolean; + /** + * If the SDK has encountered an error, this will be set to the error. + */ errorState: Error | null; }; @@ -42,8 +88,10 @@ const initialState: ReactiveStore = { isSwappingCamera: false, isQueryingCameras: false, callbacks: {}, + mirrorX: false, // this is important! otherwise we share a reference and mutate the original map! uiState: structuredClone(uiStateMap.SENSING_FRONT), + captureRequiresLandscape: false, initialized: false, errorState: null, // We know (hope?) this will be prefilled @@ -55,8 +103,8 @@ const initialState: ReactiveStore = { * * The Zustand store. Use only if you know what you're doing. * - * Never use setters as this will break the application logic. We do not have two-way binding. - * Make sure you only observe the state. + * Never set the state as this will break the application logic. We do not have + * two-way binding. Make sure you only observe the state. * * Prefer using subscriptions if you require observable state. * @@ -78,7 +126,10 @@ zustandStore.subscribe( }, ); -// TODO: Should this be here or in createCaptureSdk.ts? +/** + * Resets the store to its initial state. + * Stops all camera streams as a side effect. + */ export const resetCoreStore = () => { console.log("resetting zustand store"); // Stop all cameras diff --git a/packages/capture-main/src/createCaptureSdk.ts b/packages/capture-main/src/createCaptureSdk.ts deleted file mode 100644 index fb2da57..0000000 --- a/packages/capture-main/src/createCaptureSdk.ts +++ /dev/null @@ -1,769 +0,0 @@ -/** - * Copyright (c) 2023 Microblink Ltd. All rights reserved. - * - * ANY UNAUTHORIZED USE OR SALE, DUPLICATION, OR DISTRIBUTION - * OF THIS PROGRAM OR ANY OF ITS PARTS, IN SOURCE OR BINARY FORMS, - * WITH OR WITHOUT MODIFICATION, WITH THE PURPOSE OF ACQUIRING - * UNLAWFUL MATERIAL OR ANY OTHER BENEFIT IS PROHIBITED! - * THIS PROGRAM IS PROTECTED BY COPYRIGHT LAWS AND YOU MAY NOT - * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. - */ - -import { ConnectionObserver } from "@wessberg/connection-observer"; - -import { ConfiguredCamera } from "./ConfiguredCamera"; -import { - findIdealCameraId, - getCapableCameras, - renameCameras, -} from "./cameraUtils"; -import { createProxyWorker } from "./createProxyWorker"; -import { getUserId } from "./getUserId"; -import { obtainNewServerPermission } from "./licencing"; -import { - Analyzer, - AnalyzerResult, - AnalyzerSettings, - FrameAnalysisResult, - LicenseTokenState, - ServerPermissionSubmitResultStatus, - StringifiedBaltazarResponse, -} from "./main"; - -import type { ProxyWorker } from "capture-worker"; -import { stripIndents } from "common-tags"; -import { FeedbackParser, uiStateMap } from "./FeedbackParser"; -import { captureFrame } from "./captureFrame"; -import { asError } from "./utils"; -import { resetCoreStore, zustandStore } from "./zustandStore"; -import { Remote, ProxyMarked, transfer } from "comlink"; - -export type CaptureSdkSettings = { - /** The licence key for loading the Capture SDK. Required. */ - licenseKey: string; - /** Optional callbacks */ - callbacks?: CaptureCallbacks; - /** Custom settings for the Capture analyzer */ - analyzerSettings?: Partial; - /** By default, the SDK will look for the required `/resources` directory on the current URL path. - * - * If you are hosting the resources on a different URL, provide a new relative or absolute one. - */ - resourceUrl?: string; -}; - -let feedbackParser: FeedbackParser; - -let videoFrameRequestId: ReturnType< - HTMLVideoElement["requestVideoFrameCallback"] ->; - -export type CaptureCallbacks = Partial<{ - /** - * Will be called on every frame after it has finished processing - * @param frame {@linkcode ImageData} of the frame. Make sure to copy it as it - * will be overwritten when the next frame finishes processing. - * @param frameResult Detailed information on the frame analysis - */ - onFrameAnalysis: (frame: ImageData, frameResult: FrameAnalysisResult) => void; - /** - * Will be called after the entire recognition process has finished successfully. - * @param result The result - */ - onCaptureResult: (result: AnalyzerResult) => void; -}>; - -// the worker and analyzer are lifted out and not exposed on `core` directly -let remoteWorker: Remote; -let remoteAnalyzer: Remote; - -// we need a reusable copy because of the transfer if we want to return it in a callback -let imageDataCopy: ImageData; - -/** - * Starts a best-effort camera stream on a provided video element - */ -async function startCameraStream( - videoElement: HTMLVideoElement, - autoplay = true, -) { - if (zustandStore.getState().isPlaying) { - console.warn("Already streaming"); - return; - } - - // Reuse previously selected camera - if (zustandStore.getState().selectedCamera) { - console.log("Reusing previous device"); - } else { - try { - await updateCameraDevices(); - } catch (error) { - zustandStore.setState({ - errorState: asError(error), - }); - return; - } - } - - // capture new state as it's been modified by `updateCameraDevices` - const state = zustandStore.getState(); - - // something went wrong during `updateCameras`? - if (!state.selectedCamera) { - console.warn("No selected camera!"); - return; - } - - const stream = await state.selectedCamera.startStream(); - const videoTrack = stream.getVideoTracks()[0]; - const videoTrackSettings = videoTrack.getSettings(); - - // can this happen? - if (!videoTrackSettings.width || !videoTrackSettings.height) { - throw new Error(`Video doesn't have dimensions!`); - } - - if (!videoElement.isConnected) { - throw new Error("Video element needs to be in the document!"); - } - - // only setup if it isn't set up already - if (!zustandStore.getState().videoElement) { - setupVideoElement(videoElement); - } - - videoElement.srcObject = stream; - videoElement.width = videoTrackSettings.width; - videoElement.height = videoTrackSettings.height; - - // set the state - zustandStore.setState({ - videoElement, - }); - - if (autoplay) { - await startPlayback(); - } -} - -/** - * Resets the captureSdk and terminates the workers and the Wasm runtime. - */ -async function destroy() { - // We don't need to cancel capture if we're terminating - // await cancelCapture(); - resetCoreStore(); - await remoteWorker.terminate(); -} - -/** - * Single-time setup for a video element - */ -function setupVideoElement(videoElement: HTMLVideoElement) { - // video disconnect / dismount callback - const connectionObserver = new ConnectionObserver((entries) => { - if (!entries[0].connected) { - void destroy(); - } - }); - connectionObserver.observe(videoElement); - - // set up video for autoplay - videoElement.playsInline = true; - // videoElement.muted = true; // doesn't work - videoElement.setAttribute("muted", ""); -} - -/** - * Updates the analyzer. Capture process can't be active. Stop it using - * {@linkcode updateAnalyzerSettings} if required. - * @param settings {@linkcode AnalyzerSettings}. Will merge with the current - * settings. - */ -async function updateAnalyzerSettings(settings: Partial) { - if (zustandStore.getState().isCapturing) { - console.warn( - "Cancel the capture process using `cancelCapture()` before updating settings", - ); - return; - } - - const newSettings = { - ...zustandStore.getState().analyzerSettings, - ...settings, - }; - - await remoteAnalyzer.updateSettings(newSettings); - feedbackParser.updateSettings(newSettings); -} - -/** - * Select a camera device from available ones. - * - * @param camera A camera device configured by the SDK. You can see available - * devices using on {@linkcode ReactiveStore.cameras} available by calling {@linkcode captureSdk.getState()} - */ -async function selectCamera(camera: ConfiguredCamera) { - const state = zustandStore.getState(); - - if (state.selectedCamera === camera) { - console.warn("Already selected"); - return; - } - - // prevent race conditions - if (state.isSwappingCamera) { - return; - } - - const selectedCamera = state.selectedCamera; - - // Need to stop the current stream, as multiple cameras can share resources - // on the same device - - // TODO: do we need to set selectedCamera to undefined? - zustandStore.setState({ - isSwappingCamera: true, - }); - - if (selectedCamera) { - // TODO: Test this assumption on mobile devices. - selectedCamera.stopStream(); - } - - if (state.videoElement) { - // pausePlayback(); - state.videoElement.srcObject = null; - } - - try { - const stream = await camera.startStream(); - - if (state.videoElement) { - state.videoElement.srcObject = stream; - - // resume currently playing session - if (state.isPlaying) { - await state.videoElement.play(); - } - } - - zustandStore.setState({ - selectedCamera: camera, - isSwappingCamera: false, - }); - } catch (error) { - console.error(error); - } -} - -/** - * Stops the currently active stream - */ -async function stopStream() { - console.log("stopStream called"); - const state = zustandStore.getState(); - - state.selectedCamera?.stopStream(); - - if (!state.videoElement) { - console.log("no video element"); - return; - } - - state.videoElement.srcObject = null; - await cancelCapture(); - pausePlayback(); -} - -/** - * The main recognition loop - * @internal - */ -async function loop() { - const state = zustandStore.getState(); - - if (!state.isCapturing) { - return; - } - - // fix for iOS which triggers `requestVideoFrameCallback` even if the video is - // not playing - if (!state.isPlaying) { - return; - } - - if (!state.videoElement) { - // shouldn't happen as disconnecting is handled by an observer which will - // pause the loop - console.error("Missing video element"); - return; - } - - const onFrameAnalysis = state.callbacks?.onFrameAnalysis; - const hasFrameCallback = typeof onFrameAnalysis === "function"; - const capturedFrame = captureFrame(state.videoElement); - - imageDataCopy = new ImageData( - Uint8ClampedArray.from(capturedFrame.data), - capturedFrame.width, - capturedFrame.height, - ); - - // We don't use the `remoteAnalyzer.analyze()`, but a proxy method exposed - // on the worker as we need to clean up the memory from the worker side - const frameResult = await remoteWorker.analyze( - transfer(capturedFrame, [capturedFrame.data.buffer]), - ); - - const uiState = feedbackParser.getUiState(frameResult); - - // set the UI state - zustandStore.setState({ - uiState, - }); - - // trigger frame callback - if (hasFrameCallback) { - try { - onFrameAnalysis(imageDataCopy, frameResult); - } catch (err) { - console.warn("onFrameAnalysis callback exception"); - throw err; - } - } - - if (hasFrameCallback) { - // force GC before next `ImageData` creation - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - window.setTimeout(() => (imageDataCopy = null), 0); - } - - // Manually handle SIDE_CAPTURED/FLIP_CARD - if (uiState.key === "SIDE_CAPTURED") { - pauseCapture(); - zustandStore.setState({ - uiState: uiStateMap.SIDE_CAPTURED, - }); - await new Promise((f) => - setTimeout(f, uiStateMap.SIDE_CAPTURED.minDuration), - ); - zustandStore.setState({ - uiState: uiStateMap.FLIP_CARD, - }); - await new Promise((f) => setTimeout(f, uiStateMap.FLIP_CARD.minDuration)); - await startCapture(); - return; - } - - // Manually handle DOCUMENT_CAPTURED - if (uiState.key === "DOCUMENT_CAPTURED") { - pausePlayback(); - zustandStore.setState({ - uiState: uiStateMap.DOCUMENT_CAPTURED, - }); - await new Promise((f) => - setTimeout(f, uiStateMap.DOCUMENT_CAPTURED.minDuration), - ); - const result = await remoteAnalyzer.getResult(); - - try { - state.callbacks?.onCaptureResult?.(result); - } catch (err) { - console.warn("onCaptureResult callback exception"); - } - - return; - } - - videoFrameRequestId = state.videoElement.requestVideoFrameCallback( - () => void loop(), - ); -} - -/* -------------------------------------------------------------------------- */ -/* CAPTURING */ -/* -------------------------------------------------------------------------- */ - -/** - * Starts playback and capture. - */ -async function startCapture() { - console.log("startCapture called"); - const state = zustandStore.getState(); - - if (state.isCapturing) { - return; - } - - if (!state.videoElement) { - console.warn("Missing video element"); - return; - } - - if (!state.selectedCamera) { - console.warn("No active camera!"); - return; - } - - await startPlayback(); - - // handle side-effect from `startPlayback()` - if (!zustandStore.getState().isPlaying) { - return; - } - - zustandStore.setState({ - isCapturing: true, - }); - - videoFrameRequestId = state.videoElement.requestVideoFrameCallback( - () => void loop(), - ); -} - -/** - * Pauses the capture process without resetting the recognizer. - */ -function pauseCapture() { - console.log("pauseCapture called"); - const video = zustandStore.getState().videoElement; - if (video) { - video.cancelVideoFrameCallback(videoFrameRequestId); - } - zustandStore.setState({ - isCapturing: false, - }); -} - -/** - * Cancels the capture process. Unlike {@linkcode pauseCapture}, it also resets - * the analyzer. - */ -async function cancelCapture() { - console.log("cancelCapture called"); - await resetAnalyzer(); - feedbackParser.reset(); - - pauseCapture(); - - zustandStore.setState({ - uiState: uiStateMap.SENSING_FRONT, - }); -} - -/** - * Resets the analyzer. - */ -async function resetAnalyzer() { - await remoteAnalyzer.reset(); -} - -/** - * Finishes capturing the current side - */ -async function finishSideCapture() { - await remoteAnalyzer.finishSideCapture(); -} - -/** - * Refreshes available devices on the system and updates the state. - */ -async function updateCameraDevices() { - // prevent race conditions - if ( - zustandStore.getState().isQueryingCameras || - zustandStore.getState().isSwappingCamera - ) { - return; - } - - zustandStore.setState({ - isQueryingCameras: true, - }); - const capableCameras = await getCapableCameras(); - - // TODO: handle as error - if (capableCameras.length < 1) { - throw new Error( - "No capable devices found! Your camera needs to have a minimum resolution of 1920x1080", - ); - } - - renameCameras(capableCameras); - const idealCameraId = findIdealCameraId(capableCameras); - - // TODO: better way to handle undefined - const idealCamera = capableCameras.find( - (camera) => camera.deviceInfo.deviceId === idealCameraId, - )!; - - zustandStore.setState({ - cameras: capableCameras, - selectedCamera: idealCamera, - isQueryingCameras: false, - }); -} - -/* -------------------------------------------------------------------------- */ -/* VIDEO PLAYBACK */ -/* -------------------------------------------------------------------------- */ - -/** - * Starts the video playback - * - * @returns resolves when playback starts - */ -async function startPlayback() { - const state = zustandStore.getState(); - - if (state.isPlaying) { - return; - } - - if (!state.videoElement) { - console.warn("No video element present."); - return; - } - - if (!state.videoElement.srcObject) { - console.warn("No source present. Start a camera stream first."); - return; - } - - if (!state.selectedCamera) { - console.warn("No selected camera"); - return; - } - - await state.selectedCamera.startStream(); - - // not using `startPlayback` as we haven't stopped playing as far as the state - // is concerned - await state.videoElement.play(); - zustandStore.setState({ isPlaying: true }); - - // handle resume for iOS - if (state.isCapturing === true) { - state.videoElement.requestVideoFrameCallback(() => void loop()); - } -} - -/** - * Pauses the video playback. This will also stop the capturing process. - */ -function pausePlayback() { - console.log("pausePlayback called"); - const state = zustandStore.getState(); - - if (!state.videoElement) { - zustandStore.setState({ isPlaying: false }); - return; - } - - pauseCapture(); - - state.videoElement.pause(); - zustandStore.setState({ isPlaying: false }); -} - -/** - * Set up callbacks on the SDK - * - * @param newCallbacks A subset of available - * {@linkcode CaptureCallbacks}. Will overwrite the previously set one. - * - * Send an empty object (`{}`) to clear callbacks. - */ -function setCallbacks(newCallbacks: CaptureCallbacks) { - zustandStore.setState({ - callbacks: newCallbacks, - }); -} - -/** - * Main function that loads the SDK and returns a `captureSdk` object - */ - -export async function createCaptureSdk(settings: CaptureSdkSettings) { - try { - if (!window.isSecureContext) { - throw new Error(stripIndents` - Can't load the SDK outside a secure context: - https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts - `); - } - - if (zustandStore.getState().initialized) { - console.warn("Already initialized"); - return captureSdk; - } - - remoteWorker = await createProxyWorker(settings.resourceUrl); - - const userId = getUserId(); - - const remoteWasm = await remoteWorker.loadWasm(); - const licenceUnlockResult = await remoteWasm.initializeWithLicenseKey( - settings.licenseKey, - userId, - false, - ); - - if ( - licenceUnlockResult.unlockResult === - LicenseTokenState.RequiresServerPermission - ) { - const serverPermissionResponse = await obtainNewServerPermission( - licenceUnlockResult, - ); - - const serverPermissionResult = await remoteWasm.submitServerPermission( - JSON.stringify(serverPermissionResponse) as StringifiedBaltazarResponse, - ); - - console.log(serverPermissionResult); - - if ( - serverPermissionResult.status !== ServerPermissionSubmitResultStatus.Ok - ) { - // TODO: more robust error messages - throw new Error("Server unlock not ok."); - } - } - - // lifted out of state - remoteAnalyzer = await remoteWorker.createAnalyzer(); - - const defaultAnalyzerSettings = await remoteAnalyzer.getSettings(); - - const initialSettings: AnalyzerSettings = { - ...defaultAnalyzerSettings, - minimumDocumentDpi: 200, - ...settings.analyzerSettings, - }; - - feedbackParser = new FeedbackParser(initialSettings); - - if (settings.analyzerSettings) { - await remoteAnalyzer.updateSettings(initialSettings); - } - - zustandStore.setState({ - analyzerSettings: initialSettings, - }); - - if (settings.callbacks) { - setCallbacks(settings.callbacks); - } - - zustandStore.setState({ - initialized: true, - }); - - return captureSdk; - } catch (error) { - zustandStore.setState({ - errorState: asError(error), - }); - throw error; - } -} - -// DO NOT EXPORT THIS DIRECTLY - -// TODO: Structure typing so that we don't need JSdocs in two places - -/** - * The core singleton with all public API methods. - * - * Always defined in external scopes, as it's only accessible as a return value - * of {@linkcode createCaptureSdk} - * - */ -const captureSdk = { - /** - * Starts a best-effort camera stream on a provided video element - */ - startCameraStream, - /** - * Stops the currently active stream - */ - stopStream, - /** - * Starts the video playback - * - * @returns resolves when playback starts - */ - startPlayback, - /** - * Pauses the video playback. This will also stop the capturing process. - */ - pausePlayback, - /** - * Starts playback and capture. - */ - startCapture, - /** - * Pauses the capture process without resetting the recognizer. - */ - pauseCapture, - /** - * Cancels the capture process. Unlike {@linkcode pauseCapture}, it also resets - * the analyzer. - */ - cancelCapture, - /** - * Finishes capturing the current side - */ - finishSideCapture, - /** - * Resets the analyzer. - */ - resetAnalyzer, - /** - * Select a camera device from available ones. - * - * @param camera A camera device configured by the SDK. You can see available - * devices using on {@linkcode ReactiveStore.cameras} available by calling {@linkcode captureSdk.getState()} - */ - selectCamera, - /** - * Refreshes available devices on the system and updates the state. - */ - updateCameraDevices, - /** - * Set up callbacks on the SDK - * - * @param newCallbacks A subset of available - * {@linkcode CaptureCallbacks}. Will overwrite the previously set one. - * - * Send an empty object (`{}`) to clear callbacks. - */ - setCallbacks, - /** - * Updates the analyzer. Capture process can't be active. Stop it using - * {@linkcode updateAnalyzerSettings} if required. - * @param settings {@linkcode AnalyzerSettings}. Will merge with the current - * settings. - */ - updateAnalyzerSettings, - /** - * Allows the user to subscribe to state changes inside the Capture SDK. Implemented using Zustand. - * For usage information, see {@link https://github.com/pmndrs/zustand#using-subscribe-with-selector} - */ - subscribe: zustandStore.subscribe, - /** - * Gets the current internal state of the Capture SDK. - */ - getState: zustandStore.getState, - /** - * Resets the SDK core and terminates the workers and the Wasm runtime. - */ - destroy, -}; - -/** The exported API available to the user */ -export type CaptureSdk = typeof captureSdk; diff --git a/packages/capture-main/src/devUtils.ts b/packages/capture-main/src/devUtils.ts index 2c8b5a5..fabd906 100644 --- a/packages/capture-main/src/devUtils.ts +++ b/packages/capture-main/src/devUtils.ts @@ -26,12 +26,10 @@ import * as wasmTypes from "capture-wasm"; // import type {} from "capture-worker"; // this triggers reloading -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import workerConstructor from "capture-worker/dist/capture-worker.js?worker"; +import workerContent from "capture-worker/dist/capture-worker.js?raw"; // we use a falsy check to remove this code during build if (false as true) { - console.log(workerConstructor); + console.log(workerContent); console.log(wasmTypes); console.log(comlink); console.log("THIS SHOULDN'T BE IN THE BUNDLE"); diff --git a/packages/capture-main/src/main.ts b/packages/capture-main/src/index.ts similarity index 52% rename from packages/capture-main/src/main.ts rename to packages/capture-main/src/index.ts index 0303c82..927e8c6 100644 --- a/packages/capture-main/src/main.ts +++ b/packages/capture-main/src/index.ts @@ -9,24 +9,32 @@ * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. */ +import { from } from "solid-js"; import "./devUtils"; - -// polyfill for browsers not supporting `requestVideoFrameCallback` import "rvfc-polyfill"; -export { createCaptureSdk } from "./createCaptureSdk"; +export { createCaptureSdk } from "./core/CaptureSdk"; +export { createDirectApi } from "./core/DirectApi"; +export { createCaptureUi } from "./ui/createCaptureUi"; + +export type { + ExposedComponentApi, + CaptureComponent, +} from "./ui/createCaptureUi"; export type { CaptureSdk, CaptureSdkSettings, CaptureCallbacks, -} from "./createCaptureSdk"; +} from "./core/CaptureSdk"; + +export type { DirectApi, DirectApiSettings } from "./core/DirectApi"; -export { ConfiguredCamera } from "./ConfiguredCamera"; +export { ConfiguredCamera } from "./core/ConfiguredCamera"; -export * from "./imageDataUtils"; -export * from "./zustandStore"; -export * from "./FeedbackParser"; +export * from "./core/imageDataUtils"; +export * from "./core/zustandStore"; +export * from "./core/FeedbackParser"; // export all from other dependencies export * from "capture-wasm"; diff --git a/packages/capture-ui/src/typeUtils.ts b/packages/capture-main/src/typeUtils.ts similarity index 77% rename from packages/capture-ui/src/typeUtils.ts rename to packages/capture-main/src/typeUtils.ts index a26d755..1488d66 100644 --- a/packages/capture-ui/src/typeUtils.ts +++ b/packages/capture-main/src/typeUtils.ts @@ -9,7 +9,7 @@ * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. */ -// TODO: find a better place for these +/* eslint-disable @typescript-eslint/ban-types */ export type DeepPartial = { [K in keyof T]?: T[K] extends object ? DeepPartial : T[K]; @@ -18,3 +18,10 @@ export type DeepPartial = { export type Mutable = { -readonly [k in keyof T]: T[k]; }; + +/** + * Displays the resolved type instead of intersections. + */ +export type Prettify = { + [K in keyof T]: T[K]; +} & {}; diff --git a/packages/capture-main/src/types.d.ts b/packages/capture-main/src/types.d.ts deleted file mode 100644 index f299272..0000000 --- a/packages/capture-main/src/types.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Copyright (c) 2023 Microblink Ltd. All rights reserved. - * - * ANY UNAUTHORIZED USE OR SALE, DUPLICATION, OR DISTRIBUTION - * OF THIS PROGRAM OR ANY OF ITS PARTS, IN SOURCE OR BINARY FORMS, - * WITH OR WITHOUT MODIFICATION, WITH THE PURPOSE OF ACQUIRING - * UNLAWFUL MATERIAL OR ANY OTHER BENEFIT IS PROHIBITED! - * THIS PROGRAM IS PROTECTED BY COPYRIGHT LAWS AND YOU MAY NOT - * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. - */ - -// fix for untyped module - -declare module "rvfc-polyfill"; diff --git a/packages/capture-ui/src/CameraSelector.tsx b/packages/capture-main/src/ui/CameraSelector.tsx similarity index 99% rename from packages/capture-ui/src/CameraSelector.tsx rename to packages/capture-main/src/ui/CameraSelector.tsx index 2fba525..9d58521 100644 --- a/packages/capture-ui/src/CameraSelector.tsx +++ b/packages/capture-main/src/ui/CameraSelector.tsx @@ -102,6 +102,7 @@ export const CameraSelector: Component = () => { padding-right: 48px; position: relative; gap: 1px; + color: var(--mb-color-white); /* separator */ & + * { diff --git a/packages/capture-ui/src/CaptureScreen.tsx b/packages/capture-main/src/ui/CaptureScreen.tsx similarity index 88% rename from packages/capture-ui/src/CaptureScreen.tsx rename to packages/capture-main/src/ui/CaptureScreen.tsx index be704ca..6de89ab 100644 --- a/packages/capture-ui/src/CaptureScreen.tsx +++ b/packages/capture-main/src/ui/CaptureScreen.tsx @@ -13,7 +13,7 @@ import { css } from "@acab/ecsstatic"; import { Component, Show, createEffect } from "solid-js"; import { Dialog } from "@kobalte/core"; -import { uiStateMap } from "capture-main"; + import { Header } from "./Header"; import { useSolidStore } from "./StoreContext"; import { UiFeedbackOverlay } from "./UiFeedbackOverlay"; @@ -24,6 +24,7 @@ import { HelpDialog } from "./HelpDialog"; import { useLocalization } from "./LocalizationContext"; import { OnboardingDialog } from "./OnboardingDialog"; import MicroblinkLogo from "./assets/microblink.svg?component-solid"; +import { uiStateMap } from "../core/FeedbackParser"; // TODO: Full screen background @@ -77,22 +78,32 @@ export const CaptureScreen: Component = () => { when={ sdkStore.isCapturing || // TODO: check why we can't simply compare `uiState`. This is a pervasive problem - //transient states which aren't strictly "not capturing" - sdkStore.uiState.key === uiStateMap.FLIP_CARD.key || + // TODO: transient states which aren't strictly "not capturing". Find + // a better way to handle this sdkStore.uiState.key === uiStateMap.SIDE_CAPTURED.key || - sdkStore.uiState.key === uiStateMap.DOCUMENT_CAPTURED.key + sdkStore.uiState.key === uiStateMap.DOCUMENT_CAPTURED.key || + sdkStore.uiState.key === + uiStateMap.DOCUMENT_FRAMING_CAMERA_ORIENTATION_UNSUITABLE_ANIMATION + .key } > -
+
-
); }; diff --git a/packages/capture-ui/src/CustomButton.tsx b/packages/capture-main/src/ui/CustomButton.tsx similarity index 100% rename from packages/capture-ui/src/CustomButton.tsx rename to packages/capture-main/src/ui/CustomButton.tsx diff --git a/packages/capture-ui/src/DebugControls.tsx b/packages/capture-main/src/ui/DebugControls.tsx similarity index 100% rename from packages/capture-ui/src/DebugControls.tsx rename to packages/capture-main/src/ui/DebugControls.tsx diff --git a/packages/capture-ui/src/ErrorAlert.tsx b/packages/capture-main/src/ui/ErrorAlert.tsx similarity index 97% rename from packages/capture-ui/src/ErrorAlert.tsx rename to packages/capture-main/src/ui/ErrorAlert.tsx index 7cad442..d99f512 100644 --- a/packages/capture-ui/src/ErrorAlert.tsx +++ b/packages/capture-main/src/ui/ErrorAlert.tsx @@ -83,7 +83,7 @@ createGlobalStyle` .alert-dialog__overlay { position: fixed; inset: 0; - z-index: 50; + z-index: var(--mb-z-index-root); background-color: rgb(0 0 0 / 0.2); animation: overlayHide 250ms ease 100ms forwards; pointer-events: none; @@ -94,13 +94,13 @@ createGlobalStyle` .alert-dialog__positioner { position: fixed; inset: 0; - z-index: 50; + z-index: var(--mb-z-index-root); display: flex; align-items: center; justify-content: center; } .alert-dialog__content { - z-index: 50; + z-index: var(--mb-z-index-root); max-width: min(calc(100vw - 16px), 500px); border: 1px solid hsl(240 5% 84%); border-radius: 6px; diff --git a/packages/capture-ui/src/Header.tsx b/packages/capture-main/src/ui/Header.tsx similarity index 100% rename from packages/capture-ui/src/Header.tsx rename to packages/capture-main/src/ui/Header.tsx diff --git a/packages/capture-ui/src/HelpButton.tsx b/packages/capture-main/src/ui/HelpButton.tsx similarity index 98% rename from packages/capture-ui/src/HelpButton.tsx rename to packages/capture-main/src/ui/HelpButton.tsx index 849c614..0d640d8 100644 --- a/packages/capture-ui/src/HelpButton.tsx +++ b/packages/capture-main/src/ui/HelpButton.tsx @@ -73,7 +73,7 @@ const buttonStyles = css` `; const tooltipContent = css` - z-index: 50; + z-index: var(--mb-z-index-root); max-width: min(calc(100vw - 16px), 380px); border-radius: 6px; padding: 8px; diff --git a/packages/capture-ui/src/HelpDialog.tsx b/packages/capture-main/src/ui/HelpDialog.tsx similarity index 100% rename from packages/capture-ui/src/HelpDialog.tsx rename to packages/capture-main/src/ui/HelpDialog.tsx diff --git a/packages/capture-ui/src/LocalizationContext.tsx b/packages/capture-main/src/ui/LocalizationContext.tsx similarity index 100% rename from packages/capture-ui/src/LocalizationContext.tsx rename to packages/capture-main/src/ui/LocalizationContext.tsx diff --git a/packages/capture-ui/src/OnboardingDialog.tsx b/packages/capture-main/src/ui/OnboardingDialog.tsx similarity index 100% rename from packages/capture-ui/src/OnboardingDialog.tsx rename to packages/capture-main/src/ui/OnboardingDialog.tsx diff --git a/packages/capture-ui/src/RootComponent.tsx b/packages/capture-main/src/ui/RootComponent.tsx similarity index 95% rename from packages/capture-ui/src/RootComponent.tsx rename to packages/capture-main/src/ui/RootComponent.tsx index ffcf0a0..38c77ab 100644 --- a/packages/capture-ui/src/RootComponent.tsx +++ b/packages/capture-main/src/ui/RootComponent.tsx @@ -40,7 +40,7 @@ const RootComponent: Component<{ return ( <> - + {(error) => } diff --git a/packages/capture-ui/src/ScoreDisplay.tsx b/packages/capture-main/src/ui/ScoreDisplay.tsx similarity index 97% rename from packages/capture-ui/src/ScoreDisplay.tsx rename to packages/capture-main/src/ui/ScoreDisplay.tsx index a4d63a9..18f5554 100644 --- a/packages/capture-ui/src/ScoreDisplay.tsx +++ b/packages/capture-main/src/ui/ScoreDisplay.tsx @@ -11,8 +11,8 @@ import { Component, createEffect, Show, For } from "solid-js"; import { createStore, reconcile } from "solid-js/store"; -import { UiStateKey } from "capture-main/types/FeedbackParser"; import { css } from "@acab/ecsstatic"; +import { UiStateKey } from "../core/FeedbackParser"; type Score = { key: UiStateKey; diff --git a/packages/capture-ui/src/StoreContext.tsx b/packages/capture-main/src/ui/StoreContext.tsx similarity index 97% rename from packages/capture-ui/src/StoreContext.tsx rename to packages/capture-main/src/ui/StoreContext.tsx index 5d4ee53..09dd0d7 100644 --- a/packages/capture-ui/src/StoreContext.tsx +++ b/packages/capture-main/src/ui/StoreContext.tsx @@ -9,14 +9,6 @@ * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. */ -import { - CaptureSdk, - CaptureSdkSettings, - ReactiveStore, - createCaptureSdk, - zustandStore, -} from "capture-main"; - import { ParentComponent, createContext, @@ -28,6 +20,12 @@ import { import { SetStoreFunction, createStore } from "solid-js/store"; import { MountableElement } from "solid-js/web"; import { useStore } from "solid-zustand"; +import { + CaptureSdk, + CaptureSdkSettings, + createCaptureSdk, +} from "../core/CaptureSdk"; +import { ReactiveStore, zustandStore } from "../core/zustandStore"; import { LocalizationStrings } from "./LocalizationContext"; export type SolidStore = { diff --git a/packages/capture-ui/src/UiFeedbackOverlay.tsx b/packages/capture-main/src/ui/UiFeedbackOverlay.tsx similarity index 79% rename from packages/capture-ui/src/UiFeedbackOverlay.tsx rename to packages/capture-main/src/ui/UiFeedbackOverlay.tsx index d5dfb32..b2ea423 100644 --- a/packages/capture-ui/src/UiFeedbackOverlay.tsx +++ b/packages/capture-main/src/ui/UiFeedbackOverlay.tsx @@ -16,7 +16,7 @@ import clsx from "clsx"; import { Component, Match, ParentComponent, Show, Switch } from "solid-js"; import { useSolidStore } from "./StoreContext"; -import { UiState, uiStateMap } from "capture-main"; +import { UiState, uiStateMap } from "../core/FeedbackParser"; import { useLocalization } from "./LocalizationContext"; import CardIconBack from "./assets/reticles/card-back.svg?component-solid"; import CardIconFront from "./assets/reticles/card-front.svg?component-solid"; @@ -29,6 +29,15 @@ import { feedbackMessages } from "./feedbackMessages"; export const UiFeedbackOverlay: Component = () => { const { sdkStore } = useSolidStore(); + const videoOrientation = () => { + const w = sdkStore.videoElement!.videoWidth; + const h = sdkStore.videoElement!.videoHeight; + + const isLandscape = w > h; + + return isLandscape ? "landscape" : "portrait"; + }; + return (
{ + + +
@@ -80,7 +92,7 @@ export const UiFeedbackOverlay: Component = () => { ); }; -const DoneFeedback = () => ( +const DoneFeedback: Component = () => ( ( ); -const FlipCardFeedback = () => ( +const RotateCardFeedback: Component<{ + videoOrientation: "landscape" | "portrait"; +}> = (props) => ( +
+ + + + +
+); + +const FlipCardFeedback: Component = () => (
( rotateY: ["180deg"], transition: { rotateY: { - duration: (uiStateMap.FLIP_CARD.minDuration - 100) / 1000, + duration: (uiStateMap.SIDE_CAPTURED.minDuration - 1500) / 1000, }, opacity: { duration: 0.5, diff --git a/packages/capture-ui/src/assets/camera.svg b/packages/capture-main/src/ui/assets/camera.svg similarity index 100% rename from packages/capture-ui/src/assets/camera.svg rename to packages/capture-main/src/ui/assets/camera.svg diff --git a/packages/capture-ui/src/assets/check.svg b/packages/capture-main/src/ui/assets/check.svg similarity index 100% rename from packages/capture-ui/src/assets/check.svg rename to packages/capture-main/src/ui/assets/check.svg diff --git a/packages/capture-ui/src/assets/close.svg b/packages/capture-main/src/ui/assets/close.svg similarity index 100% rename from packages/capture-ui/src/assets/close.svg rename to packages/capture-main/src/ui/assets/close.svg diff --git a/packages/capture-ui/src/assets/general-c-chevron-down.svg b/packages/capture-main/src/ui/assets/general-c-chevron-down.svg similarity index 100% rename from packages/capture-ui/src/assets/general-c-chevron-down.svg rename to packages/capture-main/src/ui/assets/general-c-chevron-down.svg diff --git a/packages/capture-ui/src/assets/help/help_fields_visible.svg b/packages/capture-main/src/ui/assets/help/help_fields_visible.svg similarity index 100% rename from packages/capture-ui/src/assets/help/help_fields_visible.svg rename to packages/capture-main/src/ui/assets/help/help_fields_visible.svg diff --git a/packages/capture-ui/src/assets/help/help_harsh_light.svg b/packages/capture-main/src/ui/assets/help/help_harsh_light.svg similarity index 100% rename from packages/capture-ui/src/assets/help/help_harsh_light.svg rename to packages/capture-main/src/ui/assets/help/help_harsh_light.svg diff --git a/packages/capture-ui/src/assets/help/help_keep_still.svg b/packages/capture-main/src/ui/assets/help/help_keep_still.svg similarity index 100% rename from packages/capture-ui/src/assets/help/help_keep_still.svg rename to packages/capture-main/src/ui/assets/help/help_keep_still.svg diff --git a/packages/capture-ui/src/assets/help/onboarding.svg b/packages/capture-main/src/ui/assets/help/onboarding.svg similarity index 100% rename from packages/capture-ui/src/assets/help/onboarding.svg rename to packages/capture-main/src/ui/assets/help/onboarding.svg diff --git a/packages/capture-ui/src/assets/icons/icon-back.svg b/packages/capture-main/src/ui/assets/icons/icon-back.svg similarity index 100% rename from packages/capture-ui/src/assets/icons/icon-back.svg rename to packages/capture-main/src/ui/assets/icons/icon-back.svg diff --git a/packages/capture-ui/src/assets/icons/icon-camera.svg b/packages/capture-main/src/ui/assets/icons/icon-camera.svg similarity index 100% rename from packages/capture-ui/src/assets/icons/icon-camera.svg rename to packages/capture-main/src/ui/assets/icons/icon-camera.svg diff --git a/packages/capture-ui/src/assets/icons/icon-close.svg b/packages/capture-main/src/ui/assets/icons/icon-close.svg similarity index 100% rename from packages/capture-ui/src/assets/icons/icon-close.svg rename to packages/capture-main/src/ui/assets/icons/icon-close.svg diff --git a/packages/capture-ui/src/assets/icons/icon-image-capture.svg b/packages/capture-main/src/ui/assets/icons/icon-image-capture.svg similarity index 100% rename from packages/capture-ui/src/assets/icons/icon-image-capture.svg rename to packages/capture-main/src/ui/assets/icons/icon-image-capture.svg diff --git a/packages/capture-ui/src/assets/icons/icon-question.svg b/packages/capture-main/src/ui/assets/icons/icon-question.svg similarity index 100% rename from packages/capture-ui/src/assets/icons/icon-question.svg rename to packages/capture-main/src/ui/assets/icons/icon-question.svg diff --git a/packages/capture-ui/src/assets/microblink.svg b/packages/capture-main/src/ui/assets/microblink.svg similarity index 100% rename from packages/capture-ui/src/assets/microblink.svg rename to packages/capture-main/src/ui/assets/microblink.svg diff --git a/packages/capture-ui/src/assets/reticles/card-back.svg b/packages/capture-main/src/ui/assets/reticles/card-back.svg similarity index 100% rename from packages/capture-ui/src/assets/reticles/card-back.svg rename to packages/capture-main/src/ui/assets/reticles/card-back.svg diff --git a/packages/capture-ui/src/assets/reticles/card-front.svg b/packages/capture-main/src/ui/assets/reticles/card-front.svg similarity index 100% rename from packages/capture-ui/src/assets/reticles/card-front.svg rename to packages/capture-main/src/ui/assets/reticles/card-front.svg diff --git a/packages/capture-ui/src/assets/reticles/done.svg b/packages/capture-main/src/ui/assets/reticles/done.svg similarity index 100% rename from packages/capture-ui/src/assets/reticles/done.svg rename to packages/capture-main/src/ui/assets/reticles/done.svg diff --git a/packages/capture-ui/src/assets/reticles/full.svg b/packages/capture-main/src/ui/assets/reticles/full.svg similarity index 100% rename from packages/capture-ui/src/assets/reticles/full.svg rename to packages/capture-main/src/ui/assets/reticles/full.svg diff --git a/packages/capture-ui/src/assets/reticles/searching.svg b/packages/capture-main/src/ui/assets/reticles/searching.svg similarity index 100% rename from packages/capture-ui/src/assets/reticles/searching.svg rename to packages/capture-main/src/ui/assets/reticles/searching.svg diff --git a/packages/capture-ui/src/assets/reticles/spin.svg b/packages/capture-main/src/ui/assets/reticles/spin.svg similarity index 100% rename from packages/capture-ui/src/assets/reticles/spin.svg rename to packages/capture-main/src/ui/assets/reticles/spin.svg diff --git a/packages/capture-ui/src/createCaptureUi.tsx b/packages/capture-main/src/ui/createCaptureUi.tsx similarity index 93% rename from packages/capture-ui/src/createCaptureUi.tsx rename to packages/capture-main/src/ui/createCaptureUi.tsx index f9b4ade..e8aa5a7 100644 --- a/packages/capture-ui/src/createCaptureUi.tsx +++ b/packages/capture-main/src/ui/createCaptureUi.tsx @@ -10,17 +10,17 @@ */ import { MountableElement, render } from "solid-js/web"; -import { isPlainObject } from "is-plain-object"; -import { CaptureSdk, CaptureSdkSettings } from "capture-main"; +import deepmerge from "deepmerge"; import { SetStoreFunction } from "solid-js/store"; +import { CaptureSdk, CaptureSdkSettings } from "../core/CaptureSdk"; import { LocalizationProvider, LocalizationStrings, } from "./LocalizationContext"; import { RootComponent } from "./RootComponent"; import { SolidStore, StoreProvider, UiSettings } from "./StoreContext"; -import deepmerge from "deepmerge"; +import isPlainObject from "is-plain-obj"; export type CaptureComponent = { /** Dismounts the component from the DOM and unloads the SDK */ @@ -51,7 +51,10 @@ export const MOUNT_POINT_ID = "mount-point"; */ export function createCaptureUi(settings: CreateCaptureUiSettings) { return new Promise((resolve) => { - const dismount = () => dismountRef(); + const dismount = () => { + dismountRef(); + document.getElementById(MOUNT_POINT_ID)?.remove(); + }; const initialState: SolidStore = { captureSdk: undefined, diff --git a/packages/capture-ui/src/dialogStyles.ts b/packages/capture-main/src/ui/dialogStyles.ts similarity index 97% rename from packages/capture-ui/src/dialogStyles.ts rename to packages/capture-main/src/ui/dialogStyles.ts index 8a29593..6d0df21 100644 --- a/packages/capture-ui/src/dialogStyles.ts +++ b/packages/capture-main/src/ui/dialogStyles.ts @@ -20,7 +20,7 @@ export const positionerStyle = css` width: 100dvw; top: 0; left: 0; - z-index: 50; + z-index: var(--mb-z-index-root); display: flex; align-items: center; justify-content: center; diff --git a/packages/capture-ui/src/feedbackMessages.ts b/packages/capture-main/src/ui/feedbackMessages.ts similarity index 82% rename from packages/capture-ui/src/feedbackMessages.ts rename to packages/capture-main/src/ui/feedbackMessages.ts index 87904be..a39b558 100644 --- a/packages/capture-ui/src/feedbackMessages.ts +++ b/packages/capture-main/src/ui/feedbackMessages.ts @@ -9,7 +9,7 @@ * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. */ -import { UiStateKey } from "capture-main"; +import { UiStateKey } from "../core/FeedbackParser"; import { LocalizationStrings } from "./LocalizationContext"; export const feedbackMessages: Partial< @@ -17,7 +17,7 @@ export const feedbackMessages: Partial< > = { SENSING_FRONT: "scan_the_front_side", SENSING_BACK: "scan_the_back_side", - FLIP_CARD: "flip_document", + SIDE_CAPTURED: "flip_document", WRONG_SIDE: "scanning_wrong_side", // occlusion BLUR_DETECTED: "blur_detected", @@ -28,6 +28,9 @@ export const feedbackMessages: Partial< DOCUMENT_FRAMING_CAMERA_TOO_FAR: "move_closer", DOCUMENT_TOO_CLOSE_TO_FRAME_EDGE: "document_too_close_to_edge", DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP: "camera_angle_too_steep", + DOCUMENT_FRAMING_CAMERA_ORIENTATION_UNSUITABLE: "rotate_phone", + DOCUMENT_FRAMING_CAMERA_ORIENTATION_UNSUITABLE_ANIMATION: + "rotate_phone_animation", // lighting LIGHTING_TOO_DARK: "lightning_too_dark", LIGHTING_TOO_BRIGHT: "lightning_too_bright", diff --git a/packages/capture-ui/src/locales/en.ts b/packages/capture-main/src/ui/locales/en.ts similarity index 94% rename from packages/capture-ui/src/locales/en.ts rename to packages/capture-main/src/ui/locales/en.ts index 5adc651..c6ef3ee 100644 --- a/packages/capture-ui/src/locales/en.ts +++ b/packages/capture-main/src/ui/locales/en.ts @@ -20,7 +20,9 @@ export default { move_closer: "Move closer", move_farther: "Move farther", camera_angle_too_steep: "Keep document parallel to phone", - document_too_close_to_edge: "Keep the document fully visible", + document_too_close_to_edge: "Move farther", + rotate_phone_animation: "Rotate card or turn phone to landscape", + rotate_phone: "Rotate phone or card", lightning_too_bright: "Move to spot with less lighting", lightning_too_dark: "Move to brighter spot", blur_detected: "Keep document and phone still", diff --git a/packages/capture-ui/src/root-styles.scss b/packages/capture-main/src/ui/root-styles.scss similarity index 99% rename from packages/capture-ui/src/root-styles.scss rename to packages/capture-main/src/ui/root-styles.scss index cc48295..10b7572 100644 --- a/packages/capture-ui/src/root-styles.scss +++ b/packages/capture-main/src/ui/root-styles.scss @@ -35,6 +35,8 @@ --mb-reticle-error: rgba(251, 113, 133, 0.6); --mb-camera-picker-bg: rgba(102, 102, 102, 0.5); + + --mb-z-index-root: 50; } .mb-style-scope { diff --git a/packages/capture-ui/svgo.config.cjs b/packages/capture-main/svgo.config.cjs similarity index 100% rename from packages/capture-ui/svgo.config.cjs rename to packages/capture-main/svgo.config.cjs diff --git a/packages/capture-main/tsconfig.json b/packages/capture-main/tsconfig.json index 69b98c5..4e98c6b 100644 --- a/packages/capture-main/tsconfig.json +++ b/packages/capture-main/tsconfig.json @@ -3,7 +3,18 @@ "compilerOptions": { "emitDeclarationOnly": true, "declarationDir": "types", - "rootDir": "src" + "rootDir": "src", + "jsx": "preserve", + "jsxImportSource": "solid-js", + "types": ["vite/client", "vite-plugin-solid-svg/types"], + "plugins": [ + { + "name": "@styled/typescript-styled-plugin", + "lint": { + "validProperties": ["overscroll-behavior", "text-wrap"] + } + } + ] }, "include": ["src"] } diff --git a/packages/capture-main/vite.config.mts b/packages/capture-main/vite.config.mts index 18ef9a7..6065876 100644 --- a/packages/capture-main/vite.config.mts +++ b/packages/capture-main/vite.config.mts @@ -1,6 +1,10 @@ +import { ecsstatic } from "@acab/ecsstatic/vite"; +import { getPackagePath, linkResources } from "@mb/utils"; +import { stripIndents } from "common-tags"; import { resolve } from "node:path"; import { defineConfig } from "vite"; -import { linkResources, getPackagePath } from "@mb/utils"; +import solidPlugin from "vite-plugin-solid"; +import solidSvg from "vite-plugin-solid-svg"; import { fs } from "zx"; import { dependencies } from "./package.json"; @@ -11,7 +15,7 @@ export default defineConfig((config) => ({ target: "es2022", lib: { entry: { - capture: resolve(__dirname, "./src/main.ts"), + capture: resolve(__dirname, "./src/index.ts"), }, name: "capture", // fileName: (format, name) => `${name}.${format}.js`, @@ -19,14 +23,20 @@ export default defineConfig((config) => ({ }, }, plugins: [ + solidPlugin(), + solidSvg(), + ecsstatic({ + classNamePrefix: "mb", + }), { name: "move-resources", buildStart: async () => { if (ranOnce) { return; } - moveDist("capture-wasm"); - moveDist("capture-worker"); + await moveDist("capture-wasm"); + await moveDist("capture-worker"); + await writeResourceDoc(); ranOnce = true; }, }, @@ -37,6 +47,15 @@ let ranOnce = false; type Dependency = keyof typeof dependencies; +async function writeResourceDoc() { + fs.outputFile( + "public/resources/DO_NOT_MODIFY_THIS_DIRECTORY.md", + stripIndents` + Do not modify the name of this directory, or the files inside it. + The Wasm and Web Workers will look for the \`resources\` directory on the path.`, + ); +} + async function moveDist(path: Dependency) { const pkgPath = getPackagePath(path); const distPath = `${pkgPath}/dist`; diff --git a/packages/capture-published/.gitignore b/packages/capture-published/.gitignore new file mode 100644 index 0000000..6418c11 --- /dev/null +++ b/packages/capture-published/.gitignore @@ -0,0 +1,4 @@ +README.md +dist +types +publish-dir \ No newline at end of file diff --git a/packages/capture-published/CHANGELOG.md b/packages/capture-published/CHANGELOG.md new file mode 100644 index 0000000..3e4b7b0 --- /dev/null +++ b/packages/capture-published/CHANGELOG.md @@ -0,0 +1,92 @@ +# @microblink/capture + +## 1.1.0 + +### Minor Changes + +- - Users can now initialize the SDK in a low-level _DirectAPI_ mode using `createDirectApi` + - This mode gives users the capability to directly interact with the `Analyzer` instance, bypassing the provided functionality in the Capture SDK such as camera and video management, user feedback, callbacks and state management. + - Added `camera-orientation-unsuitable` to `DocumentFramingStatus`. This status is returned if it's not possible to capture the document in its current orientation. + - When using the SDK the user will be guided to rotate the document. + - Added `adjustMinimumDocumentDpi` setting on the `Analyzer`. + When enabled, the minimum dpi is adjusted to optimal value for the + provided input resolution to enable capture of all document groups. + - Added the capability to mirror the camera stream horizontally. Enabled by default on front facing cameras. + - The current state can be found on the `mirrorX` property in the store and toggled using the `setMirrorX` method on the SDK instance. + - The `finishSideCapture` method has been added to the SDK instance which allows users to manually finish the capturing process early if there are any candidates available. + - The `completenessStatus` property on the `AnalyzerResult` spelling has been fixed (was `completnessStatus`) + - The `frame` and `frameResult` parameters in `onFrameCallback` have been swapped as the actual `ImageData` is required less often + - Improved guide for hosting resources + - `CaptureSdk` and `CaptureUi` provide a stricter API contract + - Lowered bundle size + - Improved error handling in the web worker + - `videoFrameCallback` is now only polyfilled in browsers, so that SSR builds work properly now. + - The `showErrorDialog` option now works properly + - Updated the capture animations + - The `z-index` of floating elements can be configured by overriding the `--mb-z-index-root` CSS custom property + - Added `mb-logo` class to the Microblink logo for customization purposes + - Fixed inherited font color in the camera selector + +## 1.0.8 + +### Patch Changes + +- Bugfix: prevent loading cross-origin worker on non-threaded builds + - capture-main@1.0.8 + - capture-ui@1.0.8 + +## 1.0.7 + +### Patch Changes + +- 15bde2b: Implemented an approach from https://github.com/CezaryDanielNowak/CrossOriginWorker to load workers cross-domain. + + According to spec, `new Worker` should honor the response's CORS headers + but this doesn't work in any of the browsers, so an approach was used + that inlines the fetched resources inside a `Blob` and a `ObjectURL` so + that they execute from the same domain. + + Note, that this approach won't work with certain CSPs and is not + recommended. It also may break at any point as it's skirting around some + pretty undefined browser behaviours. + + The recommended way is still to host the resources and the SDK on the + same domain. + +- Updated dependencies [15bde2b] + - capture-main@1.0.7 + - capture-ui@1.0.7 + +## 1.0.6 + +### Patch Changes + +- Updated dependencies [2412e97] + - capture-ui@1.0.6 + +## 1.0.5 + +### Patch Changes + +- Add missing readme to published package + +## 1.0.4 + +### Patch Changes + +- Fixes a critical issue where the published npm package was dependent on private packages + +## 1.0.3 + +### Patch Changes + +- Fixing incorrect npm publish + +## 1.0.2 + +### Patch Changes + +- - Fixed incorrect initialization of user-provided UI settings + - Fixed a bug where calling the dismount function without a target DOM node would clear the document body +- Updated dependencies + - capture-ui@1.0.1 diff --git a/packages/capture/api-extractor.json b/packages/capture-published/api-extractor.json similarity index 99% rename from packages/capture/api-extractor.json rename to packages/capture-published/api-extractor.json index ea3078e..65612c1 100644 --- a/packages/capture/api-extractor.json +++ b/packages/capture-published/api-extractor.json @@ -60,7 +60,13 @@ * This would direct API Extractor to embed those types directly in the .d.ts rollup, as if they had been * local files for library1. */ - "bundledPackages": ["capture-main", "capture-wasm", "capture-ui", "zustand"], + "bundledPackages": [ + "capture-main", + "capture-wasm", + "capture-worker", + "comlink", + "zustand" + ], /** * Specifies what type of newlines API Extractor should use when writing output files. By default, the output files @@ -255,8 +261,7 @@ * SUPPORTED TOKENS: , , * DEFAULT VALUE: "/dist/.d.ts" */ - // CHANGED: OVERWRITE index.d.ts - "untrimmedFilePath": "types/index.d.ts" + "untrimmedFilePath": "types/capture.d.ts" /** * Specifies the output path for a .d.ts rollup file to be generated with trimming for an "alpha" release. diff --git a/packages/capture-published/create-npm.mts b/packages/capture-published/create-npm.mts new file mode 100644 index 0000000..04f365a --- /dev/null +++ b/packages/capture-published/create-npm.mts @@ -0,0 +1,102 @@ +process.env.FORCE_COLOR = "1"; +import { getPackagePath } from "@mb/utils"; +import type { PackageJson } from "type-fest"; +import "zx/globals"; +import packageJson from "./package.json"; + +// On macOS, the /var directory is actually a symbolic link to /private/var +const RELEASE_DIR = fs.realpathSync(`${os.tmpdir()}/capture-temp`); + +const mainPackagePath = getPackagePath("capture-main"); +const releasePackagePath = path.resolve("."); +const publishPackagePath = path.resolve(releasePackagePath, "publish-dir"); +fs.ensureDirSync(publishPackagePath); + +const scriptPath = path.resolve("."); +const isInGitHub = scriptPath === `${RELEASE_DIR}/release/capture-npm-package`; + +const ONLY_RUN_IN_GITHUB = false; + +if (isInGitHub && ONLY_RUN_IN_GITHUB) { + console.error( + chalk.red( + "This script should only be run from generated GitHub repository.", + ), + ); + process.exit(1); +} + +// const remote = (await $`git remote get-url origin`.quiet()).toString(); + +// Exit if not in the right repository +// if (remote !== "git@github.com:BlinkID/capture-browser.git") { +// console.error( +// chalk.red( +// "This script should only be run from generated GitHub repository.", +// ), +// ); +// process.exit(1); +// } + +// const rootDirectory = (await $`git rev-parse --show-toplevel`.quiet()) +// .toString() +// .trim(); + +// Exit if folder is empty +// if (!fs.existsSync(RELEASE_DIR)) { +// console.log("Folder does not exist"); +// process.exit(1); +// } + +// prepare release package +fs.copySync(`${mainPackagePath}/dist`, `${publishPackagePath}/dist`); +fs.copySync(`${mainPackagePath}/types`, `${releasePackagePath}/types`); + +// roll up types +await $`npm run rollup`; + +// prepare publish package +fs.ensureDirSync(`${publishPackagePath}/types`); +fs.emptyDirSync(`${publishPackagePath}/types`); + +// copy rolled up types to the publish package +fs.copySync( + `${releasePackagePath}/types/capture.d.ts`, + `${publishPackagePath}/types/index.d.ts`, +); +fs.copySync( + `${releasePackagePath}/types/capture.d.ts`, + `${publishPackagePath}/types/index.d.cts`, +); + +// create package.json +const publishPackageJson: PackageJson = { + name: packageJson.name, + version: packageJson.version, + homepage: packageJson.homepage, + repository: packageJson.repository, + description: + "A smart image capturing library for WebAssembly-enabled browsers", + type: "module", + main: packageJson.main, + module: packageJson.module, + types: packageJson.types, + exports: packageJson.exports, + // TODO: see if we can add transitive types some other way, or roll them up + dependencies: { + "solid-js": packageJson.devDependencies["solid-js"], + "@types/emscripten": packageJson.devDependencies["@types/emscripten"], + }, +}; + +// write it +fs.writeFileSync( + `${publishPackagePath}/package.json`, + JSON.stringify(publishPackageJson, null, 2), +); + +// copy readme file +fs.copySync(`${RELEASE_DIR}/README.md`, `${publishPackagePath}/README.md`); + +// lint the package +await $`pnpm lint:package`; diff --git a/packages/capture-published/package-description.md b/packages/capture-published/package-description.md new file mode 100644 index 0000000..ff16b47 --- /dev/null +++ b/packages/capture-published/package-description.md @@ -0,0 +1 @@ +This is a placeholder package for the npm published version of @microblink/capture diff --git a/packages/capture-published/package.json b/packages/capture-published/package.json new file mode 100644 index 0000000..350ba5d --- /dev/null +++ b/packages/capture-published/package.json @@ -0,0 +1,60 @@ +{ + "name": "@microblink/capture", + "description": "", + "homepage": "https://microblink.com/", + "repository": "github:BlinkID/capture-browser", + "version": "1.1.0", + "scripts": { + "build": "pnpm run create-npm", + "clean": "rimraf .turbo types dist publish-dir public *.tsbuildinfo", + "create-npm": "tsx create-npm.mts", + "lint:package": "publint publish-dir && attw publish-dir --pack publish-dir --exclude-entrypoints style.css", + "rollup": "api-extractor run --local --verbose" + }, + "type": "module", + "main": "./dist/capture.umd.cjs", + "module": "./dist/capture.js", + "types": "./types/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./types/index.d.ts", + "default": "./dist/capture.js" + }, + "require": { + "types": "./types/index.d.cts", + "default": "./dist/capture.umd.cjs" + } + }, + "./style.css": "./dist/style.css", + "./package.json": "./package.json" + }, + "files": [ + "dist", + "types" + ], + "devDependencies": { + "@arethetypeswrong/cli": "^0.12.2", + "@mb/utils": "workspace:*", + "@microsoft/api-extractor": "^7.38.0", + "@types/emscripten": "^1.39.9", + "capture-main": "1.0.7", + "capture-wasm": "workspace:*", + "capture-worker": "workspace:*", + "comlink": "^4.4.1", + "concurrently": "^8.2.2", + "publint": "^0.2.5", + "rimraf": "^5.0.5", + "solid-js": "^1.8.3", + "tsconfig": "workspace:*", + "tsx": "^3.14.0", + "type-fest": "^4.6.0", + "vite": "^4.5.0", + "zustand": "^4.4.4", + "zx": "^7.2.3" + }, + "publishConfig": { + "directory": "publish-dir", + "linkDirectory": true + } +} diff --git a/packages/capture/tsconfig.json b/packages/capture-published/tsconfig.json similarity index 78% rename from packages/capture/tsconfig.json rename to packages/capture-published/tsconfig.json index ba5202d..cc74bb0 100644 --- a/packages/capture/tsconfig.json +++ b/packages/capture-published/tsconfig.json @@ -3,9 +3,7 @@ "compilerOptions": { "emitDeclarationOnly": true, "declarationDir": "types", - "rootDir": "src", "declarationMap": false, "sourceMap": false - }, - "include": ["src"] + } } diff --git a/packages/capture-ui/turbo.json b/packages/capture-published/turbo.json similarity index 70% rename from packages/capture-ui/turbo.json rename to packages/capture-published/turbo.json index 59c7384..2056e8c 100644 --- a/packages/capture-ui/turbo.json +++ b/packages/capture-published/turbo.json @@ -3,7 +3,7 @@ "extends": ["//"], "pipeline": { "build": { - "outputs": ["dist/**"] + "outputs": ["types/**", "publish-dir/**"] } } } diff --git a/packages/capture-ui/.eslintrc.cjs b/packages/capture-ui/.eslintrc.cjs deleted file mode 100644 index 4b6a985..0000000 --- a/packages/capture-ui/.eslintrc.cjs +++ /dev/null @@ -1,53 +0,0 @@ -const { defineConfig } = require("eslint-define-config"); - -module.exports = defineConfig({ - root: true, - - parserOptions: { - ecmaVersion: "2022", - sourceType: "module", - }, - - overrides: [ - { - files: ["src/**/*.{ts,tsx}"], - plugins: ["@typescript-eslint", "solid"], - parser: "@typescript-eslint/parser", - // have to duplicate in override... - rules: { - "@typescript-eslint/no-unused-vars": 0, - // the following two are causing errors in vscode. See: - // https://typescript-eslint.io/linting/troubleshooting/#changes-to-one-file-are-not-reflected-when-linting-other-files-in-my-ide - "@typescript-eslint/no-unsafe-assignment": 0, - "@typescript-eslint/no-unsafe-member-access": 0, - // only use in tsx - "@typescript-eslint/no-non-null-assertion": 0, - "@typescript-eslint/consistent-type-definitions": 0, - "prefer-const": 0, - }, - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json"], - }, - extends: [ - "eslint:recommended", - "plugin:solid/typescript", - "plugin:@typescript-eslint/recommended-type-checked", - "plugin:@typescript-eslint/stylistic-type-checked", - "prettier", - ], - }, - { - files: ["**/*.{js,mjs,cjs}"], - env: { - node: true, - browser: true, - es2021: true, - }, - extends: ["eslint:recommended"], - rules: { - "no-unused-vars": 0, - }, - }, - ], -}); diff --git a/packages/capture-ui/.gitignore b/packages/capture-ui/.gitignore deleted file mode 100644 index e2077a7..0000000 --- a/packages/capture-ui/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules -dist -public -types -certs \ No newline at end of file diff --git a/packages/capture-ui/CHANGELOG.md b/packages/capture-ui/CHANGELOG.md deleted file mode 100644 index 37094bf..0000000 --- a/packages/capture-ui/CHANGELOG.md +++ /dev/null @@ -1,43 +0,0 @@ -# capture-ui - -## 1.0.8 - -### Patch Changes - -- capture-main@1.0.8 - -## 1.0.7 - -### Patch Changes - -- 15bde2b: Implemented an approach from https://github.com/CezaryDanielNowak/CrossOriginWorker to load workers cross-domain. - - According to spec, `new Worker` should honor the response's CORS headers - but this doesn't work in any of the browsers, so an approach was used - that inlines the fetched resources inside a `Blob` and a `ObjectURL` so - that they execute from the same domain. - - Note, that this approach won't work with certain CSPs and is not - recommended. It also may break at any point as it's skirting around some - pretty undefined browser behaviours. - - The recommended way is still to host the resources and the SDK on the - same domain. - -- Updated dependencies [15bde2b] - - capture-main@1.0.7 - -## 1.0.6 - -### Patch Changes - -- 2412e97: - Fixed an issue where React refs weren't a valid target for `UiSettings.target`. - - Updated JSdoc for `createCaptureUI` - - Updated React example to use `UiSettings.target` - -## 1.0.1 - -### Patch Changes - -- - Fixed incorrect initialization of user-provided UI settings - - Fixed a bug where calling the dismount function without a target DOM node would clear the document body diff --git a/packages/capture-ui/lint-staged.config.cjs b/packages/capture-ui/lint-staged.config.cjs deleted file mode 100644 index d3d3875..0000000 --- a/packages/capture-ui/lint-staged.config.cjs +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - "!(*.nolint).{js,jsx,ts,tsx}": [() => "eslint --max-warnings=0"], - "!(*.nolint).{ts,tsx}": [ - () => "tsc-files --skipLibCheck --emitDeclarationOnly false --noEmit", - ], - "!(*.nolint).{js,jsx,ts,tsx,css,md}": ["prettier --write"], -}; diff --git a/packages/capture-ui/package.json b/packages/capture-ui/package.json deleted file mode 100644 index 6fb33af..0000000 --- a/packages/capture-ui/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "name": "capture-ui", - "version": "1.0.8", - "private": true, - "type": "module", - "description": "", - "scripts": { - "build:js": "vite build", - "build:js-dev": "vite build --mode development", - "build:types": "tsc", - "watch:js": "pnpm run build:js --watch --mode development", - "watch:types": "pnpm run build:types --watch", - "watch": "concurrently pnpm:watch:js pnpm:watch:types", - "build": "concurrently pnpm:build:js pnpm:build:types", - "build:dev": "concurrently pnpm:build:js-dev pnpm:build:types", - "lint:types": "tsc --emitDeclarationOnly false --noEmit", - "lint:eslint": "eslint ./src --max-warnings 0", - "lint": "concurrently pnpm:lint:types pnpm:lint:eslint", - "clean": "rimraf .turbo types dist public/resources/* *.tsbuildinfo" - }, - "files": [ - "dist", - "types" - ], - "types": "./types/index.d.ts", - "main": "./dist/capture-ui.umd.cjs", - "module": "./dist/capture-ui.js", - "exports": { - ".": { - "import": "./dist/capture-ui.js", - "require": "./dist/capture-ui.umd.cjs" - }, - "./style.css": "./dist/style.css", - "./package.json": "./package.json" - }, - "license": "MIT", - "devDependencies": { - "@acab/ecsstatic": "^0.7.1", - "@mb/utils": "workspace:*", - "@styled/typescript-styled-plugin": "^1.0.0", - "@typescript-eslint/eslint-plugin": "^6.1.0", - "concurrently": "^8.2.0", - "eslint": "^8.45.0", - "eslint-config-prettier": "^8.8.0", - "eslint-define-config": "^1.21.0", - "eslint-plugin-solid": "^0.12.1", - "mkcert-cli": "^1.5.0", - "prettier": "^3.0.0", - "rimraf": "^5.0.1", - "sass": "^1.64.0", - "serve": "^14.2.0", - "tsc-files": "^1.1.4", - "tsconfig": "workspace:*", - "typescript": "^5.1.6", - "vite": "^4.4.6", - "vite-plugin-css-injected-by-js": "^3.2.1", - "vite-plugin-full-reload": "^1.0.5", - "vite-plugin-solid": "^2.7.0", - "vite-plugin-solid-svg": "^0.6.4", - "zx": "^7.2.3" - }, - "dependencies": { - "@kobalte/core": "^0.9.8", - "@motionone/solid": "^10.16.2", - "@solid-primitives/keyed": "^1.2.0", - "capture-main": "workspace:*", - "clsx": "^2.0.0", - "deepmerge": "^4.3.1", - "is-plain-object": "^5.0.0", - "just-extend": "^6.2.0", - "solid-js": "^1.7.8", - "solid-slider": "^1.3.14", - "solid-zustand": "^1.7.0" - } -} diff --git a/packages/capture-ui/src/index.ts b/packages/capture-ui/src/index.ts deleted file mode 100644 index b74a614..0000000 --- a/packages/capture-ui/src/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Copyright (c) 2023 Microblink Ltd. All rights reserved. - * - * ANY UNAUTHORIZED USE OR SALE, DUPLICATION, OR DISTRIBUTION - * OF THIS PROGRAM OR ANY OF ITS PARTS, IN SOURCE OR BINARY FORMS, - * WITH OR WITHOUT MODIFICATION, WITH THE PURPOSE OF ACQUIRING - * UNLAWFUL MATERIAL OR ANY OTHER BENEFIT IS PROHIBITED! - * THIS PROGRAM IS PROTECTED BY COPYRIGHT LAWS AND YOU MAY NOT - * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. - */ - -export { createCaptureUi } from "./createCaptureUi"; - -export type { ExposedComponentApi, CaptureComponent } from "./createCaptureUi"; diff --git a/packages/capture-ui/tsconfig.json b/packages/capture-ui/tsconfig.json deleted file mode 100644 index 4e98c6b..0000000 --- a/packages/capture-ui/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "tsconfig/base.json", - "compilerOptions": { - "emitDeclarationOnly": true, - "declarationDir": "types", - "rootDir": "src", - "jsx": "preserve", - "jsxImportSource": "solid-js", - "types": ["vite/client", "vite-plugin-solid-svg/types"], - "plugins": [ - { - "name": "@styled/typescript-styled-plugin", - "lint": { - "validProperties": ["overscroll-behavior", "text-wrap"] - } - } - ] - }, - "include": ["src"] -} diff --git a/packages/capture-ui/vite.config.ts b/packages/capture-ui/vite.config.ts deleted file mode 100644 index dae13fe..0000000 --- a/packages/capture-ui/vite.config.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Copyright (c) 2023 Microblink Ltd. All rights reserved. - * - * ANY UNAUTHORIZED USE OR SALE, DUPLICATION, OR DISTRIBUTION - * OF THIS PROGRAM OR ANY OF ITS PARTS, IN SOURCE OR BINARY FORMS, - * WITH OR WITHOUT MODIFICATION, WITH THE PURPOSE OF ACQUIRING - * UNLAWFUL MATERIAL OR ANY OTHER BENEFIT IS PROHIBITED! - * THIS PROGRAM IS PROTECTED BY COPYRIGHT LAWS AND YOU MAY NOT - * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. - */ - -import { ecsstatic } from "@acab/ecsstatic/vite"; -import { resolve } from "node:path"; -import { defineConfig } from "vite"; -import solidPlugin from "vite-plugin-solid"; -import solidSvg from "vite-plugin-solid-svg"; -// import cssInjectedByJsPlugin from "vite-plugin-css-injected-by-js"; - -export default defineConfig((config) => { - return { - build: { - sourcemap: config.mode === "development", - minify: config.mode === "production", - target: "es2022", - lib: { - entry: { - "capture-ui": resolve(__dirname, "./src/index.ts"), - }, - name: "captureUi", - // fileName: (format, name) => `${name}.${format}.js`, - fileName: "capture-ui", - }, - rollupOptions: { - // external: ["capture-main"], - // output: { - // // Provide global variables to use in the UMD build - // // for externalized deps - // globals: { - // "capture-main": "capture", - // }, - // }, - }, - }, - plugins: [ - // FullReload(["public/**/*"]), - ecsstatic({ - classNamePrefix: "mb", - }), - solidPlugin(), - solidSvg(), - // cssInjectedByJsPlugin(), - ], - }; -}); diff --git a/packages/capture-wasm/CHANGELOG.md b/packages/capture-wasm/CHANGELOG.md index be05a93..9d9a401 100644 --- a/packages/capture-wasm/CHANGELOG.md +++ b/packages/capture-wasm/CHANGELOG.md @@ -1,5 +1,9 @@ # Release notes +## 1.1.0 + +- TODO: add changes here + ## 1.0.0 - Initial release of the Capture SDK for Browser diff --git a/packages/capture-wasm/dist/advanced-threads/capture-wasm.data b/packages/capture-wasm/dist/advanced-threads/capture-wasm.data index 57cba575eb348f21f54ea04c446b8229ec9cf7b7..3ccee58823de1e7c742564fe8ba48efd2ef9682a 100644 GIT binary patch delta 4117 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 { : undefined; return function (createModule = {}) { + /* + + Copyright 2019 The Emscripten Authors + SPDX-License-Identifier: MIT + + Copyright 2013 The Emscripten Authors + SPDX-License-Identifier: MIT + + This file gets implicatly injected as a `--post-js` file when + emcc is run with `--emrun` +*/ function g() { u.buffer != ba.buffer && ca(); return ba; @@ -21,7 +32,7 @@ var createModule = (() => { u.buffer != ba.buffer && ca(); return ha; } - function A() { + function z() { u.buffer != ba.buffer && ca(); return ia; } @@ -40,8 +51,8 @@ var createModule = (() => { ma = a; na = b; }); - D.Tb || (D.Tb = 0); - D.Tb++; + D.Ub || (D.Ub = 0); + D.Ub++; D.ENVIRONMENT_IS_PTHREAD || D.$ww || (function (a) { @@ -53,23 +64,23 @@ var createModule = (() => { var k = n; r.total && (k = r.total); if (r.loaded) { - p.Dc - ? (D.tb[m].loaded = r.loaded) - : ((p.Dc = !0), - D.tb || (D.tb = {}), - (D.tb[m] = { loaded: r.loaded, total: k })); + p.Fc + ? (D.ub[m].loaded = r.loaded) + : ((p.Fc = !0), + D.ub || (D.ub = {}), + (D.ub[m] = { loaded: r.loaded, total: k })); var t = (k = r = 0), x; - for (x in D.tb) { - var z = D.tb[x]; - r += z.total; - k += z.loaded; + for (x in D.ub) { + var A = D.ub[x]; + r += A.total; + k += A.loaded; t++; } - r = Math.ceil((r * D.Tb) / t); + r = Math.ceil((r * D.Ub) / t); D.setStatus && D.setStatus("Downloading data... (" + k + "/" + r + ")"); - } else !D.tb && D.setStatus && D.setStatus("Downloading data..."); + } else !D.ub && D.setStatus && D.setStatus("Downloading data..."); }; p.onerror = function () { throw Error("NetworkError for: " + m); @@ -100,31 +111,31 @@ var createModule = (() => { if (r.constructor.name !== ArrayBuffer.name) throw "bad input to processPackageData" + Error().stack; r = new Uint8Array(r); - m.prototype.Ic = r; + m.prototype.Kc = r; r = a.files; for (var k = 0; k < r.length; ++k) - m.prototype.bc[r[k].filename].onload(); + m.prototype.cc[r[k].filename].onload(); D.removeRunDependency( - "datafile_/Users/ivan/Dev/imagecapture-browser.worktrees/master/packages/capture-wasm/dist/advanced-threads/capture-wasm.data", + "datafile_/Users/ivan/Dev/imagecapture-browser/packages/capture-wasm/dist/advanced-threads/capture-wasm.data", ); } D.FS_createPath("/", "microblink", !0, !0); D.FS_createPath("/microblink", "capture", !0, !0); m.prototype = { - bc: {}, + cc: {}, open: function (r, k) { this.name = k; - this.bc[k] = this; + this.cc[k] = this; D.addRunDependency("fp " + this.name); }, send: function () {}, onload: function () { - this.finish(this.Ic.subarray(this.start, this.end)); + this.finish(this.Kc.subarray(this.start, this.end)); }, finish: function (r) { D.FS_createDataFile(this.name, null, r, !0, !0, !0); D.removeRunDependency("fp " + this.name); - this.bc[this.name] = null; + this.cc[this.name] = null; }, }; for (var q = a.files, p = 0; p < q.length; ++p) @@ -133,12 +144,12 @@ var createModule = (() => { q[p].filename, ); D.addRunDependency( - "datafile_/Users/ivan/Dev/imagecapture-browser.worktrees/master/packages/capture-wasm/dist/advanced-threads/capture-wasm.data", + "datafile_/Users/ivan/Dev/imagecapture-browser/packages/capture-wasm/dist/advanced-threads/capture-wasm.data", ); - D.sc || (D.sc = {}); - D.sc[ - "/Users/ivan/Dev/imagecapture-browser.worktrees/master/packages/capture-wasm/dist/advanced-threads/capture-wasm.data" - ] = { Cd: !1 }; + D.tc || (D.tc = {}); + D.tc[ + "/Users/ivan/Dev/imagecapture-browser/packages/capture-wasm/dist/advanced-threads/capture-wasm.data" + ] = { Dd: !1 }; l ? (n(l), (l = null)) : (h = n); } "object" === typeof window @@ -235,6 +246,12 @@ var createModule = (() => { E("Stacktrace: " + b.stack); } }; + if ("object" == typeof window) { + D.arguments = window.location.search.substr(1).trim().split("&"); + for (let a = 0; a < D.arguments.length; ++a) + D.arguments[a] = decodeURI(D.arguments[a]); + D.arguments[0] || (D.arguments = []); + } var oa = Object.assign({}, D), pa = "./this.program", qa = (a, b) => { @@ -283,17 +300,18 @@ var createModule = (() => { D.quit && (qa = D.quit); var xa; D.wasmBinary && (xa = D.wasmBinary); - var noExitRuntime = D.noExitRuntime || !0; + var noExitRuntime = D.noExitRuntime || !1; "object" != typeof WebAssembly && ya("no native wasm support detected"); var u, za, Aa = !1, - Ba = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0; - function Ca(a, b, c) { + Ba, + Ca = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0; + function Da(a, b, c) { var d = b + c; for (c = b; a[c] && !(c >= d); ) ++c; - if (16 < c - b && a.buffer && Ba) - return Ba.decode( + if (16 < c - b && a.buffer && Ca) + return Ca.decode( a.buffer instanceof SharedArrayBuffer ? a.slice(b, c) : a.subarray(b, c), @@ -322,9 +340,9 @@ var createModule = (() => { return d; } function J(a, b) { - return a ? Ca(v(), a, b) : ""; + return a ? Da(v(), a, b) : ""; } - function Da(a, b, c, d) { + function Ea(a, b, c, d) { if (!(0 < d)) return 0; var e = c; d = c + d - 1; @@ -359,9 +377,9 @@ var createModule = (() => { return c - e; } function K(a, b, c) { - Da(a, v(), b, c); + Ea(a, v(), b, c); } - function Ea(a) { + function Fa(a) { for (var b = 0, c = 0; c < a.length; ++c) { var d = a.charCodeAt(c); 127 >= d @@ -374,7 +392,7 @@ var createModule = (() => { } return b; } - var ba, da, fa, ha, ia, ja, Fa, la; + var ba, da, fa, ha, ia, ja, Ga, la; function ca() { var a = u.buffer; D.HEAP8 = ba = new Int8Array(a); @@ -383,22 +401,22 @@ var createModule = (() => { D.HEAPU8 = da = new Uint8Array(a); D.HEAPU16 = ha = new Uint16Array(a); D.HEAPU32 = ja = new Uint32Array(a); - D.HEAPF32 = Fa = new Float32Array(a); + D.HEAPF32 = Ga = new Float32Array(a); D.HEAPF64 = la = new Float64Array(a); } - var Ga = D.INITIAL_MEMORY || 209715200; - 262144 <= Ga || + var Ha = D.INITIAL_MEMORY || 209715200; + 262144 <= Ha || ya( "INITIAL_MEMORY should be larger than STACK_SIZE, was " + - Ga + + Ha + "! (STACK_SIZE=262144)", ); if (F) u = D.wasmMemory; else if (D.wasmMemory) u = D.wasmMemory; else if ( ((u = new WebAssembly.Memory({ - initial: Ga / 65536, - maximum: 12800, + initial: Ha / 65536, + maximum: 32768, shared: !0, })), !(u.buffer instanceof SharedArrayBuffer)) @@ -410,50 +428,56 @@ var createModule = (() => { Error("bad memory")) ); ca(); - Ga = u.buffer.byteLength; - var Ha, - Ia = [], + Ha = u.buffer.byteLength; + var Ia, Ja = [], - Ka = []; - function La() { + Ka = [], + La = [], + Ma = [], + Na = !1, + Oa = 0; + function Pa() { + return noExitRuntime || 0 < Oa; + } + function Qa() { F || (D.noFSInit || - Ma || - ((Ma = !0), - Na(), + Ra || + ((Ra = !0), + Sa(), (D.stdin = D.stdin), (D.stdout = D.stdout), (D.stderr = D.stderr), - D.stdin ? Oa("/dev", "stdin", D.stdin) : Pa("/dev/tty", "/dev/stdin"), + D.stdin ? Ta("/dev", "stdin", D.stdin) : Ua("/dev/tty", "/dev/stdin"), D.stdout - ? Oa("/dev", "stdout", null, D.stdout) - : Pa("/dev/tty", "/dev/stdout"), + ? Ta("/dev", "stdout", null, D.stdout) + : Ua("/dev/tty", "/dev/stdout"), D.stderr - ? Oa("/dev", "stderr", null, D.stderr) - : Pa("/dev/tty1", "/dev/stderr"), - Qa("/dev/stdin", 0), - Qa("/dev/stdout", 1), - Qa("/dev/stderr", 1)), - (Ra = !1), - Sa(Ja)); - } - function Ua() { + ? Ta("/dev", "stderr", null, D.stderr) + : Ua("/dev/tty1", "/dev/stderr"), + Va("/dev/stdin", 0), + Va("/dev/stdout", 1), + Va("/dev/stderr", 1)), + (Wa = !1), + Za(Ka)); + } + function $a() { var a = D.preRun.shift(); - Ia.unshift(a); - } - var Va = 0, - Wa = null, - Xa = null; - function Ya() { - Va++; - D.monitorRunDependencies && D.monitorRunDependencies(Va); - } - function Za() { - Va--; - D.monitorRunDependencies && D.monitorRunDependencies(Va); - if (0 == Va && (null !== Wa && (clearInterval(Wa), (Wa = null)), Xa)) { - var a = Xa; - Xa = null; + Ja.unshift(a); + } + var ab = 0, + bb = null, + cb = null; + function db() { + ab++; + D.monitorRunDependencies && D.monitorRunDependencies(ab); + } + function eb() { + ab--; + D.monitorRunDependencies && D.monitorRunDependencies(ab); + if (0 == ab && (null !== bb && (clearInterval(bb), (bb = null)), cb)) { + var a = cb; + cb = null; a(); } } @@ -462,31 +486,32 @@ var createModule = (() => { a = "Aborted(" + a + ")"; E(a); Aa = !0; + Ba = 1; a = new WebAssembly.RuntimeError( a + ". Build with -sASSERTIONS for more info.", ); na(a); throw a; } - function $a(a) { + function fb(a) { return a.startsWith("data:application/octet-stream;base64,"); } - var ab; - ab = "capture-wasm.wasm"; - $a(ab) || (ab = sa(ab)); - function bb(a) { + var gb; + gb = "capture-wasm.wasm"; + fb(gb) || (gb = sa(gb)); + function hb(a) { try { - if (a == ab && xa) return new Uint8Array(xa); + if (a == gb && xa) return new Uint8Array(xa); if (va) return va(a); throw "both async and sync fetching of the wasm failed"; } catch (b) { ya(b); } } - function cb(a) { + function ib(a) { return xa || "function" != typeof fetch ? Promise.resolve().then(function () { - return bb(a); + return hb(a); }) : fetch(a, { credentials: "same-origin" }) .then(function (b) { @@ -494,11 +519,11 @@ var createModule = (() => { return b.arrayBuffer(); }) .catch(function () { - return bb(a); + return hb(a); }); } - function db(a, b, c) { - return cb(a) + function jb(a, b, c) { + return ib(a) .then(function (d) { return WebAssembly.instantiate(d, b); }) @@ -510,63 +535,63 @@ var createModule = (() => { ya(d); }); } - function eb(a, b) { - var c = ab; + function kb(a, b) { + var c = gb; return xa || "function" != typeof WebAssembly.instantiateStreaming || - $a(c) || + fb(c) || "function" != typeof fetch - ? db(c, a, b) + ? jb(c, a, b) : fetch(c, { credentials: "same-origin" }).then(function (d) { return WebAssembly.instantiateStreaming(d, a).then(b, function (e) { E("wasm streaming compile failed: " + e); E("falling back to ArrayBuffer instantiation"); - return db(c, a, b); + return jb(c, a, b); }); }); } var L, M, - fb = { - 61937: (a, b, c, d) => { + lb = { + 61921: (a, b, c, d) => { a = J(a); b = J(b); c = J(c); d = J(d); throw Error(a + b + c + d); }, - 62153: (a, b) => { + 62137: (a, b) => { a = J(a); b = J(b); throw Error(a + b); }, }; - function gb(a) { + function mb(a) { this.name = "ExitStatus"; this.message = "Program terminated with exit(" + a + ")"; this.status = a; } - function hb(a) { + function nb(a) { a.terminate(); a.onmessage = () => {}; } - function ib(a) { - (a = N.kb[a]) || ya(); - N.md(a); + function ob(a) { + (a = N.lb[a]) || ya(); + N.od(a); } - function jb(a) { - var b = N.Rc(); + function pb(a) { + var b = N.Tc(); if (!b) return 6; - N.qb.push(b); - N.kb[a.jb] = b; - b.jb = a.jb; + N.rb.push(b); + N.lb[a.kb] = b; + b.kb = a.kb; b.postMessage( - { cmd: "run", start_routine: a.td, arg: a.Ec, pthread_ptr: a.jb }, - a.zd, + { cmd: "run", start_routine: a.vd, arg: a.Gc, pthread_ptr: a.kb }, + a.Ad, ); return 0; } - var kb = (a, b) => { + var qb = (a, b) => { for (var c = 0, d = a.length - 1; 0 <= d; d--) { var e = a[d]; "." === e @@ -581,7 +606,7 @@ var createModule = (() => { O = (a) => { var b = "/" === a.charAt(0), c = "/" === a.substr(-1); - (a = kb( + (a = qb( a.split("/").filter((d) => !!d), !b, ).join("/")) || @@ -590,7 +615,7 @@ var createModule = (() => { a && c && (a += "/"); return (b ? "/" : "") + a; }, - lb = (a) => { + rb = (a) => { var b = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/ .exec(a) .slice(1); @@ -600,14 +625,14 @@ var createModule = (() => { b && (b = b.substr(0, b.length - 1)); return a + b; }, - mb = (a) => { + sb = (a) => { if ("/" === a) return "/"; a = O(a); a = a.replace(/\/$/, ""); var b = a.lastIndexOf("/"); return -1 === b ? a : a.substr(b + 1); }; - function nb() { + function tb() { if ( "object" == typeof crypto && "function" == typeof crypto.getRandomValues @@ -620,7 +645,7 @@ var createModule = (() => { } return () => ya("randomDevice"); } - function ob() { + function ub() { for (var a = "", b = !1, c = arguments.length - 1; -1 <= c && !b; c--) { b = 0 <= c ? arguments[c] : "/"; if ("string" != typeof b) @@ -629,41 +654,41 @@ var createModule = (() => { a = b + "/" + a; b = "/" === b.charAt(0); } - a = kb( + a = qb( a.split("/").filter((d) => !!d), !b, ).join("/"); return (b ? "/" : "") + a || "."; } - function pb(a, b) { - var c = Array(Ea(a) + 1); - a = Da(a, c, 0, c.length); + function vb(a, b) { + var c = Array(Fa(a) + 1); + a = Ea(a, c, 0, c.length); b && (c.length = a); return c; } - var qb = []; - function rb(a, b) { - qb[a] = { input: [], Wa: [], xb: b }; - sb(a, tb); + var wb = []; + function xb(a, b) { + wb[a] = { input: [], Xa: [], yb: b }; + yb(a, zb); } - var tb = { + var zb = { open: function (a) { - var b = qb[a.node.Cb]; + var b = wb[a.node.Db]; if (!b) throw new P(43); - a.ab = b; + a.bb = b; a.seekable = !1; }, close: function (a) { - a.ab.xb.Ib(a.ab); + a.bb.yb.Jb(a.bb); }, - Ib: function (a) { - a.ab.xb.Ib(a.ab); + Jb: function (a) { + a.bb.yb.Jb(a.bb); }, read: function (a, b, c, d) { - if (!a.ab || !a.ab.xb.oc) throw new P(60); + if (!a.bb || !a.bb.yb.pc) throw new P(60); for (var e = 0, f = 0; f < d; f++) { try { - var h = a.ab.xb.oc(a.ab); + var h = a.bb.yb.pc(a.bb); } catch (l) { throw new P(29); } @@ -676,9 +701,9 @@ var createModule = (() => { return e; }, write: function (a, b, c, d) { - if (!a.ab || !a.ab.xb.Yb) throw new P(60); + if (!a.bb || !a.bb.yb.Zb) throw new P(60); try { - for (var e = 0; e < d; e++) a.ab.xb.Yb(a.ab, b[c + e]); + for (var e = 0; e < d; e++) a.bb.yb.Zb(a.bb, b[c + e]); } catch (f) { throw new P(29); } @@ -686,8 +711,8 @@ var createModule = (() => { return e; }, }, - ub = { - oc: function (a) { + Ab = { + pc: function (a) { if (!a.input.length) { var b = null; "undefined" != typeof window && "function" == typeof window.prompt @@ -695,199 +720,199 @@ var createModule = (() => { : "function" == typeof readline && ((b = readline()), null !== b && (b += "\n")); if (!b) return null; - a.input = pb(b, !0); + a.input = vb(b, !0); } return a.input.shift(); }, - Yb: function (a, b) { + Zb: function (a, b) { null === b || 10 === b - ? (wa(Ca(a.Wa, 0)), (a.Wa = [])) - : 0 != b && a.Wa.push(b); + ? (wa(Da(a.Xa, 0)), (a.Xa = [])) + : 0 != b && a.Xa.push(b); }, - Ib: function (a) { - a.Wa && 0 < a.Wa.length && (wa(Ca(a.Wa, 0)), (a.Wa = [])); + Jb: function (a) { + a.Xa && 0 < a.Xa.length && (wa(Da(a.Xa, 0)), (a.Xa = [])); }, }, - vb = { - Yb: function (a, b) { + Bb = { + Zb: function (a, b) { null === b || 10 === b - ? (E(Ca(a.Wa, 0)), (a.Wa = [])) - : 0 != b && a.Wa.push(b); + ? (E(Da(a.Xa, 0)), (a.Xa = [])) + : 0 != b && a.Xa.push(b); }, - Ib: function (a) { - a.Wa && 0 < a.Wa.length && (E(Ca(a.Wa, 0)), (a.Wa = [])); + Jb: function (a) { + a.Xa && 0 < a.Xa.length && (E(Da(a.Xa, 0)), (a.Xa = [])); }, }; - function wb(a) { + function Cb(a) { a = 65536 * Math.ceil(a / 65536); - var b = xb(65536, a); + var b = Db(65536, a); b ? v().fill(0, b, b + a) : (b = 0); return b; } var Q = { - gb: null, - ib: function () { + hb: null, + jb: function () { return Q.createNode(null, "/", 16895, 0); }, createNode: function (a, b, c, d) { if (24576 === (c & 61440) || 4096 === (c & 61440)) throw new P(63); - Q.gb || - (Q.gb = { + Q.hb || + (Q.hb = { dir: { node: { - fb: Q.Qa.fb, - $a: Q.Qa.$a, - yb: Q.Qa.yb, - Mb: Q.Qa.Mb, - wc: Q.Qa.wc, - Sb: Q.Qa.Sb, - xc: Q.Qa.xc, - vc: Q.Qa.vc, - Pb: Q.Qa.Pb, + gb: Q.Ra.gb, + ab: Q.Ra.ab, + zb: Q.Ra.zb, + Nb: Q.Ra.Nb, + xc: Q.Ra.xc, + Tb: Q.Ra.Tb, + yc: Q.Ra.yc, + wc: Q.Ra.wc, + Qb: Q.Ra.Qb, }, - stream: { pb: Q.Ra.pb }, + stream: { qb: Q.Sa.qb }, }, file: { - node: { fb: Q.Qa.fb, $a: Q.Qa.$a }, + node: { gb: Q.Ra.gb, ab: Q.Ra.ab }, stream: { - pb: Q.Ra.pb, - read: Q.Ra.read, - write: Q.Ra.write, - dc: Q.Ra.dc, - zb: Q.Ra.zb, - Nb: Q.Ra.Nb, + qb: Q.Sa.qb, + read: Q.Sa.read, + write: Q.Sa.write, + ec: Q.Sa.ec, + Ab: Q.Sa.Ab, + Ob: Q.Sa.Ob, }, }, link: { - node: { fb: Q.Qa.fb, $a: Q.Qa.$a, Db: Q.Qa.Db }, + node: { gb: Q.Ra.gb, ab: Q.Ra.ab, Eb: Q.Ra.Eb }, stream: {}, }, - ic: { node: { fb: Q.Qa.fb, $a: Q.Qa.$a }, stream: yb }, + jc: { node: { gb: Q.Ra.gb, ab: Q.Ra.ab }, stream: Eb }, }); - c = zb(a, b, c, d); + c = Fb(a, b, c, d); 16384 === (c.mode & 61440) - ? ((c.Qa = Q.gb.dir.node), (c.Ra = Q.gb.dir.stream), (c.Pa = {})) + ? ((c.Ra = Q.hb.dir.node), (c.Sa = Q.hb.dir.stream), (c.Qa = {})) : 32768 === (c.mode & 61440) - ? ((c.Qa = Q.gb.file.node), - (c.Ra = Q.gb.file.stream), - (c.Ua = 0), - (c.Pa = null)) + ? ((c.Ra = Q.hb.file.node), + (c.Sa = Q.hb.file.stream), + (c.Va = 0), + (c.Qa = null)) : 40960 === (c.mode & 61440) - ? ((c.Qa = Q.gb.link.node), (c.Ra = Q.gb.link.stream)) + ? ((c.Ra = Q.hb.link.node), (c.Sa = Q.hb.link.stream)) : 8192 === (c.mode & 61440) && - ((c.Qa = Q.gb.ic.node), (c.Ra = Q.gb.ic.stream)); + ((c.Ra = Q.hb.jc.node), (c.Sa = Q.hb.jc.stream)); c.timestamp = Date.now(); - a && ((a.Pa[b] = c), (a.timestamp = c.timestamp)); + a && ((a.Qa[b] = c), (a.timestamp = c.timestamp)); return c; }, - Dd: function (a) { - return a.Pa - ? a.Pa.subarray - ? a.Pa.subarray(0, a.Ua) - : new Uint8Array(a.Pa) + Ed: function (a) { + return a.Qa + ? a.Qa.subarray + ? a.Qa.subarray(0, a.Va) + : new Uint8Array(a.Qa) : new Uint8Array(0); }, - lc: function (a, b) { - var c = a.Pa ? a.Pa.length : 0; + mc: function (a, b) { + var c = a.Qa ? a.Qa.length : 0; c >= b || ((b = Math.max(b, (c * (1048576 > c ? 2 : 1.125)) >>> 0)), 0 != c && (b = Math.max(b, 256)), - (c = a.Pa), - (a.Pa = new Uint8Array(b)), - 0 < a.Ua && a.Pa.set(c.subarray(0, a.Ua), 0)); + (c = a.Qa), + (a.Qa = new Uint8Array(b)), + 0 < a.Va && a.Qa.set(c.subarray(0, a.Va), 0)); }, - ld: function (a, b) { - if (a.Ua != b) - if (0 == b) (a.Pa = null), (a.Ua = 0); + nd: function (a, b) { + if (a.Va != b) + if (0 == b) (a.Qa = null), (a.Va = 0); else { - var c = a.Pa; - a.Pa = new Uint8Array(b); - c && a.Pa.set(c.subarray(0, Math.min(b, a.Ua))); - a.Ua = b; + var c = a.Qa; + a.Qa = new Uint8Array(b); + c && a.Qa.set(c.subarray(0, Math.min(b, a.Va))); + a.Va = b; } }, - Qa: { - fb: function (a) { + Ra: { + gb: function (a) { var b = {}; - b.Nc = 8192 === (a.mode & 61440) ? a.id : 1; - b.Vb = a.id; + b.Pc = 8192 === (a.mode & 61440) ? a.id : 1; + b.Wb = a.id; b.mode = a.mode; - b.fd = 1; + b.hd = 1; b.uid = 0; - b.Vc = 0; - b.Cb = a.Cb; + b.Xc = 0; + b.Db = a.Db; b.size = 16384 === (a.mode & 61440) ? 4096 : 32768 === (a.mode & 61440) - ? a.Ua + ? a.Va : 40960 === (a.mode & 61440) ? a.link.length : 0; - b.Fc = new Date(a.timestamp); - b.ed = new Date(a.timestamp); - b.Kc = new Date(a.timestamp); - b.Gc = 4096; - b.Hc = Math.ceil(b.size / b.Gc); + b.Hc = new Date(a.timestamp); + b.gd = new Date(a.timestamp); + b.Mc = new Date(a.timestamp); + b.Ic = 4096; + b.Jc = Math.ceil(b.size / b.Ic); return b; }, - $a: function (a, b) { + ab: function (a, b) { void 0 !== b.mode && (a.mode = b.mode); void 0 !== b.timestamp && (a.timestamp = b.timestamp); - void 0 !== b.size && Q.ld(a, b.size); + void 0 !== b.size && Q.nd(a, b.size); }, - yb: function () { - throw Ab[44]; + zb: function () { + throw Gb[44]; }, - Mb: function (a, b, c, d) { + Nb: function (a, b, c, d) { return Q.createNode(a, b, c, d); }, - wc: function (a, b, c) { + xc: function (a, b, c) { if (16384 === (a.mode & 61440)) { try { - var d = Bb(b, c); + var d = Hb(b, c); } catch (f) {} - if (d) for (var e in d.Pa) throw new P(55); + if (d) for (var e in d.Qa) throw new P(55); } - delete a.parent.Pa[a.name]; + delete a.parent.Qa[a.name]; a.parent.timestamp = Date.now(); a.name = c; - b.Pa[c] = a; + b.Qa[c] = a; b.timestamp = a.parent.timestamp; a.parent = b; }, - Sb: function (a, b) { - delete a.Pa[b]; + Tb: function (a, b) { + delete a.Qa[b]; a.timestamp = Date.now(); }, - xc: function (a, b) { - var c = Bb(a, b), + yc: function (a, b) { + var c = Hb(a, b), d; - for (d in c.Pa) throw new P(55); - delete a.Pa[b]; + for (d in c.Qa) throw new P(55); + delete a.Qa[b]; a.timestamp = Date.now(); }, - vc: function (a) { + wc: function (a) { var b = [".", ".."], c; - for (c in a.Pa) a.Pa.hasOwnProperty(c) && b.push(c); + for (c in a.Qa) a.Qa.hasOwnProperty(c) && b.push(c); return b; }, - Pb: function (a, b, c) { + Qb: function (a, b, c) { a = Q.createNode(a, b, 41471, 0); a.link = c; return a; }, - Db: function (a) { + Eb: function (a) { if (40960 !== (a.mode & 61440)) throw new P(28); return a.link; }, }, - Ra: { + Sa: { read: function (a, b, c, d, e) { - var f = a.node.Pa; - if (e >= a.node.Ua) return 0; - a = Math.min(a.node.Ua - e, d); + var f = a.node.Qa; + if (e >= a.node.Va) return 0; + a = Math.min(a.node.Va - e, d); if (8 < a && f.subarray) b.set(f.subarray(e, e + a), c); else for (d = 0; d < a; d++) b[c + d] = f[e + d]; return a; @@ -897,137 +922,137 @@ var createModule = (() => { if (!d) return 0; a = a.node; a.timestamp = Date.now(); - if (b.subarray && (!a.Pa || a.Pa.subarray)) { - if (f) return (a.Pa = b.subarray(c, c + d)), (a.Ua = d); - if (0 === a.Ua && 0 === e) - return (a.Pa = b.slice(c, c + d)), (a.Ua = d); - if (e + d <= a.Ua) return a.Pa.set(b.subarray(c, c + d), e), d; + if (b.subarray && (!a.Qa || a.Qa.subarray)) { + if (f) return (a.Qa = b.subarray(c, c + d)), (a.Va = d); + if (0 === a.Va && 0 === e) + return (a.Qa = b.slice(c, c + d)), (a.Va = d); + if (e + d <= a.Va) return a.Qa.set(b.subarray(c, c + d), e), d; } - Q.lc(a, e + d); - if (a.Pa.subarray && b.subarray) a.Pa.set(b.subarray(c, c + d), e); - else for (f = 0; f < d; f++) a.Pa[e + f] = b[c + f]; - a.Ua = Math.max(a.Ua, e + d); + Q.mc(a, e + d); + if (a.Qa.subarray && b.subarray) a.Qa.set(b.subarray(c, c + d), e); + else for (f = 0; f < d; f++) a.Qa[e + f] = b[c + f]; + a.Va = Math.max(a.Va, e + d); return d; }, - pb: function (a, b, c) { + qb: function (a, b, c) { 1 === c ? (b += a.position) - : 2 === c && 32768 === (a.node.mode & 61440) && (b += a.node.Ua); + : 2 === c && 32768 === (a.node.mode & 61440) && (b += a.node.Va); if (0 > b) throw new P(28); return b; }, - dc: function (a, b, c) { - Q.lc(a.node, b + c); - a.node.Ua = Math.max(a.node.Ua, b + c); + ec: function (a, b, c) { + Q.mc(a.node, b + c); + a.node.Va = Math.max(a.node.Va, b + c); }, - zb: function (a, b, c, d, e) { + Ab: function (a, b, c, d, e) { if (32768 !== (a.node.mode & 61440)) throw new P(43); - a = a.node.Pa; + a = a.node.Qa; if (e & 2 || a.buffer !== g().buffer) { if (0 < c || c + b < a.length) a = a.subarray ? a.subarray(c, c + b) : Array.prototype.slice.call(a, c, c + b); c = !0; - b = wb(b); + b = Cb(b); if (!b) throw new P(48); g().set(a, b); } else (c = !1), (b = a.byteOffset); - return { Ta: b, fc: c }; + return { Ua: b, hc: c }; }, - Nb: function (a, b, c, d) { - Q.Ra.write(a, b, 0, d, c, !1); + Ob: function (a, b, c, d) { + Q.Sa.write(a, b, 0, d, c, !1); return 0; }, }, }; - function Cb(a, b, c) { + function Ib(a, b, c) { var d = "al " + a; ua( a, (e) => { e || ya('Loading data file "' + a + '" failed (no arrayBuffer).'); b(new Uint8Array(e)); - d && Za(d); + d && eb(d); }, () => { if (c) c(); else throw 'Loading data file "' + a + '" failed.'; }, ); - d && Ya(d); - } - var Db = null, - Eb = {}, - Fb = [], - Gb = 1, - Hb = null, - Ra = !0, + d && db(d); + } + var Jb = null, + Kb = {}, + Lb = [], + Mb = 1, + Nb = null, + Wa = !0, P = null, - Ab = {}, - Jb = (a, b = {}) => { - a = ob(a); + Gb = {}, + Pb = (a, b = {}) => { + a = ub(a); if (!a) return { path: "", node: null }; - b = Object.assign({ nc: !0, $b: 0 }, b); - if (8 < b.$b) throw new P(32); + b = Object.assign({ oc: !0, ac: 0 }, b); + if (8 < b.ac) throw new P(32); a = a.split("/").filter((h) => !!h); - for (var c = Db, d = "/", e = 0; e < a.length; e++) { + for (var c = Jb, d = "/", e = 0; e < a.length; e++) { var f = e === a.length - 1; if (f && b.parent) break; - c = Bb(c, a[e]); + c = Hb(c, a[e]); d = O(d + "/" + a[e]); - c.Ab && (!f || (f && b.nc)) && (c = c.Ab.root); - if (!f || b.Hb) + c.Bb && (!f || (f && b.oc)) && (c = c.Bb.root); + if (!f || b.Ib) for (f = 0; 40960 === (c.mode & 61440); ) if ( - ((c = Ib(d)), - (d = ob(lb(d), c)), - (c = Jb(d, { $b: b.$b + 1 }).node), + ((c = Ob(d)), + (d = ub(rb(d), c)), + (c = Pb(d, { ac: b.ac + 1 }).node), 40 < f++) ) throw new P(32); } return { path: d, node: c }; }, - Kb = (a) => { + Qb = (a) => { for (var b; ; ) { if (a === a.parent) return ( - (a = a.ib.rc), + (a = a.jb.sc), b ? ("/" !== a[a.length - 1] ? a + "/" + b : a + b) : a ); b = b ? a.name + "/" + b : a.name; a = a.parent; } }, - Lb = (a, b) => { + Rb = (a, b) => { for (var c = 0, d = 0; d < b.length; d++) c = ((c << 5) - c + b.charCodeAt(d)) | 0; - return ((a + c) >>> 0) % Hb.length; + return ((a + c) >>> 0) % Nb.length; }, - Bb = (a, b) => { + Hb = (a, b) => { var c; - if ((c = (c = Mb(a, "x")) ? c : a.Qa.yb ? 0 : 2)) throw new P(c, a); - for (c = Hb[Lb(a.id, b)]; c; c = c.wb) { + if ((c = (c = Sb(a, "x")) ? c : a.Ra.zb ? 0 : 2)) throw new P(c, a); + for (c = Nb[Rb(a.id, b)]; c; c = c.xb) { var d = c.name; if (c.parent.id === a.id && d === b) return c; } - return a.Qa.yb(a, b); + return a.Ra.zb(a, b); }, - zb = (a, b, c, d) => { - a = new Nb(a, b, c, d); - b = Lb(a.parent.id, a.name); - a.wb = Hb[b]; - return (Hb[b] = a); + Fb = (a, b, c, d) => { + a = new Tb(a, b, c, d); + b = Rb(a.parent.id, a.name); + a.xb = Nb[b]; + return (Nb[b] = a); }, - Ob = { r: 0, "r+": 2, w: 577, "w+": 578, a: 1089, "a+": 1090 }, - Pb = (a) => { + Ub = { r: 0, "r+": 2, w: 577, "w+": 578, a: 1089, "a+": 1090 }, + Vb = (a) => { var b = ["r", "w", "rw"][a & 3]; a & 512 && (b += "w"); return b; }, - Mb = (a, b) => { - if (Ra) return 0; + Sb = (a, b) => { + if (Wa) return 0; if (!b.includes("r") || a.mode & 292) { if ( (b.includes("w") && !(a.mode & 146)) || @@ -1037,23 +1062,23 @@ var createModule = (() => { } else return 2; return 0; }, - Qb = (a, b) => { + Wb = (a, b) => { try { - return Bb(a, b), 20; + return Hb(a, b), 20; } catch (c) {} - return Mb(a, "wx"); + return Sb(a, "wx"); }, - Rb = () => { - for (var a = 0; 4096 >= a; a++) if (!Fb[a]) return a; + Xb = () => { + for (var a = 0; 4096 >= a; a++) if (!Lb[a]) return a; throw new P(33); }, - Tb = (a) => { - Sb || - ((Sb = function () { - this.Ob = {}; + Zb = (a) => { + Yb || + ((Yb = function () { + this.Pb = {}; }), - (Sb.prototype = {}), - Object.defineProperties(Sb.prototype, { + (Yb.prototype = {}), + Object.defineProperties(Yb.prototype, { object: { get: function () { return this.node; @@ -1064,133 +1089,133 @@ var createModule = (() => { }, flags: { get: function () { - return this.Ob.flags; + return this.Pb.flags; }, set: function (c) { - this.Ob.flags = c; + this.Pb.flags = c; }, }, position: { get: function () { - return this.Ob.position; + return this.Pb.position; }, set: function (c) { - this.Ob.position = c; + this.Pb.position = c; }, }, })); - a = Object.assign(new Sb(), a); - var b = Rb(); - a.ob = b; - return (Fb[b] = a); + a = Object.assign(new Yb(), a); + var b = Xb(); + a.pb = b; + return (Lb[b] = a); }, - yb = { + Eb = { open: (a) => { - a.Ra = Eb[a.node.Cb].Ra; - a.Ra.open && a.Ra.open(a); + a.Sa = Kb[a.node.Db].Sa; + a.Sa.open && a.Sa.open(a); }, - pb: () => { + qb: () => { throw new P(70); }, }, - sb = (a, b) => { - Eb[a] = { Ra: b }; + yb = (a, b) => { + Kb[a] = { Sa: b }; }, - Ub = (a, b) => { + $b = (a, b) => { var c = "/" === b, d = !b; - if (c && Db) throw new P(10); + if (c && Jb) throw new P(10); if (!c && !d) { - var e = Jb(b, { nc: !1 }); + var e = Pb(b, { oc: !1 }); b = e.path; e = e.node; - if (e.Ab) throw new P(10); + if (e.Bb) throw new P(10); if (16384 !== (e.mode & 61440)) throw new P(54); } - b = { type: a, Gd: {}, rc: b, dd: [] }; - a = a.ib(b); - a.ib = b; + b = { type: a, Hd: {}, sc: b, fd: [] }; + a = a.jb(b); + a.jb = b; b.root = a; - c ? (Db = a) : e && ((e.Ab = b), e.ib && e.ib.dd.push(b)); + c ? (Jb = a) : e && ((e.Bb = b), e.jb && e.jb.fd.push(b)); }, S = (a, b, c) => { - var d = Jb(a, { parent: !0 }).node; - a = mb(a); + var d = Pb(a, { parent: !0 }).node; + a = sb(a); if (!a || "." === a || ".." === a) throw new P(28); - var e = Qb(d, a); + var e = Wb(d, a); if (e) throw new P(e); - if (!d.Qa.Mb) throw new P(63); - return d.Qa.Mb(d, a, b, c); + if (!d.Ra.Nb) throw new P(63); + return d.Ra.Nb(d, a, b, c); }, - Vb = (a, b, c) => { + ac = (a, b, c) => { "undefined" == typeof c && ((c = b), (b = 438)); return S(a, b | 8192, c); }, - Pa = (a, b) => { - if (!ob(a)) throw new P(44); - var c = Jb(b, { parent: !0 }).node; + Ua = (a, b) => { + if (!ub(a)) throw new P(44); + var c = Pb(b, { parent: !0 }).node; if (!c) throw new P(44); - b = mb(b); - var d = Qb(c, b); + b = sb(b); + var d = Wb(c, b); if (d) throw new P(d); - if (!c.Qa.Pb) throw new P(63); - c.Qa.Pb(c, b, a); + if (!c.Ra.Qb) throw new P(63); + c.Ra.Qb(c, b, a); }, - Wb = (a) => { - var b = Jb(a, { parent: !0 }).node; + bc = (a) => { + var b = Pb(a, { parent: !0 }).node; if (!b) throw new P(44); - var c = mb(a); - a = Bb(b, c); + var c = sb(a); + a = Hb(b, c); a: { try { - var d = Bb(b, c); + var d = Hb(b, c); } catch (f) { - d = f.Za; + d = f.$a; break a; } - var e = Mb(b, "wx"); + var e = Sb(b, "wx"); d = e ? e : 16384 === (d.mode & 61440) ? 31 : 0; } if (d) throw new P(d); - if (!b.Qa.Sb) throw new P(63); - if (a.Ab) throw new P(10); - b.Qa.Sb(b, c); - b = Lb(a.parent.id, a.name); - if (Hb[b] === a) Hb[b] = a.wb; + if (!b.Ra.Tb) throw new P(63); + if (a.Bb) throw new P(10); + b.Ra.Tb(b, c); + b = Rb(a.parent.id, a.name); + if (Nb[b] === a) Nb[b] = a.xb; else - for (b = Hb[b]; b; ) { - if (b.wb === a) { - b.wb = a.wb; + for (b = Nb[b]; b; ) { + if (b.xb === a) { + b.xb = a.xb; break; } - b = b.wb; + b = b.xb; } }, - Ib = (a) => { - a = Jb(a).node; + Ob = (a) => { + a = Pb(a).node; if (!a) throw new P(44); - if (!a.Qa.Db) throw new P(28); - return ob(Kb(a.parent), a.Qa.Db(a)); + if (!a.Ra.Eb) throw new P(28); + return ub(Qb(a.parent), a.Ra.Eb(a)); }, - Xb = (a, b) => { - a = Jb(a, { Hb: !b }).node; + cc = (a, b) => { + a = Pb(a, { Ib: !b }).node; if (!a) throw new P(44); - if (!a.Qa.fb) throw new P(63); - return a.Qa.fb(a); + if (!a.Ra.gb) throw new P(63); + return a.Ra.gb(a); }, - Yb = (a) => Xb(a, !0), - Zb = (a, b) => { - a = "string" == typeof a ? Jb(a, { Hb: !0 }).node : a; - if (!a.Qa.$a) throw new P(63); - a.Qa.$a(a, { + dc = (a) => cc(a, !0), + ec = (a, b) => { + a = "string" == typeof a ? Pb(a, { Ib: !0 }).node : a; + if (!a.Ra.ab) throw new P(63); + a.Ra.ab(a, { mode: (b & 4095) | (a.mode & -4096), timestamp: Date.now(), }); }, - Qa = (a, b, c) => { + Va = (a, b, c) => { if ("" === a) throw new P(44); if ("string" == typeof b) { - var d = Ob[b]; + var d = Ub[b]; if ("undefined" == typeof d) throw Error("Unknown file open mode: " + b); b = d; @@ -1200,7 +1225,7 @@ var createModule = (() => { else { a = O(a); try { - e = Jb(a, { Hb: !(b & 131072) }).node; + e = Pb(a, { Ib: !(b & 131072) }).node; } catch (f) {} } d = !1; @@ -1216,96 +1241,96 @@ var createModule = (() => { (c = e ? 40960 === (e.mode & 61440) ? 32 - : 16384 === (e.mode & 61440) && ("r" !== Pb(b) || b & 512) + : 16384 === (e.mode & 61440) && ("r" !== Vb(b) || b & 512) ? 31 - : Mb(e, Pb(b)) + : Sb(e, Vb(b)) : 44) ) throw new P(c); if (b & 512 && !d) { c = e; - c = "string" == typeof c ? Jb(c, { Hb: !0 }).node : c; - if (!c.Qa.$a) throw new P(63); + c = "string" == typeof c ? Pb(c, { Ib: !0 }).node : c; + if (!c.Ra.ab) throw new P(63); if (16384 === (c.mode & 61440)) throw new P(31); if (32768 !== (c.mode & 61440)) throw new P(28); - if ((d = Mb(c, "w"))) throw new P(d); - c.Qa.$a(c, { size: 0, timestamp: Date.now() }); + if ((d = Sb(c, "w"))) throw new P(d); + c.Ra.ab(c, { size: 0, timestamp: Date.now() }); } b &= -131713; - e = Tb({ + e = Zb({ node: e, - path: Kb(e), + path: Qb(e), flags: b, seekable: !0, position: 0, - Ra: e.Ra, - Ad: [], + Sa: e.Sa, + Bd: [], error: !1, }); - e.Ra.open && e.Ra.open(e); - !D.logReadFiles || b & 1 || ($b || ($b = {}), a in $b || ($b[a] = 1)); + e.Sa.open && e.Sa.open(e); + !D.logReadFiles || b & 1 || (fc || (fc = {}), a in fc || (fc[a] = 1)); return e; }, - ac = (a) => { - if (null === a.ob) throw new P(8); - a.Ub && (a.Ub = null); + gc = (a) => { + if (null === a.pb) throw new P(8); + a.Vb && (a.Vb = null); try { - a.Ra.close && a.Ra.close(a); + a.Sa.close && a.Sa.close(a); } catch (b) { throw b; } finally { - Fb[a.ob] = null; + Lb[a.pb] = null; } - a.ob = null; + a.pb = null; }, - bc = (a, b, c) => { - if (null === a.ob) throw new P(8); - if (!a.seekable || !a.Ra.pb) throw new P(70); + hc = (a, b, c) => { + if (null === a.pb) throw new P(8); + if (!a.seekable || !a.Sa.qb) throw new P(70); if (0 != c && 1 != c && 2 != c) throw new P(28); - a.position = a.Ra.pb(a, b, c); - a.Ad = []; + a.position = a.Sa.qb(a, b, c); + a.Bd = []; }, - cc = (a, b, c, d, e, f) => { + ic = (a, b, c, d, e, f) => { if (0 > d || 0 > e) throw new P(28); - if (null === a.ob) throw new P(8); + if (null === a.pb) throw new P(8); if (0 === (a.flags & 2097155)) throw new P(8); if (16384 === (a.node.mode & 61440)) throw new P(31); - if (!a.Ra.write) throw new P(28); - a.seekable && a.flags & 1024 && bc(a, 0, 2); + if (!a.Sa.write) throw new P(28); + a.seekable && a.flags & 1024 && hc(a, 0, 2); var h = "undefined" != typeof e; if (!h) e = a.position; else if (!a.seekable) throw new P(70); - b = a.Ra.write(a, b, c, d, e, f); + b = a.Sa.write(a, b, c, d, e, f); h || (a.position += b); return b; }, - Na = () => { + Sa = () => { P || ((P = function (a, b) { this.name = "ErrnoError"; this.node = b; - this.od = function (c) { - this.Za = c; + this.qd = function (c) { + this.$a = c; }; - this.od(a); + this.qd(a); this.message = "FS error"; }), (P.prototype = Error()), (P.prototype.constructor = P), [44].forEach((a) => { - Ab[a] = new P(a); - Ab[a].stack = ""; + Gb[a] = new P(a); + Gb[a].stack = ""; })); }, - Ma, - ec = (a, b) => { + Ra, + jc = (a, b) => { var c = 0; a && (c |= 365); b && (c |= 146); return c; }, - fc = (a, b) => { - a = "string" == typeof a ? a : Kb(a); + kc = (a, b) => { + a = "string" == typeof a ? a : Qb(a); for (b = b.split("/").reverse(); b.length; ) { var c = b.pop(); if (c) { @@ -1318,17 +1343,17 @@ var createModule = (() => { } return d; }, - gc = (a, b, c, d) => { - a = O(("string" == typeof a ? a : Kb(a)) + "/" + b); - c = ec(c, d); + lc = (a, b, c, d) => { + a = O(("string" == typeof a ? a : Qb(a)) + "/" + b); + c = jc(c, d); return S(a, ((void 0 !== c ? c : 438) & 4095) | 32768, 0); }, - hc = (a, b, c, d, e, f) => { + mc = (a, b, c, d, e, f) => { var h = b; a && - ((a = "string" == typeof a ? a : Kb(a)), + ((a = "string" == typeof a ? a : Qb(a)), (h = b ? O(a + "/" + b) : a)); - a = ec(d, e); + a = jc(d, e); h = S(h, ((void 0 !== a ? a : 438) & 4095) | 32768, 0); if (c) { if ("string" == typeof c) { @@ -1337,20 +1362,20 @@ var createModule = (() => { for (e = c.length; d < e; ++d) b[d] = c.charCodeAt(d); c = b; } - Zb(h, a | 146); - b = Qa(h, 577); - cc(b, c, 0, c.length, 0, f); - ac(b); - Zb(h, a); + ec(h, a | 146); + b = Va(h, 577); + ic(b, c, 0, c.length, 0, f); + gc(b); + ec(h, a); } return h; }, - Oa = (a, b, c, d) => { - a = O(("string" == typeof a ? a : Kb(a)) + "/" + b); - b = ec(!!c, !!d); - Oa.qc || (Oa.qc = 64); - var e = (Oa.qc++ << 8) | 0; - sb(e, { + Ta = (a, b, c, d) => { + a = O(("string" == typeof a ? a : Qb(a)) + "/" + b); + b = jc(!!c, !!d); + Ta.rc || (Ta.rc = 64); + var e = (Ta.rc++ << 8) | 0; + yb(e, { open: (f) => { f.seekable = !1; }, @@ -1383,46 +1408,46 @@ var createModule = (() => { return n; }, }); - return Vb(a, b, e); + return ac(a, b, e); }, - ic = (a) => { - if (!(a.$c || a.ad || a.link || a.Pa)) { + nc = (a) => { + if (!(a.bd || a.cd || a.link || a.Qa)) { if ("undefined" != typeof XMLHttpRequest) throw Error( "Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.", ); if (ta) try { - (a.Pa = pb(ta(a.url), !0)), (a.Ua = a.Pa.length); + (a.Qa = vb(ta(a.url), !0)), (a.Va = a.Qa.length); } catch (b) { throw new P(29); } else throw Error("Cannot load without read() or XMLHttpRequest."); } }, - jc = (a, b, c, d, e) => { + oc = (a, b, c, d, e) => { function f() { - this.Xb = !1; - this.Gb = []; + this.Yb = !1; + this.Hb = []; } function h(p, r, k, t, x) { - p = p.node.Pa; + p = p.node.Qa; if (x >= p.length) return 0; t = Math.min(p.length - x, t); - if (p.slice) for (var z = 0; z < t; z++) r[k + z] = p[x + z]; - else for (z = 0; z < t; z++) r[k + z] = p.get(x + z); + if (p.slice) for (var A = 0; A < t; A++) r[k + A] = p[x + A]; + else for (A = 0; A < t; A++) r[k + A] = p.get(x + A); return t; } f.prototype.get = function (p) { if (!(p > this.length - 1 || 0 > p)) { - var r = p % this.jc; - return this.Jb((p / this.jc) | 0)[r]; + var r = p % this.kc; + return this.Kb((p / this.kc) | 0)[r]; } }; - f.prototype.nd = function (p) { - this.Jb = p; + f.prototype.pd = function (p) { + this.Kb = p; }; - f.prototype.hc = function () { + f.prototype.ic = function () { var p = new XMLHttpRequest(); p.open("HEAD", c, !1); p.send(null); @@ -1434,13 +1459,13 @@ var createModule = (() => { p = (k = p.getResponseHeader("Content-Encoding")) && "gzip" === k; var x = 1048576; t || (x = r); - var z = this; - z.nd((G) => { + var A = this; + A.pd((G) => { var H = G * x, y = (G + 1) * x - 1; y = Math.min(y, r - 1); - if ("undefined" == typeof z.Gb[G]) { - var R = z.Gb; + if ("undefined" == typeof A.Hb[G]) { + var R = A.Hb; if (H > y) throw Error( "invalid range (" + H + ", " + y + ") or no bytes requested!", @@ -1461,115 +1486,115 @@ var createModule = (() => { H = void 0 !== C.response ? new Uint8Array(C.response || []) - : pb(C.responseText || "", !0); + : vb(C.responseText || "", !0); R[G] = H; } - if ("undefined" == typeof z.Gb[G]) throw Error("doXHR failed!"); - return z.Gb[G]; + if ("undefined" == typeof A.Hb[G]) throw Error("doXHR failed!"); + return A.Hb[G]; }); if (p || !r) (x = r = 1), - (x = r = this.Jb(0).length), + (x = r = this.Kb(0).length), wa( "LazyFiles on gzip forces download of the whole file when length is accessed", ); - this.Cc = r; - this.Bc = x; - this.Xb = !0; + this.Ec = r; + this.Dc = x; + this.Yb = !0; }; if ("undefined" != typeof XMLHttpRequest) { var l = new f(); Object.defineProperties(l, { length: { get: function () { - this.Xb || this.hc(); - return this.Cc; + this.Yb || this.ic(); + return this.Ec; }, }, - jc: { + kc: { get: function () { - this.Xb || this.hc(); - return this.Bc; + this.Yb || this.ic(); + return this.Dc; }, }, }); var m = void 0; } else (m = c), (l = void 0); - var n = gc(a, b, d, e); - l ? (n.Pa = l) : m && ((n.Pa = null), (n.url = m)); + var n = lc(a, b, d, e); + l ? (n.Qa = l) : m && ((n.Qa = null), (n.url = m)); Object.defineProperties(n, { - Ua: { + Va: { get: function () { - return this.Pa.length; + return this.Qa.length; }, }, }); var q = {}; - Object.keys(n.Ra).forEach((p) => { - var r = n.Ra[p]; + Object.keys(n.Sa).forEach((p) => { + var r = n.Sa[p]; q[p] = function () { - ic(n); + nc(n); return r.apply(null, arguments); }; }); q.read = (p, r, k, t, x) => { - ic(n); + nc(n); return h(p, r, k, t, x); }; - q.zb = (p, r, k) => { - ic(n); - var t = wb(r); + q.Ab = (p, r, k) => { + nc(n); + var t = Cb(r); if (!t) throw new P(48); h(p, g(), t, r, k); - return { Ta: t, fc: !0 }; + return { Ua: t, hc: !0 }; }; - n.Ra = q; + n.Sa = q; return n; }, - lc = (a, b, c, d, e, f, h, l, m, n) => { + qc = (a, b, c, d, e, f, h, l, m, n) => { function q(k) { function t(x) { n && n(); - l || hc(a, b, x, d, e, m); + l || mc(a, b, x, d, e, m); f && f(); - Za(r); + eb(r); } - kc.Ed(k, p, t, () => { + pc.Fd(k, p, t, () => { h && h(); - Za(r); + eb(r); }) || t(k); } - var p = b ? ob(O(a + "/" + b)) : a, + var p = b ? ub(O(a + "/" + b)) : a, r = "cp " + p; - Ya(r); - "string" == typeof c ? Cb(c, (k) => q(k), h) : q(c); + db(r); + "string" == typeof c ? Ib(c, (k) => q(k), h) : q(c); }, T = {}, - Sb, - $b; - function mc(a, b, c) { + Yb, + fc; + function rc(a, b, c) { if ("/" === b.charAt(0)) return b; - a = -100 === a ? "/" : nc(a).path; + a = -100 === a ? "/" : sc(a).path; if (0 == b.length) { if (!c) throw new P(44); return a; } return O(a + "/" + b); } - function oc(a, b, c) { + function tc(a, b, c) { try { var d = a(b); } catch (f) { - if (f && f.node && O(b) !== O(Kb(f.node))) return -54; + if (f && f.node && O(b) !== O(Qb(f.node))) return -54; throw f; } - A()[c >> 2] = d.Nc; - A()[(c + 8) >> 2] = d.Vb; - A()[(c + 12) >> 2] = d.mode; - B()[(c + 16) >> 2] = d.fd; - A()[(c + 20) >> 2] = d.uid; - A()[(c + 24) >> 2] = d.Vc; - A()[(c + 28) >> 2] = d.Cb; + z()[c >> 2] = d.Pc; + z()[(c + 8) >> 2] = d.Wb; + z()[(c + 12) >> 2] = d.mode; + B()[(c + 16) >> 2] = d.hd; + z()[(c + 20) >> 2] = d.uid; + z()[(c + 24) >> 2] = d.Xc; + z()[(c + 28) >> 2] = d.Db; M = [ d.size >>> 0, ((L = d.size), @@ -1579,13 +1604,13 @@ var createModule = (() => { : ~~+Math.ceil((L - +(~~L >>> 0)) / 4294967296) >>> 0 : 0), ]; - A()[(c + 40) >> 2] = M[0]; - A()[(c + 44) >> 2] = M[1]; - A()[(c + 48) >> 2] = 4096; - A()[(c + 52) >> 2] = d.Hc; - a = d.Fc.getTime(); - b = d.ed.getTime(); - var e = d.Kc.getTime(); + z()[(c + 40) >> 2] = M[0]; + z()[(c + 44) >> 2] = M[1]; + z()[(c + 48) >> 2] = 4096; + z()[(c + 52) >> 2] = d.Jc; + a = d.Hc.getTime(); + b = d.gd.getTime(); + var e = d.Mc.getTime(); M = [ Math.floor(a / 1e3) >>> 0, ((L = Math.floor(a / 1e3)), @@ -1595,8 +1620,8 @@ var createModule = (() => { : ~~+Math.ceil((L - +(~~L >>> 0)) / 4294967296) >>> 0 : 0), ]; - A()[(c + 56) >> 2] = M[0]; - A()[(c + 60) >> 2] = M[1]; + z()[(c + 56) >> 2] = M[0]; + z()[(c + 60) >> 2] = M[1]; B()[(c + 64) >> 2] = (a % 1e3) * 1e3; M = [ Math.floor(b / 1e3) >>> 0, @@ -1607,8 +1632,8 @@ var createModule = (() => { : ~~+Math.ceil((L - +(~~L >>> 0)) / 4294967296) >>> 0 : 0), ]; - A()[(c + 72) >> 2] = M[0]; - A()[(c + 76) >> 2] = M[1]; + z()[(c + 72) >> 2] = M[0]; + z()[(c + 76) >> 2] = M[1]; B()[(c + 80) >> 2] = (b % 1e3) * 1e3; M = [ Math.floor(e / 1e3) >>> 0, @@ -1619,90 +1644,106 @@ var createModule = (() => { : ~~+Math.ceil((L - +(~~L >>> 0)) / 4294967296) >>> 0 : 0), ]; - A()[(c + 88) >> 2] = M[0]; - A()[(c + 92) >> 2] = M[1]; + z()[(c + 88) >> 2] = M[0]; + z()[(c + 92) >> 2] = M[1]; B()[(c + 96) >> 2] = (e % 1e3) * 1e3; M = [ - d.Vb >>> 0, - ((L = d.Vb), + d.Wb >>> 0, + ((L = d.Wb), 1 <= +Math.abs(L) ? 0 < L ? (Math.min(+Math.floor(L / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((L - +(~~L >>> 0)) / 4294967296) >>> 0 : 0), ]; - A()[(c + 104) >> 2] = M[0]; - A()[(c + 108) >> 2] = M[1]; + z()[(c + 104) >> 2] = M[0]; + z()[(c + 108) >> 2] = M[1]; return 0; } - var pc = void 0; - function nc(a) { - a = Fb[a]; + var uc = void 0; + function sc(a) { + a = Lb[a]; if (!a) throw new P(8); return a; } - function qc(a) { + function vc(a) { if (F) return U(1, 1, a); - if (!noExitRuntime) { - N.ud(); + Ba = a; + if (!Pa()) { + N.Ac(); if (D.onExit) D.onExit(a); Aa = !0; } - qa(a, new gb(a)); + qa(a, new mb(a)); } - function rc(a) { - if (F) throw (sc(a), "unwind"); - qc(a); + function wc(a) { + Ba = a; + if (F) throw (xc(a), "unwind"); + if (!Pa() && !F) { + yc(); + Za(La); + Ra = !1; + zc(0); + for (var b = 0; b < Lb.length; b++) { + var c = Lb[b]; + c && gc(c); + } + N.Ac(); + Na = !0; + } + vc(a); } - function tc(a) { - a instanceof gb || "unwind" == a || qa(1, a); + function Ac(a) { + a instanceof mb || "unwind" == a || qa(1, a); } var N = { - mb: [], - qb: [], - Ac: [], - kb: {}, - Xc: function () { - F ? N.Zc() : N.Yc(); + nb: [], + rb: [], + Cc: [], + lb: {}, + Zc: function () { + F ? N.ad() : N.$c(); }, - Yc: function () { - for (var a = navigator.hardwareConcurrency; a--; ) N.ec(); + $c: function () { + for (var a = navigator.hardwareConcurrency; a--; ) N.fc(); }, - Zc: function () { - N.receiveObjectTransfer = N.kd; - N.threadInitTLS = N.zc; - N.setExitStatus = N.yc; + ad: function () { + N.receiveObjectTransfer = N.md; + N.threadInitTLS = N.Bc; + N.setExitStatus = N.zc; noExitRuntime = !1; }, - yc: function () {}, - Id: ["$terminateWorker"], - ud: function () { - for (var a of N.qb) hb(a); - for (a of N.mb) hb(a); - N.mb = []; - N.qb = []; - N.kb = []; + zc: function (a) { + Ba = a; + }, + Jd: ["$terminateWorker"], + Ac: function () { + for (var a of N.rb) nb(a); + for (a of N.nb) nb(a); + N.nb = []; + N.rb = []; + N.lb = []; }, - md: function (a) { - var b = a.jb; - delete N.kb[b]; - N.mb.push(a); - N.qb.splice(N.qb.indexOf(a), 1); - a.jb = 0; - uc(b); + od: function (a) { + var b = a.kb; + delete N.lb[b]; + N.nb.push(a); + N.rb.splice(N.rb.indexOf(a), 1); + a.kb = 0; + Bc(b); }, - kd: function () {}, - zc: function () { - N.Ac.forEach((a) => a()); + md: function () {}, + Bc: function () { + N.Cc.forEach((a) => a()); }, - pc: (a) => + qc: (a) => new Promise((b) => { a.onmessage = (f) => { f = f.data; var h = f.cmd; - a.jb && (N.Lc = a.jb); - if (f.targetThread && f.targetThread != vc()) { - var l = N.kb[f.Hd]; + a.kb && (N.Nc = a.kb); + if (f.targetThread && f.targetThread != Cc()) { + var l = N.lb[f.Id]; l ? l.postMessage(f, f.transferList) : E( @@ -1712,19 +1753,19 @@ var createModule = (() => { f.targetThread + ", but that thread no longer exists!", ); - } else if ("processProxyingQueue" === h) wc(f.queue); - else if ("spawnThread" === h) jb(f); - else if ("cleanupThread" === h) ib(f.thread); + } else if ("processProxyingQueue" === h) Dc(f.queue); + else if ("spawnThread" === h) pb(f); + else if ("cleanupThread" === h) ob(f.thread); else if ("killThread" === h) (f = f.thread), - (h = N.kb[f]), - delete N.kb[f], - hb(h), - uc(f), - N.qb.splice(N.qb.indexOf(h), 1), - (h.jb = 0); + (h = N.lb[f]), + delete N.lb[f], + nb(h), + Bc(f), + N.rb.splice(N.rb.indexOf(h), 1), + (h.kb = 0); else if ("cancelThread" === h) - N.kb[f.thread].postMessage({ cmd: "cancel" }); + N.lb[f.thread].postMessage({ cmd: "cancel" }); else if ("loaded" === h) (a.loaded = !0), b(a); else if ("print" === h) wa("Thread " + f.threadId + ": " + f.text); else if ("printErr" === h) @@ -1734,7 +1775,7 @@ var createModule = (() => { else if ("setimmediate" === f.target) a.postMessage(f); else if ("callHandler" === h) D[f.handler](...f.args); else h && E("worker sent an unknown command " + h); - N.Lc = void 0; + N.Nc = void 0; }; a.onerror = (f) => { E( @@ -1759,53 +1800,53 @@ var createModule = (() => { wasmModule: za, }); }), - cd: function (a) { + ed: function (a) { if (F) return a(); - Promise.all(N.mb.map(N.pc)).then(a); + Promise.all(N.nb.map(N.qc)).then(a); }, - ec: function () { + fc: function () { var a = sa("capture-wasm.worker.js"); a = new Worker(a); - N.mb.push(a); + N.nb.push(a); }, - Rc: function () { - 0 == N.mb.length && (N.ec(), N.pc(N.mb[0])); - return N.mb.pop(); + Tc: function () { + 0 == N.nb.length && (N.fc(), N.qc(N.nb[0])); + return N.nb.pop(); }, }; D.PThread = N; - function Sa(a) { + function Za(a) { for (; 0 < a.length; ) a.shift()(D); } D.establishStackSpace = function () { - var a = vc(), - b = A()[(a + 52) >> 2]; - a = A()[(a + 56) >> 2]; - xc(b, b - a); - yc(b); + var a = Cc(), + b = z()[(a + 52) >> 2]; + a = z()[(a + 56) >> 2]; + Ec(b, b - a); + Fc(b); }; - function sc(a) { + function xc(a) { if (F) return U(2, 0, a); try { - rc(a); + wc(a); } catch (b) { - tc(b); + Ac(b); } } - var zc = []; - function Ac(a) { - var b = zc[a]; - b || (a >= zc.length && (zc.length = a + 1), (zc[a] = b = Ha.get(a))); + var Gc = []; + function Hc(a) { + var b = Gc[a]; + b || (a >= Gc.length && (Gc.length = a + 1), (Gc[a] = b = Ia.get(a))); return b; } D.invokeEntryPoint = function (a, b) { - a = Ac(a)(b); - noExitRuntime ? N.yc(a) : Bc(a); + a = Hc(a)(b); + Pa() ? N.zc(a) : Ic(a); }; - function Cc(a, b, c, d) { - return F ? U(3, 1, a, b, c, d) : Dc(a, b, c, d); + function Jc(a, b, c, d) { + return F ? U(3, 1, a, b, c, d) : Kc(a, b, c, d); } - function Dc(a, b, c, d) { + function Kc(a, b, c, d) { if ("undefined" == typeof SharedArrayBuffer) return ( E( @@ -1814,87 +1855,87 @@ var createModule = (() => { 6 ); var e = []; - if (F && 0 === e.length) return Cc(a, b, c, d); - a = { td: c, jb: a, Ec: d, zd: e }; - return F ? ((a.Bd = "spawnThread"), postMessage(a, e), 0) : jb(a); + if (F && 0 === e.length) return Jc(a, b, c, d); + a = { vd: c, kb: a, Gc: d, Ad: e }; + return F ? ((a.Cd = "spawnThread"), postMessage(a, e), 0) : pb(a); } - function Ec(a, b) { + function Lc(a, b) { if (F) return U(4, 1, a, b); try { - var c = nc(a); - return oc(Xb, c.path, b); + var c = sc(a); + return tc(cc, c.path, b); } catch (d) { if ("undefined" == typeof T || "ErrnoError" !== d.name) throw d; - return -d.Za; + return -d.$a; } } - function Fc(a, b, c, d) { + function Mc(a, b, c, d) { if (F) return U(6, 1, a, b, c, d); try { b = J(b); var e = d & 256; - b = mc(a, b, d & 4096); - return oc(e ? Yb : Xb, b, c); + b = rc(a, b, d & 4096); + return tc(e ? dc : cc, b, c); } catch (f) { if ("undefined" == typeof T || "ErrnoError" !== f.name) throw f; - return -f.Za; + return -f.$a; } } - function Gc(a, b, c, d) { + function Nc(a, b, c, d) { if (F) return U(7, 1, a, b, c, d); - pc = d; + uc = d; try { b = J(b); - b = mc(a, b); + b = rc(a, b); if (d) { - pc += 4; - var e = A()[(pc - 4) >> 2]; + uc += 4; + var e = z()[(uc - 4) >> 2]; } else e = 0; - return Qa(b, c, e).ob; + return Va(b, c, e).pb; } catch (f) { if ("undefined" == typeof T || "ErrnoError" !== f.name) throw f; - return -f.Za; + return -f.$a; } } - function Hc(a, b) { + function Oc(a, b) { if (F) return U(8, 1, a, b); try { - return (a = J(a)), oc(Xb, a, b); + return (a = J(a)), tc(cc, a, b); } catch (c) { if ("undefined" == typeof T || "ErrnoError" !== c.name) throw c; - return -c.Za; + return -c.$a; } } - var Ic = {}; - function Jc(a) { + var Pc = {}; + function Qc(a) { for (; a.length; ) { var b = a.pop(); a.pop()(b); } } - function Kc(a) { - return this.fromWireType(A()[a >> 2]); + function Rc(a) { + return this.fromWireType(z()[a >> 2]); } - var Lc = {}, - Mc = {}, - Nc = {}; - function Oc(a) { + var Sc = {}, + Tc = {}, + Uc = {}; + function Vc(a) { if (void 0 === a) return "_unknown"; a = a.replace(/[^a-zA-Z0-9_]/g, "$"); var b = a.charCodeAt(0); return 48 <= b && 57 >= b ? "_" + a : a; } - function Pc(a, b) { - a = Oc(a); + function Wc(a, b) { + a = Vc(a); return { [a]: function () { return b.apply(this, arguments); }, }[a]; } - function Qc(a) { + function Xc(a) { var b = Error, - c = Pc(a, function (d) { + c = Wc(a, function (d) { this.name = a; this.message = d; d = Error(d).stack; @@ -1911,36 +1952,36 @@ var createModule = (() => { }; return c; } - var Rc = void 0; - function Sc(a) { - throw new Rc(a); + var Yc = void 0; + function Zc(a) { + throw new Yc(a); } - function Tc(a, b, c) { + function $c(a, b, c) { function d(l) { l = c(l); - l.length !== a.length && Sc("Mismatched type converter count"); - for (var m = 0; m < a.length; ++m) Uc(a[m], l[m]); + l.length !== a.length && Zc("Mismatched type converter count"); + for (var m = 0; m < a.length; ++m) ad(a[m], l[m]); } a.forEach(function (l) { - Nc[l] = b; + Uc[l] = b; }); var e = Array(b.length), f = [], h = 0; b.forEach((l, m) => { - Mc.hasOwnProperty(l) - ? (e[m] = Mc[l]) + Tc.hasOwnProperty(l) + ? (e[m] = Tc[l]) : (f.push(l), - Lc.hasOwnProperty(l) || (Lc[l] = []), - Lc[l].push(() => { - e[m] = Mc[l]; + Sc.hasOwnProperty(l) || (Sc[l] = []), + Sc[l].push(() => { + e[m] = Tc[l]; ++h; h === f.length && d(e); })); }); 0 === f.length && d(e); } - function Vc(a) { + function bd(a) { switch (a) { case 1: return 0; @@ -1954,204 +1995,204 @@ var createModule = (() => { throw new TypeError("Unknown type size: " + a); } } - var Wc = void 0; + var cd = void 0; function V(a) { - for (var b = ""; v()[a]; ) b += Wc[v()[a++]]; + for (var b = ""; v()[a]; ) b += cd[v()[a++]]; return b; } - var Xc = void 0; + var dd = void 0; function W(a) { - throw new Xc(a); + throw new dd(a); } - function Uc(a, b, c = {}) { + function ad(a, b, c = {}) { if (!("argPackAdvance" in b)) throw new TypeError( "registerType registeredInstance requires argPackAdvance", ); var d = b.name; a || W('type "' + d + '" must have a positive integer typeid pointer'); - if (Mc.hasOwnProperty(a)) { - if (c.Wc) return; + if (Tc.hasOwnProperty(a)) { + if (c.Yc) return; W("Cannot register type '" + d + "' twice"); } - Mc[a] = b; - delete Nc[a]; - Lc.hasOwnProperty(a) && - ((b = Lc[a]), delete Lc[a], b.forEach((e) => e())); + Tc[a] = b; + delete Uc[a]; + Sc.hasOwnProperty(a) && + ((b = Sc[a]), delete Sc[a], b.forEach((e) => e())); } - function Yc(a) { - W(a.Oa.Va.Sa.name + " instance already deleted"); + function ed(a) { + W(a.Pa.Wa.Ta.name + " instance already deleted"); } - var Zc = !1; - function $c() {} - function ad(a) { + var fd = !1; + function gd() {} + function hd(a) { --a.count.value; - 0 === a.count.value && (a.Ya ? a.bb.lb(a.Ya) : a.Va.Sa.lb(a.Ta)); + 0 === a.count.value && (a.Za ? a.cb.mb(a.Za) : a.Wa.Ta.mb(a.Ua)); } - function bd(a, b, c) { + function jd(a, b, c) { if (b === c) return a; - if (void 0 === c.cb) return null; - a = bd(a, b, c.cb); - return null === a ? null : c.Oc(a); - } - var cd = {}, - dd = []; - function ed() { - for (; dd.length; ) { - var a = dd.pop(); - a.Oa.ub = !1; + if (void 0 === c.eb) return null; + a = jd(a, b, c.eb); + return null === a ? null : c.Qc(a); + } + var kd = {}, + ld = []; + function md() { + for (; ld.length; ) { + var a = ld.pop(); + a.Pa.vb = !1; a["delete"](); } } - var fd = void 0, - gd = {}; - function hd(a, b) { - for (void 0 === b && W("ptr should not be undefined"); a.cb; ) - (b = a.Eb(b)), (a = a.cb); - return gd[b]; - } - function jd(a, b) { - (b.Va && b.Ta) || Sc("makeClassHandle requires ptr and ptrType"); - !!b.bb !== !!b.Ya && - Sc("Both smartPtrType and smartPtr must be specified"); + var nd = void 0, + od = {}; + function pd(a, b) { + for (void 0 === b && W("ptr should not be undefined"); a.eb; ) + (b = a.Fb(b)), (a = a.eb); + return od[b]; + } + function qd(a, b) { + (b.Wa && b.Ua) || Zc("makeClassHandle requires ptr and ptrType"); + !!b.cb !== !!b.Za && + Zc("Both smartPtrType and smartPtr must be specified"); b.count = { value: 1 }; - return kd(Object.create(a, { Oa: { value: b } })); + return rd(Object.create(a, { Pa: { value: b } })); } - function kd(a) { + function rd(a) { if ("undefined" === typeof FinalizationRegistry) - return (kd = (b) => b), a; - Zc = new FinalizationRegistry((b) => { - ad(b.Oa); + return (rd = (b) => b), a; + fd = new FinalizationRegistry((b) => { + hd(b.Pa); }); - kd = (b) => { - var c = b.Oa; - c.Ya && Zc.register(b, { Oa: c }, b); + rd = (b) => { + var c = b.Pa; + c.Za && fd.register(b, { Pa: c }, b); return b; }; - $c = (b) => { - Zc.unregister(b); + gd = (b) => { + fd.unregister(b); }; - return kd(a); + return rd(a); } - function ld() {} - function md(a, b, c) { - if (void 0 === a[b].Xa) { + function sd() {} + function td(a, b, c) { + if (void 0 === a[b].Ya) { var d = a[b]; a[b] = function () { - a[b].Xa.hasOwnProperty(arguments.length) || + a[b].Ya.hasOwnProperty(arguments.length) || W( "Function '" + c + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + - a[b].Xa + + a[b].Ya + ")!", ); - return a[b].Xa[arguments.length].apply(this, arguments); + return a[b].Ya[arguments.length].apply(this, arguments); }; - a[b].Xa = []; - a[b].Xa[d.Fb] = d; + a[b].Ya = []; + a[b].Ya[d.Gb] = d; } } - function nd(a, b, c) { + function ud(a, b, c) { D.hasOwnProperty(a) - ? ((void 0 === c || (void 0 !== D[a].Xa && void 0 !== D[a].Xa[c])) && + ? ((void 0 === c || (void 0 !== D[a].Ya && void 0 !== D[a].Ya[c])) && W("Cannot register public name '" + a + "' twice"), - md(D, a, a), + td(D, a, a), D.hasOwnProperty(c) && W( "Cannot register multiple overloads of a function with the same number of arguments (" + c + ")!", ), - (D[a].Xa[c] = b)) - : ((D[a] = b), void 0 !== c && (D[a].Fd = c)); + (D[a].Ya[c] = b)) + : ((D[a] = b), void 0 !== c && (D[a].Gd = c)); } - function od(a, b, c, d, e, f, h, l) { + function vd(a, b, c, d, e, f, h, l) { this.name = a; this.constructor = b; - this.vb = c; - this.lb = d; - this.cb = e; - this.Qc = f; - this.Eb = h; - this.Oc = l; - this.hd = []; - } - function pd(a, b, c) { + this.wb = c; + this.mb = d; + this.eb = e; + this.Sc = f; + this.Fb = h; + this.Qc = l; + this.kd = []; + } + function wd(a, b, c) { for (; b !== c; ) - b.Eb || + b.Fb || W( "Expected null or instance of " + c.name + ", got an instance of " + b.name, ), - (a = b.Eb(a)), - (b = b.cb); + (a = b.Fb(a)), + (b = b.eb); return a; } - function qd(a, b) { + function xd(a, b) { if (null === b) - return this.Wb && W("null is not a valid " + this.name), 0; - b.Oa || W('Cannot pass "' + rd(b) + '" as a ' + this.name); - b.Oa.Ta || + return this.Xb && W("null is not a valid " + this.name), 0; + b.Pa || W('Cannot pass "' + yd(b) + '" as a ' + this.name); + b.Pa.Ua || W("Cannot pass deleted object as a pointer of type " + this.name); - return pd(b.Oa.Ta, b.Oa.Va.Sa, this.Sa); + return wd(b.Pa.Ua, b.Pa.Wa.Ta, this.Ta); } - function sd(a, b) { + function zd(a, b) { if (null === b) { - this.Wb && W("null is not a valid " + this.name); - if (this.Lb) { - var c = this.Zb(); - null !== a && a.push(this.lb, c); + this.Xb && W("null is not a valid " + this.name); + if (this.Mb) { + var c = this.$b(); + null !== a && a.push(this.mb, c); return c; } return 0; } - b.Oa || W('Cannot pass "' + rd(b) + '" as a ' + this.name); - b.Oa.Ta || + b.Pa || W('Cannot pass "' + yd(b) + '" as a ' + this.name); + b.Pa.Ua || W("Cannot pass deleted object as a pointer of type " + this.name); - !this.Kb && - b.Oa.Va.Kb && + !this.Lb && + b.Pa.Wa.Lb && W( "Cannot convert argument of type " + - (b.Oa.bb ? b.Oa.bb.name : b.Oa.Va.name) + + (b.Pa.cb ? b.Pa.cb.name : b.Pa.Wa.name) + " to parameter type " + this.name, ); - c = pd(b.Oa.Ta, b.Oa.Va.Sa, this.Sa); - if (this.Lb) + c = wd(b.Pa.Ua, b.Pa.Wa.Ta, this.Ta); + if (this.Mb) switch ( - (void 0 === b.Oa.Ya && + (void 0 === b.Pa.Za && W("Passing raw pointer to smart pointer is illegal"), - this.sd) + this.ud) ) { case 0: - b.Oa.bb === this - ? (c = b.Oa.Ya) + b.Pa.cb === this + ? (c = b.Pa.Za) : W( "Cannot convert argument of type " + - (b.Oa.bb ? b.Oa.bb.name : b.Oa.Va.name) + + (b.Pa.cb ? b.Pa.cb.name : b.Pa.Wa.name) + " to parameter type " + this.name, ); break; case 1: - c = b.Oa.Ya; + c = b.Pa.Za; break; case 2: - if (b.Oa.bb === this) c = b.Oa.Ya; + if (b.Pa.cb === this) c = b.Pa.Za; else { var d = b.clone(); - c = this.jd( + c = this.ld( c, - td(function () { + Ad(function () { d["delete"](); }), ); - null !== a && a.push(this.lb, c); + null !== a && a.push(this.mb, c); } break; default: @@ -2159,39 +2200,39 @@ var createModule = (() => { } return c; } - function ud(a, b) { + function Bd(a, b) { if (null === b) - return this.Wb && W("null is not a valid " + this.name), 0; - b.Oa || W('Cannot pass "' + rd(b) + '" as a ' + this.name); - b.Oa.Ta || + return this.Xb && W("null is not a valid " + this.name), 0; + b.Pa || W('Cannot pass "' + yd(b) + '" as a ' + this.name); + b.Pa.Ua || W("Cannot pass deleted object as a pointer of type " + this.name); - b.Oa.Va.Kb && + b.Pa.Wa.Lb && W( "Cannot convert argument of type " + - b.Oa.Va.name + + b.Pa.Wa.name + " to parameter type " + this.name, ); - return pd(b.Oa.Ta, b.Oa.Va.Sa, this.Sa); + return wd(b.Pa.Ua, b.Pa.Wa.Ta, this.Ta); } - function vd(a, b, c, d) { + function Cd(a, b, c, d) { this.name = a; - this.Sa = b; - this.Wb = c; - this.Kb = d; - this.Lb = !1; - this.lb = this.jd = this.Zb = this.uc = this.sd = this.gd = void 0; - void 0 !== b.cb - ? (this.toWireType = sd) - : ((this.toWireType = d ? qd : ud), (this.eb = null)); - } - function wd(a, b, c) { - D.hasOwnProperty(a) || Sc("Replacing nonexistant public symbol"); - void 0 !== D[a].Xa && void 0 !== c - ? (D[a].Xa[c] = b) - : ((D[a] = b), (D[a].Fb = c)); - } - function xd(a, b) { + this.Ta = b; + this.Xb = c; + this.Lb = d; + this.Mb = !1; + this.mb = this.ld = this.$b = this.vc = this.ud = this.jd = void 0; + void 0 !== b.eb + ? (this.toWireType = zd) + : ((this.toWireType = d ? xd : Bd), (this.fb = null)); + } + function Dd(a, b, c) { + D.hasOwnProperty(a) || Zc("Replacing nonexistant public symbol"); + void 0 !== D[a].Ya && void 0 !== c + ? (D[a].Ya[c] = b) + : ((D[a] = b), (D[a].Gb = c)); + } + function Ed(a, b) { var c = []; return function () { c.length = 0; @@ -2199,38 +2240,38 @@ var createModule = (() => { if (a.includes("j")) { var d = D["dynCall_" + a]; d = c && c.length ? d.apply(null, [b].concat(c)) : d.call(null, b); - } else d = Ac(b).apply(null, c); + } else d = Hc(b).apply(null, c); return d; }; } function X(a, b) { a = V(a); - var c = a.includes("j") ? xd(a, b) : Ac(b); + var c = a.includes("j") ? Ed(a, b) : Hc(b); "function" != typeof c && W("unknown function pointer with signature " + a + ": " + b); return c; } - var yd = void 0; - function zd(a) { - a = Ad(a); + var Fd = void 0; + function Gd(a) { + a = Hd(a); var b = V(a); - Bd(a); + Id(a); return b; } - function Cd(a, b) { + function Jd(a, b) { function c(f) { - e[f] || Mc[f] || (Nc[f] ? Nc[f].forEach(c) : (d.push(f), (e[f] = !0))); + e[f] || Tc[f] || (Uc[f] ? Uc[f].forEach(c) : (d.push(f), (e[f] = !0))); } var d = [], e = {}; b.forEach(c); - throw new yd(a + ": " + d.map(zd).join([", "])); + throw new Fd(a + ": " + d.map(Gd).join([", "])); } - function Dd(a, b) { + function Kd(a, b) { for (var c = [], d = 0; d < a; d++) c.push(B()[(b + 4 * d) >> 2]); return c; } - function Ed(a, b, c, d, e) { + function Ld(a, b, c, d, e) { var f = b.length; 2 > f && W( @@ -2239,7 +2280,7 @@ var createModule = (() => { var h = null !== b[1] && null !== c, l = !1; for (c = 1; c < b.length; ++c) - if (null !== b[c] && void 0 === b[c].eb) { + if (null !== b[c] && void 0 === b[c].fb) { l = !0; break; } @@ -2269,17 +2310,17 @@ var createModule = (() => { for (var t = 0; t < n; ++t) (q[t] = b[t + 2].toWireType(r, arguments[t])), p.push(q[t]); t = d.apply(null, p); - if (l) Jc(r); + if (l) Qc(r); else for (var x = h ? 1 : 2; x < b.length; x++) { - var z = 1 === x ? k : q[x - 2]; - null !== b[x].eb && b[x].eb(z); + var A = 1 === x ? k : q[x - 2]; + null !== b[x].fb && b[x].fb(A); } k = m ? b[0].fromWireType(t) : void 0; return k; }; } - var Fd = [], + var Md = [], Y = [ {}, { value: void 0 }, @@ -2287,14 +2328,14 @@ var createModule = (() => { { value: !0 }, { value: !1 }, ]; - function Gd(a) { - 4 < a && 0 === --Y[a].ac && ((Y[a] = void 0), Fd.push(a)); + function Nd(a) { + 4 < a && 0 === --Y[a].bc && ((Y[a] = void 0), Md.push(a)); } - var Hd = (a) => { + var Od = (a) => { a || W("Cannot use deleted val. handle = " + a); return Y[a].value; }, - td = (a) => { + Ad = (a) => { switch (a) { case void 0: return 1; @@ -2305,25 +2346,25 @@ var createModule = (() => { case !1: return 4; default: - var b = Fd.length ? Fd.pop() : Y.length; - Y[b] = { ac: 1, value: a }; + var b = Md.length ? Md.pop() : Y.length; + Y[b] = { bc: 1, value: a }; return b; } }; - function rd(a) { + function yd(a) { if (null === a) return "null"; var b = typeof a; return "object" === b || "array" === b || "function" === b ? a.toString() : "" + a; } - function Id(a, b) { + function Pd(a, b) { switch (b) { case 2: return function (c) { var d = this.fromWireType; u.buffer != ba.buffer && ca(); - return d.call(this, Fa[c >> 2]); + return d.call(this, Ga[c >> 2]); }; case 3: return function (c) { @@ -2333,7 +2374,7 @@ var createModule = (() => { throw new TypeError("Unknown float type: " + a); } } - function Jd(a, b, c) { + function Qd(a, b, c) { switch (b) { case 0: return c @@ -2354,7 +2395,7 @@ var createModule = (() => { case 2: return c ? function (d) { - return A()[d >> 2]; + return z()[d >> 2]; } : function (d) { return B()[d >> 2]; @@ -2363,13 +2404,13 @@ var createModule = (() => { throw new TypeError("Unknown integer type: " + a); } } - var Kd = + var Rd = "undefined" != typeof TextDecoder ? new TextDecoder("utf-16le") : void 0; - function Ld(a, b) { + function Sd(a, b) { var c = a >> 1; for (var d = c + b / 2; !(c >= d) && w()[c]; ) ++c; c <<= 1; - if (32 < c - a && Kd) return Kd.decode(v().slice(a, c)); + if (32 < c - a && Rd) return Rd.decode(v().slice(a, c)); c = ""; for (d = 0; !(d >= b / 2); ++d) { var e = ea()[(a + 2 * d) >> 1]; @@ -2378,7 +2419,7 @@ var createModule = (() => { } return c; } - function Md(a, b, c) { + function Td(a, b, c) { void 0 === c && (c = 2147483647); if (2 > c) return 0; c -= 2; @@ -2392,12 +2433,12 @@ var createModule = (() => { ea()[b >> 1] = 0; return b - d; } - function Nd(a) { + function Ud(a) { return 2 * a.length; } - function Od(a, b) { + function Vd(a, b) { for (var c = 0, d = ""; !(c >= b / 4); ) { - var e = A()[(a + 4 * c) >> 2]; + var e = z()[(a + 4 * c) >> 2]; if (0 == e) break; ++c; 65536 <= e @@ -2407,7 +2448,7 @@ var createModule = (() => { } return d; } - function Pd(a, b, c) { + function Wd(a, b, c) { void 0 === c && (c = 2147483647); if (4 > c) return 0; var d = b; @@ -2418,14 +2459,14 @@ var createModule = (() => { var h = a.charCodeAt(++e); f = (65536 + ((f & 1023) << 10)) | (h & 1023); } - A()[b >> 2] = f; + z()[b >> 2] = f; b += 4; if (b + 4 > c) break; } - A()[b >> 2] = 0; + z()[b >> 2] = 0; return b - d; } - function Qd(a) { + function Xd(a) { for (var b = 0, c = 0; c < a.length; ++c) { var d = a.charCodeAt(c); 55296 <= d && 57343 >= d && ++c; @@ -2433,24 +2474,24 @@ var createModule = (() => { } return b; } - function wc(a) { - Atomics.store(A(), a >> 2, 1); - vc() && Rd(a); - Atomics.compareExchange(A(), a >> 2, 1, 0); + function Dc(a) { + Atomics.store(z(), a >> 2, 1); + Cc() && Yd(a); + Atomics.compareExchange(z(), a >> 2, 1, 0); } - D.executeNotifiedProxyingQueue = wc; - function Sd(a, b) { - var c = Mc[a]; - void 0 === c && W(b + " has unknown type " + zd(a)); + D.executeNotifiedProxyingQueue = Dc; + function Zd(a, b) { + var c = Tc[a]; + void 0 === c && W(b + " has unknown type " + Gd(a)); return c; } - var Td = {}; - function Ud(a) { - var b = Td[a]; + var $d = {}; + function ae(a) { + var b = $d[a]; return void 0 === b ? V(a) : b; } - var Vd = []; - function Wd() { + var be = []; + function ce() { function a(b) { b.$$$embind_global$$$ = b; var c = @@ -2466,104 +2507,104 @@ var createModule = (() => { if ("object" == typeof $$$embind_global$$$) return $$$embind_global$$$; throw Error("unable to get global object."); } - function Xd(a) { - var b = Vd.length; - Vd.push(a); + function de(a) { + var b = be.length; + be.push(a); return b; } - function Yd(a, b) { + function ee(a, b) { for (var c = Array(a), d = 0; d < a; ++d) - c[d] = Sd(B()[(b + 4 * d) >> 2], "parameter " + d); + c[d] = Zd(B()[(b + 4 * d) >> 2], "parameter " + d); return c; } - var Zd = []; - function $d(a) { + var fe = []; + function ge(a) { var b = Array(a + 1); return function (c, d, e) { b[0] = c; for (var f = 0; f < a; ++f) { - var h = Sd(B()[(d + 4 * f) >> 2], "parameter " + f); + var h = Zd(B()[(d + 4 * f) >> 2], "parameter " + f); b[f + 1] = h.readValueFromPointer(e); e += h.argPackAdvance; } c = new (c.bind.apply(c, b))(); - return td(c); + return Ad(c); }; } - var ae = {}; - function be(a) { + var he = {}; + function ie(a) { return 0 === a % 4 && (0 !== a % 100 || 0 === a % 400); } - var ce = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335], - de = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; - function ee(a) { - return (be(a.getFullYear()) ? ce : de)[a.getMonth()] + a.getDate() - 1; + var je = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335], + ke = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; + function le(a) { + return (ie(a.getFullYear()) ? je : ke)[a.getMonth()] + a.getDate() - 1; } - function fe(a, b, c, d, e, f, h) { + function me(a, b, c, d, e, f, h) { if (F) return U(9, 1, a, b, c, d, e, f, h); try { - var l = nc(d); + var l = sc(d); if (0 !== (b & 2) && 0 === (c & 2) && 2 !== (l.flags & 2097155)) throw new P(2); if (1 === (l.flags & 2097155)) throw new P(2); - if (!l.Ra.zb) throw new P(43); - var m = l.Ra.zb(l, a, e, b, c); - var n = m.Ta; - A()[f >> 2] = m.fc; + if (!l.Sa.Ab) throw new P(43); + var m = l.Sa.Ab(l, a, e, b, c); + var n = m.Ua; + z()[f >> 2] = m.hc; B()[h >> 2] = n; return 0; } catch (q) { if ("undefined" == typeof T || "ErrnoError" !== q.name) throw q; - return -q.Za; + return -q.$a; } } - function ge(a, b, c, d, e, f) { + function ne(a, b, c, d, e, f) { if (F) return U(10, 1, a, b, c, d, e, f); try { - var h = nc(e); + var h = sc(e); if (c & 2) { if (32768 !== (h.node.mode & 61440)) throw new P(43); if (!(d & 2)) { var l = v().slice(a, a + b); - h.Ra.Nb && h.Ra.Nb(h, l, f, b, d); + h.Sa.Ob && h.Sa.Ob(h, l, f, b, d); } } } catch (m) { if ("undefined" == typeof T || "ErrnoError" !== m.name) throw m; - return -m.Za; + return -m.$a; } } - function he(a) { - var b = Ea(a) + 1, - c = ie(b); - c && Da(a, g(), c, b); + function oe(a) { + var b = Fa(a) + 1, + c = pe(b); + c && Ea(a, g(), c, b); return c; } - var je = []; - function ke(a) { - var b = le(); + var qe = []; + function re(a) { + var b = se(); a = a(); - yc(b); + Fc(b); return a; } function U(a, b) { var c = arguments.length - 2, d = arguments; - return ke(() => { - for (var e = me(8 * c), f = e >> 3, h = 0; h < c; h++) { + return re(() => { + for (var e = te(8 * c), f = e >> 3, h = 0; h < c; h++) { var l = d[2 + h]; ka()[f + h] = l; } - return ne(a, c, e, b); + return ue(a, c, e, b); }); } - var oe = [], - pe = {}; + var ve = [], + we = {}; function Z(a, b) { B()[a >> 2] = b; B()[(a + 4) >> 2] = (b / 4294967296) | 0; } - function qe(a, b) { + function xe(a, b) { try { var c = indexedDB.open("emscripten_filesystem", 1); } catch (d) { @@ -2578,8 +2619,8 @@ var createModule = (() => { c.onsuccess = (d) => a(d.target.result); c.onerror = (d) => b(d); } - var re; - function se(a, b, c, d, e) { + var ye; + function ze(a, b, c, d, e) { function f() { var C = 0, aa = 0; @@ -2587,7 +2628,7 @@ var createModule = (() => { G && 0 === B()[(a + 12) >> 2] && (aa = y.response.byteLength); - 0 < aa && ((C = ie(aa)), v().set(new Uint8Array(y.response), C)); + 0 < aa && ((C = pe(aa)), v().set(new Uint8Array(y.response), C)); B()[(a + 12) >> 2] = C; Z(a + 16, aa); Z(a + 24, 0); @@ -2611,7 +2652,7 @@ var createModule = (() => { t = B()[(m + 72) >> 2]; h = B()[(m + 76) >> 2]; var x = B()[(m + 80) >> 2], - z = B()[(m + 84) >> 2]; + A = B()[(m + 84) >> 2]; m = B()[(m + 88) >> 2]; var G = !!(q & 1), H = !!(q & 2); @@ -2622,7 +2663,7 @@ var createModule = (() => { y.withCredentials = r; y.open(n, l, !q, k, t); q || (y.timeout = p); - y.Kd = l; + y.Ld = l; y.responseType = "arraybuffer"; x && ((l = J(x)), y.overrideMimeType(l)); if (h) @@ -2637,29 +2678,29 @@ var createModule = (() => { y.setRequestHeader(n, l); } var R = B()[(a + 0) >> 2]; - pe[R] = y; - h = z && m ? v().slice(z, z + m) : null; + we[R] = y; + h = A && m ? v().slice(A, A + m) : null; y.onload = (C) => { - R in pe && + R in we && (f(), 200 <= y.status && 300 > y.status ? b && b(a, y, C) : c && c(a, y, C)); }; y.onerror = (C) => { - R in pe && (f(), c && c(a, y, C)); + R in we && (f(), c && c(a, y, C)); }; y.ontimeout = (C) => { - R in pe && c && c(a, y, C); + R in we && c && c(a, y, C); }; y.onprogress = (C) => { - if (R in pe) { + if (R in we) { var aa = G && H && y.response ? y.response.byteLength : 0, I = 0; 0 < aa && G && H && - ((I = ie(aa)), v().set(new Uint8Array(y.response), I)); + ((I = pe(aa)), v().set(new Uint8Array(y.response), I)); B()[(a + 12) >> 2] = I; Z(a + 16, aa); Z(a + 24, C.loaded - aa); @@ -2672,14 +2713,15 @@ var createModule = (() => { w()[(a + 42) >> 1] = y.status; y.statusText && K(y.statusText, a + 44, 64); d && d(a, y, C); - I && Bd(I); + I && Id(I); } }; y.onreadystatechange = (C) => { - R in pe && - ((w()[(a + 40) >> 1] = y.readyState), - 2 <= y.readyState && (w()[(a + 42) >> 1] = y.status), - e && e(a, y, C)); + R in we + ? ((w()[(a + 40) >> 1] = y.readyState), + 2 <= y.readyState && (w()[(a + 42) >> 1] = y.status), + e && e(a, y, C)) + : --Oa; }; try { y.send(h); @@ -2688,8 +2730,8 @@ var createModule = (() => { } } else c(a, 0, "no url specified!"); } - function te(a, b, c, d) { - var e = re; + function Ae(a, b, c, d) { + var e = ye; if (e) { var f = a + 112; (f = B()[(f + 64) >> 2]) || (f = B()[(a + 8) >> 2]); @@ -2716,8 +2758,8 @@ var createModule = (() => { } } else d(a, 0, "IndexedDB not available!"); } - function ue(a, b, c) { - var d = re; + function Be(a, b, c) { + var d = ye; if (d) { var e = a + 112; (e = B()[(e + 64) >> 2]) || (e = B()[(a + 8) >> 2]); @@ -2731,7 +2773,7 @@ var createModule = (() => { if (h.target.result) { h = h.target.result; var l = h.byteLength || h.length, - m = ie(l); + m = pe(l); v().set(new Uint8Array(h), m); B()[(a + 12) >> 2] = m; Z(a + 16, l); @@ -2758,8 +2800,8 @@ var createModule = (() => { } } else c(a, 0, "IndexedDB not available!"); } - function ve(a, b, c) { - var d = re; + function Ce(a, b, c) { + var d = ye; if (d) { var e = a + 112; (e = B()[(e + 64) >> 2]) || (e = B()[(a + 8) >> 2]); @@ -2791,9 +2833,9 @@ var createModule = (() => { } } else c(a, 0, "IndexedDB not available!"); } - var we = {}; - function xe() { - if (!ye) { + var De = {}; + function Ee() { + if (!Fe) { var a = { USER: "web_user", LOGNAME: "web_user", @@ -2810,18 +2852,18 @@ var createModule = (() => { _: pa || "./this.program", }, b; - for (b in we) void 0 === we[b] ? delete a[b] : (a[b] = we[b]); + for (b in De) void 0 === De[b] ? delete a[b] : (a[b] = De[b]); var c = []; for (b in a) c.push(b + "=" + a[b]); - ye = c; + Fe = c; } - return ye; + return Fe; } - var ye; - function ze(a, b) { + var Fe; + function Ge(a, b) { if (F) return U(11, 1, a, b); var c = 0; - xe().forEach(function (d, e) { + Ee().forEach(function (d, e) { var f = b + c; e = B()[(a + 4 * e) >> 2] = f; for (f = 0; f < d.length; ++f) g()[e++ >> 0] = d.charCodeAt(f); @@ -2830,9 +2872,9 @@ var createModule = (() => { }); return 0; } - function Ae(a, b) { + function He(a, b) { if (F) return U(12, 1, a, b); - var c = xe(); + var c = Ee(); B()[a >> 2] = c.length; var d = 0; c.forEach(function (e) { @@ -2841,22 +2883,22 @@ var createModule = (() => { B()[b >> 2] = d; return 0; } - function Be(a) { + function Ie(a) { if (F) return U(13, 1, a); try { - var b = nc(a); - ac(b); + var b = sc(a); + gc(b); return 0; } catch (c) { if ("undefined" == typeof T || "ErrnoError" !== c.name) throw c; - return c.Za; + return c.$a; } } - function Ce(a, b, c, d) { + function Je(a, b, c, d) { if (F) return U(14, 1, a, b, c, d); try { a: { - var e = nc(a); + var e = sc(a); a = b; for (var f, h = (b = 0); h < c; h++) { var l = B()[a >> 2], @@ -2868,23 +2910,23 @@ var createModule = (() => { r = m, k = f; if (0 > r || 0 > k) throw new P(28); - if (null === n.ob) throw new P(8); + if (null === n.pb) throw new P(8); if (1 === (n.flags & 2097155)) throw new P(8); if (16384 === (n.node.mode & 61440)) throw new P(31); - if (!n.Ra.read) throw new P(28); + if (!n.Sa.read) throw new P(28); var t = "undefined" != typeof k; if (!t) k = n.position; else if (!n.seekable) throw new P(70); - var x = n.Ra.read(n, q, p, r, k); + var x = n.Sa.read(n, q, p, r, k); t || (n.position += x); - var z = x; - if (0 > z) { + var A = x; + if (0 > A) { var G = -1; break a; } - b += z; - if (z < m) break; - "undefined" !== typeof f && (f += z); + b += A; + if (A < m) break; + "undefined" !== typeof f && (f += A); } G = b; } @@ -2892,10 +2934,10 @@ var createModule = (() => { return 0; } catch (H) { if ("undefined" == typeof T || "ErrnoError" !== H.name) throw H; - return H.Za; + return H.$a; } } - function De(a, b, c, d, e) { + function Ke(a, b, c, d, e) { if (F) return U(15, 1, a, b, c, d, e); try { b = @@ -2903,8 +2945,8 @@ var createModule = (() => { ? (b >>> 0) + 4294967296 * c : NaN; if (isNaN(b)) return 61; - var f = nc(a); - bc(f, b, d); + var f = sc(a); + hc(f, b, d); M = [ f.position >>> 0, ((L = f.position), @@ -2914,26 +2956,26 @@ var createModule = (() => { : ~~+Math.ceil((L - +(~~L >>> 0)) / 4294967296) >>> 0 : 0), ]; - A()[e >> 2] = M[0]; - A()[(e + 4) >> 2] = M[1]; - f.Ub && 0 === b && 0 === d && (f.Ub = null); + z()[e >> 2] = M[0]; + z()[(e + 4) >> 2] = M[1]; + f.Vb && 0 === b && 0 === d && (f.Vb = null); return 0; } catch (h) { if ("undefined" == typeof T || "ErrnoError" !== h.name) throw h; - return h.Za; + return h.$a; } } - function Ee(a, b, c, d) { + function Le(a, b, c, d) { if (F) return U(16, 1, a, b, c, d); try { a: { - var e = nc(a); + var e = sc(a); a = b; for (var f, h = (b = 0); h < c; h++) { var l = B()[a >> 2], m = B()[(a + 4) >> 2]; a += 8; - var n = cc(e, g(), l, m, f); + var n = ic(e, g(), l, m, f); if (0 > n) { var q = -1; break a; @@ -2947,20 +2989,20 @@ var createModule = (() => { return 0; } catch (p) { if ("undefined" == typeof T || "ErrnoError" !== p.name) throw p; - return p.Za; + return p.$a; } } - function Fe(a, b) { - Fe.tc || (Fe.tc = nb()); - for (var c = 0; c < b; c++) g()[(a + c) >> 0] = Fe.tc(); + function Me(a, b) { + Me.uc || (Me.uc = tb()); + for (var c = 0; c < b; c++) g()[(a + c) >> 0] = Me.uc(); return 0; } - var Ge = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], - He = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - function Ie(a, b) { + var Ne = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + Oe = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + function Pe(a, b) { g().set(a, b); } - function Je(a, b, c, d) { + function Qe(a, b, c, d) { function e(k, t, x) { for (k = "number" == typeof k ? k.toString() : k || ""; k.length < t; ) k = x[0] + k; @@ -2973,11 +3015,11 @@ var createModule = (() => { function x(G) { return 0 > G ? -1 : 0 < G ? 1 : 0; } - var z; - 0 === (z = x(k.getFullYear() - t.getFullYear())) && - 0 === (z = x(k.getMonth() - t.getMonth())) && - (z = x(k.getDate() - t.getDate())); - return z; + var A; + 0 === (A = x(k.getFullYear() - t.getFullYear())) && + 0 === (A = x(k.getMonth() - t.getMonth())) && + (A = x(k.getDate() - t.getDate())); + return A; } function l(k) { switch (k.getDay()) { @@ -2998,12 +3040,12 @@ var createModule = (() => { } } function m(k) { - var t = k.rb; - for (k = new Date(new Date(k.sb + 1900, 0, 1).getTime()); 0 < t; ) { + var t = k.sb; + for (k = new Date(new Date(k.tb + 1900, 0, 1).getTime()); 0 < t; ) { var x = k.getMonth(), - z = (be(k.getFullYear()) ? Ge : He)[x]; - if (t > z - k.getDate()) - (t -= z - k.getDate() + 1), + A = (ie(k.getFullYear()) ? Ne : Oe)[x]; + if (t > A - k.getDate()) + (t -= A - k.getDate() + 1), k.setDate(1), 11 > x ? k.setMonth(x + 1) @@ -3022,19 +3064,19 @@ var createModule = (() => { : k.getFullYear() : k.getFullYear() - 1; } - var n = A()[(d + 40) >> 2]; + var n = z()[(d + 40) >> 2]; d = { - xd: A()[d >> 2], - wd: A()[(d + 4) >> 2], - Qb: A()[(d + 8) >> 2], - cc: A()[(d + 12) >> 2], - Rb: A()[(d + 16) >> 2], - sb: A()[(d + 20) >> 2], - hb: A()[(d + 24) >> 2], - rb: A()[(d + 28) >> 2], - Jd: A()[(d + 32) >> 2], - vd: A()[(d + 36) >> 2], - yd: n ? J(n) : "", + yd: z()[d >> 2], + xd: z()[(d + 4) >> 2], + Rb: z()[(d + 8) >> 2], + dc: z()[(d + 12) >> 2], + Sb: z()[(d + 16) >> 2], + tb: z()[(d + 20) >> 2], + ib: z()[(d + 24) >> 2], + sb: z()[(d + 28) >> 2], + Kd: z()[(d + 32) >> 2], + wd: z()[(d + 36) >> 2], + zd: n ? J(n) : "", }; c = J(c); n = { @@ -3077,25 +3119,25 @@ var createModule = (() => { ); n = { "%a": function (k) { - return p[k.hb].substring(0, 3); + return p[k.ib].substring(0, 3); }, "%A": function (k) { - return p[k.hb]; + return p[k.ib]; }, "%b": function (k) { - return r[k.Rb].substring(0, 3); + return r[k.Sb].substring(0, 3); }, "%B": function (k) { - return r[k.Rb]; + return r[k.Sb]; }, "%C": function (k) { - return f(((k.sb + 1900) / 100) | 0, 2); + return f(((k.tb + 1900) / 100) | 0, 2); }, "%d": function (k) { - return f(k.cc, 2); + return f(k.dc, 2); }, "%e": function (k) { - return e(k.cc, 2, " "); + return e(k.dc, 2, " "); }, "%g": function (k) { return m(k).toString().substring(2); @@ -3104,73 +3146,73 @@ var createModule = (() => { return m(k); }, "%H": function (k) { - return f(k.Qb, 2); + return f(k.Rb, 2); }, "%I": function (k) { - k = k.Qb; + k = k.Rb; 0 == k ? (k = 12) : 12 < k && (k -= 12); return f(k, 2); }, "%j": function (k) { for ( var t = 0, x = 0; - x <= k.Rb - 1; - t += (be(k.sb + 1900) ? Ge : He)[x++] + x <= k.Sb - 1; + t += (ie(k.tb + 1900) ? Ne : Oe)[x++] ); - return f(k.cc + t, 3); + return f(k.dc + t, 3); }, "%m": function (k) { - return f(k.Rb + 1, 2); + return f(k.Sb + 1, 2); }, "%M": function (k) { - return f(k.wd, 2); + return f(k.xd, 2); }, "%n": function () { return "\n"; }, "%p": function (k) { - return 0 <= k.Qb && 12 > k.Qb ? "AM" : "PM"; + return 0 <= k.Rb && 12 > k.Rb ? "AM" : "PM"; }, "%S": function (k) { - return f(k.xd, 2); + return f(k.yd, 2); }, "%t": function () { return "\t"; }, "%u": function (k) { - return k.hb || 7; + return k.ib || 7; }, "%U": function (k) { - return f(Math.floor((k.rb + 7 - k.hb) / 7), 2); + return f(Math.floor((k.sb + 7 - k.ib) / 7), 2); }, "%V": function (k) { - var t = Math.floor((k.rb + 7 - ((k.hb + 6) % 7)) / 7); - 2 >= (k.hb + 371 - k.rb - 2) % 7 && t++; + var t = Math.floor((k.sb + 7 - ((k.ib + 6) % 7)) / 7); + 2 >= (k.ib + 371 - k.sb - 2) % 7 && t++; if (t) 53 == t && - ((x = (k.hb + 371 - k.rb) % 7), - 4 == x || (3 == x && be(k.sb)) || (t = 1)); + ((x = (k.ib + 371 - k.sb) % 7), + 4 == x || (3 == x && ie(k.tb)) || (t = 1)); else { t = 52; - var x = (k.hb + 7 - k.rb - 1) % 7; - (4 == x || (5 == x && be((k.sb % 400) - 1))) && t++; + var x = (k.ib + 7 - k.sb - 1) % 7; + (4 == x || (5 == x && ie((k.tb % 400) - 1))) && t++; } return f(t, 2); }, "%w": function (k) { - return k.hb; + return k.ib; }, "%W": function (k) { - return f(Math.floor((k.rb + 7 - ((k.hb + 6) % 7)) / 7), 2); + return f(Math.floor((k.sb + 7 - ((k.ib + 6) % 7)) / 7), 2); }, "%y": function (k) { - return (k.sb + 1900).toString().substring(2); + return (k.tb + 1900).toString().substring(2); }, "%Y": function (k) { - return k.sb + 1900; + return k.tb + 1900; }, "%z": function (k) { - k = k.vd; + k = k.wd; var t = 0 <= k; k = Math.abs(k) / 60; return ( @@ -3179,7 +3221,7 @@ var createModule = (() => { ); }, "%Z": function (k) { - return k.yd; + return k.zd; }, "%%": function () { return "%"; @@ -3189,25 +3231,25 @@ var createModule = (() => { for (q in n) c.includes(q) && (c = c.replace(new RegExp(q, "g"), n[q](d))); c = c.replace(/\0\0/g, "%"); - q = pb(c, !1); + q = vb(c, !1); if (q.length > b) return 0; - Ie(q, a); + Pe(q, a); return q.length - 1; } - N.Xc(); - function Nb(a, b, c, d) { + N.Zc(); + function Tb(a, b, c, d) { a || (a = this); this.parent = a; - this.ib = a.ib; - this.Ab = null; - this.id = Gb++; + this.jb = a.jb; + this.Bb = null; + this.id = Mb++; this.name = b; this.mode = c; - this.Qa = {}; this.Ra = {}; - this.Cb = d; + this.Sa = {}; + this.Db = d; } - Object.defineProperties(Nb.prototype, { + Object.defineProperties(Tb.prototype, { read: { get: function () { return 365 === (this.mode & 365); @@ -3224,34 +3266,34 @@ var createModule = (() => { a ? (this.mode |= 146) : (this.mode &= -147); }, }, - ad: { + cd: { get: function () { return 16384 === (this.mode & 61440); }, }, - $c: { + bd: { get: function () { return 8192 === (this.mode & 61440); }, }, }); - Na(); - Hb = Array(4096); - Ub(Q, "/"); + Sa(); + Nb = Array(4096); + $b(Q, "/"); S("/tmp", 16895, 0); S("/home", 16895, 0); S("/home/web_user", 16895, 0); (() => { S("/dev", 16895, 0); - sb(259, { read: () => 0, write: (b, c, d, e) => e }); - Vb("/dev/null", 259); - rb(1280, ub); - rb(1536, vb); - Vb("/dev/tty", 1280); - Vb("/dev/tty1", 1536); - var a = nb(); - Oa("/dev", "random", a); - Oa("/dev", "urandom", a); + yb(259, { read: () => 0, write: (b, c, d, e) => e }); + ac("/dev/null", 259); + xb(1280, Ab); + xb(1536, Bb); + ac("/dev/tty", 1280); + ac("/dev/tty1", 1536); + var a = tb(); + Ta("/dev", "random", a); + Ta("/dev", "urandom", a); S("/dev/shm", 16895, 0); S("/dev/shm/tmp", 16895, 0); })(); @@ -3259,18 +3301,18 @@ var createModule = (() => { S("/proc", 16895, 0); var a = S("/proc/self", 16895, 0); S("/proc/self/fd", 16895, 0); - Ub( + $b( { - ib: () => { - var b = zb(a, "fd", 16895, 73); - b.Qa = { - yb: (c, d) => { - var e = Fb[+d]; + jb: () => { + var b = Fb(a, "fd", 16895, 73); + b.Ra = { + zb: (c, d) => { + var e = Lb[+d]; if (!e) throw new P(8); c = { parent: null, - ib: { rc: "fake" }, - Qa: { Db: () => e.path }, + jb: { sc: "fake" }, + Ra: { Eb: () => e.path }, }; return (c.parent = c); }, @@ -3281,126 +3323,126 @@ var createModule = (() => { "/proc/self/fd", ); })(); - var kc; - D.FS_createPath = fc; - D.FS_createDataFile = hc; - D.FS_createPreloadedFile = lc; - D.FS_unlink = Wb; - D.FS_createLazyFile = jc; - D.FS_createDevice = Oa; - Rc = D.InternalError = Qc("InternalError"); - for (var Ke = Array(256), Le = 0; 256 > Le; ++Le) - Ke[Le] = String.fromCharCode(Le); - Wc = Ke; - Xc = D.BindingError = Qc("BindingError"); - ld.prototype.isAliasOf = function (a) { - if (!(this instanceof ld && a instanceof ld)) return !1; - var b = this.Oa.Va.Sa, - c = this.Oa.Ta, - d = a.Oa.Va.Sa; - for (a = a.Oa.Ta; b.cb; ) (c = b.Eb(c)), (b = b.cb); - for (; d.cb; ) (a = d.Eb(a)), (d = d.cb); + var pc; + D.FS_createPath = kc; + D.FS_createDataFile = mc; + D.FS_createPreloadedFile = qc; + D.FS_unlink = bc; + D.FS_createLazyFile = oc; + D.FS_createDevice = Ta; + Yc = D.InternalError = Xc("InternalError"); + for (var Re = Array(256), Se = 0; 256 > Se; ++Se) + Re[Se] = String.fromCharCode(Se); + cd = Re; + dd = D.BindingError = Xc("BindingError"); + sd.prototype.isAliasOf = function (a) { + if (!(this instanceof sd && a instanceof sd)) return !1; + var b = this.Pa.Wa.Ta, + c = this.Pa.Ua, + d = a.Pa.Wa.Ta; + for (a = a.Pa.Ua; b.eb; ) (c = b.Fb(c)), (b = b.eb); + for (; d.eb; ) (a = d.Fb(a)), (d = d.eb); return b === d && c === a; }; - ld.prototype.clone = function () { - this.Oa.Ta || Yc(this); - if (this.Oa.Bb) return (this.Oa.count.value += 1), this; - var a = kd, + sd.prototype.clone = function () { + this.Pa.Ua || ed(this); + if (this.Pa.Cb) return (this.Pa.count.value += 1), this; + var a = rd, b = Object, c = b.create, d = Object.getPrototypeOf(this), - e = this.Oa; + e = this.Pa; a = a( c.call(b, d, { - Oa: { + Pa: { value: { count: e.count, - ub: e.ub, - Bb: e.Bb, - Ta: e.Ta, - Va: e.Va, - Ya: e.Ya, - bb: e.bb, + vb: e.vb, + Cb: e.Cb, + Ua: e.Ua, + Wa: e.Wa, + Za: e.Za, + cb: e.cb, }, }, }), ); - a.Oa.count.value += 1; - a.Oa.ub = !1; + a.Pa.count.value += 1; + a.Pa.vb = !1; return a; }; - ld.prototype["delete"] = function () { - this.Oa.Ta || Yc(this); - this.Oa.ub && !this.Oa.Bb && W("Object already scheduled for deletion"); - $c(this); - ad(this.Oa); - this.Oa.Bb || ((this.Oa.Ya = void 0), (this.Oa.Ta = void 0)); + sd.prototype["delete"] = function () { + this.Pa.Ua || ed(this); + this.Pa.vb && !this.Pa.Cb && W("Object already scheduled for deletion"); + gd(this); + hd(this.Pa); + this.Pa.Cb || ((this.Pa.Za = void 0), (this.Pa.Ua = void 0)); }; - ld.prototype.isDeleted = function () { - return !this.Oa.Ta; + sd.prototype.isDeleted = function () { + return !this.Pa.Ua; }; - ld.prototype.deleteLater = function () { - this.Oa.Ta || Yc(this); - this.Oa.ub && !this.Oa.Bb && W("Object already scheduled for deletion"); - dd.push(this); - 1 === dd.length && fd && fd(ed); - this.Oa.ub = !0; + sd.prototype.deleteLater = function () { + this.Pa.Ua || ed(this); + this.Pa.vb && !this.Pa.Cb && W("Object already scheduled for deletion"); + ld.push(this); + 1 === ld.length && nd && nd(md); + this.Pa.vb = !0; return this; }; D.getInheritedInstanceCount = function () { - return Object.keys(gd).length; + return Object.keys(od).length; }; D.getLiveInheritedInstances = function () { var a = [], b; - for (b in gd) gd.hasOwnProperty(b) && a.push(gd[b]); + for (b in od) od.hasOwnProperty(b) && a.push(od[b]); return a; }; - D.flushPendingDeletes = ed; + D.flushPendingDeletes = md; D.setDelayFunction = function (a) { - fd = a; - dd.length && fd && fd(ed); + nd = a; + ld.length && nd && nd(md); }; - vd.prototype.Sc = function (a) { - this.uc && (a = this.uc(a)); + Cd.prototype.Uc = function (a) { + this.vc && (a = this.vc(a)); return a; }; - vd.prototype.kc = function (a) { - this.lb && this.lb(a); + Cd.prototype.lc = function (a) { + this.mb && this.mb(a); }; - vd.prototype.argPackAdvance = 8; - vd.prototype.readValueFromPointer = Kc; - vd.prototype.deleteObject = function (a) { + Cd.prototype.argPackAdvance = 8; + Cd.prototype.readValueFromPointer = Rc; + Cd.prototype.deleteObject = function (a) { if (null !== a) a["delete"](); }; - vd.prototype.fromWireType = function (a) { + Cd.prototype.fromWireType = function (a) { function b() { - return this.Lb - ? jd(this.Sa.vb, { Va: this.gd, Ta: c, bb: this, Ya: a }) - : jd(this.Sa.vb, { Va: this, Ta: a }); + return this.Mb + ? qd(this.Ta.wb, { Wa: this.jd, Ua: c, cb: this, Za: a }) + : qd(this.Ta.wb, { Wa: this, Ua: a }); } - var c = this.Sc(a); - if (!c) return this.kc(a), null; - var d = hd(this.Sa, c); + var c = this.Uc(a); + if (!c) return this.lc(a), null; + var d = pd(this.Ta, c); if (void 0 !== d) { - if (0 === d.Oa.count.value) - return (d.Oa.Ta = c), (d.Oa.Ya = a), d.clone(); + if (0 === d.Pa.count.value) + return (d.Pa.Ua = c), (d.Pa.Za = a), d.clone(); d = d.clone(); - this.kc(a); + this.lc(a); return d; } - d = this.Sa.Qc(c); - d = cd[d]; + d = this.Ta.Sc(c); + d = kd[d]; if (!d) return b.call(this); - d = this.Kb ? d.Jc : d.pointerType; - var e = bd(c, this.Sa, d.Sa); + d = this.Lb ? d.Lc : d.pointerType; + var e = jd(c, this.Ta, d.Ta); return null === e ? b.call(this) - : this.Lb - ? jd(d.Sa.vb, { Va: d, Ta: e, bb: this, Ya: a }) - : jd(d.Sa.vb, { Va: d, Ta: e }); + : this.Mb + ? qd(d.Ta.wb, { Wa: d, Ua: e, cb: this, Za: a }) + : qd(d.Ta.wb, { Wa: d, Ua: e }); }; - yd = D.UnboundTypeError = Qc("UnboundTypeError"); + Fd = D.UnboundTypeError = Xc("UnboundTypeError"); D.count_emval_handles = function () { for (var a = 0, b = 5; b < Y.length; ++b) void 0 !== Y[b] && ++a; return a; @@ -3410,79 +3452,79 @@ var createModule = (() => { return null; }; F || - (Ya("library_fetch_init"), - qe( + (db("library_fetch_init"), + xe( (a) => { - re = a; - Za("library_fetch_init"); + ye = a; + eb("library_fetch_init"); }, () => { - re = !1; - Za("library_fetch_init"); + ye = !1; + eb("library_fetch_init"); }, )); - var Me = [ + var Te = [ null, - qc, - sc, - Cc, - Ec, + vc, + xc, + Jc, + Lc, function (a, b) { if (F) return U(5, 1, a, b); try { - return (a = J(a)), oc(Yb, a, b); + return (a = J(a)), tc(dc, a, b); } catch (c) { if ("undefined" == typeof T || "ErrnoError" !== c.name) throw c; - return -c.Za; + return -c.$a; } }, - Fc, - Gc, - Hc, - fe, - ge, - ze, - Ae, - Be, - Ce, - De, - Ee, + Mc, + Nc, + Oc, + me, + ne, + Ge, + He, + Ie, + Je, + Ke, + Le, ], - Oe = { - S: function (a) { - Ne(a, !1, 1, !0); - N.zc(); + Ve = { + R: function (a) { + Ue(a, !1, 1, !0); + N.Bc(); }, - t: function (a) { - F ? postMessage({ cmd: "cleanupThread", thread: a }) : ib(a); + s: function (a) { + F ? postMessage({ cmd: "cleanupThread", thread: a }) : ob(a); }, - L: Dc, - X: Ec, - V: Fc, - Y: Gc, - W: Hc, - h: function (a) { - var b = Ic[a]; - delete Ic[a]; - var c = b.Zb, - d = b.lb, - e = b.mc, - f = e.map((h) => h.Uc).concat(e.map((h) => h.qd)); - Tc([a], f, (h) => { + K: Kc, + W: Lc, + U: Mc, + X: Nc, + V: Oc, + g: function (a) { + var b = Pc[a]; + delete Pc[a]; + var c = b.$b, + d = b.mb, + e = b.nc, + f = e.map((h) => h.Wc).concat(e.map((h) => h.sd)); + $c([a], f, (h) => { var l = {}; e.forEach((m, n) => { var q = h[n], - p = m.Jb, - r = m.Tc, + p = m.Kb, + r = m.Vc, k = h[n + e.length], - t = m.pd, - x = m.rd; - l[m.Pc] = { - read: (z) => q.fromWireType(p(r, z)), - write: (z, G) => { + t = m.rd, + x = m.td; + l[m.Rc] = { + read: (A) => q.fromWireType(p(r, A)), + write: (A, G) => { var H = []; - t(x, z, k.toWireType(H, G)); - Jc(H); + t(x, A, k.toWireType(H, G)); + Qc(H); }, }; }); @@ -3506,17 +3548,17 @@ var createModule = (() => { return p; }, argPackAdvance: 8, - readValueFromPointer: Kc, - eb: d, + readValueFromPointer: Rc, + fb: d, }, ]; }); }, G: function () {}, - fa: function (a, b, c, d, e) { - var f = Vc(c); + ea: function (a, b, c, d, e) { + var f = bd(c); b = V(b); - Uc(a, { + ad(a, { name: b, fromWireType: function (h) { return !!h; @@ -3528,134 +3570,134 @@ var createModule = (() => { readValueFromPointer: function (h) { if (1 === c) var l = g(); else if (2 === c) l = ea(); - else if (4 === c) l = A(); + else if (4 === c) l = z(); else throw new TypeError("Unknown boolean type size: " + b); return this.fromWireType(l[h >> f]); }, - eb: null, + fb: null, }); }, - oa: function (a, b, c, d, e, f, h, l, m, n, q, p, r) { + na: function (a, b, c, d, e, f, h, l, m, n, q, p, r) { q = V(q); f = X(e, f); l && (l = X(h, l)); n && (n = X(m, n)); r = X(p, r); - var k = Oc(q); - nd(k, function () { - Cd("Cannot construct " + q + " due to unbound types", [d]); + var k = Vc(q); + ud(k, function () { + Jd("Cannot construct " + q + " due to unbound types", [d]); }); - Tc([a, b, c], d ? [d] : [], function (t) { + $c([a, b, c], d ? [d] : [], function (t) { t = t[0]; if (d) { - var x = t.Sa; - var z = x.vb; - } else z = ld.prototype; - t = Pc(k, function () { + var x = t.Ta; + var A = x.wb; + } else A = sd.prototype; + t = Wc(k, function () { if (Object.getPrototypeOf(this) !== G) - throw new Xc("Use 'new' to construct " + q); - if (void 0 === H.nb) - throw new Xc(q + " has no accessible constructor"); - var R = H.nb[arguments.length]; + throw new dd("Use 'new' to construct " + q); + if (void 0 === H.ob) + throw new dd(q + " has no accessible constructor"); + var R = H.ob[arguments.length]; if (void 0 === R) - throw new Xc( + throw new dd( "Tried to invoke ctor of " + q + " with invalid number of parameters (" + arguments.length + ") - expected (" + - Object.keys(H.nb).toString() + + Object.keys(H.ob).toString() + ") parameters instead!", ); return R.apply(this, arguments); }); - var G = Object.create(z, { constructor: { value: t } }); + var G = Object.create(A, { constructor: { value: t } }); t.prototype = G; - var H = new od(q, t, G, r, x, f, l, n); - x = new vd(q, H, !0, !1); - z = new vd(q + "*", H, !1, !1); - var y = new vd(q + " const*", H, !1, !0); - cd[a] = { pointerType: z, Jc: y }; - wd(k, t); - return [x, z, y]; + var H = new vd(q, t, G, r, x, f, l, n); + x = new Cd(q, H, !0, !1); + A = new Cd(q + "*", H, !1, !1); + var y = new Cd(q + " const*", H, !1, !0); + kd[a] = { pointerType: A, Lc: y }; + Dd(k, t); + return [x, A, y]; }); }, - na: function (a, b, c, d, e, f) { + ma: function (a, b, c, d, e, f) { 0 < b || ya(); - var h = Dd(b, c); + var h = Kd(b, c); e = X(d, e); - Tc([], [a], function (l) { + $c([], [a], function (l) { l = l[0]; var m = "constructor " + l.name; - void 0 === l.Sa.nb && (l.Sa.nb = []); - if (void 0 !== l.Sa.nb[b - 1]) - throw new Xc( + void 0 === l.Ta.ob && (l.Ta.ob = []); + if (void 0 !== l.Ta.ob[b - 1]) + throw new dd( "Cannot register multiple constructors with identical number of parameters (" + (b - 1) + ") for class '" + l.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!", ); - l.Sa.nb[b - 1] = () => { - Cd("Cannot construct " + l.name + " due to unbound types", h); + l.Ta.ob[b - 1] = () => { + Jd("Cannot construct " + l.name + " due to unbound types", h); }; - Tc([], h, function (n) { + $c([], h, function (n) { n.splice(1, 0, null); - l.Sa.nb[b - 1] = Ed(m, n, null, e, f); + l.Ta.ob[b - 1] = Ld(m, n, null, e, f); return []; }); return []; }); }, k: function (a, b, c, d, e, f, h, l) { - var m = Dd(c, d); + var m = Kd(c, d); b = V(b); f = X(e, f); - Tc([], [a], function (n) { + $c([], [a], function (n) { function q() { - Cd("Cannot call " + p + " due to unbound types", m); + Jd("Cannot call " + p + " due to unbound types", m); } n = n[0]; var p = n.name + "." + b; b.startsWith("@@") && (b = Symbol[b.substring(2)]); - l && n.Sa.hd.push(b); - var r = n.Sa.vb, + l && n.Ta.kd.push(b); + var r = n.Ta.wb, k = r[b]; void 0 === k || - (void 0 === k.Xa && k.className !== n.name && k.Fb === c - 2) - ? ((q.Fb = c - 2), (q.className = n.name), (r[b] = q)) - : (md(r, b, p), (r[b].Xa[c - 2] = q)); - Tc([], m, function (t) { - t = Ed(p, t, n, f, h); - void 0 === r[b].Xa - ? ((t.Fb = c - 2), (r[b] = t)) - : (r[b].Xa[c - 2] = t); + (void 0 === k.Ya && k.className !== n.name && k.Gb === c - 2) + ? ((q.Gb = c - 2), (q.className = n.name), (r[b] = q)) + : (td(r, b, p), (r[b].Ya[c - 2] = q)); + $c([], m, function (t) { + t = Ld(p, t, n, f, h); + void 0 === r[b].Ya + ? ((t.Gb = c - 2), (r[b] = t)) + : (r[b].Ya[c - 2] = t); return []; }); return []; }); }, - ea: function (a, b) { + da: function (a, b) { b = V(b); - Uc(a, { + ad(a, { name: b, fromWireType: function (c) { - var d = Hd(c); - Gd(c); + var d = Od(c); + Nd(c); return d; }, toWireType: function (c, d) { - return td(d); + return Ad(d); }, argPackAdvance: 8, - readValueFromPointer: Kc, - eb: null, + readValueFromPointer: Rc, + fb: null, }); }, - y: function (a, b, c) { - c = Vc(c); + x: function (a, b, c) { + c = bd(c); b = V(b); - Uc(a, { + ad(a, { name: b, fromWireType: function (d) { return d; @@ -3664,30 +3706,30 @@ var createModule = (() => { return e; }, argPackAdvance: 8, - readValueFromPointer: Id(b, c), - eb: null, + readValueFromPointer: Pd(b, c), + fb: null, }); }, p: function (a, b, c, d, e, f) { - var h = Dd(b, c); + var h = Kd(b, c); a = V(a); e = X(d, e); - nd( + ud( a, function () { - Cd("Cannot call " + a + " due to unbound types", h); + Jd("Cannot call " + a + " due to unbound types", h); }, b - 1, ); - Tc([], h, function (l) { - wd(a, Ed(a, [l[0], null].concat(l.slice(1)), null, e, f), b - 1); + $c([], h, function (l) { + Dd(a, Ld(a, [l[0], null].concat(l.slice(1)), null, e, f), b - 1); return []; }); }, - g: function (a, b, c, d, e) { + i: function (a, b, c, d, e) { b = V(b); -1 === e && (e = 4294967295); - e = Vc(c); + e = bd(c); var f = (l) => l; if (0 === d) { var h = 32 - 8 * c; @@ -3700,13 +3742,13 @@ var createModule = (() => { : function (l, m) { return m; }; - Uc(a, { + ad(a, { name: b, fromWireType: f, toWireType: c, argPackAdvance: 8, - readValueFromPointer: Jd(b, e, 0 !== d), - eb: null, + readValueFromPointer: Qd(b, e, 0 !== d), + fb: null, }); }, e: function (a, b, c) { @@ -3726,7 +3768,7 @@ var createModule = (() => { Float64Array, ][b]; c = V(c); - Uc( + ad( a, { name: c, @@ -3734,13 +3776,13 @@ var createModule = (() => { argPackAdvance: 8, readValueFromPointer: d, }, - { Wc: !0 }, + { Yc: !0 }, ); }, - z: function (a, b) { + y: function (a, b) { b = V(b); var c = "std::string" === b; - Uc(a, { + ad(a, { name: b, fromWireType: function (d) { var e = B()[d >> 2], @@ -3760,7 +3802,7 @@ var createModule = (() => { for (l = 0; l < e; ++l) n[l] = String.fromCharCode(v()[f + l]); n = n.join(""); } - Bd(d); + Id(d); return n; }, toWireType: function (d, e) { @@ -3771,8 +3813,8 @@ var createModule = (() => { e instanceof Uint8ClampedArray || e instanceof Int8Array || W("Cannot pass non-string to std::string"); - var h = c && f ? Ea(e) : e.length; - var l = ie(4 + h + 1), + var h = c && f ? Fa(e) : e.length; + var l = pe(4 + h + 1), m = l + 4; B()[l >> 2] = h; if (c && f) K(e, m, h + 1); @@ -3780,34 +3822,34 @@ var createModule = (() => { for (f = 0; f < h; ++f) { var n = e.charCodeAt(f); 255 < n && - (Bd(m), + (Id(m), W( "String has UTF-16 code units that do not fit in 8 bits", )); v()[m + f] = n; } else for (f = 0; f < h; ++f) v()[m + f] = e[f]; - null !== d && d.push(Bd, l); + null !== d && d.push(Id, l); return l; }, argPackAdvance: 8, - readValueFromPointer: Kc, - eb: function (d) { - Bd(d); + readValueFromPointer: Rc, + fb: function (d) { + Id(d); }, }); }, o: function (a, b, c) { c = V(c); if (2 === b) { - var d = Ld; - var e = Md; - var f = Nd; + var d = Sd; + var e = Td; + var f = Ud; var h = () => w(); var l = 1; } else - 4 === b && ((d = Od), (e = Pd), (f = Qd), (h = () => B()), (l = 2)); - Uc(a, { + 4 === b && ((d = Vd), (e = Wd), (f = Xd), (h = () => B()), (l = 2)); + ad(a, { name: c, fromWireType: function (m) { for ( @@ -3823,98 +3865,98 @@ var createModule = (() => { : ((p += String.fromCharCode(0)), (p += r)), (r = t + b); } - Bd(m); + Id(m); return p; }, toWireType: function (m, n) { "string" != typeof n && W("Cannot pass non-string to C++ string type " + c); var q = f(n), - p = ie(4 + q + b); + p = pe(4 + q + b); B()[p >> 2] = q >> l; e(n, p + 4, q + b); - null !== m && m.push(Bd, p); + null !== m && m.push(Id, p); return p; }, argPackAdvance: 8, - readValueFromPointer: Kc, - eb: function (m) { - Bd(m); + readValueFromPointer: Rc, + fb: function (m) { + Id(m); }, }); }, - i: function (a, b, c, d, e, f) { - Ic[a] = { name: V(b), Zb: X(c, d), lb: X(e, f), mc: [] }; + h: function (a, b, c, d, e, f) { + Pc[a] = { name: V(b), $b: X(c, d), mb: X(e, f), nc: [] }; }, - d: function (a, b, c, d, e, f, h, l, m, n) { - Ic[a].mc.push({ - Pc: V(b), - Uc: c, - Jb: X(d, e), - Tc: f, - qd: h, - pd: X(l, m), - rd: n, + c: function (a, b, c, d, e, f, h, l, m, n) { + Pc[a].nc.push({ + Rc: V(b), + Wc: c, + Kb: X(d, e), + Vc: f, + sd: h, + rd: X(l, m), + td: n, }); }, - ga: function (a, b) { + fa: function (a, b) { b = V(b); - Uc(a, { - bd: !0, + ad(a, { + dd: !0, name: b, argPackAdvance: 0, fromWireType: function () {}, toWireType: function () {}, }); }, - M: function () { + L: function () { return 262144; }, - ha: function (a) { - var b = pe[a]; + ga: function (a) { + var b = we[a]; b && - (delete pe[a], 0 < b.readyState && 4 > b.readyState && b.abort()); + (delete we[a], 0 < b.readyState && 4 > b.readyState && b.abort()); }, - $: function () { + _: function () { return !0; }, - N: function (a, b, c, d) { + M: function (a, b, c, d) { a == b - ? setTimeout(() => wc(d)) + ? setTimeout(() => Dc(d)) : F ? postMessage({ targetThread: a, cmd: "processProxyingQueue", queue: d, }) - : (a = N.kb[a]) && + : (a = N.lb[a]) && a.postMessage({ cmd: "processProxyingQueue", queue: d }); }, - R: function () { + Q: function () { return -1; }, n: function (a, b, c) { - a = Hd(a); - b = Sd(b, "emval::as"); + a = Od(a); + b = Zd(b, "emval::as"); var d = [], - e = td(d); + e = Ad(d); B()[c >> 2] = e; return b.toWireType(d, a); }, - ma: function (a, b, c, d) { - a = Vd[a]; - b = Hd(b); - c = Ud(c); + la: function (a, b, c, d) { + a = be[a]; + b = Od(b); + c = ae(c); a(b, c, null, d); }, - c: Gd, + d: Nd, r: function (a) { - if (0 === a) return td(Wd()); - a = Ud(a); - return td(Wd()[a]); + if (0 === a) return Ad(ce()); + a = ae(a); + return Ad(ce()[a]); }, - la: function (a, b) { - var c = Yd(a, b), + ka: function (a, b) { + var c = ee(a, b), d = c[0]; b = d.name + @@ -3926,99 +3968,99 @@ var createModule = (() => { }) .join("_") + "$"; - var e = Zd[b]; + var e = fe[b]; if (void 0 !== e) return e; var f = Array(a - 1); - e = Xd((h, l, m, n) => { + e = de((h, l, m, n) => { for (var q = 0, p = 0; p < a - 1; ++p) (f[p] = c[p + 1].readValueFromPointer(n + q)), (q += c[p + 1].argPackAdvance); h = h[l].apply(h, f); - for (p = 0; p < a - 1; ++p) c[p + 1].Mc && c[p + 1].Mc(f[p]); - if (!d.bd) return d.toWireType(m, h); + for (p = 0; p < a - 1; ++p) c[p + 1].Oc && c[p + 1].Oc(f[p]); + if (!d.dd) return d.toWireType(m, h); }); - return (Zd[b] = e); + return (fe[b] = e); }, - E: function (a, b) { - a = Hd(a); - b = Hd(b); - return td(a[b]); + D: function (a, b) { + a = Od(a); + b = Od(b); + return Ad(a[b]); }, l: function (a) { - 4 < a && (Y[a].ac += 1); + 4 < a && (Y[a].bc += 1); }, q: function (a, b, c, d) { - a = Hd(a); - var e = ae[b]; - e || ((e = $d(b)), (ae[b] = e)); + a = Od(a); + var e = he[b]; + e || ((e = ge(b)), (he[b] = e)); return e(a, c, d); }, - D: function (a) { - return td(Ud(a)); + C: function (a) { + return Ad(ae(a)); }, m: function (a) { - var b = Hd(a); - Jc(b); - Gd(a); + var b = Od(a); + Qc(b); + Nd(a); }, j: function (a, b) { - a = Sd(a, "_emval_take_value"); + a = Zd(a, "_emval_take_value"); a = a.readValueFromPointer(b); - return td(a); + return Ad(a); }, - ba: function (a, b) { + aa: function (a, b) { var c = Date; - a = B()[a >> 2] + 4294967296 * A()[(a + 4) >> 2]; + a = B()[a >> 2] + 4294967296 * z()[(a + 4) >> 2]; c = new c(1e3 * a); - A()[b >> 2] = c.getSeconds(); - A()[(b + 4) >> 2] = c.getMinutes(); - A()[(b + 8) >> 2] = c.getHours(); - A()[(b + 12) >> 2] = c.getDate(); - A()[(b + 16) >> 2] = c.getMonth(); - A()[(b + 20) >> 2] = c.getFullYear() - 1900; - A()[(b + 24) >> 2] = c.getDay(); - a = ee(c) | 0; - A()[(b + 28) >> 2] = a; - A()[(b + 36) >> 2] = -(60 * c.getTimezoneOffset()); + z()[b >> 2] = c.getSeconds(); + z()[(b + 4) >> 2] = c.getMinutes(); + z()[(b + 8) >> 2] = c.getHours(); + z()[(b + 12) >> 2] = c.getDate(); + z()[(b + 16) >> 2] = c.getMonth(); + z()[(b + 20) >> 2] = c.getFullYear() - 1900; + z()[(b + 24) >> 2] = c.getDay(); + a = le(c) | 0; + z()[(b + 28) >> 2] = a; + z()[(b + 36) >> 2] = -(60 * c.getTimezoneOffset()); a = new Date(c.getFullYear(), 6, 1).getTimezoneOffset(); var d = new Date(c.getFullYear(), 0, 1).getTimezoneOffset(); c = (a != d && c.getTimezoneOffset() == Math.min(d, a)) | 0; - A()[(b + 32) >> 2] = c; + z()[(b + 32) >> 2] = c; }, - ca: function (a) { + ba: function (a) { var b = new Date( - A()[(a + 20) >> 2] + 1900, - A()[(a + 16) >> 2], - A()[(a + 12) >> 2], - A()[(a + 8) >> 2], - A()[(a + 4) >> 2], - A()[a >> 2], + z()[(a + 20) >> 2] + 1900, + z()[(a + 16) >> 2], + z()[(a + 12) >> 2], + z()[(a + 8) >> 2], + z()[(a + 4) >> 2], + z()[a >> 2], 0, ), - c = A()[(a + 32) >> 2], + c = z()[(a + 32) >> 2], d = b.getTimezoneOffset(), e = new Date(b.getFullYear(), 6, 1).getTimezoneOffset(), f = new Date(b.getFullYear(), 0, 1).getTimezoneOffset(), h = Math.min(f, e); 0 > c - ? (A()[(a + 32) >> 2] = Number(e != f && h == d)) + ? (z()[(a + 32) >> 2] = Number(e != f && h == d)) : 0 < c != (h == d) && ((e = Math.max(f, e)), b.setTime(b.getTime() + 6e4 * ((0 < c ? h : e) - d))); - A()[(a + 24) >> 2] = b.getDay(); - c = ee(b) | 0; - A()[(a + 28) >> 2] = c; - A()[a >> 2] = b.getSeconds(); - A()[(a + 4) >> 2] = b.getMinutes(); - A()[(a + 8) >> 2] = b.getHours(); - A()[(a + 12) >> 2] = b.getDate(); - A()[(a + 16) >> 2] = b.getMonth(); - A()[(a + 20) >> 2] = b.getYear(); + z()[(a + 24) >> 2] = b.getDay(); + c = le(b) | 0; + z()[(a + 28) >> 2] = c; + z()[a >> 2] = b.getSeconds(); + z()[(a + 4) >> 2] = b.getMinutes(); + z()[(a + 8) >> 2] = b.getHours(); + z()[(a + 12) >> 2] = b.getDate(); + z()[(a + 16) >> 2] = b.getMonth(); + z()[(a + 20) >> 2] = b.getYear(); return (b.getTime() / 1e3) | 0; }, - O: fe, - P: ge, - da: function (a, b, c) { + N: me, + O: ne, + ca: function (a, b, c) { function d(n) { return (n = n.toTimeString().match(/\(([A-Za-z ]+)\)$/)) ? n[1] @@ -4031,11 +4073,11 @@ var createModule = (() => { var l = h.getTimezoneOffset(), m = Math.max(e, l); B()[a >> 2] = 60 * m; - A()[b >> 2] = Number(e != l); + z()[b >> 2] = Number(e != l); a = d(f); b = d(h); - a = he(a); - b = he(b); + a = oe(a); + b = oe(b); l < e ? ((B()[c >> 2] = a), (B()[(c + 4) >> 2] = b)) : ((B()[c >> 2] = b), (B()[(c + 4) >> 2] = a)); @@ -4043,54 +4085,51 @@ var createModule = (() => { b: function () { ya(""); }, - s: function () { + E: function () { var a = D.allowedThreads; return a ? a : navigator.hardwareConcurrency; }, - C: function (a, b, c) { - je.length = 0; + B: function (a, b, c) { + qe.length = 0; var d; for (c >>= 2; (d = v()[b++]); ) (c += (105 != d) & c), - je.push(105 == d ? A()[c] : ka()[c++ >> 1]), + qe.push(105 == d ? z()[c] : ka()[c++ >> 1]), ++c; - return fb[a].apply(null, je); + return lb[a].apply(null, qe); }, - u: function () {}, - aa: function () { + t: function () {}, + $: function () { return Date.now(); }, - K: function () { - return 838860800; - }, f: () => performance.timeOrigin + performance.now(), A: function () { return "undefined" != typeof SharedArrayBuffer; }, - Z: function (a, b, c) { + Y: function (a, b, c) { v().copyWithin(a, b, b + c); }, - Q: function (a, b, c) { - oe.length = b; + P: function (a, b, c) { + ve.length = b; c >>= 3; - for (var d = 0; d < b; d++) oe[d] = ka()[c + d]; - return (0 > a ? fb[-a - 1] : Me[a]).apply(null, oe); + for (var d = 0; d < b; d++) ve[d] = ka()[c + d]; + return (0 > a ? lb[-a - 1] : Te[a]).apply(null, ve); }, J: function (a) { var b = v().length; a >>>= 0; - if (a <= b || 838860800 < a) return !1; + if (a <= b || 2147483648 < a) return !1; for (var c = 1; 4 >= c; c *= 2) { - var d = b * (1 + 0.2 / c); - d = Math.min(d, a + 100663296); - var e = Math, - f = e.min; - d = Math.max(a, d); - d += (65536 - (d % 65536)) % 65536; + var d = Math, + e = d.min; + var f = Math.max(a, b + 2097152 / c); + f += (65536 - (f % 65536)) % 65536; a: { var h = u.buffer; try { - u.grow((f.call(e, 838860800, d) - h.byteLength + 65535) >>> 16); + u.grow( + (e.call(d, 2147483648, f) - h.byteLength + 65535) >>> 16, + ); ca(); var l = 1; break a; @@ -4101,16 +4140,22 @@ var createModule = (() => { } return !1; }, - ia: function (a, b, c, d, e) { + ha: function (a, b, c, d, e) { function f(I) { - if (z) I(); - else if (!Aa) + if (A) I(); + else if (!Na && !Aa) try { - I(); - } catch (dc) { - tc(dc); + if ((I(), !Pa())) + try { + F ? Ic(Ba) : wc(Ba); + } catch (Xa) { + Ac(Xa); + } + } catch (Xa) { + Ac(Xa); } } + Oa += 1; var h = a + 112, l = J(h), m = B()[(h + 36) >> 2], @@ -4121,211 +4166,219 @@ var createModule = (() => { k = !!(r & 4), t = !!(r & 32), x = !!(r & 16), - z = !!(r & 64), + A = !!(r & 64), G = (I) => { + --Oa; f(() => { - m ? Ac(m)(I) : b && b(I); + m ? Hc(m)(I) : b && b(I); }); }, H = (I) => { f(() => { - q ? Ac(q)(I) : d && d(I); + q ? Hc(q)(I) : d && d(I); }); }, y = (I) => { + --Oa; f(() => { - n ? Ac(n)(I) : c && c(I); + n ? Hc(n)(I) : c && c(I); }); }, R = (I) => { f(() => { - p ? Ac(p)(I) : e && e(I); + p ? Hc(p)(I) : e && e(I); }); }; r = (I) => { - se(I, G, y, H, R); + ze(I, G, y, H, R); }; - var C = (I, dc) => { - te( + var C = (I, Xa) => { + Ae( I, - dc.response, - (Ta) => { + Xa.response, + (Ya) => { + --Oa; f(() => { - m ? Ac(m)(Ta) : b && b(Ta); + m ? Hc(m)(Ya) : b && b(Ya); }); }, - (Ta) => { + (Ya) => { + --Oa; f(() => { - m ? Ac(m)(Ta) : b && b(Ta); + m ? Hc(m)(Ya) : b && b(Ya); }); }, ); }, aa = (I) => { - se(I, C, y, H, R); + ze(I, C, y, H, R); }; if ("EM_IDB_STORE" === l) (l = B()[(h + 84) >> 2]), - te(a, v().slice(l, l + B()[(h + 88) >> 2]), G, y); - else if ("EM_IDB_DELETE" === l) ve(a, G, y); + Ae(a, v().slice(l, l + B()[(h + 88) >> 2]), G, y); + else if ("EM_IDB_DELETE" === l) Ce(a, G, y); else if (x) { if (t) return 0; - se(a, k ? C : G, y, H, R); - } else ue(a, G, t ? y : k ? aa : r); + ze(a, k ? C : G, y, H, R); + } else Be(a, G, t ? y : k ? aa : r); return a; }, - _: function () { + Z: function () { throw "unwind"; }, - T: ze, - U: Ae, - B: rc, - x: Be, - w: Ce, - F: De, - v: Ee, - ja: function () { + S: Ge, + T: He, + z: wc, + w: Ie, + v: Je, + F: Ke, + u: Le, + ia: function () { var a = stackTrace(), - b = Ea(a) + 1, - c = ie(b); + b = Fa(a) + 1, + c = pe(b); K(a, c, b); return c; }, - H: Fe, + H: Me, a: u || D.wasmMemory, - ka: Je, + ja: Qe, I: function (a, b, c, d) { - return Je(a, b, c, d); + return Qe(a, b, c, d); }, }; (function () { function a(c, d) { c = c.exports; D.asm = c; - N.Ac.push(D.asm.ta); - Ha = D.asm.za; - Ja.unshift(D.asm.pa); + N.Cc.push(D.asm.ta); + Ia = D.asm.ya; + Ka.unshift(D.asm.oa); za = d; - N.cd(() => Za("wasm-instantiate")); + N.ed(() => eb("wasm-instantiate")); return c; } - var b = { a: Oe }; - Ya("wasm-instantiate"); + var b = { a: Ve }; + db("wasm-instantiate"); if (D.instantiateWasm) try { return D.instantiateWasm(b, a); } catch (c) { E("Module.instantiateWasm callback failed with error: " + c), na(c); } - eb(b, function (c) { + kb(b, function (c) { a(c.instance, c.module); }).catch(na); return {}; })(); - function Bd() { - return (Bd = D.asm.qa).apply(null, arguments); + function Id() { + return (Id = D.asm.pa).apply(null, arguments); } - function ie() { - return (ie = D.asm.ra).apply(null, arguments); + function pe() { + return (pe = D.asm.qa).apply(null, arguments); } - var vc = (D._pthread_self = function () { - return (vc = D._pthread_self = D.asm.sa).apply(null, arguments); - }); + var zc = (D._fflush = function () { + return (zc = D._fflush = D.asm.ra).apply(null, arguments); + }), + Cc = (D._pthread_self = function () { + return (Cc = D._pthread_self = D.asm.sa).apply(null, arguments); + }); D.__emscripten_tls_init = function () { return (D.__emscripten_tls_init = D.asm.ta).apply(null, arguments); }; - function xb() { - return (xb = D.asm.ua).apply(null, arguments); + function Db() { + return (Db = D.asm.ua).apply(null, arguments); } - var Ad = (D.___getTypeName = function () { - return (Ad = D.___getTypeName = D.asm.va).apply(null, arguments); + var Hd = (D.___getTypeName = function () { + return (Hd = D.___getTypeName = D.asm.va).apply(null, arguments); }); D.__embind_initialize_bindings = function () { return (D.__embind_initialize_bindings = D.asm.wa).apply(null, arguments); }; - var Ne = (D.__emscripten_thread_init = function () { - return (Ne = D.__emscripten_thread_init = D.asm.xa).apply( + function yc() { + return (yc = D.asm.xa).apply(null, arguments); + } + var Ue = (D.__emscripten_thread_init = function () { + return (Ue = D.__emscripten_thread_init = D.asm.za).apply( null, arguments, ); }); D.__emscripten_thread_crashed = function () { - return (D.__emscripten_thread_crashed = D.asm.ya).apply(null, arguments); + return (D.__emscripten_thread_crashed = D.asm.Aa).apply(null, arguments); }; - function ne() { - return (ne = D.asm.Aa).apply(null, arguments); + function ue() { + return (ue = D.asm.Ba).apply(null, arguments); } - var Rd = (D.__emscripten_proxy_execute_task_queue = function () { - return (Rd = D.__emscripten_proxy_execute_task_queue = D.asm.Ba).apply( + var Yd = (D.__emscripten_proxy_execute_task_queue = function () { + return (Yd = D.__emscripten_proxy_execute_task_queue = D.asm.Ca).apply( null, arguments, ); }); - function uc() { - return (uc = D.asm.Ca).apply(null, arguments); + function Bc() { + return (Bc = D.asm.Da).apply(null, arguments); } - var Bc = (D.__emscripten_thread_exit = function () { - return (Bc = D.__emscripten_thread_exit = D.asm.Da).apply( + var Ic = (D.__emscripten_thread_exit = function () { + return (Ic = D.__emscripten_thread_exit = D.asm.Ea).apply( null, arguments, ); }); - function xc() { - return (xc = D.asm.Ea).apply(null, arguments); + function Ec() { + return (Ec = D.asm.Fa).apply(null, arguments); } - function le() { - return (le = D.asm.Fa).apply(null, arguments); + function se() { + return (se = D.asm.Ga).apply(null, arguments); } - function yc() { - return (yc = D.asm.Ga).apply(null, arguments); + function Fc() { + return (Fc = D.asm.Ha).apply(null, arguments); } - function me() { - return (me = D.asm.Ha).apply(null, arguments); + function te() { + return (te = D.asm.Ia).apply(null, arguments); } D.dynCall_ji = function () { - return (D.dynCall_ji = D.asm.Ia).apply(null, arguments); + return (D.dynCall_ji = D.asm.Ja).apply(null, arguments); }; D.dynCall_jiji = function () { - return (D.dynCall_jiji = D.asm.Ja).apply(null, arguments); + return (D.dynCall_jiji = D.asm.Ka).apply(null, arguments); }; D.dynCall_viijii = function () { - return (D.dynCall_viijii = D.asm.Ka).apply(null, arguments); + return (D.dynCall_viijii = D.asm.La).apply(null, arguments); }; D.dynCall_iiiiij = function () { - return (D.dynCall_iiiiij = D.asm.La).apply(null, arguments); + return (D.dynCall_iiiiij = D.asm.Ma).apply(null, arguments); }; D.dynCall_iiiiijj = function () { - return (D.dynCall_iiiiijj = D.asm.Ma).apply(null, arguments); + return (D.dynCall_iiiiijj = D.asm.Na).apply(null, arguments); }; D.dynCall_iiiiiijj = function () { - return (D.dynCall_iiiiiijj = D.asm.Na).apply(null, arguments); - }; - D.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE = 14816; - D.___start_em_js = 60944; - D.___stop_em_js = 61937; - D.addRunDependency = Ya; - D.removeRunDependency = Za; - D.FS_createPath = fc; - D.FS_createDataFile = hc; - D.FS_createPreloadedFile = lc; - D.FS_createLazyFile = jc; - D.FS_createDevice = Oa; - D.FS_unlink = Wb; - D.keepRuntimeAlive = function () { - return noExitRuntime; + return (D.dynCall_iiiiiijj = D.asm.Oa).apply(null, arguments); }; + D.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE = 14768; + D.___start_em_js = 60928; + D.___stop_em_js = 61921; + D.addRunDependency = db; + D.removeRunDependency = eb; + D.FS_createPath = kc; + D.FS_createDataFile = mc; + D.FS_createPreloadedFile = qc; + D.FS_createLazyFile = oc; + D.FS_createDevice = Ta; + D.FS_unlink = bc; + D.keepRuntimeAlive = Pa; D.wasmMemory = u; - D.ExitStatus = gb; + D.ExitStatus = mb; D.PThread = N; - var Pe; - Xa = function Qe() { - Pe || Re(); - Pe || (Xa = Qe); + var We; + cb = function Xe() { + We || Ye(); + We || (cb = Xe); }; - function Re() { + function Ye() { function a() { - if (!Pe && ((Pe = !0), (D.calledRun = !0), !Aa)) { - La(); + if (!We && ((We = !0), (D.calledRun = !0), !Aa)) { + Qa(); ma(D); if (D.onRuntimeInitialized) D.onRuntimeInitialized(); if (!F) { @@ -4336,14 +4389,14 @@ var createModule = (() => { ) { var b = D.postRun.shift(); - Ka.unshift(b); + Ma.unshift(b); } - Sa(Ka); + Za(Ma); } } } - if (!(0 < Va)) - if (F) ma(D), La(), startWorker(D); + if (!(0 < ab)) + if (F) ma(D), Qa(), startWorker(D); else { if (D.preRun) for ( @@ -4351,9 +4404,9 @@ var createModule = (() => { D.preRun.length; ) - Ua(); - Sa(Ia); - 0 < Va || + $a(); + Za(Ja); + 0 < ab || (D.setStatus ? (D.setStatus("Running..."), setTimeout(function () { @@ -4372,7 +4425,58 @@ var createModule = (() => { ) D.preInit.pop()(); - Re(); + Ye(); + if ("object" == typeof window && ("undefined" == typeof F || !F)) { + var Ze = () => { + var a = 0, + b = !1, + c = (m) => { + var n = new XMLHttpRequest(); + n.open("POST", "stdio.html", !1); + n.send(m); + try { + window.close(); + } catch (q) {} + }, + d = (m) => { + var n = new XMLHttpRequest(); + ++a; + n.onreadystatechange = () => { + 4 == n.readyState && 0 == --a && b && c("^exit^" + Ba); + }; + n.open("POST", "stdio.html", !0); + n.send(m); + }; + if ( + -1 != document.URL.search("localhost") || + -1 != document.URL.search(":6931/") + ) { + var e = 1, + f = wa, + h = E; + La.unshift(() => { + 0 == a ? c("^exit^" + Ba) : (b = !0); + }); + wa = (m) => { + d("^out^" + e++ + "^" + encodeURIComponent(m)); + f(m); + }; + E = (m) => { + d("^err^" + e++ + "^" + encodeURIComponent(m)); + h(m); + }; + var l = () => { + try { + d("^pageload^"); + } catch (m) { + setTimeout(l, 50); + } + }; + l(); + } + }; + "undefined" != typeof document && Ze(); + } return createModule.ready; }; diff --git a/packages/capture-wasm/dist/advanced-threads/capture-wasm.wasm b/packages/capture-wasm/dist/advanced-threads/capture-wasm.wasm index beba28ef563a347ac94658501a486fda544d7704..4670cc6cbc28a5d054d39401bf200ba49c5dfa0e 100755 GIT binary patch delta 211741 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 McI81u8HsHEKe(D7v;Y7A delta 206568 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 wO?`-a-`8@k-fucpZB7ru{_E|E(~C`KtEsWg@Q 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 U6{+AjeQH|yd(^AAfDZcq0bX@frT_o{ delta 4110 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 R;e=F}y9bAy)<)WI{{?GWWOM)k diff --git a/packages/capture-wasm/dist/advanced/capture-wasm.js b/packages/capture-wasm/dist/advanced/capture-wasm.js index 0b269ca..17ad90a 100644 --- a/packages/capture-wasm/dist/advanced/capture-wasm.js +++ b/packages/capture-wasm/dist/advanced/capture-wasm.js @@ -5,17 +5,28 @@ var createModule = (() => { : undefined; return function (createModule = {}) { - var h; - h || (h = typeof createModule !== "undefined" ? createModule : {}); + /* + + Copyright 2019 The Emscripten Authors + SPDX-License-Identifier: MIT + + Copyright 2013 The Emscripten Authors + SPDX-License-Identifier: MIT + + This file gets implicatly injected as a `--post-js` file when + emcc is run with `--emrun` +*/ + var g; + g || (g = typeof createModule !== "undefined" ? createModule : {}); var aa, ba; - h.ready = new Promise(function (a, b) { + g.ready = new Promise(function (a, b) { aa = a; ba = b; }); - h.tb || (h.tb = 0); - h.tb++; - h.ENVIRONMENT_IS_PTHREAD || - h.$ww || + g.vb || (g.vb = 0); + g.vb++; + g.ENVIRONMENT_IS_PTHREAD || + g.$ww || (function (a) { function b(m, n, r) { var p = new XMLHttpRequest(); @@ -25,23 +36,23 @@ var createModule = (() => { var k = n; q.total && (k = q.total); if (q.loaded) { - p.Yb - ? (h.Ta[m].loaded = q.loaded) - : ((p.Yb = !0), - h.Ta || (h.Ta = {}), - (h.Ta[m] = { loaded: q.loaded, total: k })); + p.$b + ? (g.Va[m].loaded = q.loaded) + : ((p.$b = !0), + g.Va || (g.Va = {}), + (g.Va[m] = { loaded: q.loaded, total: k })); var t = (k = q = 0), x; - for (x in h.Ta) { - var z = h.Ta[x]; + for (x in g.Va) { + var z = g.Va[x]; q += z.total; k += z.loaded; t++; } - q = Math.ceil((q * h.tb) / t); - h.setStatus && - h.setStatus("Downloading data... (" + k + "/" + q + ")"); - } else !h.Ta && h.setStatus && h.setStatus("Downloading data..."); + q = Math.ceil((q * g.vb) / t); + g.setStatus && + g.setStatus("Downloading data... (" + k + "/" + q + ")"); + } else !g.Va && g.setStatus && g.setStatus("Downloading data..."); }; p.onerror = function () { throw Error("NetworkError for: " + m); @@ -72,31 +83,31 @@ var createModule = (() => { if (q.constructor.name !== ArrayBuffer.name) throw "bad input to processPackageData" + Error().stack; q = new Uint8Array(q); - m.prototype.bc = q; + m.prototype.dc = q; q = a.files; for (var k = 0; k < q.length; ++k) - m.prototype.Cb[q[k].filename].onload(); - h.removeRunDependency( - "datafile_/Users/ivan/Dev/imagecapture-browser.worktrees/master/packages/capture-wasm/dist/advanced/capture-wasm.data", + m.prototype.Eb[q[k].filename].onload(); + g.removeRunDependency( + "datafile_/Users/ivan/Dev/imagecapture-browser/packages/capture-wasm/dist/advanced/capture-wasm.data", ); } - h.FS_createPath("/", "microblink", !0, !0); - h.FS_createPath("/microblink", "capture", !0, !0); + g.FS_createPath("/", "microblink", !0, !0); + g.FS_createPath("/microblink", "capture", !0, !0); m.prototype = { - Cb: {}, + Eb: {}, open: function (q, k) { this.name = k; - this.Cb[k] = this; - h.addRunDependency("fp " + this.name); + this.Eb[k] = this; + g.addRunDependency("fp " + this.name); }, send: function () {}, onload: function () { - this.finish(this.bc.subarray(this.start, this.end)); + this.finish(this.dc.subarray(this.start, this.end)); }, finish: function (q) { - h.FS_createDataFile(this.name, null, q, !0, !0, !0); - h.removeRunDependency("fp " + this.name); - this.Cb[this.name] = null; + g.FS_createDataFile(this.name, null, q, !0, !0, !0); + g.removeRunDependency("fp " + this.name); + this.Eb[this.name] = null; }, }; for (var r = a.files, p = 0; p < r.length; ++p) @@ -104,14 +115,14 @@ var createModule = (() => { "GET", r[p].filename, ); - h.addRunDependency( - "datafile_/Users/ivan/Dev/imagecapture-browser.worktrees/master/packages/capture-wasm/dist/advanced/capture-wasm.data", + g.addRunDependency( + "datafile_/Users/ivan/Dev/imagecapture-browser/packages/capture-wasm/dist/advanced/capture-wasm.data", ); - h.Qb || (h.Qb = {}); - h.Qb[ - "/Users/ivan/Dev/imagecapture-browser.worktrees/master/packages/capture-wasm/dist/advanced/capture-wasm.data" - ] = { Kc: !1 }; - l ? (n(l), (l = null)) : (g = n); + g.Sb || (g.Sb = {}); + g.Sb[ + "/Users/ivan/Dev/imagecapture-browser/packages/capture-wasm/dist/advanced/capture-wasm.data" + ] = { Mc: !1 }; + l ? (n(l), (l = null)) : (h = n); } "object" === typeof window ? window.encodeURIComponent( @@ -130,28 +141,28 @@ var createModule = (() => { .substring(0, location.pathname.toString().lastIndexOf("/")) + "/", ); - "function" !== typeof h.locateFilePackage || - h.locateFile || - ((h.locateFile = h.locateFilePackage), + "function" !== typeof g.locateFilePackage || + g.locateFile || + ((g.locateFile = g.locateFilePackage), u( "warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)", )); - var e = h.locateFile - ? h.locateFile("capture-wasm.data", "") + var e = g.locateFile + ? g.locateFile("capture-wasm.data", "") : "capture-wasm.data", f = a.remote_package_size, - g = null, - l = h.getPreloadedPackage ? h.getPreloadedPackage(e, f) : null; + h = null, + l = g.getPreloadedPackage ? g.getPreloadedPackage(e, f) : null; l || b( e, f, function (m) { - g ? (g(m), (g = null)) : (l = m); + h ? (h(m), (h = null)) : (l = m); }, c, ); - h.calledRun ? d() : (h.preRun || (h.preRun = []), h.preRun.push(d)); + g.calledRun ? d() : (g.preRun || (g.preRun = []), g.preRun.push(d)); })({ files: [ { @@ -199,7 +210,7 @@ var createModule = (() => { ], remote_package_size: 1573062, }); - h.onAbort = function (a) { + g.onAbort = function (a) { u("Aborted with message: " + a); try { throw new WebAssembly.RuntimeError(a); @@ -207,7 +218,13 @@ var createModule = (() => { u("Stacktrace: " + b.stack); } }; - var ca = Object.assign({}, h), + if ("object" == typeof window) { + g.arguments = window.location.search.substr(1).trim().split("&"); + for (let a = 0; a < g.arguments.length; ++a) + g.arguments[a] = decodeURI(g.arguments[a]); + g.arguments[0] || (g.arguments = []); + } + var ca = Object.assign({}, g), da = "./this.program", ea = (a, b) => { throw b; @@ -245,34 +262,35 @@ var createModule = (() => { d.onerror = c; d.send(null); }; - var ka = h.print || console.log.bind(console), - u = h.printErr || console.warn.bind(console); - Object.assign(h, ca); + var ka = g.print || console.log.bind(console), + u = g.printErr || console.warn.bind(console); + Object.assign(g, ca); ca = null; - h.thisProgram && (da = h.thisProgram); - h.quit && (ea = h.quit); + g.thisProgram && (da = g.thisProgram); + g.quit && (ea = g.quit); var la; - h.wasmBinary && (la = h.wasmBinary); - var noExitRuntime = h.noExitRuntime || !0; + g.wasmBinary && (la = g.wasmBinary); + var noExitRuntime = g.noExitRuntime || !1; "object" != typeof WebAssembly && ma("no native wasm support detected"); var na, oa = !1, - pa = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0; - function qa(a, b, c) { + pa, + qa = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0; + function ra(a, b, c) { var d = b + c; for (c = b; a[c] && !(c >= d); ) ++c; - if (16 < c - b && a.buffer && pa) return pa.decode(a.subarray(b, c)); + if (16 < c - b && a.buffer && qa) return qa.decode(a.subarray(b, c)); for (d = ""; b < c; ) { var e = a[b++]; if (e & 128) { var f = a[b++] & 63; if (192 == (e & 224)) d += String.fromCharCode(((e & 31) << 6) | f); else { - var g = a[b++] & 63; + var h = a[b++] & 63; e = 224 == (e & 240) - ? ((e & 15) << 12) | (f << 6) | g - : ((e & 7) << 18) | (f << 12) | (g << 6) | (a[b++] & 63); + ? ((e & 15) << 12) | (f << 6) | h + : ((e & 7) << 18) | (f << 12) | (h << 6) | (a[b++] & 63); 65536 > e ? (d += String.fromCharCode(e)) : ((e -= 65536), @@ -286,43 +304,43 @@ var createModule = (() => { return d; } function v(a, b) { - return a ? qa(w, a, b) : ""; + return a ? ra(w, a, b) : ""; } function A(a, b, c, d) { if (!(0 < d)) return 0; var e = c; d = c + d - 1; for (var f = 0; f < a.length; ++f) { - var g = a.charCodeAt(f); - if (55296 <= g && 57343 >= g) { + var h = a.charCodeAt(f); + if (55296 <= h && 57343 >= h) { var l = a.charCodeAt(++f); - g = (65536 + ((g & 1023) << 10)) | (l & 1023); + h = (65536 + ((h & 1023) << 10)) | (l & 1023); } - if (127 >= g) { + if (127 >= h) { if (c >= d) break; - b[c++] = g; + b[c++] = h; } else { - if (2047 >= g) { + if (2047 >= h) { if (c + 1 >= d) break; - b[c++] = 192 | (g >> 6); + b[c++] = 192 | (h >> 6); } else { - if (65535 >= g) { + if (65535 >= h) { if (c + 2 >= d) break; - b[c++] = 224 | (g >> 12); + b[c++] = 224 | (h >> 12); } else { if (c + 3 >= d) break; - b[c++] = 240 | (g >> 18); - b[c++] = 128 | ((g >> 12) & 63); + b[c++] = 240 | (h >> 18); + b[c++] = 128 | ((h >> 12) & 63); } - b[c++] = 128 | ((g >> 6) & 63); + b[c++] = 128 | ((h >> 6) & 63); } - b[c++] = 128 | (g & 63); + b[c++] = 128 | (h & 63); } } b[c] = 0; return c - e; } - function ra(a) { + function sa(a) { for (var b = 0, c = 0; c < a.length; ++c) { var d = a.charCodeAt(c); 127 >= d @@ -335,75 +353,79 @@ var createModule = (() => { } return b; } - var C, w, sa, D, E, I, ta, ua; - function va() { + var C, w, ta, D, E, I, ua, va; + function wa() { var a = na.buffer; - h.HEAP8 = C = new Int8Array(a); - h.HEAP16 = sa = new Int16Array(a); - h.HEAP32 = E = new Int32Array(a); - h.HEAPU8 = w = new Uint8Array(a); - h.HEAPU16 = D = new Uint16Array(a); - h.HEAPU32 = I = new Uint32Array(a); - h.HEAPF32 = ta = new Float32Array(a); - h.HEAPF64 = ua = new Float64Array(a); - } - var wa, - xa = [], + g.HEAP8 = C = new Int8Array(a); + g.HEAP16 = ta = new Int16Array(a); + g.HEAP32 = E = new Int32Array(a); + g.HEAPU8 = w = new Uint8Array(a); + g.HEAPU16 = D = new Uint16Array(a); + g.HEAPU32 = I = new Uint32Array(a); + g.HEAPF32 = ua = new Float32Array(a); + g.HEAPF64 = va = new Float64Array(a); + } + var xa, ya = [], - za = []; - function Aa() { - var a = h.preRun.shift(); - xa.unshift(a); - } - var Ba = 0, - Ca = null, - Da = null; + za = [], + Aa = [], + Ba = [], + Ca = !1, + Da = 0; function Ea() { - Ba++; - h.monitorRunDependencies && h.monitorRunDependencies(Ba); - } - function Fa() { - Ba--; - h.monitorRunDependencies && h.monitorRunDependencies(Ba); - if (0 == Ba && (null !== Ca && (clearInterval(Ca), (Ca = null)), Da)) { - var a = Da; - Da = null; + var a = g.preRun.shift(); + ya.unshift(a); + } + var Fa = 0, + Ga = null, + Ha = null; + function Ia() { + Fa++; + g.monitorRunDependencies && g.monitorRunDependencies(Fa); + } + function Ja() { + Fa--; + g.monitorRunDependencies && g.monitorRunDependencies(Fa); + if (0 == Fa && (null !== Ga && (clearInterval(Ga), (Ga = null)), Ha)) { + var a = Ha; + Ha = null; a(); } } function ma(a) { - if (h.onAbort) h.onAbort(a); + if (g.onAbort) g.onAbort(a); a = "Aborted(" + a + ")"; u(a); oa = !0; + pa = 1; a = new WebAssembly.RuntimeError( a + ". Build with -sASSERTIONS for more info.", ); ba(a); throw a; } - function Ga(a) { + function Ka(a) { return a.startsWith("data:application/octet-stream;base64,"); } - var Ha; - Ha = "capture-wasm.wasm"; - if (!Ga(Ha)) { - var Ia = Ha; - Ha = h.locateFile ? h.locateFile(Ia, fa) : fa + Ia; + var La; + La = "capture-wasm.wasm"; + if (!Ka(La)) { + var Ma = La; + La = g.locateFile ? g.locateFile(Ma, fa) : fa + Ma; } - function Ja(a) { + function Na(a) { try { - if (a == Ha && la) return new Uint8Array(la); + if (a == La && la) return new Uint8Array(la); if (ja) return ja(a); throw "both async and sync fetching of the wasm failed"; } catch (b) { ma(b); } } - function Ka(a) { + function Oa(a) { return la || "function" != typeof fetch ? Promise.resolve().then(function () { - return Ja(a); + return Na(a); }) : fetch(a, { credentials: "same-origin" }) .then(function (b) { @@ -411,11 +433,11 @@ var createModule = (() => { return b.arrayBuffer(); }) .catch(function () { - return Ja(a); + return Na(a); }); } - function La(a, b, c) { - return Ka(a) + function Pa(a, b, c) { + return Oa(a) .then(function (d) { return WebAssembly.instantiate(d, b); }) @@ -427,46 +449,46 @@ var createModule = (() => { ma(d); }); } - function Ma(a, b) { - var c = Ha; + function Sa(a, b) { + var c = La; return la || "function" != typeof WebAssembly.instantiateStreaming || - Ga(c) || + Ka(c) || "function" != typeof fetch - ? La(c, a, b) + ? Pa(c, a, b) : fetch(c, { credentials: "same-origin" }).then(function (d) { return WebAssembly.instantiateStreaming(d, a).then(b, function (e) { u("wasm streaming compile failed: " + e); u("falling back to ArrayBuffer instantiation"); - return La(c, a, b); + return Pa(c, a, b); }); }); } var J, K, - Pa = { - 60068: (a, b, c, d) => { + Ta = { + 60132: (a, b, c, d) => { a = v(a); b = v(b); c = v(c); d = v(d); throw Error(a + b + c + d); }, - 60284: (a, b) => { + 60348: (a, b) => { a = v(a); b = v(b); throw Error(a + b); }, }; - function Qa(a) { + function Ua(a) { this.name = "ExitStatus"; this.message = "Program terminated with exit(" + a + ")"; this.status = a; } - function Ra(a) { - for (; 0 < a.length; ) a.shift()(h); + function Va(a) { + for (; 0 < a.length; ) a.shift()(g); } - var Sa = (a, b) => { + var Wa = (a, b) => { for (var c = 0, d = a.length - 1; 0 <= d; d--) { var e = a[d]; "." === e @@ -481,7 +503,7 @@ var createModule = (() => { L = (a) => { var b = "/" === a.charAt(0), c = "/" === a.substr(-1); - (a = Sa( + (a = Wa( a.split("/").filter((d) => !!d), !b, ).join("/")) || @@ -490,7 +512,7 @@ var createModule = (() => { a && c && (a += "/"); return (b ? "/" : "") + a; }, - Ta = (a) => { + Xa = (a) => { var b = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/ .exec(a) .slice(1); @@ -500,14 +522,14 @@ var createModule = (() => { b && (b = b.substr(0, b.length - 1)); return a + b; }, - Ua = (a) => { + Ya = (a) => { if ("/" === a) return "/"; a = L(a); a = a.replace(/\/$/, ""); var b = a.lastIndexOf("/"); return -1 === b ? a : a.substr(b + 1); }; - function Va() { + function Za() { if ( "object" == typeof crypto && "function" == typeof crypto.getRandomValues @@ -520,7 +542,7 @@ var createModule = (() => { } return () => ma("randomDevice"); } - function Wa() { + function $a() { for (var a = "", b = !1, c = arguments.length - 1; -1 <= c && !b; c--) { b = 0 <= c ? arguments[c] : "/"; if ("string" != typeof b) @@ -529,56 +551,56 @@ var createModule = (() => { a = b + "/" + a; b = "/" === b.charAt(0); } - a = Sa( + a = Wa( a.split("/").filter((d) => !!d), !b, ).join("/"); return (b ? "/" : "") + a || "."; } - function Xa(a, b) { - var c = Array(ra(a) + 1); + function ab(a, b) { + var c = Array(sa(a) + 1); a = A(a, c, 0, c.length); b && (c.length = a); return c; } - var Ya = []; - function Za(a, b) { - Ya[a] = { input: [], Aa: [], Xa: b }; - $a(a, ab); + var bb = []; + function cb(a, b) { + bb[a] = { input: [], Ca: [], Za: b }; + db(a, eb); } - var ab = { + var eb = { open: function (a) { - var b = Ya[a.node.bb]; + var b = bb[a.node.eb]; if (!b) throw new N(43); - a.Ea = b; + a.Ga = b; a.seekable = !1; }, close: function (a) { - a.Ea.Xa.ib(a.Ea); + a.Ga.Za.kb(a.Ga); }, - ib: function (a) { - a.Ea.Xa.ib(a.Ea); + kb: function (a) { + a.Ga.Za.kb(a.Ga); }, read: function (a, b, c, d) { - if (!a.Ea || !a.Ea.Xa.Nb) throw new N(60); + if (!a.Ga || !a.Ga.Za.Pb) throw new N(60); for (var e = 0, f = 0; f < d; f++) { try { - var g = a.Ea.Xa.Nb(a.Ea); + var h = a.Ga.Za.Pb(a.Ga); } catch (l) { throw new N(29); } - if (void 0 === g && 0 === e) throw new N(6); - if (null === g || void 0 === g) break; + if (void 0 === h && 0 === e) throw new N(6); + if (null === h || void 0 === h) break; e++; - b[c + f] = g; + b[c + f] = h; } e && (a.node.timestamp = Date.now()); return e; }, write: function (a, b, c, d) { - if (!a.Ea || !a.Ea.Xa.yb) throw new N(60); + if (!a.Ga || !a.Ga.Za.Ab) throw new N(60); try { - for (var e = 0; e < d; e++) a.Ea.Xa.yb(a.Ea, b[c + e]); + for (var e = 0; e < d; e++) a.Ga.Za.Ab(a.Ga, b[c + e]); } catch (f) { throw new N(29); } @@ -586,8 +608,8 @@ var createModule = (() => { return e; }, }, - bb = { - Nb: function (a) { + fb = { + Pb: function (a) { if (!a.input.length) { var b = null; "undefined" != typeof window && "function" == typeof window.prompt @@ -595,199 +617,199 @@ var createModule = (() => { : "function" == typeof readline && ((b = readline()), null !== b && (b += "\n")); if (!b) return null; - a.input = Xa(b, !0); + a.input = ab(b, !0); } return a.input.shift(); }, - yb: function (a, b) { + Ab: function (a, b) { null === b || 10 === b - ? (ka(qa(a.Aa, 0)), (a.Aa = [])) - : 0 != b && a.Aa.push(b); + ? (ka(ra(a.Ca, 0)), (a.Ca = [])) + : 0 != b && a.Ca.push(b); }, - ib: function (a) { - a.Aa && 0 < a.Aa.length && (ka(qa(a.Aa, 0)), (a.Aa = [])); + kb: function (a) { + a.Ca && 0 < a.Ca.length && (ka(ra(a.Ca, 0)), (a.Ca = [])); }, }, - cb = { - yb: function (a, b) { + gb = { + Ab: function (a, b) { null === b || 10 === b - ? (u(qa(a.Aa, 0)), (a.Aa = [])) - : 0 != b && a.Aa.push(b); + ? (u(ra(a.Ca, 0)), (a.Ca = [])) + : 0 != b && a.Ca.push(b); }, - ib: function (a) { - a.Aa && 0 < a.Aa.length && (u(qa(a.Aa, 0)), (a.Aa = [])); + kb: function (a) { + a.Ca && 0 < a.Ca.length && (u(ra(a.Ca, 0)), (a.Ca = [])); }, }; - function db(a) { + function hb(a) { a = 65536 * Math.ceil(a / 65536); - var b = eb(65536, a); + var b = ib(65536, a); b ? (w.fill(0, b, b + a), (a = b)) : (a = 0); return a; } var O = { - Ka: null, - Ma: function () { + Ma: null, + Oa: function () { return O.createNode(null, "/", 16895, 0); }, createNode: function (a, b, c, d) { if (24576 === (c & 61440) || 4096 === (c & 61440)) throw new N(63); - O.Ka || - (O.Ka = { + O.Ma || + (O.Ma = { dir: { node: { - Ja: O.ua.Ja, - Da: O.ua.Da, - Ya: O.ua.Ya, - mb: O.ua.mb, - Ub: O.ua.Ub, - sb: O.ua.sb, - Vb: O.ua.Vb, - Tb: O.ua.Tb, - pb: O.ua.pb, + La: O.wa.La, + Fa: O.wa.Fa, + $a: O.wa.$a, + ob: O.wa.ob, + Wb: O.wa.Wb, + ub: O.wa.ub, + Xb: O.wa.Xb, + Vb: O.wa.Vb, + rb: O.wa.rb, }, - stream: { Qa: O.va.Qa }, + stream: { Sa: O.xa.Sa }, }, file: { - node: { Ja: O.ua.Ja, Da: O.ua.Da }, + node: { La: O.wa.La, Fa: O.wa.Fa }, stream: { - Qa: O.va.Qa, - read: O.va.read, - write: O.va.write, - Eb: O.va.Eb, - Za: O.va.Za, - nb: O.va.nb, + Sa: O.xa.Sa, + read: O.xa.read, + write: O.xa.write, + Gb: O.xa.Gb, + ab: O.xa.ab, + pb: O.xa.pb, }, }, link: { - node: { Ja: O.ua.Ja, Da: O.ua.Da, cb: O.ua.cb }, + node: { La: O.wa.La, Fa: O.wa.Fa, fb: O.wa.fb }, stream: {}, }, - Hb: { node: { Ja: O.ua.Ja, Da: O.ua.Da }, stream: fb }, + Jb: { node: { La: O.wa.La, Fa: O.wa.Fa }, stream: jb }, }); - c = gb(a, b, c, d); + c = kb(a, b, c, d); 16384 === (c.mode & 61440) - ? ((c.ua = O.Ka.dir.node), (c.va = O.Ka.dir.stream), (c.ta = {})) + ? ((c.wa = O.Ma.dir.node), (c.xa = O.Ma.dir.stream), (c.va = {})) : 32768 === (c.mode & 61440) - ? ((c.ua = O.Ka.file.node), - (c.va = O.Ka.file.stream), - (c.ya = 0), - (c.ta = null)) + ? ((c.wa = O.Ma.file.node), + (c.xa = O.Ma.file.stream), + (c.Aa = 0), + (c.va = null)) : 40960 === (c.mode & 61440) - ? ((c.ua = O.Ka.link.node), (c.va = O.Ka.link.stream)) + ? ((c.wa = O.Ma.link.node), (c.xa = O.Ma.link.stream)) : 8192 === (c.mode & 61440) && - ((c.ua = O.Ka.Hb.node), (c.va = O.Ka.Hb.stream)); + ((c.wa = O.Ma.Jb.node), (c.xa = O.Ma.Jb.stream)); c.timestamp = Date.now(); - a && ((a.ta[b] = c), (a.timestamp = c.timestamp)); + a && ((a.va[b] = c), (a.timestamp = c.timestamp)); return c; }, - Lc: function (a) { - return a.ta - ? a.ta.subarray - ? a.ta.subarray(0, a.ya) - : new Uint8Array(a.ta) + Nc: function (a) { + return a.va + ? a.va.subarray + ? a.va.subarray(0, a.Aa) + : new Uint8Array(a.va) : new Uint8Array(0); }, - Kb: function (a, b) { - var c = a.ta ? a.ta.length : 0; + Mb: function (a, b) { + var c = a.va ? a.va.length : 0; c >= b || ((b = Math.max(b, (c * (1048576 > c ? 2 : 1.125)) >>> 0)), 0 != c && (b = Math.max(b, 256)), - (c = a.ta), - (a.ta = new Uint8Array(b)), - 0 < a.ya && a.ta.set(c.subarray(0, a.ya), 0)); + (c = a.va), + (a.va = new Uint8Array(b)), + 0 < a.Aa && a.va.set(c.subarray(0, a.Aa), 0)); }, - yc: function (a, b) { - if (a.ya != b) - if (0 == b) (a.ta = null), (a.ya = 0); + Ac: function (a, b) { + if (a.Aa != b) + if (0 == b) (a.va = null), (a.Aa = 0); else { - var c = a.ta; - a.ta = new Uint8Array(b); - c && a.ta.set(c.subarray(0, Math.min(b, a.ya))); - a.ya = b; + var c = a.va; + a.va = new Uint8Array(b); + c && a.va.set(c.subarray(0, Math.min(b, a.Aa))); + a.Aa = b; } }, - ua: { - Ja: function (a) { + wa: { + La: function (a) { var b = {}; - b.fc = 8192 === (a.mode & 61440) ? a.id : 1; - b.vb = a.id; + b.ic = 8192 === (a.mode & 61440) ? a.id : 1; + b.xb = a.id; b.mode = a.mode; - b.uc = 1; + b.wc = 1; b.uid = 0; - b.nc = 0; - b.bb = a.bb; + b.pc = 0; + b.eb = a.eb; b.size = 16384 === (a.mode & 61440) ? 4096 : 32768 === (a.mode & 61440) - ? a.ya + ? a.Aa : 40960 === (a.mode & 61440) ? a.link.length : 0; - b.Zb = new Date(a.timestamp); - b.tc = new Date(a.timestamp); - b.dc = new Date(a.timestamp); - b.$b = 4096; - b.ac = Math.ceil(b.size / b.$b); + b.ac = new Date(a.timestamp); + b.vc = new Date(a.timestamp); + b.fc = new Date(a.timestamp); + b.bc = 4096; + b.cc = Math.ceil(b.size / b.bc); return b; }, - Da: function (a, b) { + Fa: function (a, b) { void 0 !== b.mode && (a.mode = b.mode); void 0 !== b.timestamp && (a.timestamp = b.timestamp); - void 0 !== b.size && O.yc(a, b.size); + void 0 !== b.size && O.Ac(a, b.size); }, - Ya: function () { - throw hb[44]; + $a: function () { + throw lb[44]; }, - mb: function (a, b, c, d) { + ob: function (a, b, c, d) { return O.createNode(a, b, c, d); }, - Ub: function (a, b, c) { + Wb: function (a, b, c) { if (16384 === (a.mode & 61440)) { try { - var d = ib(b, c); + var d = mb(b, c); } catch (f) {} - if (d) for (var e in d.ta) throw new N(55); + if (d) for (var e in d.va) throw new N(55); } - delete a.parent.ta[a.name]; + delete a.parent.va[a.name]; a.parent.timestamp = Date.now(); a.name = c; - b.ta[c] = a; + b.va[c] = a; b.timestamp = a.parent.timestamp; a.parent = b; }, - sb: function (a, b) { - delete a.ta[b]; + ub: function (a, b) { + delete a.va[b]; a.timestamp = Date.now(); }, - Vb: function (a, b) { - var c = ib(a, b), + Xb: function (a, b) { + var c = mb(a, b), d; - for (d in c.ta) throw new N(55); - delete a.ta[b]; + for (d in c.va) throw new N(55); + delete a.va[b]; a.timestamp = Date.now(); }, - Tb: function (a) { + Vb: function (a) { var b = [".", ".."], c; - for (c in a.ta) a.ta.hasOwnProperty(c) && b.push(c); + for (c in a.va) a.va.hasOwnProperty(c) && b.push(c); return b; }, - pb: function (a, b, c) { + rb: function (a, b, c) { a = O.createNode(a, b, 41471, 0); a.link = c; return a; }, - cb: function (a) { + fb: function (a) { if (40960 !== (a.mode & 61440)) throw new N(28); return a.link; }, }, - va: { + xa: { read: function (a, b, c, d, e) { - var f = a.node.ta; - if (e >= a.node.ya) return 0; - a = Math.min(a.node.ya - e, d); + var f = a.node.va; + if (e >= a.node.Aa) return 0; + a = Math.min(a.node.Aa - e, d); if (8 < a && f.subarray) b.set(f.subarray(e, e + a), c); else for (d = 0; d < a; d++) b[c + d] = f[e + d]; return a; @@ -797,137 +819,137 @@ var createModule = (() => { if (!d) return 0; a = a.node; a.timestamp = Date.now(); - if (b.subarray && (!a.ta || a.ta.subarray)) { - if (f) return (a.ta = b.subarray(c, c + d)), (a.ya = d); - if (0 === a.ya && 0 === e) - return (a.ta = b.slice(c, c + d)), (a.ya = d); - if (e + d <= a.ya) return a.ta.set(b.subarray(c, c + d), e), d; + if (b.subarray && (!a.va || a.va.subarray)) { + if (f) return (a.va = b.subarray(c, c + d)), (a.Aa = d); + if (0 === a.Aa && 0 === e) + return (a.va = b.slice(c, c + d)), (a.Aa = d); + if (e + d <= a.Aa) return a.va.set(b.subarray(c, c + d), e), d; } - O.Kb(a, e + d); - if (a.ta.subarray && b.subarray) a.ta.set(b.subarray(c, c + d), e); - else for (f = 0; f < d; f++) a.ta[e + f] = b[c + f]; - a.ya = Math.max(a.ya, e + d); + O.Mb(a, e + d); + if (a.va.subarray && b.subarray) a.va.set(b.subarray(c, c + d), e); + else for (f = 0; f < d; f++) a.va[e + f] = b[c + f]; + a.Aa = Math.max(a.Aa, e + d); return d; }, - Qa: function (a, b, c) { + Sa: function (a, b, c) { 1 === c ? (b += a.position) - : 2 === c && 32768 === (a.node.mode & 61440) && (b += a.node.ya); + : 2 === c && 32768 === (a.node.mode & 61440) && (b += a.node.Aa); if (0 > b) throw new N(28); return b; }, - Eb: function (a, b, c) { - O.Kb(a.node, b + c); - a.node.ya = Math.max(a.node.ya, b + c); + Gb: function (a, b, c) { + O.Mb(a.node, b + c); + a.node.Aa = Math.max(a.node.Aa, b + c); }, - Za: function (a, b, c, d, e) { + ab: function (a, b, c, d, e) { if (32768 !== (a.node.mode & 61440)) throw new N(43); - a = a.node.ta; + a = a.node.va; if (e & 2 || a.buffer !== C.buffer) { if (0 < c || c + b < a.length) a = a.subarray ? a.subarray(c, c + b) : Array.prototype.slice.call(a, c, c + b); c = !0; - b = db(b); + b = hb(b); if (!b) throw new N(48); C.set(a, b); } else (c = !1), (b = a.byteOffset); - return { xa: b, Fb: c }; + return { za: b, Hb: c }; }, - nb: function (a, b, c, d) { - O.va.write(a, b, 0, d, c, !1); + pb: function (a, b, c, d) { + O.xa.write(a, b, 0, d, c, !1); return 0; }, }, }; - function jb(a, b, c) { + function nb(a, b, c) { var d = "al " + a; ia( a, (e) => { e || ma('Loading data file "' + a + '" failed (no arrayBuffer).'); b(new Uint8Array(e)); - d && Fa(d); + d && Ja(d); }, () => { if (c) c(); else throw 'Loading data file "' + a + '" failed.'; }, ); - d && Ea(d); - } - var kb = null, - lb = {}, - mb = [], - nb = 1, - ob = null, - pb = !0, + d && Ia(d); + } + var ob = null, + pb = {}, + qb = [], + rb = 1, + sb = null, + tb = !0, N = null, - hb = {}, + lb = {}, P = (a, b = {}) => { - a = Wa(a); + a = $a(a); if (!a) return { path: "", node: null }; - b = Object.assign({ Mb: !0, Ab: 0 }, b); - if (8 < b.Ab) throw new N(32); - a = a.split("/").filter((g) => !!g); - for (var c = kb, d = "/", e = 0; e < a.length; e++) { + b = Object.assign({ Ob: !0, Cb: 0 }, b); + if (8 < b.Cb) throw new N(32); + a = a.split("/").filter((h) => !!h); + for (var c = ob, d = "/", e = 0; e < a.length; e++) { var f = e === a.length - 1; if (f && b.parent) break; - c = ib(c, a[e]); + c = mb(c, a[e]); d = L(d + "/" + a[e]); - c.$a && (!f || (f && b.Mb)) && (c = c.$a.root); - if (!f || b.hb) + c.bb && (!f || (f && b.Ob)) && (c = c.bb.root); + if (!f || b.jb) for (f = 0; 40960 === (c.mode & 61440); ) if ( - ((c = qb(d)), - (d = Wa(Ta(d), c)), - (c = P(d, { Ab: b.Ab + 1 }).node), + ((c = ub(d)), + (d = $a(Xa(d), c)), + (c = P(d, { Cb: b.Cb + 1 }).node), 40 < f++) ) throw new N(32); } return { path: d, node: c }; }, - rb = (a) => { + vb = (a) => { for (var b; ; ) { if (a === a.parent) return ( - (a = a.Ma.Pb), + (a = a.Oa.Rb), b ? ("/" !== a[a.length - 1] ? a + "/" + b : a + b) : a ); b = b ? a.name + "/" + b : a.name; a = a.parent; } }, - sb = (a, b) => { + wb = (a, b) => { for (var c = 0, d = 0; d < b.length; d++) c = ((c << 5) - c + b.charCodeAt(d)) | 0; - return ((a + c) >>> 0) % ob.length; + return ((a + c) >>> 0) % sb.length; }, - ib = (a, b) => { + mb = (a, b) => { var c; - if ((c = (c = tb(a, "x")) ? c : a.ua.Ya ? 0 : 2)) throw new N(c, a); - for (c = ob[sb(a.id, b)]; c; c = c.Wa) { + if ((c = (c = xb(a, "x")) ? c : a.wa.$a ? 0 : 2)) throw new N(c, a); + for (c = sb[wb(a.id, b)]; c; c = c.Ya) { var d = c.name; if (c.parent.id === a.id && d === b) return c; } - return a.ua.Ya(a, b); + return a.wa.$a(a, b); }, - gb = (a, b, c, d) => { - a = new ub(a, b, c, d); - b = sb(a.parent.id, a.name); - a.Wa = ob[b]; - return (ob[b] = a); + kb = (a, b, c, d) => { + a = new yb(a, b, c, d); + b = wb(a.parent.id, a.name); + a.Ya = sb[b]; + return (sb[b] = a); }, - vb = { r: 0, "r+": 2, w: 577, "w+": 578, a: 1089, "a+": 1090 }, - wb = (a) => { + zb = { r: 0, "r+": 2, w: 577, "w+": 578, a: 1089, "a+": 1090 }, + Ab = (a) => { var b = ["r", "w", "rw"][a & 3]; a & 512 && (b += "w"); return b; }, - tb = (a, b) => { - if (pb) return 0; + xb = (a, b) => { + if (tb) return 0; if (!b.includes("r") || a.mode & 292) { if ( (b.includes("w") && !(a.mode & 146)) || @@ -937,23 +959,23 @@ var createModule = (() => { } else return 2; return 0; }, - xb = (a, b) => { + Bb = (a, b) => { try { - return ib(a, b), 20; + return mb(a, b), 20; } catch (c) {} - return tb(a, "wx"); + return xb(a, "wx"); }, - yb = () => { - for (var a = 0; 4096 >= a; a++) if (!mb[a]) return a; + Cb = () => { + for (var a = 0; 4096 >= a; a++) if (!qb[a]) return a; throw new N(33); }, - Ab = (a) => { - zb || - ((zb = function () { - this.ob = {}; + Eb = (a) => { + Db || + ((Db = function () { + this.qb = {}; }), - (zb.prototype = {}), - Object.defineProperties(zb.prototype, { + (Db.prototype = {}), + Object.defineProperties(Db.prototype, { object: { get: function () { return this.node; @@ -964,133 +986,133 @@ var createModule = (() => { }, flags: { get: function () { - return this.ob.flags; + return this.qb.flags; }, set: function (c) { - this.ob.flags = c; + this.qb.flags = c; }, }, position: { get: function () { - return this.ob.position; + return this.qb.position; }, set: function (c) { - this.ob.position = c; + this.qb.position = c; }, }, })); - a = Object.assign(new zb(), a); - var b = yb(); - a.Pa = b; - return (mb[b] = a); + a = Object.assign(new Db(), a); + var b = Cb(); + a.Ra = b; + return (qb[b] = a); }, - fb = { + jb = { open: (a) => { - a.va = lb[a.node.bb].va; - a.va.open && a.va.open(a); + a.xa = pb[a.node.eb].xa; + a.xa.open && a.xa.open(a); }, - Qa: () => { + Sa: () => { throw new N(70); }, }, - $a = (a, b) => { - lb[a] = { va: b }; + db = (a, b) => { + pb[a] = { xa: b }; }, - Bb = (a, b) => { + Fb = (a, b) => { var c = "/" === b, d = !b; - if (c && kb) throw new N(10); + if (c && ob) throw new N(10); if (!c && !d) { - var e = P(b, { Mb: !1 }); + var e = P(b, { Ob: !1 }); b = e.path; e = e.node; - if (e.$a) throw new N(10); + if (e.bb) throw new N(10); if (16384 !== (e.mode & 61440)) throw new N(54); } - b = { type: a, Oc: {}, Pb: b, sc: [] }; - a = a.Ma(b); - a.Ma = b; + b = { type: a, Qc: {}, Rb: b, uc: [] }; + a = a.Oa(b); + a.Oa = b; b.root = a; - c ? (kb = a) : e && ((e.$a = b), e.Ma && e.Ma.sc.push(b)); + c ? (ob = a) : e && ((e.bb = b), e.Oa && e.Oa.uc.push(b)); }, Q = (a, b, c) => { var d = P(a, { parent: !0 }).node; - a = Ua(a); + a = Ya(a); if (!a || "." === a || ".." === a) throw new N(28); - var e = xb(d, a); + var e = Bb(d, a); if (e) throw new N(e); - if (!d.ua.mb) throw new N(63); - return d.ua.mb(d, a, b, c); + if (!d.wa.ob) throw new N(63); + return d.wa.ob(d, a, b, c); }, - Cb = (a, b, c) => { + Gb = (a, b, c) => { "undefined" == typeof c && ((c = b), (b = 438)); return Q(a, b | 8192, c); }, - Db = (a, b) => { - if (!Wa(a)) throw new N(44); + Hb = (a, b) => { + if (!$a(a)) throw new N(44); var c = P(b, { parent: !0 }).node; if (!c) throw new N(44); - b = Ua(b); - var d = xb(c, b); + b = Ya(b); + var d = Bb(c, b); if (d) throw new N(d); - if (!c.ua.pb) throw new N(63); - c.ua.pb(c, b, a); + if (!c.wa.rb) throw new N(63); + c.wa.rb(c, b, a); }, - Eb = (a) => { + Ib = (a) => { var b = P(a, { parent: !0 }).node; if (!b) throw new N(44); - var c = Ua(a); - a = ib(b, c); + var c = Ya(a); + a = mb(b, c); a: { try { - var d = ib(b, c); + var d = mb(b, c); } catch (f) { - d = f.Fa; + d = f.Ha; break a; } - var e = tb(b, "wx"); + var e = xb(b, "wx"); d = e ? e : 16384 === (d.mode & 61440) ? 31 : 0; } if (d) throw new N(d); - if (!b.ua.sb) throw new N(63); - if (a.$a) throw new N(10); - b.ua.sb(b, c); - b = sb(a.parent.id, a.name); - if (ob[b] === a) ob[b] = a.Wa; + if (!b.wa.ub) throw new N(63); + if (a.bb) throw new N(10); + b.wa.ub(b, c); + b = wb(a.parent.id, a.name); + if (sb[b] === a) sb[b] = a.Ya; else - for (b = ob[b]; b; ) { - if (b.Wa === a) { - b.Wa = a.Wa; + for (b = sb[b]; b; ) { + if (b.Ya === a) { + b.Ya = a.Ya; break; } - b = b.Wa; + b = b.Ya; } }, - qb = (a) => { + ub = (a) => { a = P(a).node; if (!a) throw new N(44); - if (!a.ua.cb) throw new N(28); - return Wa(rb(a.parent), a.ua.cb(a)); + if (!a.wa.fb) throw new N(28); + return $a(vb(a.parent), a.wa.fb(a)); }, - Fb = (a, b) => { - a = P(a, { hb: !b }).node; + Jb = (a, b) => { + a = P(a, { jb: !b }).node; if (!a) throw new N(44); - if (!a.ua.Ja) throw new N(63); - return a.ua.Ja(a); - }, - Gb = (a) => Fb(a, !0), - Hb = (a, b) => { - a = "string" == typeof a ? P(a, { hb: !0 }).node : a; - if (!a.ua.Da) throw new N(63); - a.ua.Da(a, { + if (!a.wa.La) throw new N(63); + return a.wa.La(a); + }, + Kb = (a) => Jb(a, !0), + Lb = (a, b) => { + a = "string" == typeof a ? P(a, { jb: !0 }).node : a; + if (!a.wa.Fa) throw new N(63); + a.wa.Fa(a, { mode: (b & 4095) | (a.mode & -4096), timestamp: Date.now(), }); }, - Jb = (a, b, c) => { + Nb = (a, b, c) => { if ("" === a) throw new N(44); if ("string" == typeof b) { - var d = vb[b]; + var d = zb[b]; if ("undefined" == typeof d) throw Error("Unknown file open mode: " + b); b = d; @@ -1100,7 +1122,7 @@ var createModule = (() => { else { a = L(a); try { - e = P(a, { hb: !(b & 131072) }).node; + e = P(a, { jb: !(b & 131072) }).node; } catch (f) {} } d = !1; @@ -1116,96 +1138,96 @@ var createModule = (() => { (c = e ? 40960 === (e.mode & 61440) ? 32 - : 16384 === (e.mode & 61440) && ("r" !== wb(b) || b & 512) + : 16384 === (e.mode & 61440) && ("r" !== Ab(b) || b & 512) ? 31 - : tb(e, wb(b)) + : xb(e, Ab(b)) : 44) ) throw new N(c); if (b & 512 && !d) { c = e; - c = "string" == typeof c ? P(c, { hb: !0 }).node : c; - if (!c.ua.Da) throw new N(63); + c = "string" == typeof c ? P(c, { jb: !0 }).node : c; + if (!c.wa.Fa) throw new N(63); if (16384 === (c.mode & 61440)) throw new N(31); if (32768 !== (c.mode & 61440)) throw new N(28); - if ((d = tb(c, "w"))) throw new N(d); - c.ua.Da(c, { size: 0, timestamp: Date.now() }); + if ((d = xb(c, "w"))) throw new N(d); + c.wa.Fa(c, { size: 0, timestamp: Date.now() }); } b &= -131713; - e = Ab({ + e = Eb({ node: e, - path: rb(e), + path: vb(e), flags: b, seekable: !0, position: 0, - va: e.va, - Jc: [], + xa: e.xa, + Lc: [], error: !1, }); - e.va.open && e.va.open(e); - !h.logReadFiles || b & 1 || (Ib || (Ib = {}), a in Ib || (Ib[a] = 1)); + e.xa.open && e.xa.open(e); + !g.logReadFiles || b & 1 || (Mb || (Mb = {}), a in Mb || (Mb[a] = 1)); return e; }, - Kb = (a) => { - if (null === a.Pa) throw new N(8); - a.ub && (a.ub = null); + Ob = (a) => { + if (null === a.Ra) throw new N(8); + a.wb && (a.wb = null); try { - a.va.close && a.va.close(a); + a.xa.close && a.xa.close(a); } catch (b) { throw b; } finally { - mb[a.Pa] = null; + qb[a.Ra] = null; } - a.Pa = null; + a.Ra = null; }, - Lb = (a, b, c) => { - if (null === a.Pa) throw new N(8); - if (!a.seekable || !a.va.Qa) throw new N(70); + Pb = (a, b, c) => { + if (null === a.Ra) throw new N(8); + if (!a.seekable || !a.xa.Sa) throw new N(70); if (0 != c && 1 != c && 2 != c) throw new N(28); - a.position = a.va.Qa(a, b, c); - a.Jc = []; + a.position = a.xa.Sa(a, b, c); + a.Lc = []; }, - Mb = (a, b, c, d, e, f) => { + Qb = (a, b, c, d, e, f) => { if (0 > d || 0 > e) throw new N(28); - if (null === a.Pa) throw new N(8); + if (null === a.Ra) throw new N(8); if (0 === (a.flags & 2097155)) throw new N(8); if (16384 === (a.node.mode & 61440)) throw new N(31); - if (!a.va.write) throw new N(28); - a.seekable && a.flags & 1024 && Lb(a, 0, 2); - var g = "undefined" != typeof e; - if (!g) e = a.position; + if (!a.xa.write) throw new N(28); + a.seekable && a.flags & 1024 && Pb(a, 0, 2); + var h = "undefined" != typeof e; + if (!h) e = a.position; else if (!a.seekable) throw new N(70); - b = a.va.write(a, b, c, d, e, f); - g || (a.position += b); + b = a.xa.write(a, b, c, d, e, f); + h || (a.position += b); return b; }, - Nb = () => { + Rb = () => { N || ((N = function (a, b) { this.name = "ErrnoError"; this.node = b; - this.Ac = function (c) { - this.Fa = c; + this.Cc = function (c) { + this.Ha = c; }; - this.Ac(a); + this.Cc(a); this.message = "FS error"; }), (N.prototype = Error()), (N.prototype.constructor = N), [44].forEach((a) => { - hb[a] = new N(a); - hb[a].stack = ""; + lb[a] = new N(a); + lb[a].stack = ""; })); }, - Ob, - Pb = (a, b) => { + Sb, + Tb = (a, b) => { var c = 0; a && (c |= 365); b && (c |= 146); return c; }, - Qb = (a, b) => { - a = "string" == typeof a ? a : rb(a); + Ub = (a, b) => { + a = "string" == typeof a ? a : vb(a); for (b = b.split("/").reverse(); b.length; ) { var c = b.pop(); if (c) { @@ -1218,18 +1240,18 @@ var createModule = (() => { } return d; }, - Rb = (a, b, c, d) => { - a = L(("string" == typeof a ? a : rb(a)) + "/" + b); - c = Pb(c, d); + Vb = (a, b, c, d) => { + a = L(("string" == typeof a ? a : vb(a)) + "/" + b); + c = Tb(c, d); return Q(a, ((void 0 !== c ? c : 438) & 4095) | 32768, 0); }, - Sb = (a, b, c, d, e, f) => { - var g = b; + Wb = (a, b, c, d, e, f) => { + var h = b; a && - ((a = "string" == typeof a ? a : rb(a)), - (g = b ? L(a + "/" + b) : a)); - a = Pb(d, e); - g = Q(g, ((void 0 !== a ? a : 438) & 4095) | 32768, 0); + ((a = "string" == typeof a ? a : vb(a)), + (h = b ? L(a + "/" + b) : a)); + a = Tb(d, e); + h = Q(h, ((void 0 !== a ? a : 438) & 4095) | 32768, 0); if (c) { if ("string" == typeof c) { b = Array(c.length); @@ -1237,27 +1259,27 @@ var createModule = (() => { for (e = c.length; d < e; ++d) b[d] = c.charCodeAt(d); c = b; } - Hb(g, a | 146); - b = Jb(g, 577); - Mb(b, c, 0, c.length, 0, f); - Kb(b); - Hb(g, a); + Lb(h, a | 146); + b = Nb(h, 577); + Qb(b, c, 0, c.length, 0, f); + Ob(b); + Lb(h, a); } - return g; + return h; }, R = (a, b, c, d) => { - a = L(("string" == typeof a ? a : rb(a)) + "/" + b); - b = Pb(!!c, !!d); - R.Ob || (R.Ob = 64); - var e = (R.Ob++ << 8) | 0; - $a(e, { + a = L(("string" == typeof a ? a : vb(a)) + "/" + b); + b = Tb(!!c, !!d); + R.Qb || (R.Qb = 64); + var e = (R.Qb++ << 8) | 0; + db(e, { open: (f) => { f.seekable = !1; }, close: () => { d && d.buffer && d.buffer.length && d(10); }, - read: (f, g, l, m) => { + read: (f, h, l, m) => { for (var n = 0, r = 0; r < m; r++) { try { var p = c(); @@ -1267,15 +1289,15 @@ var createModule = (() => { if (void 0 === p && 0 === n) throw new N(6); if (null === p || void 0 === p) break; n++; - g[l + r] = p; + h[l + r] = p; } n && (f.node.timestamp = Date.now()); return n; }, - write: (f, g, l, m) => { + write: (f, h, l, m) => { for (var n = 0; n < m; n++) try { - d(g[l + n]); + d(h[l + n]); } catch (r) { throw new N(29); } @@ -1283,30 +1305,30 @@ var createModule = (() => { return n; }, }); - return Cb(a, b, e); + return Gb(a, b, e); }, - Tb = (a) => { - if (!(a.pc || a.qc || a.link || a.ta)) { + Xb = (a) => { + if (!(a.rc || a.sc || a.link || a.va)) { if ("undefined" != typeof XMLHttpRequest) throw Error( "Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.", ); if (ha) try { - (a.ta = Xa(ha(a.url), !0)), (a.ya = a.ta.length); + (a.va = ab(ha(a.url), !0)), (a.Aa = a.va.length); } catch (b) { throw new N(29); } else throw Error("Cannot load without read() or XMLHttpRequest."); } }, - Ub = (a, b, c, d, e) => { + Yb = (a, b, c, d, e) => { function f() { - this.xb = !1; - this.gb = []; + this.zb = !1; + this.ib = []; } - function g(p, q, k, t, x) { - p = p.node.ta; + function h(p, q, k, t, x) { + p = p.node.va; if (x >= p.length) return 0; t = Math.min(p.length - x, t); if (p.slice) for (var z = 0; z < t; z++) q[k + z] = p[x + z]; @@ -1315,14 +1337,14 @@ var createModule = (() => { } f.prototype.get = function (p) { if (!(p > this.length - 1 || 0 > p)) { - var q = p % this.Ib; - return this.jb((p / this.Ib) | 0)[q]; + var q = p % this.Kb; + return this.lb((p / this.Kb) | 0)[q]; } }; - f.prototype.zc = function (p) { - this.jb = p; + f.prototype.Bc = function (p) { + this.lb = p; }; - f.prototype.Gb = function () { + f.prototype.Ib = function () { var p = new XMLHttpRequest(); p.open("HEAD", c, !1); p.send(null); @@ -1335,12 +1357,12 @@ var createModule = (() => { var x = 1048576; t || (x = q); var z = this; - z.zc((F) => { + z.Bc((F) => { var G = F * x, y = (F + 1) * x - 1; y = Math.min(y, q - 1); - if ("undefined" == typeof z.gb[F]) { - var M = z.gb; + if ("undefined" == typeof z.ib[F]) { + var M = z.ib; if (G > y) throw Error( "invalid range (" + G + ", " + y + ") or no bytes requested!", @@ -1361,115 +1383,115 @@ var createModule = (() => { G = void 0 !== B.response ? new Uint8Array(B.response || []) - : Xa(B.responseText || "", !0); + : ab(B.responseText || "", !0); M[F] = G; } - if ("undefined" == typeof z.gb[F]) throw Error("doXHR failed!"); - return z.gb[F]; + if ("undefined" == typeof z.ib[F]) throw Error("doXHR failed!"); + return z.ib[F]; }); if (p || !q) (x = q = 1), - (x = q = this.jb(0).length), + (x = q = this.lb(0).length), ka( "LazyFiles on gzip forces download of the whole file when length is accessed", ); - this.Xb = q; - this.Wb = x; - this.xb = !0; + this.Zb = q; + this.Yb = x; + this.zb = !0; }; if ("undefined" != typeof XMLHttpRequest) { var l = new f(); Object.defineProperties(l, { length: { get: function () { - this.xb || this.Gb(); - return this.Xb; + this.zb || this.Ib(); + return this.Zb; }, }, - Ib: { + Kb: { get: function () { - this.xb || this.Gb(); - return this.Wb; + this.zb || this.Ib(); + return this.Yb; }, }, }); var m = void 0; } else (m = c), (l = void 0); - var n = Rb(a, b, d, e); - l ? (n.ta = l) : m && ((n.ta = null), (n.url = m)); + var n = Vb(a, b, d, e); + l ? (n.va = l) : m && ((n.va = null), (n.url = m)); Object.defineProperties(n, { - ya: { + Aa: { get: function () { - return this.ta.length; + return this.va.length; }, }, }); var r = {}; - Object.keys(n.va).forEach((p) => { - var q = n.va[p]; + Object.keys(n.xa).forEach((p) => { + var q = n.xa[p]; r[p] = function () { - Tb(n); + Xb(n); return q.apply(null, arguments); }; }); r.read = (p, q, k, t, x) => { - Tb(n); - return g(p, q, k, t, x); + Xb(n); + return h(p, q, k, t, x); }; - r.Za = (p, q, k) => { - Tb(n); - var t = db(q); + r.ab = (p, q, k) => { + Xb(n); + var t = hb(q); if (!t) throw new N(48); - g(p, C, t, q, k); - return { xa: t, Fb: !0 }; + h(p, C, t, q, k); + return { za: t, Hb: !0 }; }; - n.va = r; + n.xa = r; return n; }, - Wb = (a, b, c, d, e, f, g, l, m, n) => { + $b = (a, b, c, d, e, f, h, l, m, n) => { function r(k) { function t(x) { n && n(); - l || Sb(a, b, x, d, e, m); + l || Wb(a, b, x, d, e, m); f && f(); - Fa(q); + Ja(q); } - Vb.Mc(k, p, t, () => { - g && g(); - Fa(q); + Zb.Oc(k, p, t, () => { + h && h(); + Ja(q); }) || t(k); } - var p = b ? Wa(L(a + "/" + b)) : a, + var p = b ? $a(L(a + "/" + b)) : a, q = "cp " + p; - Ea(q); - "string" == typeof c ? jb(c, (k) => r(k), g) : r(c); + Ia(q); + "string" == typeof c ? nb(c, (k) => r(k), h) : r(c); }, S = {}, - zb, - Ib; - function Xb(a, b, c) { + Db, + Mb; + function ac(a, b, c) { if ("/" === b.charAt(0)) return b; - a = -100 === a ? "/" : Yb(a).path; + a = -100 === a ? "/" : bc(a).path; if (0 == b.length) { if (!c) throw new N(44); return a; } return L(a + "/" + b); } - function Zb(a, b, c) { + function cc(a, b, c) { try { var d = a(b); } catch (f) { - if (f && f.node && L(b) !== L(rb(f.node))) return -54; + if (f && f.node && L(b) !== L(vb(f.node))) return -54; throw f; } - E[c >> 2] = d.fc; - E[(c + 8) >> 2] = d.vb; + E[c >> 2] = d.ic; + E[(c + 8) >> 2] = d.xb; E[(c + 12) >> 2] = d.mode; - I[(c + 16) >> 2] = d.uc; + I[(c + 16) >> 2] = d.wc; E[(c + 20) >> 2] = d.uid; - E[(c + 24) >> 2] = d.nc; - E[(c + 28) >> 2] = d.bb; + E[(c + 24) >> 2] = d.pc; + E[(c + 28) >> 2] = d.eb; K = [ d.size >>> 0, ((J = d.size), @@ -1482,10 +1504,10 @@ var createModule = (() => { E[(c + 40) >> 2] = K[0]; E[(c + 44) >> 2] = K[1]; E[(c + 48) >> 2] = 4096; - E[(c + 52) >> 2] = d.ac; - a = d.Zb.getTime(); - b = d.tc.getTime(); - var e = d.dc.getTime(); + E[(c + 52) >> 2] = d.cc; + a = d.ac.getTime(); + b = d.vc.getTime(); + var e = d.fc.getTime(); K = [ Math.floor(a / 1e3) >>> 0, ((J = Math.floor(a / 1e3)), @@ -1523,8 +1545,8 @@ var createModule = (() => { E[(c + 92) >> 2] = K[1]; I[(c + 96) >> 2] = (e % 1e3) * 1e3; K = [ - d.vb >>> 0, - ((J = d.vb), + d.xb >>> 0, + ((J = d.xb), 1 <= +Math.abs(J) ? 0 < J ? (Math.min(+Math.floor(J / 4294967296), 4294967295) | 0) >>> 0 @@ -1535,42 +1557,42 @@ var createModule = (() => { E[(c + 108) >> 2] = K[1]; return 0; } - var $b = void 0; - function Yb(a) { - a = mb[a]; + var dc = void 0; + function bc(a) { + a = qb[a]; if (!a) throw new N(8); return a; } - var ac = {}; - function bc(a) { + var ec = {}; + function fc(a) { for (; a.length; ) { var b = a.pop(); a.pop()(b); } } - function cc(a) { + function gc(a) { return this.fromWireType(E[a >> 2]); } - var dc = {}, - ec = {}, - fc = {}; - function gc(a) { + var hc = {}, + ic = {}, + jc = {}; + function kc(a) { if (void 0 === a) return "_unknown"; a = a.replace(/[^a-zA-Z0-9_]/g, "$"); var b = a.charCodeAt(0); return 48 <= b && 57 >= b ? "_" + a : a; } - function hc(a, b) { - a = gc(a); + function lc(a, b) { + a = kc(a); return { [a]: function () { return b.apply(this, arguments); }, }[a]; } - function ic(a) { + function mc(a) { var b = Error, - c = hc(a, function (d) { + c = lc(a, function (d) { this.name = a; this.message = d; d = Error(d).stack; @@ -1587,36 +1609,36 @@ var createModule = (() => { }; return c; } - var jc = void 0; - function kc(a) { - throw new jc(a); + var nc = void 0; + function oc(a) { + throw new nc(a); } - function lc(a, b, c) { + function pc(a, b, c) { function d(l) { l = c(l); - l.length !== a.length && kc("Mismatched type converter count"); - for (var m = 0; m < a.length; ++m) mc(a[m], l[m]); + l.length !== a.length && oc("Mismatched type converter count"); + for (var m = 0; m < a.length; ++m) qc(a[m], l[m]); } a.forEach(function (l) { - fc[l] = b; + jc[l] = b; }); var e = Array(b.length), f = [], - g = 0; + h = 0; b.forEach((l, m) => { - ec.hasOwnProperty(l) - ? (e[m] = ec[l]) + ic.hasOwnProperty(l) + ? (e[m] = ic[l]) : (f.push(l), - dc.hasOwnProperty(l) || (dc[l] = []), - dc[l].push(() => { - e[m] = ec[l]; - ++g; - g === f.length && d(e); + hc.hasOwnProperty(l) || (hc[l] = []), + hc[l].push(() => { + e[m] = ic[l]; + ++h; + h === f.length && d(e); })); }); 0 === f.length && d(e); } - function nc(a) { + function rc(a) { switch (a) { case 1: return 0; @@ -1630,298 +1652,298 @@ var createModule = (() => { throw new TypeError("Unknown type size: " + a); } } - var oc = void 0; + var sc = void 0; function T(a) { - for (var b = ""; w[a]; ) b += oc[w[a++]]; + for (var b = ""; w[a]; ) b += sc[w[a++]]; return b; } - var pc = void 0; - function V(a) { - throw new pc(a); + var tc = void 0; + function U(a) { + throw new tc(a); } - function mc(a, b, c = {}) { + function qc(a, b, c = {}) { if (!("argPackAdvance" in b)) throw new TypeError( "registerType registeredInstance requires argPackAdvance", ); var d = b.name; - a || V('type "' + d + '" must have a positive integer typeid pointer'); - if (ec.hasOwnProperty(a)) { - if (c.oc) return; - V("Cannot register type '" + d + "' twice"); + a || U('type "' + d + '" must have a positive integer typeid pointer'); + if (ic.hasOwnProperty(a)) { + if (c.qc) return; + U("Cannot register type '" + d + "' twice"); } - ec[a] = b; - delete fc[a]; - dc.hasOwnProperty(a) && - ((b = dc[a]), delete dc[a], b.forEach((e) => e())); + ic[a] = b; + delete jc[a]; + hc.hasOwnProperty(a) && + ((b = hc[a]), delete hc[a], b.forEach((e) => e())); } - function qc(a) { - V(a.sa.za.wa.name + " instance already deleted"); + function uc(a) { + U(a.ua.Ba.ya.name + " instance already deleted"); } - var rc = !1; - function sc() {} - function tc(a) { + var vc = !1; + function wc() {} + function xc(a) { --a.count.value; - 0 === a.count.value && (a.Ca ? a.Ga.Na(a.Ca) : a.za.wa.Na(a.xa)); + 0 === a.count.value && (a.Ea ? a.Ia.Pa(a.Ea) : a.Ba.ya.Pa(a.za)); } - function uc(a, b, c) { + function yc(a, b, c) { if (b === c) return a; - if (void 0 === c.Ha) return null; - a = uc(a, b, c.Ha); - return null === a ? null : c.hc(a); - } - var vc = {}, - wc = []; - function xc() { - for (; wc.length; ) { - var a = wc.pop(); - a.sa.Ua = !1; + if (void 0 === c.Ja) return null; + a = yc(a, b, c.Ja); + return null === a ? null : c.jc(a); + } + var zc = {}, + Ac = []; + function Bc() { + for (; Ac.length; ) { + var a = Ac.pop(); + a.ua.Wa = !1; a["delete"](); } } - var yc = void 0, - zc = {}; - function Ac(a, b) { - for (void 0 === b && V("ptr should not be undefined"); a.Ha; ) - (b = a.eb(b)), (a = a.Ha); - return zc[b]; - } - function Bc(a, b) { - (b.za && b.xa) || kc("makeClassHandle requires ptr and ptrType"); - !!b.Ga !== !!b.Ca && - kc("Both smartPtrType and smartPtr must be specified"); + var Cc = void 0, + Dc = {}; + function Ec(a, b) { + for (void 0 === b && U("ptr should not be undefined"); a.Ja; ) + (b = a.gb(b)), (a = a.Ja); + return Dc[b]; + } + function Fc(a, b) { + (b.Ba && b.za) || oc("makeClassHandle requires ptr and ptrType"); + !!b.Ia !== !!b.Ea && + oc("Both smartPtrType and smartPtr must be specified"); b.count = { value: 1 }; - return Cc(Object.create(a, { sa: { value: b } })); + return Gc(Object.create(a, { ua: { value: b } })); } - function Cc(a) { + function Gc(a) { if ("undefined" === typeof FinalizationRegistry) - return (Cc = (b) => b), a; - rc = new FinalizationRegistry((b) => { - tc(b.sa); + return (Gc = (b) => b), a; + vc = new FinalizationRegistry((b) => { + xc(b.ua); }); - Cc = (b) => { - var c = b.sa; - c.Ca && rc.register(b, { sa: c }, b); + Gc = (b) => { + var c = b.ua; + c.Ea && vc.register(b, { ua: c }, b); return b; }; - sc = (b) => { - rc.unregister(b); + wc = (b) => { + vc.unregister(b); }; - return Cc(a); + return Gc(a); } - function Dc() {} - function Ec(a, b, c) { - if (void 0 === a[b].Ba) { + function Hc() {} + function Ic(a, b, c) { + if (void 0 === a[b].Da) { var d = a[b]; a[b] = function () { - a[b].Ba.hasOwnProperty(arguments.length) || - V( + a[b].Da.hasOwnProperty(arguments.length) || + U( "Function '" + c + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + - a[b].Ba + + a[b].Da + ")!", ); - return a[b].Ba[arguments.length].apply(this, arguments); + return a[b].Da[arguments.length].apply(this, arguments); }; - a[b].Ba = []; - a[b].Ba[d.fb] = d; + a[b].Da = []; + a[b].Da[d.hb] = d; } } - function Fc(a, b, c) { - h.hasOwnProperty(a) - ? ((void 0 === c || (void 0 !== h[a].Ba && void 0 !== h[a].Ba[c])) && - V("Cannot register public name '" + a + "' twice"), - Ec(h, a, a), - h.hasOwnProperty(c) && - V( + function Jc(a, b, c) { + g.hasOwnProperty(a) + ? ((void 0 === c || (void 0 !== g[a].Da && void 0 !== g[a].Da[c])) && + U("Cannot register public name '" + a + "' twice"), + Ic(g, a, a), + g.hasOwnProperty(c) && + U( "Cannot register multiple overloads of a function with the same number of arguments (" + c + ")!", ), - (h[a].Ba[c] = b)) - : ((h[a] = b), void 0 !== c && (h[a].Nc = c)); + (g[a].Da[c] = b)) + : ((g[a] = b), void 0 !== c && (g[a].Pc = c)); } - function Gc(a, b, c, d, e, f, g, l) { + function Kc(a, b, c, d, e, f, h, l) { this.name = a; this.constructor = b; - this.Va = c; - this.Na = d; - this.Ha = e; - this.jc = f; - this.eb = g; - this.hc = l; - this.wc = []; - } - function Hc(a, b, c) { + this.Xa = c; + this.Pa = d; + this.Ja = e; + this.lc = f; + this.gb = h; + this.jc = l; + this.yc = []; + } + function Lc(a, b, c) { for (; b !== c; ) - b.eb || - V( + b.gb || + U( "Expected null or instance of " + c.name + ", got an instance of " + b.name, ), - (a = b.eb(a)), - (b = b.Ha); + (a = b.gb(a)), + (b = b.Ja); return a; } - function Ic(a, b) { + function Mc(a, b) { if (null === b) - return this.wb && V("null is not a valid " + this.name), 0; - b.sa || V('Cannot pass "' + Jc(b) + '" as a ' + this.name); - b.sa.xa || - V("Cannot pass deleted object as a pointer of type " + this.name); - return Hc(b.sa.xa, b.sa.za.wa, this.wa); + return this.yb && U("null is not a valid " + this.name), 0; + b.ua || U('Cannot pass "' + Nc(b) + '" as a ' + this.name); + b.ua.za || + U("Cannot pass deleted object as a pointer of type " + this.name); + return Lc(b.ua.za, b.ua.Ba.ya, this.ya); } - function Kc(a, b) { + function Oc(a, b) { if (null === b) { - this.wb && V("null is not a valid " + this.name); - if (this.lb) { - var c = this.zb(); - null !== a && a.push(this.Na, c); + this.yb && U("null is not a valid " + this.name); + if (this.nb) { + var c = this.Bb(); + null !== a && a.push(this.Pa, c); return c; } return 0; } - b.sa || V('Cannot pass "' + Jc(b) + '" as a ' + this.name); - b.sa.xa || - V("Cannot pass deleted object as a pointer of type " + this.name); - !this.kb && - b.sa.za.kb && - V( + b.ua || U('Cannot pass "' + Nc(b) + '" as a ' + this.name); + b.ua.za || + U("Cannot pass deleted object as a pointer of type " + this.name); + !this.mb && + b.ua.Ba.mb && + U( "Cannot convert argument of type " + - (b.sa.Ga ? b.sa.Ga.name : b.sa.za.name) + + (b.ua.Ia ? b.ua.Ia.name : b.ua.Ba.name) + " to parameter type " + this.name, ); - c = Hc(b.sa.xa, b.sa.za.wa, this.wa); - if (this.lb) + c = Lc(b.ua.za, b.ua.Ba.ya, this.ya); + if (this.nb) switch ( - (void 0 === b.sa.Ca && - V("Passing raw pointer to smart pointer is illegal"), - this.Ec) + (void 0 === b.ua.Ea && + U("Passing raw pointer to smart pointer is illegal"), + this.Gc) ) { case 0: - b.sa.Ga === this - ? (c = b.sa.Ca) - : V( + b.ua.Ia === this + ? (c = b.ua.Ea) + : U( "Cannot convert argument of type " + - (b.sa.Ga ? b.sa.Ga.name : b.sa.za.name) + + (b.ua.Ia ? b.ua.Ia.name : b.ua.Ba.name) + " to parameter type " + this.name, ); break; case 1: - c = b.sa.Ca; + c = b.ua.Ea; break; case 2: - if (b.sa.Ga === this) c = b.sa.Ca; + if (b.ua.Ia === this) c = b.ua.Ea; else { var d = b.clone(); - c = this.xc( + c = this.zc( c, - Lc(function () { + Pc(function () { d["delete"](); }), ); - null !== a && a.push(this.Na, c); + null !== a && a.push(this.Pa, c); } break; default: - V("Unsupporting sharing policy"); + U("Unsupporting sharing policy"); } return c; } - function Mc(a, b) { + function Qc(a, b) { if (null === b) - return this.wb && V("null is not a valid " + this.name), 0; - b.sa || V('Cannot pass "' + Jc(b) + '" as a ' + this.name); - b.sa.xa || - V("Cannot pass deleted object as a pointer of type " + this.name); - b.sa.za.kb && - V( + return this.yb && U("null is not a valid " + this.name), 0; + b.ua || U('Cannot pass "' + Nc(b) + '" as a ' + this.name); + b.ua.za || + U("Cannot pass deleted object as a pointer of type " + this.name); + b.ua.Ba.mb && + U( "Cannot convert argument of type " + - b.sa.za.name + + b.ua.Ba.name + " to parameter type " + this.name, ); - return Hc(b.sa.xa, b.sa.za.wa, this.wa); + return Lc(b.ua.za, b.ua.Ba.ya, this.ya); } - function Nc(a, b, c, d) { + function Rc(a, b, c, d) { this.name = a; - this.wa = b; - this.wb = c; - this.kb = d; - this.lb = !1; - this.Na = this.xc = this.zb = this.Sb = this.Ec = this.vc = void 0; - void 0 !== b.Ha - ? (this.toWireType = Kc) - : ((this.toWireType = d ? Ic : Mc), (this.Ia = null)); - } - function Oc(a, b, c) { - h.hasOwnProperty(a) || kc("Replacing nonexistant public symbol"); - void 0 !== h[a].Ba && void 0 !== c - ? (h[a].Ba[c] = b) - : ((h[a] = b), (h[a].fb = c)); - } - var Pc = []; - function Qc(a) { - var b = Pc[a]; - b || (a >= Pc.length && (Pc.length = a + 1), (Pc[a] = b = wa.get(a))); + this.ya = b; + this.yb = c; + this.mb = d; + this.nb = !1; + this.Pa = this.zc = this.Bb = this.Ub = this.Gc = this.xc = void 0; + void 0 !== b.Ja + ? (this.toWireType = Oc) + : ((this.toWireType = d ? Mc : Qc), (this.Ka = null)); + } + function Sc(a, b, c) { + g.hasOwnProperty(a) || oc("Replacing nonexistant public symbol"); + void 0 !== g[a].Da && void 0 !== c + ? (g[a].Da[c] = b) + : ((g[a] = b), (g[a].hb = c)); + } + var Tc = []; + function Uc(a) { + var b = Tc[a]; + b || (a >= Tc.length && (Tc.length = a + 1), (Tc[a] = b = xa.get(a))); return b; } - function Rc(a, b) { + function Vc(a, b) { var c = []; return function () { c.length = 0; Object.assign(c, arguments); if (a.includes("j")) { - var d = h["dynCall_" + a]; + var d = g["dynCall_" + a]; d = c && c.length ? d.apply(null, [b].concat(c)) : d.call(null, b); - } else d = Qc(b).apply(null, c); + } else d = Uc(b).apply(null, c); return d; }; } function W(a, b) { a = T(a); - var c = a.includes("j") ? Rc(a, b) : Qc(b); + var c = a.includes("j") ? Vc(a, b) : Uc(b); "function" != typeof c && - V("unknown function pointer with signature " + a + ": " + b); + U("unknown function pointer with signature " + a + ": " + b); return c; } - var Sc = void 0; - function Tc(a) { - a = Uc(a); + var Wc = void 0; + function Xc(a) { + a = Yc(a); var b = T(a); X(a); return b; } - function Vc(a, b) { + function Zc(a, b) { function c(f) { - e[f] || ec[f] || (fc[f] ? fc[f].forEach(c) : (d.push(f), (e[f] = !0))); + e[f] || ic[f] || (jc[f] ? jc[f].forEach(c) : (d.push(f), (e[f] = !0))); } var d = [], e = {}; b.forEach(c); - throw new Sc(a + ": " + d.map(Tc).join([", "])); + throw new Wc(a + ": " + d.map(Xc).join([", "])); } - function Wc(a, b) { + function $c(a, b) { for (var c = [], d = 0; d < a; d++) c.push(I[(b + 4 * d) >> 2]); return c; } - function Xc(a, b, c, d, e) { + function ad(a, b, c, d, e) { var f = b.length; 2 > f && - V( + U( "argTypes array size mismatch! Must at least get return value and 'this' types!", ); - var g = null !== b[1] && null !== c, + var h = null !== b[1] && null !== c, l = !1; for (c = 1; c < b.length; ++c) - if (null !== b[c] && void 0 === b[c].Ia) { + if (null !== b[c] && void 0 === b[c].Ka) { l = !0; break; } @@ -1932,7 +1954,7 @@ var createModule = (() => { q = []; return function () { arguments.length !== n && - V( + U( "function " + a + " called with " + @@ -1942,26 +1964,26 @@ var createModule = (() => { " args!", ); q.length = 0; - p.length = g ? 2 : 1; + p.length = h ? 2 : 1; p[0] = e; - if (g) { + if (h) { var k = b[1].toWireType(q, this); p[1] = k; } for (var t = 0; t < n; ++t) (r[t] = b[t + 2].toWireType(q, arguments[t])), p.push(r[t]); t = d.apply(null, p); - if (l) bc(q); + if (l) fc(q); else - for (var x = g ? 1 : 2; x < b.length; x++) { + for (var x = h ? 1 : 2; x < b.length; x++) { var z = 1 === x ? k : r[x - 2]; - null !== b[x].Ia && b[x].Ia(z); + null !== b[x].Ka && b[x].Ka(z); } k = m ? b[0].fromWireType(t) : void 0; return k; }; } - var Yc = [], + var bd = [], Y = [ {}, { value: void 0 }, @@ -1969,14 +1991,14 @@ var createModule = (() => { { value: !0 }, { value: !1 }, ]; - function Zc(a) { - 4 < a && 0 === --Y[a].Bb && ((Y[a] = void 0), Yc.push(a)); + function cd(a) { + 4 < a && 0 === --Y[a].Db && ((Y[a] = void 0), bd.push(a)); } - var $c = (a) => { - a || V("Cannot use deleted val. handle = " + a); + var dd = (a) => { + a || U("Cannot use deleted val. handle = " + a); return Y[a].value; }, - Lc = (a) => { + Pc = (a) => { switch (a) { case void 0: return 1; @@ -1987,33 +2009,33 @@ var createModule = (() => { case !1: return 4; default: - var b = Yc.length ? Yc.pop() : Y.length; - Y[b] = { Bb: 1, value: a }; + var b = bd.length ? bd.pop() : Y.length; + Y[b] = { Db: 1, value: a }; return b; } }; - function Jc(a) { + function Nc(a) { if (null === a) return "null"; var b = typeof a; return "object" === b || "array" === b || "function" === b ? a.toString() : "" + a; } - function ad(a, b) { + function ed(a, b) { switch (b) { case 2: return function (c) { - return this.fromWireType(ta[c >> 2]); + return this.fromWireType(ua[c >> 2]); }; case 3: return function (c) { - return this.fromWireType(ua[c >> 3]); + return this.fromWireType(va[c >> 3]); }; default: throw new TypeError("Unknown float type: " + a); } } - function bd(a, b, c) { + function fd(a, b, c) { switch (b) { case 0: return c @@ -2026,7 +2048,7 @@ var createModule = (() => { case 1: return c ? function (d) { - return sa[d >> 1]; + return ta[d >> 1]; } : function (d) { return D[d >> 1]; @@ -2043,35 +2065,35 @@ var createModule = (() => { throw new TypeError("Unknown integer type: " + a); } } - var cd = + var gd = "undefined" != typeof TextDecoder ? new TextDecoder("utf-16le") : void 0; - function dd(a, b) { + function hd(a, b) { var c = a >> 1; for (var d = c + b / 2; !(c >= d) && D[c]; ) ++c; c <<= 1; - if (32 < c - a && cd) return cd.decode(w.subarray(a, c)); + if (32 < c - a && gd) return gd.decode(w.subarray(a, c)); c = ""; for (d = 0; !(d >= b / 2); ++d) { - var e = sa[(a + 2 * d) >> 1]; + var e = ta[(a + 2 * d) >> 1]; if (0 == e) break; c += String.fromCharCode(e); } return c; } - function ed(a, b, c) { + function jd(a, b, c) { void 0 === c && (c = 2147483647); if (2 > c) return 0; c -= 2; var d = b; c = c < 2 * a.length ? c / 2 : a.length; - for (var e = 0; e < c; ++e) (sa[b >> 1] = a.charCodeAt(e)), (b += 2); - sa[b >> 1] = 0; + for (var e = 0; e < c; ++e) (ta[b >> 1] = a.charCodeAt(e)), (b += 2); + ta[b >> 1] = 0; return b - d; } - function fd(a) { + function kd(a) { return 2 * a.length; } - function gd(a, b) { + function ld(a, b) { for (var c = 0, d = ""; !(c >= b / 4); ) { var e = E[(a + 4 * c) >> 2]; if (0 == e) break; @@ -2083,7 +2105,7 @@ var createModule = (() => { } return d; } - function hd(a, b, c) { + function md(a, b, c) { void 0 === c && (c = 2147483647); if (4 > c) return 0; var d = b; @@ -2091,8 +2113,8 @@ var createModule = (() => { for (var e = 0; e < a.length; ++e) { var f = a.charCodeAt(e); if (55296 <= f && 57343 >= f) { - var g = a.charCodeAt(++e); - f = (65536 + ((f & 1023) << 10)) | (g & 1023); + var h = a.charCodeAt(++e); + f = (65536 + ((f & 1023) << 10)) | (h & 1023); } E[b >> 2] = f; b += 4; @@ -2101,7 +2123,7 @@ var createModule = (() => { E[b >> 2] = 0; return b - d; } - function jd(a) { + function nd(a) { for (var b = 0, c = 0; c < a.length; ++c) { var d = a.charCodeAt(c); 55296 <= d && 57343 >= d && ++c; @@ -2109,18 +2131,18 @@ var createModule = (() => { } return b; } - function kd(a, b) { - var c = ec[a]; - void 0 === c && V(b + " has unknown type " + Tc(a)); + function od(a, b) { + var c = ic[a]; + void 0 === c && U(b + " has unknown type " + Xc(a)); return c; } - var ld = {}; - function md(a) { - var b = ld[a]; + var pd = {}; + function qd(a) { + var b = pd[a]; return void 0 === b ? T(a) : b; } - var nd = []; - function od() { + var rd = []; + function sd() { function a(b) { b.$$$embind_global$$$ = b; var c = @@ -2136,72 +2158,72 @@ var createModule = (() => { if ("object" == typeof $$$embind_global$$$) return $$$embind_global$$$; throw Error("unable to get global object."); } - function pd(a) { - var b = nd.length; - nd.push(a); + function td(a) { + var b = rd.length; + rd.push(a); return b; } - function qd(a, b) { + function ud(a, b) { for (var c = Array(a), d = 0; d < a; ++d) - c[d] = kd(I[(b + 4 * d) >> 2], "parameter " + d); + c[d] = od(I[(b + 4 * d) >> 2], "parameter " + d); return c; } - var rd = []; - function sd(a) { + var vd = []; + function wd(a) { var b = Array(a + 1); return function (c, d, e) { b[0] = c; for (var f = 0; f < a; ++f) { - var g = kd(I[(d + 4 * f) >> 2], "parameter " + f); - b[f + 1] = g.readValueFromPointer(e); - e += g.argPackAdvance; + var h = od(I[(d + 4 * f) >> 2], "parameter " + f); + b[f + 1] = h.readValueFromPointer(e); + e += h.argPackAdvance; } c = new (c.bind.apply(c, b))(); - return Lc(c); + return Pc(c); }; } - var td = {}; - function ud(a) { + var xd = {}; + function yd(a) { return 0 === a % 4 && (0 !== a % 100 || 0 === a % 400); } - var vd = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335], - wd = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; - function xd(a) { - return (ud(a.getFullYear()) ? vd : wd)[a.getMonth()] + a.getDate() - 1; + var zd = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335], + Ad = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; + function Bd(a) { + return (yd(a.getFullYear()) ? zd : Ad)[a.getMonth()] + a.getDate() - 1; } - function yd(a) { - var b = ra(a) + 1, - c = zd(b); + function Cd(a) { + var b = sa(a) + 1, + c = Dd(b); c && A(a, C, c, b); return c; } - var Ad = [], - Bd = {}; + var Ed = [], + Fd = {}; function Z(a, b) { I[a >> 2] = b; I[(a + 4) >> 2] = (b / 4294967296) | 0; } - var Cd; - function Dd(a, b, c, d, e) { + var Gd; + function Hd(a, b, c, d, e) { function f() { var B = 0, - U = 0; + V = 0; y.response && F && 0 === I[(a + 12) >> 2] && - (U = y.response.byteLength); - 0 < U && ((B = zd(U)), w.set(new Uint8Array(y.response), B)); + (V = y.response.byteLength); + 0 < V && ((B = Dd(V)), w.set(new Uint8Array(y.response), B)); I[(a + 12) >> 2] = B; - Z(a + 16, U); + Z(a + 16, V); Z(a + 24, 0); (B = y.response ? y.response.byteLength : 0) && Z(a + 32, B); D[(a + 40) >> 1] = y.readyState; D[(a + 42) >> 1] = y.status; y.statusText && A(y.statusText, w, a + 44, 64); } - var g = I[(a + 8) >> 2]; - if (g) { - var l = v(g), + var h = I[(a + 8) >> 2]; + if (h) { + var l = v(h), m = a + 112, n = v(m); n || (n = "GET"); @@ -2210,7 +2232,7 @@ var createModule = (() => { q = !!I[(m + 60) >> 2], k = I[(m + 68) >> 2], t = I[(m + 72) >> 2]; - g = I[(m + 76) >> 2]; + h = I[(m + 76) >> 2]; var x = I[(m + 80) >> 2], z = I[(m + 84) >> 2]; m = I[(m + 88) >> 2]; @@ -2223,47 +2245,47 @@ var createModule = (() => { y.withCredentials = q; y.open(n, l, !r, k, t); r || (y.timeout = p); - y.Qc = l; + y.Sc = l; y.responseType = "arraybuffer"; x && ((l = v(x)), y.overrideMimeType(l)); - if (g) + if (h) for (;;) { - n = I[g >> 2]; + n = I[h >> 2]; if (!n) break; - l = I[(g + 4) >> 2]; + l = I[(h + 4) >> 2]; if (!l) break; - g += 8; + h += 8; n = v(n); l = v(l); y.setRequestHeader(n, l); } var M = I[(a + 0) >> 2]; - Bd[M] = y; - g = z && m ? w.slice(z, z + m) : null; + Fd[M] = y; + h = z && m ? w.slice(z, z + m) : null; y.onload = (B) => { - M in Bd && + M in Fd && (f(), 200 <= y.status && 300 > y.status ? b && b(a, y, B) : c && c(a, y, B)); }; y.onerror = (B) => { - M in Bd && (f(), c && c(a, y, B)); + M in Fd && (f(), c && c(a, y, B)); }; y.ontimeout = (B) => { - M in Bd && c && c(a, y, B); + M in Fd && c && c(a, y, B); }; y.onprogress = (B) => { - if (M in Bd) { - var U = F && G && y.response ? y.response.byteLength : 0, + if (M in Fd) { + var V = F && G && y.response ? y.response.byteLength : 0, H = 0; - 0 < U && + 0 < V && F && G && - ((H = zd(U)), w.set(new Uint8Array(y.response), H)); + ((H = Dd(V)), w.set(new Uint8Array(y.response), H)); I[(a + 12) >> 2] = H; - Z(a + 16, U); - Z(a + 24, B.loaded - U); + Z(a + 16, V); + Z(a + 24, B.loaded - V); Z(a + 32, B.total); D[(a + 40) >> 1] = y.readyState; 3 <= y.readyState && @@ -2277,34 +2299,58 @@ var createModule = (() => { } }; y.onreadystatechange = (B) => { - M in Bd && - ((D[(a + 40) >> 1] = y.readyState), - 2 <= y.readyState && (D[(a + 42) >> 1] = y.status), - e && e(a, y, B)); + M in Fd + ? ((D[(a + 40) >> 1] = y.readyState), + 2 <= y.readyState && (D[(a + 42) >> 1] = y.status), + e && e(a, y, B)) + : --Da; }; try { - y.send(g); + y.send(h); } catch (B) { c && c(a, y, B); } } else c(a, 0, "no url specified!"); } - function Ed(a, b, c, d) { - var e = Cd; + function Id(a) { + a instanceof Ua || "unwind" == a || ea(1, a); + } + function Jd(a) { + pa = a; + if (!(noExitRuntime || 0 < Da)) { + Kd(); + Va(Aa); + Sb = !1; + Ld(0); + for (var b = 0; b < qb.length; b++) { + var c = qb[b]; + c && Ob(c); + } + Ca = !0; + } + pa = a; + if (!(noExitRuntime || 0 < Da)) { + if (g.onExit) g.onExit(a); + oa = !0; + } + ea(a, new Ua(a)); + } + function Md(a, b, c, d) { + var e = Gd; if (e) { var f = I[(a + 112 + 64) >> 2]; f || (f = I[(a + 8) >> 2]); - var g = v(f); + var h = v(f); try { var l = e .transaction(["FILES"], "readwrite") .objectStore("FILES") - .put(b, g); + .put(b, h); l.onsuccess = () => { D[(a + 40) >> 1] = 4; D[(a + 42) >> 1] = 200; A("OK", w, a + 44, 64); - c(a, 0, g); + c(a, 0, h); }; l.onerror = (m) => { D[(a + 40) >> 1] = 4; @@ -2317,8 +2363,8 @@ var createModule = (() => { } } else d(a, 0, "IndexedDB not available!"); } - function Fd(a, b, c) { - var d = Cd; + function Nd(a, b, c) { + var d = Gd; if (d) { var e = I[(a + 112 + 64) >> 2]; e || (e = I[(a + 8) >> 2]); @@ -2328,12 +2374,12 @@ var createModule = (() => { .transaction(["FILES"], "readonly") .objectStore("FILES") .get(e); - f.onsuccess = (g) => { - if (g.target.result) { - g = g.target.result; - var l = g.byteLength || g.length, - m = zd(l); - w.set(new Uint8Array(g), m); + f.onsuccess = (h) => { + if (h.target.result) { + h = h.target.result; + var l = h.byteLength || h.length, + m = Dd(l); + w.set(new Uint8Array(h), m); I[(a + 12) >> 2] = m; Z(a + 16, l); Z(a + 24, 0); @@ -2341,26 +2387,26 @@ var createModule = (() => { D[(a + 40) >> 1] = 4; D[(a + 42) >> 1] = 200; A("OK", w, a + 44, 64); - b(a, 0, g); + b(a, 0, h); } else (D[(a + 40) >> 1] = 4), (D[(a + 42) >> 1] = 404), A("Not Found", w, a + 44, 64), c(a, 0, "no data"); }; - f.onerror = (g) => { + f.onerror = (h) => { D[(a + 40) >> 1] = 4; D[(a + 42) >> 1] = 404; A("Not Found", w, a + 44, 64); - c(a, 0, g); + c(a, 0, h); }; - } catch (g) { - c(a, 0, g); + } catch (h) { + c(a, 0, h); } } else c(a, 0, "IndexedDB not available!"); } - function Gd(a, b, c) { - var d = Cd; + function Od(a, b, c) { + var d = Gd; if (d) { var e = I[(a + 112 + 64) >> 2]; e || (e = I[(a + 8) >> 2]); @@ -2370,8 +2416,8 @@ var createModule = (() => { .transaction(["FILES"], "readwrite") .objectStore("FILES") .delete(e); - f.onsuccess = (g) => { - g = g.target.result; + f.onsuccess = (h) => { + h = h.target.result; I[(a + 12) >> 2] = 0; Z(a + 16, 0); Z(a + 24, 0); @@ -2379,22 +2425,22 @@ var createModule = (() => { D[(a + 40) >> 1] = 4; D[(a + 42) >> 1] = 200; A("OK", w, a + 44, 64); - b(a, 0, g); + b(a, 0, h); }; - f.onerror = (g) => { + f.onerror = (h) => { D[(a + 40) >> 1] = 4; D[(a + 42) >> 1] = 404; A("Not Found", w, a + 44, 64); - c(a, 0, g); + c(a, 0, h); }; - } catch (g) { - c(a, 0, g); + } catch (h) { + c(a, 0, h); } } else c(a, 0, "IndexedDB not available!"); } - var Hd = {}; - function Id() { - if (!Jd) { + var Pd = {}; + function Qd() { + if (!Rd) { var a = { USER: "web_user", LOGNAME: "web_user", @@ -2411,22 +2457,22 @@ var createModule = (() => { _: da || "./this.program", }, b; - for (b in Hd) void 0 === Hd[b] ? delete a[b] : (a[b] = Hd[b]); + for (b in Pd) void 0 === Pd[b] ? delete a[b] : (a[b] = Pd[b]); var c = []; for (b in a) c.push(b + "=" + a[b]); - Jd = c; + Rd = c; } - return Jd; + return Rd; } - var Jd; - function Kd(a, b) { - Kd.Rb || (Kd.Rb = Va()); - for (var c = 0; c < b; c++) C[(a + c) >> 0] = Kd.Rb(); + var Rd; + function Sd(a, b) { + Sd.Tb || (Sd.Tb = Za()); + for (var c = 0; c < b; c++) C[(a + c) >> 0] = Sd.Tb(); return 0; } - var Ld = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], - Md = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - function Nd(a, b, c, d) { + var Td = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + Ud = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + function Vd(a, b, c, d) { function e(k, t, x) { for (k = "number" == typeof k ? k.toString() : k || ""; k.length < t; ) k = x[0] + k; @@ -2435,7 +2481,7 @@ var createModule = (() => { function f(k, t) { return e(k, t, "0"); } - function g(k, t) { + function h(k, t) { function x(F) { return 0 > F ? -1 : 0 < F ? 1 : 0; } @@ -2464,10 +2510,10 @@ var createModule = (() => { } } function m(k) { - var t = k.Ra; - for (k = new Date(new Date(k.Sa + 1900, 0, 1).getTime()); 0 < t; ) { + var t = k.Ta; + for (k = new Date(new Date(k.Ua + 1900, 0, 1).getTime()); 0 < t; ) { var x = k.getMonth(), - z = (ud(k.getFullYear()) ? Ld : Md)[x]; + z = (yd(k.getFullYear()) ? Td : Ud)[x]; if (t > z - k.getDate()) (t -= z - k.getDate() + 1), k.setDate(1), @@ -2482,25 +2528,25 @@ var createModule = (() => { x = new Date(k.getFullYear() + 1, 0, 4); t = l(new Date(k.getFullYear(), 0, 4)); x = l(x); - return 0 >= g(t, k) - ? 0 >= g(x, k) + return 0 >= h(t, k) + ? 0 >= h(x, k) ? k.getFullYear() + 1 : k.getFullYear() : k.getFullYear() - 1; } var n = E[(d + 40) >> 2]; d = { - Hc: E[d >> 2], - Gc: E[(d + 4) >> 2], - qb: E[(d + 8) >> 2], - Db: E[(d + 12) >> 2], - rb: E[(d + 16) >> 2], - Sa: E[(d + 20) >> 2], - La: E[(d + 24) >> 2], - Ra: E[(d + 28) >> 2], - Pc: E[(d + 32) >> 2], - Fc: E[(d + 36) >> 2], - Ic: n ? v(n) : "", + Jc: E[d >> 2], + Ic: E[(d + 4) >> 2], + sb: E[(d + 8) >> 2], + Fb: E[(d + 12) >> 2], + tb: E[(d + 16) >> 2], + Ua: E[(d + 20) >> 2], + Na: E[(d + 24) >> 2], + Ta: E[(d + 28) >> 2], + Rc: E[(d + 32) >> 2], + Hc: E[(d + 36) >> 2], + Kc: n ? v(n) : "", }; c = v(c); n = { @@ -2543,25 +2589,25 @@ var createModule = (() => { ); n = { "%a": function (k) { - return p[k.La].substring(0, 3); + return p[k.Na].substring(0, 3); }, "%A": function (k) { - return p[k.La]; + return p[k.Na]; }, "%b": function (k) { - return q[k.rb].substring(0, 3); + return q[k.tb].substring(0, 3); }, "%B": function (k) { - return q[k.rb]; + return q[k.tb]; }, "%C": function (k) { - return f(((k.Sa + 1900) / 100) | 0, 2); + return f(((k.Ua + 1900) / 100) | 0, 2); }, "%d": function (k) { - return f(k.Db, 2); + return f(k.Fb, 2); }, "%e": function (k) { - return e(k.Db, 2, " "); + return e(k.Fb, 2, " "); }, "%g": function (k) { return m(k).toString().substring(2); @@ -2570,73 +2616,73 @@ var createModule = (() => { return m(k); }, "%H": function (k) { - return f(k.qb, 2); + return f(k.sb, 2); }, "%I": function (k) { - k = k.qb; + k = k.sb; 0 == k ? (k = 12) : 12 < k && (k -= 12); return f(k, 2); }, "%j": function (k) { for ( var t = 0, x = 0; - x <= k.rb - 1; - t += (ud(k.Sa + 1900) ? Ld : Md)[x++] + x <= k.tb - 1; + t += (yd(k.Ua + 1900) ? Td : Ud)[x++] ); - return f(k.Db + t, 3); + return f(k.Fb + t, 3); }, "%m": function (k) { - return f(k.rb + 1, 2); + return f(k.tb + 1, 2); }, "%M": function (k) { - return f(k.Gc, 2); + return f(k.Ic, 2); }, "%n": function () { return "\n"; }, "%p": function (k) { - return 0 <= k.qb && 12 > k.qb ? "AM" : "PM"; + return 0 <= k.sb && 12 > k.sb ? "AM" : "PM"; }, "%S": function (k) { - return f(k.Hc, 2); + return f(k.Jc, 2); }, "%t": function () { return "\t"; }, "%u": function (k) { - return k.La || 7; + return k.Na || 7; }, "%U": function (k) { - return f(Math.floor((k.Ra + 7 - k.La) / 7), 2); + return f(Math.floor((k.Ta + 7 - k.Na) / 7), 2); }, "%V": function (k) { - var t = Math.floor((k.Ra + 7 - ((k.La + 6) % 7)) / 7); - 2 >= (k.La + 371 - k.Ra - 2) % 7 && t++; + var t = Math.floor((k.Ta + 7 - ((k.Na + 6) % 7)) / 7); + 2 >= (k.Na + 371 - k.Ta - 2) % 7 && t++; if (t) 53 == t && - ((x = (k.La + 371 - k.Ra) % 7), - 4 == x || (3 == x && ud(k.Sa)) || (t = 1)); + ((x = (k.Na + 371 - k.Ta) % 7), + 4 == x || (3 == x && yd(k.Ua)) || (t = 1)); else { t = 52; - var x = (k.La + 7 - k.Ra - 1) % 7; - (4 == x || (5 == x && ud((k.Sa % 400) - 1))) && t++; + var x = (k.Na + 7 - k.Ta - 1) % 7; + (4 == x || (5 == x && yd((k.Ua % 400) - 1))) && t++; } return f(t, 2); }, "%w": function (k) { - return k.La; + return k.Na; }, "%W": function (k) { - return f(Math.floor((k.Ra + 7 - ((k.La + 6) % 7)) / 7), 2); + return f(Math.floor((k.Ta + 7 - ((k.Na + 6) % 7)) / 7), 2); }, "%y": function (k) { - return (k.Sa + 1900).toString().substring(2); + return (k.Ua + 1900).toString().substring(2); }, "%Y": function (k) { - return k.Sa + 1900; + return k.Ua + 1900; }, "%z": function (k) { - k = k.Fc; + k = k.Hc; var t = 0 <= k; k = Math.abs(k) / 60; return ( @@ -2645,7 +2691,7 @@ var createModule = (() => { ); }, "%Z": function (k) { - return k.Ic; + return k.Kc; }, "%%": function () { return "%"; @@ -2655,24 +2701,24 @@ var createModule = (() => { for (r in n) c.includes(r) && (c = c.replace(new RegExp(r, "g"), n[r](d))); c = c.replace(/\0\0/g, "%"); - r = Xa(c, !1); + r = ab(c, !1); if (r.length > b) return 0; C.set(r, a); return r.length - 1; } - function ub(a, b, c, d) { + function yb(a, b, c, d) { a || (a = this); this.parent = a; - this.Ma = a.Ma; - this.$a = null; - this.id = nb++; + this.Oa = a.Oa; + this.bb = null; + this.id = rb++; this.name = b; this.mode = c; - this.ua = {}; - this.va = {}; - this.bb = d; + this.wa = {}; + this.xa = {}; + this.eb = d; } - Object.defineProperties(ub.prototype, { + Object.defineProperties(yb.prototype, { read: { get: function () { return 365 === (this.mode & 365); @@ -2689,32 +2735,32 @@ var createModule = (() => { a ? (this.mode |= 146) : (this.mode &= -147); }, }, - qc: { + sc: { get: function () { return 16384 === (this.mode & 61440); }, }, - pc: { + rc: { get: function () { return 8192 === (this.mode & 61440); }, }, }); - Nb(); - ob = Array(4096); - Bb(O, "/"); + Rb(); + sb = Array(4096); + Fb(O, "/"); Q("/tmp", 16895, 0); Q("/home", 16895, 0); Q("/home/web_user", 16895, 0); (() => { Q("/dev", 16895, 0); - $a(259, { read: () => 0, write: (b, c, d, e) => e }); - Cb("/dev/null", 259); - Za(1280, bb); - Za(1536, cb); - Cb("/dev/tty", 1280); - Cb("/dev/tty1", 1536); - var a = Va(); + db(259, { read: () => 0, write: (b, c, d, e) => e }); + Gb("/dev/null", 259); + cb(1280, fb); + cb(1536, gb); + Gb("/dev/tty", 1280); + Gb("/dev/tty1", 1536); + var a = Za(); R("/dev", "random", a); R("/dev", "urandom", a); Q("/dev/shm", 16895, 0); @@ -2724,18 +2770,18 @@ var createModule = (() => { Q("/proc", 16895, 0); var a = Q("/proc/self", 16895, 0); Q("/proc/self/fd", 16895, 0); - Bb( + Fb( { - Ma: () => { - var b = gb(a, "fd", 16895, 73); - b.ua = { - Ya: (c, d) => { - var e = mb[+d]; + Oa: () => { + var b = kb(a, "fd", 16895, 73); + b.wa = { + $a: (c, d) => { + var e = qb[+d]; if (!e) throw new N(8); c = { parent: null, - Ma: { Pb: "fake" }, - ua: { cb: () => e.path }, + Oa: { Rb: "fake" }, + wa: { fb: () => e.path }, }; return (c.parent = c); }, @@ -2746,135 +2792,135 @@ var createModule = (() => { "/proc/self/fd", ); })(); - var Vb; - h.FS_createPath = Qb; - h.FS_createDataFile = Sb; - h.FS_createPreloadedFile = Wb; - h.FS_unlink = Eb; - h.FS_createLazyFile = Ub; - h.FS_createDevice = R; - jc = h.InternalError = ic("InternalError"); - for (var Od = Array(256), Pd = 0; 256 > Pd; ++Pd) - Od[Pd] = String.fromCharCode(Pd); - oc = Od; - pc = h.BindingError = ic("BindingError"); - Dc.prototype.isAliasOf = function (a) { - if (!(this instanceof Dc && a instanceof Dc)) return !1; - var b = this.sa.za.wa, - c = this.sa.xa, - d = a.sa.za.wa; - for (a = a.sa.xa; b.Ha; ) (c = b.eb(c)), (b = b.Ha); - for (; d.Ha; ) (a = d.eb(a)), (d = d.Ha); + var Zb; + g.FS_createPath = Ub; + g.FS_createDataFile = Wb; + g.FS_createPreloadedFile = $b; + g.FS_unlink = Ib; + g.FS_createLazyFile = Yb; + g.FS_createDevice = R; + nc = g.InternalError = mc("InternalError"); + for (var Wd = Array(256), Xd = 0; 256 > Xd; ++Xd) + Wd[Xd] = String.fromCharCode(Xd); + sc = Wd; + tc = g.BindingError = mc("BindingError"); + Hc.prototype.isAliasOf = function (a) { + if (!(this instanceof Hc && a instanceof Hc)) return !1; + var b = this.ua.Ba.ya, + c = this.ua.za, + d = a.ua.Ba.ya; + for (a = a.ua.za; b.Ja; ) (c = b.gb(c)), (b = b.Ja); + for (; d.Ja; ) (a = d.gb(a)), (d = d.Ja); return b === d && c === a; }; - Dc.prototype.clone = function () { - this.sa.xa || qc(this); - if (this.sa.ab) return (this.sa.count.value += 1), this; - var a = Cc, + Hc.prototype.clone = function () { + this.ua.za || uc(this); + if (this.ua.cb) return (this.ua.count.value += 1), this; + var a = Gc, b = Object, c = b.create, d = Object.getPrototypeOf(this), - e = this.sa; + e = this.ua; a = a( c.call(b, d, { - sa: { + ua: { value: { count: e.count, - Ua: e.Ua, - ab: e.ab, - xa: e.xa, + Wa: e.Wa, + cb: e.cb, za: e.za, - Ca: e.Ca, - Ga: e.Ga, + Ba: e.Ba, + Ea: e.Ea, + Ia: e.Ia, }, }, }), ); - a.sa.count.value += 1; - a.sa.Ua = !1; + a.ua.count.value += 1; + a.ua.Wa = !1; return a; }; - Dc.prototype["delete"] = function () { - this.sa.xa || qc(this); - this.sa.Ua && !this.sa.ab && V("Object already scheduled for deletion"); - sc(this); - tc(this.sa); - this.sa.ab || ((this.sa.Ca = void 0), (this.sa.xa = void 0)); + Hc.prototype["delete"] = function () { + this.ua.za || uc(this); + this.ua.Wa && !this.ua.cb && U("Object already scheduled for deletion"); + wc(this); + xc(this.ua); + this.ua.cb || ((this.ua.Ea = void 0), (this.ua.za = void 0)); }; - Dc.prototype.isDeleted = function () { - return !this.sa.xa; + Hc.prototype.isDeleted = function () { + return !this.ua.za; }; - Dc.prototype.deleteLater = function () { - this.sa.xa || qc(this); - this.sa.Ua && !this.sa.ab && V("Object already scheduled for deletion"); - wc.push(this); - 1 === wc.length && yc && yc(xc); - this.sa.Ua = !0; + Hc.prototype.deleteLater = function () { + this.ua.za || uc(this); + this.ua.Wa && !this.ua.cb && U("Object already scheduled for deletion"); + Ac.push(this); + 1 === Ac.length && Cc && Cc(Bc); + this.ua.Wa = !0; return this; }; - h.getInheritedInstanceCount = function () { - return Object.keys(zc).length; + g.getInheritedInstanceCount = function () { + return Object.keys(Dc).length; }; - h.getLiveInheritedInstances = function () { + g.getLiveInheritedInstances = function () { var a = [], b; - for (b in zc) zc.hasOwnProperty(b) && a.push(zc[b]); + for (b in Dc) Dc.hasOwnProperty(b) && a.push(Dc[b]); return a; }; - h.flushPendingDeletes = xc; - h.setDelayFunction = function (a) { - yc = a; - wc.length && yc && yc(xc); + g.flushPendingDeletes = Bc; + g.setDelayFunction = function (a) { + Cc = a; + Ac.length && Cc && Cc(Bc); }; - Nc.prototype.kc = function (a) { - this.Sb && (a = this.Sb(a)); + Rc.prototype.mc = function (a) { + this.Ub && (a = this.Ub(a)); return a; }; - Nc.prototype.Jb = function (a) { - this.Na && this.Na(a); + Rc.prototype.Lb = function (a) { + this.Pa && this.Pa(a); }; - Nc.prototype.argPackAdvance = 8; - Nc.prototype.readValueFromPointer = cc; - Nc.prototype.deleteObject = function (a) { + Rc.prototype.argPackAdvance = 8; + Rc.prototype.readValueFromPointer = gc; + Rc.prototype.deleteObject = function (a) { if (null !== a) a["delete"](); }; - Nc.prototype.fromWireType = function (a) { + Rc.prototype.fromWireType = function (a) { function b() { - return this.lb - ? Bc(this.wa.Va, { za: this.vc, xa: c, Ga: this, Ca: a }) - : Bc(this.wa.Va, { za: this, xa: a }); + return this.nb + ? Fc(this.ya.Xa, { Ba: this.xc, za: c, Ia: this, Ea: a }) + : Fc(this.ya.Xa, { Ba: this, za: a }); } - var c = this.kc(a); - if (!c) return this.Jb(a), null; - var d = Ac(this.wa, c); + var c = this.mc(a); + if (!c) return this.Lb(a), null; + var d = Ec(this.ya, c); if (void 0 !== d) { - if (0 === d.sa.count.value) - return (d.sa.xa = c), (d.sa.Ca = a), d.clone(); + if (0 === d.ua.count.value) + return (d.ua.za = c), (d.ua.Ea = a), d.clone(); d = d.clone(); - this.Jb(a); + this.Lb(a); return d; } - d = this.wa.jc(c); - d = vc[d]; + d = this.ya.lc(c); + d = zc[d]; if (!d) return b.call(this); - d = this.kb ? d.cc : d.pointerType; - var e = uc(c, this.wa, d.wa); + d = this.mb ? d.ec : d.pointerType; + var e = yc(c, this.ya, d.ya); return null === e ? b.call(this) - : this.lb - ? Bc(d.wa.Va, { za: d, xa: e, Ga: this, Ca: a }) - : Bc(d.wa.Va, { za: d, xa: e }); + : this.nb + ? Fc(d.ya.Xa, { Ba: d, za: e, Ia: this, Ea: a }) + : Fc(d.ya.Xa, { Ba: d, za: e }); }; - Sc = h.UnboundTypeError = ic("UnboundTypeError"); - h.count_emval_handles = function () { + Wc = g.UnboundTypeError = mc("UnboundTypeError"); + g.count_emval_handles = function () { for (var a = 0, b = 5; b < Y.length; ++b) void 0 !== Y[b] && ++a; return a; }; - h.get_first_emval = function () { + g.get_first_emval = function () { for (var a = 5; a < Y.length; ++a) if (void 0 !== Y[a]) return Y[a]; return null; }; - Ea("library_fetch_init"); + Ia("library_fetch_init"); (function (a, b) { try { var c = indexedDB.open("emscripten_filesystem", 1); @@ -2891,80 +2937,80 @@ var createModule = (() => { c.onerror = (d) => b(d); })( (a) => { - Cd = a; - Fa("library_fetch_init"); + Gd = a; + Ja("library_fetch_init"); }, () => { - Cd = !1; - Fa("library_fetch_init"); + Gd = !1; + Ja("library_fetch_init"); }, ); - var Qd = { + var Yd = { M: function (a, b) { try { - var c = Yb(a); - return Zb(Fb, c.path, b); + var c = bc(a); + return cc(Jb, c.path, b); } catch (d) { if ("undefined" == typeof S || "ErrnoError" !== d.name) throw d; - return -d.Fa; + return -d.Ha; } }, K: function (a, b, c, d) { try { b = v(b); var e = d & 256; - b = Xb(a, b, d & 4096); - return Zb(e ? Gb : Fb, b, c); + b = ac(a, b, d & 4096); + return cc(e ? Kb : Jb, b, c); } catch (f) { if ("undefined" == typeof S || "ErrnoError" !== f.name) throw f; - return -f.Fa; + return -f.Ha; } }, N: function (a, b, c, d) { - $b = d; + dc = d; try { b = v(b); - b = Xb(a, b); + b = ac(a, b); if (d) { - $b += 4; - var e = E[($b - 4) >> 2]; + dc += 4; + var e = E[(dc - 4) >> 2]; } else e = 0; - return Jb(b, c, e).Pa; + return Nb(b, c, e).Ra; } catch (f) { if ("undefined" == typeof S || "ErrnoError" !== f.name) throw f; - return -f.Fa; + return -f.Ha; } }, L: function (a, b) { try { - return (a = v(a)), Zb(Fb, a, b); + return (a = v(a)), cc(Jb, a, b); } catch (c) { if ("undefined" == typeof S || "ErrnoError" !== c.name) throw c; - return -c.Fa; + return -c.Ha; } }, - f: function (a) { - var b = ac[a]; - delete ac[a]; - var c = b.zb, - d = b.Na, - e = b.Lb, - f = e.map((g) => g.mc).concat(e.map((g) => g.Cc)); - lc([a], f, (g) => { + e: function (a) { + var b = ec[a]; + delete ec[a]; + var c = b.Bb, + d = b.Pa, + e = b.Nb, + f = e.map((h) => h.oc).concat(e.map((h) => h.Ec)); + pc([a], f, (h) => { var l = {}; e.forEach((m, n) => { - var r = g[n], - p = m.jb, - q = m.lc, - k = g[n + e.length], - t = m.Bc, - x = m.Dc; - l[m.ic] = { + var r = h[n], + p = m.lb, + q = m.nc, + k = h[n + e.length], + t = m.Dc, + x = m.Fc; + l[m.kc] = { read: (z) => r.fromWireType(p(q, z)), write: (z, F) => { var G = []; t(x, z, k.toWireType(G, F)); - bc(G); + fc(G); }, }; }); @@ -2988,130 +3034,130 @@ var createModule = (() => { return p; }, argPackAdvance: 8, - readValueFromPointer: cc, - Ia: d, + readValueFromPointer: gc, + Ka: d, }, ]; }); }, B: function () {}, V: function (a, b, c, d, e) { - var f = nc(c); + var f = rc(c); b = T(b); - mc(a, { + qc(a, { name: b, - fromWireType: function (g) { - return !!g; + fromWireType: function (h) { + return !!h; }, - toWireType: function (g, l) { + toWireType: function (h, l) { return l ? d : e; }, argPackAdvance: 8, - readValueFromPointer: function (g) { + readValueFromPointer: function (h) { if (1 === c) var l = C; - else if (2 === c) l = sa; + else if (2 === c) l = ta; else if (4 === c) l = E; else throw new TypeError("Unknown boolean type size: " + b); - return this.fromWireType(l[g >> f]); + return this.fromWireType(l[h >> f]); }, - Ia: null, + Ka: null, }); }, - z: function (a, b, c, d, e, f, g, l, m, n, r, p, q) { + z: function (a, b, c, d, e, f, h, l, m, n, r, p, q) { r = T(r); f = W(e, f); - l && (l = W(g, l)); + l && (l = W(h, l)); n && (n = W(m, n)); q = W(p, q); - var k = gc(r); - Fc(k, function () { - Vc("Cannot construct " + r + " due to unbound types", [d]); + var k = kc(r); + Jc(k, function () { + Zc("Cannot construct " + r + " due to unbound types", [d]); }); - lc([a, b, c], d ? [d] : [], function (t) { + pc([a, b, c], d ? [d] : [], function (t) { t = t[0]; if (d) { - var x = t.wa; - var z = x.Va; - } else z = Dc.prototype; - t = hc(k, function () { + var x = t.ya; + var z = x.Xa; + } else z = Hc.prototype; + t = lc(k, function () { if (Object.getPrototypeOf(this) !== F) - throw new pc("Use 'new' to construct " + r); - if (void 0 === G.Oa) - throw new pc(r + " has no accessible constructor"); - var M = G.Oa[arguments.length]; + throw new tc("Use 'new' to construct " + r); + if (void 0 === G.Qa) + throw new tc(r + " has no accessible constructor"); + var M = G.Qa[arguments.length]; if (void 0 === M) - throw new pc( + throw new tc( "Tried to invoke ctor of " + r + " with invalid number of parameters (" + arguments.length + ") - expected (" + - Object.keys(G.Oa).toString() + + Object.keys(G.Qa).toString() + ") parameters instead!", ); return M.apply(this, arguments); }); var F = Object.create(z, { constructor: { value: t } }); t.prototype = F; - var G = new Gc(r, t, F, q, x, f, l, n); - x = new Nc(r, G, !0, !1); - z = new Nc(r + "*", G, !1, !1); - var y = new Nc(r + " const*", G, !1, !0); - vc[a] = { pointerType: z, cc: y }; - Oc(k, t); + var G = new Kc(r, t, F, q, x, f, l, n); + x = new Rc(r, G, !0, !1); + z = new Rc(r + "*", G, !1, !1); + var y = new Rc(r + " const*", G, !1, !0); + zc[a] = { pointerType: z, ec: y }; + Sc(k, t); return [x, z, y]; }); }, da: function (a, b, c, d, e, f) { 0 < b || ma(); - var g = Wc(b, c); + var h = $c(b, c); e = W(d, e); - lc([], [a], function (l) { + pc([], [a], function (l) { l = l[0]; var m = "constructor " + l.name; - void 0 === l.wa.Oa && (l.wa.Oa = []); - if (void 0 !== l.wa.Oa[b - 1]) - throw new pc( + void 0 === l.ya.Qa && (l.ya.Qa = []); + if (void 0 !== l.ya.Qa[b - 1]) + throw new tc( "Cannot register multiple constructors with identical number of parameters (" + (b - 1) + ") for class '" + l.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!", ); - l.wa.Oa[b - 1] = () => { - Vc("Cannot construct " + l.name + " due to unbound types", g); + l.ya.Qa[b - 1] = () => { + Zc("Cannot construct " + l.name + " due to unbound types", h); }; - lc([], g, function (n) { + pc([], h, function (n) { n.splice(1, 0, null); - l.wa.Oa[b - 1] = Xc(m, n, null, e, f); + l.ya.Qa[b - 1] = ad(m, n, null, e, f); return []; }); return []; }); }, - i: function (a, b, c, d, e, f, g, l) { - var m = Wc(c, d); + i: function (a, b, c, d, e, f, h, l) { + var m = $c(c, d); b = T(b); f = W(e, f); - lc([], [a], function (n) { + pc([], [a], function (n) { function r() { - Vc("Cannot call " + p + " due to unbound types", m); + Zc("Cannot call " + p + " due to unbound types", m); } n = n[0]; var p = n.name + "." + b; b.startsWith("@@") && (b = Symbol[b.substring(2)]); - l && n.wa.wc.push(b); - var q = n.wa.Va, + l && n.ya.yc.push(b); + var q = n.ya.Xa, k = q[b]; void 0 === k || - (void 0 === k.Ba && k.className !== n.name && k.fb === c - 2) - ? ((r.fb = c - 2), (r.className = n.name), (q[b] = r)) - : (Ec(q, b, p), (q[b].Ba[c - 2] = r)); - lc([], m, function (t) { - t = Xc(p, t, n, f, g); - void 0 === q[b].Ba - ? ((t.fb = c - 2), (q[b] = t)) - : (q[b].Ba[c - 2] = t); + (void 0 === k.Da && k.className !== n.name && k.hb === c - 2) + ? ((r.hb = c - 2), (r.className = n.name), (q[b] = r)) + : (Ic(q, b, p), (q[b].Da[c - 2] = r)); + pc([], m, function (t) { + t = ad(p, t, n, f, h); + void 0 === q[b].Da + ? ((t.hb = c - 2), (q[b] = t)) + : (q[b].Da[c - 2] = t); return []; }); return []; @@ -3119,25 +3165,25 @@ var createModule = (() => { }, U: function (a, b) { b = T(b); - mc(a, { + qc(a, { name: b, fromWireType: function (c) { - var d = $c(c); - Zc(c); + var d = dd(c); + cd(c); return d; }, toWireType: function (c, d) { - return Lc(d); + return Pc(d); }, argPackAdvance: 8, - readValueFromPointer: cc, - Ia: null, + readValueFromPointer: gc, + Ka: null, }); }, u: function (a, b, c) { - c = nc(c); + c = rc(c); b = T(b); - mc(a, { + qc(a, { name: b, fromWireType: function (d) { return d; @@ -3146,34 +3192,34 @@ var createModule = (() => { return e; }, argPackAdvance: 8, - readValueFromPointer: ad(b, c), - Ia: null, + readValueFromPointer: ed(b, c), + Ka: null, }); }, o: function (a, b, c, d, e, f) { - var g = Wc(b, c); + var h = $c(b, c); a = T(a); e = W(d, e); - Fc( + Jc( a, function () { - Vc("Cannot call " + a + " due to unbound types", g); + Zc("Cannot call " + a + " due to unbound types", h); }, b - 1, ); - lc([], g, function (l) { - Oc(a, Xc(a, [l[0], null].concat(l.slice(1)), null, e, f), b - 1); + pc([], h, function (l) { + Sc(a, ad(a, [l[0], null].concat(l.slice(1)), null, e, f), b - 1); return []; }); }, - e: function (a, b, c, d, e) { + f: function (a, b, c, d, e) { b = T(b); -1 === e && (e = 4294967295); - e = nc(c); + e = rc(c); var f = (l) => l; if (0 === d) { - var g = 32 - 8 * c; - f = (l) => (l << g) >>> g; + var h = 32 - 8 * c; + f = (l) => (l << h) >>> h; } c = b.includes("unsigned") ? function (l, m) { @@ -3182,20 +3228,20 @@ var createModule = (() => { : function (l, m) { return m; }; - mc(a, { + qc(a, { name: b, fromWireType: f, toWireType: c, argPackAdvance: 8, - readValueFromPointer: bd(b, e, 0 !== d), - Ia: null, + readValueFromPointer: fd(b, e, 0 !== d), + Ka: null, }); }, d: function (a, b, c) { function d(f) { f >>= 2; - var g = I; - return new e(g.buffer, g[f + 1], g[f]); + var h = I; + return new e(h.buffer, h[f + 1], h[f]); } var e = [ Int8Array, @@ -3208,7 +3254,7 @@ var createModule = (() => { Float64Array, ][b]; c = T(c); - mc( + qc( a, { name: c, @@ -3216,25 +3262,25 @@ var createModule = (() => { argPackAdvance: 8, readValueFromPointer: d, }, - { oc: !0 }, + { qc: !0 }, ); }, v: function (a, b) { b = T(b); var c = "std::string" === b; - mc(a, { + qc(a, { name: b, fromWireType: function (d) { var e = I[d >> 2], f = d + 4; if (c) - for (var g = f, l = 0; l <= e; ++l) { + for (var h = f, l = 0; l <= e; ++l) { var m = f + l; if (l == e || 0 == w[m]) { - g = v(g, m - g); - if (void 0 === n) var n = g; - else (n += String.fromCharCode(0)), (n += g); - g = m + 1; + h = v(h, m - h); + if (void 0 === n) var n = h; + else (n += String.fromCharCode(0)), (n += h); + h = m + 1; } } else { @@ -3252,27 +3298,27 @@ var createModule = (() => { e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array || - V("Cannot pass non-string to std::string"); - var g = c && f ? ra(e) : e.length; - var l = zd(4 + g + 1), + U("Cannot pass non-string to std::string"); + var h = c && f ? sa(e) : e.length; + var l = Dd(4 + h + 1), m = l + 4; - I[l >> 2] = g; - if (c && f) A(e, w, m, g + 1); + I[l >> 2] = h; + if (c && f) A(e, w, m, h + 1); else if (f) - for (f = 0; f < g; ++f) { + for (f = 0; f < h; ++f) { var n = e.charCodeAt(f); 255 < n && (X(m), - V("String has UTF-16 code units that do not fit in 8 bits")); + U("String has UTF-16 code units that do not fit in 8 bits")); w[m + f] = n; } - else for (f = 0; f < g; ++f) w[m + f] = e[f]; + else for (f = 0; f < h; ++f) w[m + f] = e[f]; null !== d && d.push(X, l); return l; }, argPackAdvance: 8, - readValueFromPointer: cc, - Ia: function (d) { + readValueFromPointer: gc, + Ka: function (d) { X(d); }, }); @@ -3280,17 +3326,17 @@ var createModule = (() => { n: function (a, b, c) { c = T(c); if (2 === b) { - var d = dd; - var e = ed; - var f = fd; - var g = () => D; + var d = hd; + var e = jd; + var f = kd; + var h = () => D; var l = 1; } else - 4 === b && ((d = gd), (e = hd), (f = jd), (g = () => I), (l = 2)); - mc(a, { + 4 === b && ((d = ld), (e = md), (f = nd), (h = () => I), (l = 2)); + qc(a, { name: c, fromWireType: function (m) { - for (var n = I[m >> 2], r = g(), p, q = m + 4, k = 0; k <= n; ++k) { + for (var n = I[m >> 2], r = h(), p, q = m + 4, k = 0; k <= n; ++k) { var t = m + 4 + k * b; if (k == n || 0 == r[t >> l]) (q = d(q, t - q)), @@ -3304,39 +3350,39 @@ var createModule = (() => { }, toWireType: function (m, n) { "string" != typeof n && - V("Cannot pass non-string to C++ string type " + c); + U("Cannot pass non-string to C++ string type " + c); var r = f(n), - p = zd(4 + r + b); + p = Dd(4 + r + b); I[p >> 2] = r >> l; e(n, p + 4, r + b); null !== m && m.push(X, p); return p; }, argPackAdvance: 8, - readValueFromPointer: cc, - Ia: function (m) { + readValueFromPointer: gc, + Ka: function (m) { X(m); }, }); }, g: function (a, b, c, d, e, f) { - ac[a] = { name: T(b), zb: W(c, d), Na: W(e, f), Lb: [] }; - }, - c: function (a, b, c, d, e, f, g, l, m, n) { - ac[a].Lb.push({ - ic: T(b), - mc: c, - jb: W(d, e), - lc: f, - Cc: g, - Bc: W(l, m), - Dc: n, + ec[a] = { name: T(b), Bb: W(c, d), Pa: W(e, f), Nb: [] }; + }, + b: function (a, b, c, d, e, f, h, l, m, n) { + ec[a].Nb.push({ + kc: T(b), + oc: c, + lb: W(d, e), + nc: f, + Ec: h, + Dc: W(l, m), + Fc: n, }); }, W: function (a, b) { b = T(b); - mc(a, { - rc: !0, + qc(a, { + tc: !0, name: b, argPackAdvance: 0, fromWireType: function () {}, @@ -3344,84 +3390,84 @@ var createModule = (() => { }); }, X: function (a) { - var b = Bd[a]; - b && (delete Bd[a], 0 < b.readyState && 4 > b.readyState && b.abort()); + var b = Fd[a]; + b && (delete Fd[a], 0 < b.readyState && 4 > b.readyState && b.abort()); }, P: function () { return !0; }, l: function (a, b, c) { - a = $c(a); - b = kd(b, "emval::as"); + a = dd(a); + b = od(b, "emval::as"); var d = [], - e = Lc(d); + e = Pc(d); I[c >> 2] = e; return b.toWireType(d, a); }, ca: function (a, b, c, d) { - a = nd[a]; - b = $c(b); - c = md(c); + a = rd[a]; + b = dd(b); + c = qd(c); a(b, c, null, d); }, - b: Zc, + c: cd, q: function (a) { - if (0 === a) return Lc(od()); - a = md(a); - return Lc(od()[a]); + if (0 === a) return Pc(sd()); + a = qd(a); + return Pc(sd()[a]); }, ba: function (a, b) { - var c = qd(a, b), + var c = ud(a, b), d = c[0]; b = d.name + "_$" + c .slice(1) - .map(function (g) { - return g.name; + .map(function (h) { + return h.name; }) .join("_") + "$"; - var e = rd[b]; + var e = vd[b]; if (void 0 !== e) return e; var f = Array(a - 1); - e = pd((g, l, m, n) => { + e = td((h, l, m, n) => { for (var r = 0, p = 0; p < a - 1; ++p) (f[p] = c[p + 1].readValueFromPointer(n + r)), (r += c[p + 1].argPackAdvance); - g = g[l].apply(g, f); - for (p = 0; p < a - 1; ++p) c[p + 1].ec && c[p + 1].ec(f[p]); - if (!d.rc) return d.toWireType(m, g); + h = h[l].apply(h, f); + for (p = 0; p < a - 1; ++p) c[p + 1].hc && c[p + 1].hc(f[p]); + if (!d.tc) return d.toWireType(m, h); }); - return (rd[b] = e); + return (vd[b] = e); }, x: function (a, b) { - a = $c(a); - b = $c(b); - return Lc(a[b]); + a = dd(a); + b = dd(b); + return Pc(a[b]); }, j: function (a) { - 4 < a && (Y[a].Bb += 1); + 4 < a && (Y[a].Db += 1); }, p: function (a, b, c, d) { - a = $c(a); - var e = td[b]; - e || ((e = sd(b)), (td[b] = e)); + a = dd(a); + var e = xd[b]; + e || ((e = wd(b)), (xd[b] = e)); return e(a, c, d); }, w: function (a) { - return Lc(md(a)); + return Pc(qd(a)); }, k: function (a) { - var b = $c(a); - bc(b); - Zc(a); + var b = dd(a); + fc(b); + cd(a); }, h: function (a, b) { - a = kd(a, "_emval_take_value"); + a = od(a, "_emval_take_value"); a = a.readValueFromPointer(b); - return Lc(a); + return Pc(a); }, R: function (a, b) { a = new Date(1e3 * (I[a >> 2] + 4294967296 * E[(a + 4) >> 2])); @@ -3432,7 +3478,7 @@ var createModule = (() => { E[(b + 16) >> 2] = a.getMonth(); E[(b + 20) >> 2] = a.getFullYear() - 1900; E[(b + 24) >> 2] = a.getDay(); - E[(b + 28) >> 2] = xd(a) | 0; + E[(b + 28) >> 2] = Bd(a) | 0; E[(b + 36) >> 2] = -(60 * a.getTimezoneOffset()); var c = new Date(a.getFullYear(), 6, 1).getTimezoneOffset(), d = new Date(a.getFullYear(), 0, 1).getTimezoneOffset(); @@ -3453,14 +3499,14 @@ var createModule = (() => { d = b.getTimezoneOffset(), e = new Date(b.getFullYear(), 6, 1).getTimezoneOffset(), f = new Date(b.getFullYear(), 0, 1).getTimezoneOffset(), - g = Math.min(f, e); + h = Math.min(f, e); 0 > c - ? (E[(a + 32) >> 2] = Number(e != f && g == d)) - : 0 < c != (g == d) && + ? (E[(a + 32) >> 2] = Number(e != f && h == d)) + : 0 < c != (h == d) && ((e = Math.max(f, e)), - b.setTime(b.getTime() + 6e4 * ((0 < c ? g : e) - d))); + b.setTime(b.getTime() + 6e4 * ((0 < c ? h : e) - d))); E[(a + 24) >> 2] = b.getDay(); - E[(a + 28) >> 2] = xd(b) | 0; + E[(a + 28) >> 2] = Bd(b) | 0; E[a >> 2] = b.getSeconds(); E[(a + 4) >> 2] = b.getMinutes(); E[(a + 8) >> 2] = b.getHours(); @@ -3469,33 +3515,33 @@ var createModule = (() => { E[(a + 20) >> 2] = b.getYear(); return (b.getTime() / 1e3) | 0; }, - G: function (a, b, c, d, e, f, g) { + G: function (a, b, c, d, e, f, h) { try { - var l = Yb(d); + var l = bc(d); if (0 !== (b & 2) && 0 === (c & 2) && 2 !== (l.flags & 2097155)) throw new N(2); if (1 === (l.flags & 2097155)) throw new N(2); - if (!l.va.Za) throw new N(43); - var m = l.va.Za(l, a, e, b, c); - var n = m.xa; - E[f >> 2] = m.Fb; - I[g >> 2] = n; + if (!l.xa.ab) throw new N(43); + var m = l.xa.ab(l, a, e, b, c); + var n = m.za; + E[f >> 2] = m.Hb; + I[h >> 2] = n; return 0; } catch (r) { if ("undefined" == typeof S || "ErrnoError" !== r.name) throw r; - return -r.Fa; + return -r.Ha; } }, H: function (a, b, c, d, e, f) { try { - var g = Yb(e); + var h = bc(e); if (c & 2) { - if (32768 !== (g.node.mode & 61440)) throw new N(43); - d & 2 || (g.va.nb && g.va.nb(g, w.slice(a, a + b), f, b, d)); + if (32768 !== (h.node.mode & 61440)) throw new N(43); + d & 2 || (h.xa.pb && h.xa.pb(h, w.slice(a, a + b), f, b, d)); } } catch (l) { if ("undefined" == typeof S || "ErrnoError" !== l.name) throw l; - return -l.Fa; + return -l.Ha; } }, T: function (a, b, c) { @@ -3506,15 +3552,15 @@ var createModule = (() => { } var e = new Date().getFullYear(), f = new Date(e, 0, 1), - g = new Date(e, 6, 1); + h = new Date(e, 6, 1); e = f.getTimezoneOffset(); - var l = g.getTimezoneOffset(); + var l = h.getTimezoneOffset(); I[a >> 2] = 60 * Math.max(e, l); E[b >> 2] = Number(e != l); a = d(f); - b = d(g); - a = yd(a); - b = yd(b); + b = d(h); + a = Cd(a); + b = Cd(b); l < e ? ((I[c >> 2] = a), (I[(c + 4) >> 2] = b)) : ((I[c >> 2] = b), (I[(c + 4) >> 2] = a)); @@ -3523,11 +3569,11 @@ var createModule = (() => { ma(""); }, y: function (a, b, c) { - Ad.length = 0; + Ed.length = 0; var d; for (c >>= 2; (d = w[b++]); ) - (c += (105 != d) & c), Ad.push(105 == d ? E[c] : ua[c++ >> 1]), ++c; - return Pa[a].apply(null, Ad); + (c += (105 != d) & c), Ed.push(105 == d ? E[c] : va[c++ >> 1]), ++c; + return Ta[a].apply(null, Ed); }, Q: function () { return Date.now(); @@ -3547,17 +3593,15 @@ var createModule = (() => { a >>>= 0; if (2147483648 < a) return !1; for (var c = 1; 4 >= c; c *= 2) { - var d = b * (1 + 0.2 / c); - d = Math.min(d, a + 100663296); - var e = Math, - f = e.min; - d = Math.max(a, d); - d += (65536 - (d % 65536)) % 65536; + var d = Math, + e = d.min; + var f = Math.max(a, b + 2097152 / c); + f += (65536 - (f % 65536)) % 65536; a: { - var g = na.buffer; + var h = na.buffer; try { - na.grow((f.call(e, 2147483648, d) - g.byteLength + 65535) >>> 16); - va(); + na.grow((e.call(d, 2147483648, f) - h.byteLength + 65535) >>> 16); + wa(); var l = 1; break a; } catch (m) {} @@ -3570,78 +3614,88 @@ var createModule = (() => { Y: function (a, b, c, d, e) { function f(H) { if (z) H(); - else if (!oa) + else if (!Ca && !oa) try { - H(); - } catch (Na) { - Na instanceof Qa || "unwind" == Na || ea(1, Na); + if ((H(), !(noExitRuntime || 0 < Da))) + try { + Jd(pa); + } catch (Qa) { + Id(Qa); + } + } catch (Qa) { + Id(Qa); } } - var g = a + 112, - l = v(g), - m = I[(g + 36) >> 2], - n = I[(g + 40) >> 2], - r = I[(g + 44) >> 2], - p = I[(g + 48) >> 2], - q = I[(g + 52) >> 2], + Da += 1; + var h = a + 112, + l = v(h), + m = I[(h + 36) >> 2], + n = I[(h + 40) >> 2], + r = I[(h + 44) >> 2], + p = I[(h + 48) >> 2], + q = I[(h + 52) >> 2], k = !!(q & 4), t = !!(q & 32), x = !!(q & 16), z = !!(q & 64), F = (H) => { + --Da; f(() => { - m ? Qc(m)(H) : b && b(H); + m ? Uc(m)(H) : b && b(H); }); }, G = (H) => { f(() => { - r ? Qc(r)(H) : d && d(H); + r ? Uc(r)(H) : d && d(H); }); }, y = (H) => { + --Da; f(() => { - n ? Qc(n)(H) : c && c(H); + n ? Uc(n)(H) : c && c(H); }); }, M = (H) => { f(() => { - p ? Qc(p)(H) : e && e(H); + p ? Uc(p)(H) : e && e(H); }); }; q = (H) => { - Dd(H, F, y, G, M); + Hd(H, F, y, G, M); }; - var B = (H, Na) => { - Ed( + var B = (H, Qa) => { + Md( H, - Na.response, - (Oa) => { + Qa.response, + (Ra) => { + --Da; f(() => { - m ? Qc(m)(Oa) : b && b(Oa); + m ? Uc(m)(Ra) : b && b(Ra); }); }, - (Oa) => { + (Ra) => { + --Da; f(() => { - m ? Qc(m)(Oa) : b && b(Oa); + m ? Uc(m)(Ra) : b && b(Ra); }); }, ); }, - U = (H) => { - Dd(H, B, y, G, M); + V = (H) => { + Hd(H, B, y, G, M); }; if ("EM_IDB_STORE" === l) - (l = I[(g + 84) >> 2]), Ed(a, w.slice(l, l + I[(g + 88) >> 2]), F, y); - else if ("EM_IDB_DELETE" === l) Gd(a, F, y); + (l = I[(h + 84) >> 2]), Md(a, w.slice(l, l + I[(h + 88) >> 2]), F, y); + else if ("EM_IDB_DELETE" === l) Od(a, F, y); else if (x) { if (t) return 0; - Dd(a, k ? B : F, y, G, M); - } else Fd(a, F, t ? y : k ? U : q); + Hd(a, k ? B : F, y, G, M); + } else Nd(a, F, t ? y : k ? V : q); return a; }, I: function (a, b) { var c = 0; - Id().forEach(function (d, e) { + Qd().forEach(function (d, e) { var f = b + c; e = I[(a + 4 * e) >> 2] = f; for (f = 0; f < d.length; ++f) C[e++ >> 0] = d.charCodeAt(f); @@ -3651,7 +3705,7 @@ var createModule = (() => { return 0; }, J: function (a, b) { - var c = Id(); + var c = Qd(); I[a >> 2] = c.length; var d = 0; c.forEach(function (e) { @@ -3660,29 +3714,23 @@ var createModule = (() => { I[b >> 2] = d; return 0; }, - aa: function (a) { - if (!noExitRuntime) { - if (h.onExit) h.onExit(a); - oa = !0; - } - ea(a, new Qa(a)); - }, + aa: Jd, t: function (a) { try { - var b = Yb(a); - Kb(b); + var b = bc(a); + Ob(b); return 0; } catch (c) { if ("undefined" == typeof S || "ErrnoError" !== c.name) throw c; - return c.Fa; + return c.Ha; } }, s: function (a, b, c, d) { try { a: { - var e = Yb(a); + var e = bc(a); a = b; - for (var f, g = (b = 0); g < c; g++) { + for (var f, h = (b = 0); h < c; h++) { var l = I[a >> 2], m = I[(a + 4) >> 2]; a += 8; @@ -3692,14 +3740,14 @@ var createModule = (() => { q = f, k = C; if (0 > p || 0 > q) throw new N(28); - if (null === n.Pa) throw new N(8); + if (null === n.Ra) throw new N(8); if (1 === (n.flags & 2097155)) throw new N(8); if (16384 === (n.node.mode & 61440)) throw new N(31); - if (!n.va.read) throw new N(28); + if (!n.xa.read) throw new N(28); var t = "undefined" != typeof q; if (!t) q = n.position; else if (!n.seekable) throw new N(70); - var x = n.va.read(n, k, r, p, q); + var x = n.xa.read(n, k, r, p, q); t || (n.position += x); var z = x; if (0 > z) { @@ -3716,7 +3764,7 @@ var createModule = (() => { return 0; } catch (G) { if ("undefined" == typeof S || "ErrnoError" !== G.name) throw G; - return G.Fa; + return G.Ha; } }, A: function (a, b, c, d, e) { @@ -3726,8 +3774,8 @@ var createModule = (() => { ? (b >>> 0) + 4294967296 * c : NaN; if (isNaN(b)) return 61; - var f = Yb(a); - Lb(f, b, d); + var f = bc(a); + Pb(f, b, d); K = [ f.position >>> 0, ((J = f.position), @@ -3739,23 +3787,23 @@ var createModule = (() => { ]; E[e >> 2] = K[0]; E[(e + 4) >> 2] = K[1]; - f.ub && 0 === b && 0 === d && (f.ub = null); + f.wb && 0 === b && 0 === d && (f.wb = null); return 0; - } catch (g) { - if ("undefined" == typeof S || "ErrnoError" !== g.name) throw g; - return g.Fa; + } catch (h) { + if ("undefined" == typeof S || "ErrnoError" !== h.name) throw h; + return h.Ha; } }, r: function (a, b, c, d) { try { a: { - var e = Yb(a); + var e = bc(a); a = b; - for (var f, g = (b = 0); g < c; g++) { + for (var f, h = (b = 0); h < c; h++) { var l = I[a >> 2], m = I[(a + 4) >> 2]; a += 8; - var n = Mb(e, C, l, m, f); + var n = Qb(e, C, l, m, f); if (0 > n) { var r = -1; break a; @@ -3769,162 +3817,222 @@ var createModule = (() => { return 0; } catch (p) { if ("undefined" == typeof S || "ErrnoError" !== p.name) throw p; - return p.Fa; + return p.Ha; } }, _: function () { var a = stackTrace(), - b = ra(a) + 1, - c = zd(b); + b = sa(a) + 1, + c = Dd(b); A(a, w, c, b); return c; }, - C: Kd, - $: Nd, + C: Sd, + $: Vd, D: function (a, b, c, d) { - return Nd(a, b, c, d); + return Vd(a, b, c, d); }, }; (function () { function a(c) { c = c.exports; - h.asm = c; - na = h.asm.ea; - va(); - wa = h.asm.ia; - ya.unshift(h.asm.fa); - Fa("wasm-instantiate"); + g.asm = c; + na = g.asm.ea; + wa(); + xa = g.asm.ia; + za.unshift(g.asm.fa); + Ja("wasm-instantiate"); return c; } - var b = { a: Qd }; - Ea("wasm-instantiate"); - if (h.instantiateWasm) + var b = { a: Yd }; + Ia("wasm-instantiate"); + if (g.instantiateWasm) try { - return h.instantiateWasm(b, a); + return g.instantiateWasm(b, a); } catch (c) { u("Module.instantiateWasm callback failed with error: " + c), ba(c); } - Ma(b, function (c) { + Sa(b, function (c) { a(c.instance); }).catch(ba); return {}; })(); function X() { - return (X = h.asm.ga).apply(null, arguments); + return (X = g.asm.ga).apply(null, arguments); } - function zd() { - return (zd = h.asm.ha).apply(null, arguments); + function Dd() { + return (Dd = g.asm.ha).apply(null, arguments); } - var Uc = (h.___getTypeName = function () { - return (Uc = h.___getTypeName = h.asm.ja).apply(null, arguments); - }); - h.__embind_initialize_bindings = function () { - return (h.__embind_initialize_bindings = h.asm.ka).apply(null, arguments); + var Ld = (g._fflush = function () { + return (Ld = g._fflush = g.asm.ja).apply(null, arguments); + }), + Yc = (g.___getTypeName = function () { + return (Yc = g.___getTypeName = g.asm.ka).apply(null, arguments); + }); + g.__embind_initialize_bindings = function () { + return (g.__embind_initialize_bindings = g.asm.la).apply(null, arguments); }; - function eb() { - return (eb = h.asm.la).apply(null, arguments); + function Kd() { + return (Kd = g.asm.ma).apply(null, arguments); + } + function ib() { + return (ib = g.asm.na).apply(null, arguments); } - h.dynCall_ji = function () { - return (h.dynCall_ji = h.asm.ma).apply(null, arguments); + g.dynCall_ji = function () { + return (g.dynCall_ji = g.asm.oa).apply(null, arguments); }; - h.dynCall_jiji = function () { - return (h.dynCall_jiji = h.asm.na).apply(null, arguments); + g.dynCall_jiji = function () { + return (g.dynCall_jiji = g.asm.pa).apply(null, arguments); }; - h.dynCall_viijii = function () { - return (h.dynCall_viijii = h.asm.oa).apply(null, arguments); + g.dynCall_viijii = function () { + return (g.dynCall_viijii = g.asm.qa).apply(null, arguments); }; - h.dynCall_iiiiij = function () { - return (h.dynCall_iiiiij = h.asm.pa).apply(null, arguments); + g.dynCall_iiiiij = function () { + return (g.dynCall_iiiiij = g.asm.ra).apply(null, arguments); }; - h.dynCall_iiiiijj = function () { - return (h.dynCall_iiiiijj = h.asm.qa).apply(null, arguments); + g.dynCall_iiiiijj = function () { + return (g.dynCall_iiiiijj = g.asm.sa).apply(null, arguments); }; - h.dynCall_iiiiiijj = function () { - return (h.dynCall_iiiiiijj = h.asm.ra).apply(null, arguments); + g.dynCall_iiiiiijj = function () { + return (g.dynCall_iiiiiijj = g.asm.ta).apply(null, arguments); }; - h.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE = 1024; - h.___start_em_js = 60394; - h.___stop_em_js = 61267; - h.addRunDependency = Ea; - h.removeRunDependency = Fa; - h.FS_createPath = Qb; - h.FS_createDataFile = Sb; - h.FS_createPreloadedFile = Wb; - h.FS_createLazyFile = Ub; - h.FS_createDevice = R; - h.FS_unlink = Eb; - var Rd; - Da = function Sd() { - Rd || Td(); - Rd || (Da = Sd); + g.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE = 1024; + g.___start_em_js = 60458; + g.___stop_em_js = 61331; + g.addRunDependency = Ia; + g.removeRunDependency = Ja; + g.FS_createPath = Ub; + g.FS_createDataFile = Wb; + g.FS_createPreloadedFile = $b; + g.FS_createLazyFile = Yb; + g.FS_createDevice = R; + g.FS_unlink = Ib; + var Zd; + Ha = function $d() { + Zd || ae(); + Zd || (Ha = $d); }; - function Td() { + function ae() { function a() { - if (!Rd && ((Rd = !0), (h.calledRun = !0), !oa)) { - h.noFSInit || - Ob || - ((Ob = !0), - Nb(), - (h.stdin = h.stdin), - (h.stdout = h.stdout), - (h.stderr = h.stderr), - h.stdin - ? R("/dev", "stdin", h.stdin) - : Db("/dev/tty", "/dev/stdin"), - h.stdout - ? R("/dev", "stdout", null, h.stdout) - : Db("/dev/tty", "/dev/stdout"), - h.stderr - ? R("/dev", "stderr", null, h.stderr) - : Db("/dev/tty1", "/dev/stderr"), - Jb("/dev/stdin", 0), - Jb("/dev/stdout", 1), - Jb("/dev/stderr", 1)); - pb = !1; - Ra(ya); - aa(h); - if (h.onRuntimeInitialized) h.onRuntimeInitialized(); - if (h.postRun) + if (!Zd && ((Zd = !0), (g.calledRun = !0), !oa)) { + g.noFSInit || + Sb || + ((Sb = !0), + Rb(), + (g.stdin = g.stdin), + (g.stdout = g.stdout), + (g.stderr = g.stderr), + g.stdin + ? R("/dev", "stdin", g.stdin) + : Hb("/dev/tty", "/dev/stdin"), + g.stdout + ? R("/dev", "stdout", null, g.stdout) + : Hb("/dev/tty", "/dev/stdout"), + g.stderr + ? R("/dev", "stderr", null, g.stderr) + : Hb("/dev/tty1", "/dev/stderr"), + Nb("/dev/stdin", 0), + Nb("/dev/stdout", 1), + Nb("/dev/stderr", 1)); + tb = !1; + Va(za); + aa(g); + if (g.onRuntimeInitialized) g.onRuntimeInitialized(); + if (g.postRun) for ( - "function" == typeof h.postRun && (h.postRun = [h.postRun]); - h.postRun.length; + "function" == typeof g.postRun && (g.postRun = [g.postRun]); + g.postRun.length; ) { - var b = h.postRun.shift(); - za.unshift(b); + var b = g.postRun.shift(); + Ba.unshift(b); } - Ra(za); + Va(Ba); } } - if (!(0 < Ba)) { - if (h.preRun) + if (!(0 < Fa)) { + if (g.preRun) for ( - "function" == typeof h.preRun && (h.preRun = [h.preRun]); - h.preRun.length; + "function" == typeof g.preRun && (g.preRun = [g.preRun]); + g.preRun.length; ) - Aa(); - Ra(xa); - 0 < Ba || - (h.setStatus - ? (h.setStatus("Running..."), + Ea(); + Va(ya); + 0 < Fa || + (g.setStatus + ? (g.setStatus("Running..."), setTimeout(function () { setTimeout(function () { - h.setStatus(""); + g.setStatus(""); }, 1); a(); }, 1)) : a()); } } - if (h.preInit) + if (g.preInit) for ( - "function" == typeof h.preInit && (h.preInit = [h.preInit]); - 0 < h.preInit.length; + "function" == typeof g.preInit && (g.preInit = [g.preInit]); + 0 < g.preInit.length; ) - h.preInit.pop()(); - Td(); + g.preInit.pop()(); + ae(); + if ( + "object" == typeof window && + ("undefined" == typeof ENVIRONMENT_IS_PTHREAD || !ENVIRONMENT_IS_PTHREAD) + ) { + var be = () => { + var a = 0, + b = !1, + c = (m) => { + var n = new XMLHttpRequest(); + n.open("POST", "stdio.html", !1); + n.send(m); + try { + window.close(); + } catch (r) {} + }, + d = (m) => { + var n = new XMLHttpRequest(); + ++a; + n.onreadystatechange = () => { + 4 == n.readyState && 0 == --a && b && c("^exit^" + pa); + }; + n.open("POST", "stdio.html", !0); + n.send(m); + }; + if ( + -1 != document.URL.search("localhost") || + -1 != document.URL.search(":6931/") + ) { + var e = 1, + f = ka, + h = u; + Aa.unshift(() => { + 0 == a ? c("^exit^" + pa) : (b = !0); + }); + ka = (m) => { + d("^out^" + e++ + "^" + encodeURIComponent(m)); + f(m); + }; + u = (m) => { + d("^err^" + e++ + "^" + encodeURIComponent(m)); + h(m); + }; + var l = () => { + try { + d("^pageload^"); + } catch (m) { + setTimeout(l, 50); + } + }; + l(); + } + }; + "undefined" != typeof document && be(); + } return createModule.ready; }; diff --git a/packages/capture-wasm/dist/advanced/capture-wasm.wasm b/packages/capture-wasm/dist/advanced/capture-wasm.wasm index 0518523ae445514e42796aa0f8bbea0092faab5c..d373f474acb98e3bfe786110309351e559e6a405 100755 GIT binary patch delta 215691 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

5Tw`IS~O7b035> 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 delta 203105 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 diff --git a/packages/capture-wasm/dist/basic/capture-wasm.data b/packages/capture-wasm/dist/basic/capture-wasm.data index a7f2a1912ac7e993060462dfe3121c68d7184fe7..2461cc232a0fce3ea1386ac6711dc24e3a872dde 100644 GIT binary patch delta 4117 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 b<_k8XGePUGUi>^x9;K!$p*=bCnEv-)u=_&~ diff --git a/packages/capture-wasm/dist/basic/capture-wasm.js b/packages/capture-wasm/dist/basic/capture-wasm.js index e457ecc..8defc47 100644 --- a/packages/capture-wasm/dist/basic/capture-wasm.js +++ b/packages/capture-wasm/dist/basic/capture-wasm.js @@ -5,17 +5,28 @@ var createModule = (() => { : undefined; return function (createModule = {}) { - var h; - h || (h = typeof createModule !== "undefined" ? createModule : {}); + /* + + Copyright 2019 The Emscripten Authors + SPDX-License-Identifier: MIT + + Copyright 2013 The Emscripten Authors + SPDX-License-Identifier: MIT + + This file gets implicatly injected as a `--post-js` file when + emcc is run with `--emrun` +*/ + var g; + g || (g = typeof createModule !== "undefined" ? createModule : {}); var aa, ba; - h.ready = new Promise(function (a, b) { + g.ready = new Promise(function (a, b) { aa = a; ba = b; }); - h.tb || (h.tb = 0); - h.tb++; - h.ENVIRONMENT_IS_PTHREAD || - h.$ww || + g.ub || (g.ub = 0); + g.ub++; + g.ENVIRONMENT_IS_PTHREAD || + g.$ww || (function (a) { function b(m, n, r) { var p = new XMLHttpRequest(); @@ -25,23 +36,23 @@ var createModule = (() => { var k = n; q.total && (k = q.total); if (q.loaded) { - p.Yb - ? (h.Ta[m].loaded = q.loaded) - : ((p.Yb = !0), - h.Ta || (h.Ta = {}), - (h.Ta[m] = { loaded: q.loaded, total: k })); + p.Zb + ? (g.Ua[m].loaded = q.loaded) + : ((p.Zb = !0), + g.Ua || (g.Ua = {}), + (g.Ua[m] = { loaded: q.loaded, total: k })); var t = (k = q = 0), x; - for (x in h.Ta) { - var z = h.Ta[x]; + for (x in g.Ua) { + var z = g.Ua[x]; q += z.total; k += z.loaded; t++; } - q = Math.ceil((q * h.tb) / t); - h.setStatus && - h.setStatus("Downloading data... (" + k + "/" + q + ")"); - } else !h.Ta && h.setStatus && h.setStatus("Downloading data..."); + q = Math.ceil((q * g.ub) / t); + g.setStatus && + g.setStatus("Downloading data... (" + k + "/" + q + ")"); + } else !g.Ua && g.setStatus && g.setStatus("Downloading data..."); }; p.onerror = function () { throw Error("NetworkError for: " + m); @@ -72,31 +83,31 @@ var createModule = (() => { if (q.constructor.name !== ArrayBuffer.name) throw "bad input to processPackageData" + Error().stack; q = new Uint8Array(q); - m.prototype.bc = q; + m.prototype.cc = q; q = a.files; for (var k = 0; k < q.length; ++k) - m.prototype.Cb[q[k].filename].onload(); - h.removeRunDependency( - "datafile_/Users/ivan/Dev/imagecapture-browser.worktrees/master/packages/capture-wasm/dist/basic/capture-wasm.data", + m.prototype.Db[q[k].filename].onload(); + g.removeRunDependency( + "datafile_/Users/ivan/Dev/imagecapture-browser/packages/capture-wasm/dist/basic/capture-wasm.data", ); } - h.FS_createPath("/", "microblink", !0, !0); - h.FS_createPath("/microblink", "capture", !0, !0); + g.FS_createPath("/", "microblink", !0, !0); + g.FS_createPath("/microblink", "capture", !0, !0); m.prototype = { - Cb: {}, + Db: {}, open: function (q, k) { this.name = k; - this.Cb[k] = this; - h.addRunDependency("fp " + this.name); + this.Db[k] = this; + g.addRunDependency("fp " + this.name); }, send: function () {}, onload: function () { - this.finish(this.bc.subarray(this.start, this.end)); + this.finish(this.cc.subarray(this.start, this.end)); }, finish: function (q) { - h.FS_createDataFile(this.name, null, q, !0, !0, !0); - h.removeRunDependency("fp " + this.name); - this.Cb[this.name] = null; + g.FS_createDataFile(this.name, null, q, !0, !0, !0); + g.removeRunDependency("fp " + this.name); + this.Db[this.name] = null; }, }; for (var r = a.files, p = 0; p < r.length; ++p) @@ -104,14 +115,14 @@ var createModule = (() => { "GET", r[p].filename, ); - h.addRunDependency( - "datafile_/Users/ivan/Dev/imagecapture-browser.worktrees/master/packages/capture-wasm/dist/basic/capture-wasm.data", + g.addRunDependency( + "datafile_/Users/ivan/Dev/imagecapture-browser/packages/capture-wasm/dist/basic/capture-wasm.data", ); - h.Qb || (h.Qb = {}); - h.Qb[ - "/Users/ivan/Dev/imagecapture-browser.worktrees/master/packages/capture-wasm/dist/basic/capture-wasm.data" - ] = { Kc: !1 }; - l ? (n(l), (l = null)) : (g = n); + g.Rb || (g.Rb = {}); + g.Rb[ + "/Users/ivan/Dev/imagecapture-browser/packages/capture-wasm/dist/basic/capture-wasm.data" + ] = { Lc: !1 }; + l ? (n(l), (l = null)) : (h = n); } "object" === typeof window ? window.encodeURIComponent( @@ -130,28 +141,28 @@ var createModule = (() => { .substring(0, location.pathname.toString().lastIndexOf("/")) + "/", ); - "function" !== typeof h.locateFilePackage || - h.locateFile || - ((h.locateFile = h.locateFilePackage), + "function" !== typeof g.locateFilePackage || + g.locateFile || + ((g.locateFile = g.locateFilePackage), u( "warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)", )); - var e = h.locateFile - ? h.locateFile("capture-wasm.data", "") + var e = g.locateFile + ? g.locateFile("capture-wasm.data", "") : "capture-wasm.data", f = a.remote_package_size, - g = null, - l = h.getPreloadedPackage ? h.getPreloadedPackage(e, f) : null; + h = null, + l = g.getPreloadedPackage ? g.getPreloadedPackage(e, f) : null; l || b( e, f, function (m) { - g ? (g(m), (g = null)) : (l = m); + h ? (h(m), (h = null)) : (l = m); }, c, ); - h.calledRun ? d() : (h.preRun || (h.preRun = []), h.preRun.push(d)); + g.calledRun ? d() : (g.preRun || (g.preRun = []), g.preRun.push(d)); })({ files: [ { @@ -199,7 +210,7 @@ var createModule = (() => { ], remote_package_size: 1573062, }); - h.onAbort = function (a) { + g.onAbort = function (a) { u("Aborted with message: " + a); try { throw new WebAssembly.RuntimeError(a); @@ -207,7 +218,13 @@ var createModule = (() => { u("Stacktrace: " + b.stack); } }; - var ca = Object.assign({}, h), + if ("object" == typeof window) { + g.arguments = window.location.search.substr(1).trim().split("&"); + for (let a = 0; a < g.arguments.length; ++a) + g.arguments[a] = decodeURI(g.arguments[a]); + g.arguments[0] || (g.arguments = []); + } + var ca = Object.assign({}, g), da = "./this.program", ea = (a, b) => { throw b; @@ -245,34 +262,35 @@ var createModule = (() => { d.onerror = c; d.send(null); }; - var ka = h.print || console.log.bind(console), - u = h.printErr || console.warn.bind(console); - Object.assign(h, ca); + var ka = g.print || console.log.bind(console), + u = g.printErr || console.warn.bind(console); + Object.assign(g, ca); ca = null; - h.thisProgram && (da = h.thisProgram); - h.quit && (ea = h.quit); + g.thisProgram && (da = g.thisProgram); + g.quit && (ea = g.quit); var la; - h.wasmBinary && (la = h.wasmBinary); - var noExitRuntime = h.noExitRuntime || !0; + g.wasmBinary && (la = g.wasmBinary); + var noExitRuntime = g.noExitRuntime || !1; "object" != typeof WebAssembly && ma("no native wasm support detected"); var na, oa = !1, - pa = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0; - function qa(a, b, c) { + pa, + qa = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0; + function ra(a, b, c) { var d = b + c; for (c = b; a[c] && !(c >= d); ) ++c; - if (16 < c - b && a.buffer && pa) return pa.decode(a.subarray(b, c)); + if (16 < c - b && a.buffer && qa) return qa.decode(a.subarray(b, c)); for (d = ""; b < c; ) { var e = a[b++]; if (e & 128) { var f = a[b++] & 63; if (192 == (e & 224)) d += String.fromCharCode(((e & 31) << 6) | f); else { - var g = a[b++] & 63; + var h = a[b++] & 63; e = 224 == (e & 240) - ? ((e & 15) << 12) | (f << 6) | g - : ((e & 7) << 18) | (f << 12) | (g << 6) | (a[b++] & 63); + ? ((e & 15) << 12) | (f << 6) | h + : ((e & 7) << 18) | (f << 12) | (h << 6) | (a[b++] & 63); 65536 > e ? (d += String.fromCharCode(e)) : ((e -= 65536), @@ -286,43 +304,43 @@ var createModule = (() => { return d; } function v(a, b) { - return a ? qa(w, a, b) : ""; + return a ? ra(w, a, b) : ""; } function A(a, b, c, d) { if (!(0 < d)) return 0; var e = c; d = c + d - 1; for (var f = 0; f < a.length; ++f) { - var g = a.charCodeAt(f); - if (55296 <= g && 57343 >= g) { + var h = a.charCodeAt(f); + if (55296 <= h && 57343 >= h) { var l = a.charCodeAt(++f); - g = (65536 + ((g & 1023) << 10)) | (l & 1023); + h = (65536 + ((h & 1023) << 10)) | (l & 1023); } - if (127 >= g) { + if (127 >= h) { if (c >= d) break; - b[c++] = g; + b[c++] = h; } else { - if (2047 >= g) { + if (2047 >= h) { if (c + 1 >= d) break; - b[c++] = 192 | (g >> 6); + b[c++] = 192 | (h >> 6); } else { - if (65535 >= g) { + if (65535 >= h) { if (c + 2 >= d) break; - b[c++] = 224 | (g >> 12); + b[c++] = 224 | (h >> 12); } else { if (c + 3 >= d) break; - b[c++] = 240 | (g >> 18); - b[c++] = 128 | ((g >> 12) & 63); + b[c++] = 240 | (h >> 18); + b[c++] = 128 | ((h >> 12) & 63); } - b[c++] = 128 | ((g >> 6) & 63); + b[c++] = 128 | ((h >> 6) & 63); } - b[c++] = 128 | (g & 63); + b[c++] = 128 | (h & 63); } } b[c] = 0; return c - e; } - function ra(a) { + function sa(a) { for (var b = 0, c = 0; c < a.length; ++c) { var d = a.charCodeAt(c); 127 >= d @@ -335,75 +353,79 @@ var createModule = (() => { } return b; } - var C, w, sa, D, E, I, ta, ua; - function va() { + var C, w, ta, D, E, I, ua, va; + function wa() { var a = na.buffer; - h.HEAP8 = C = new Int8Array(a); - h.HEAP16 = sa = new Int16Array(a); - h.HEAP32 = E = new Int32Array(a); - h.HEAPU8 = w = new Uint8Array(a); - h.HEAPU16 = D = new Uint16Array(a); - h.HEAPU32 = I = new Uint32Array(a); - h.HEAPF32 = ta = new Float32Array(a); - h.HEAPF64 = ua = new Float64Array(a); - } - var wa, - xa = [], + g.HEAP8 = C = new Int8Array(a); + g.HEAP16 = ta = new Int16Array(a); + g.HEAP32 = E = new Int32Array(a); + g.HEAPU8 = w = new Uint8Array(a); + g.HEAPU16 = D = new Uint16Array(a); + g.HEAPU32 = I = new Uint32Array(a); + g.HEAPF32 = ua = new Float32Array(a); + g.HEAPF64 = va = new Float64Array(a); + } + var xa, ya = [], - za = []; - function Aa() { - var a = h.preRun.shift(); - xa.unshift(a); - } - var Ba = 0, - Ca = null, - Da = null; + za = [], + Aa = [], + Ba = [], + Ca = !1, + Da = 0; function Ea() { - Ba++; - h.monitorRunDependencies && h.monitorRunDependencies(Ba); - } - function Fa() { - Ba--; - h.monitorRunDependencies && h.monitorRunDependencies(Ba); - if (0 == Ba && (null !== Ca && (clearInterval(Ca), (Ca = null)), Da)) { - var a = Da; - Da = null; + var a = g.preRun.shift(); + ya.unshift(a); + } + var Fa = 0, + Ga = null, + Ha = null; + function Ia() { + Fa++; + g.monitorRunDependencies && g.monitorRunDependencies(Fa); + } + function Ja() { + Fa--; + g.monitorRunDependencies && g.monitorRunDependencies(Fa); + if (0 == Fa && (null !== Ga && (clearInterval(Ga), (Ga = null)), Ha)) { + var a = Ha; + Ha = null; a(); } } function ma(a) { - if (h.onAbort) h.onAbort(a); + if (g.onAbort) g.onAbort(a); a = "Aborted(" + a + ")"; u(a); oa = !0; + pa = 1; a = new WebAssembly.RuntimeError( a + ". Build with -sASSERTIONS for more info.", ); ba(a); throw a; } - function Ga(a) { + function Ka(a) { return a.startsWith("data:application/octet-stream;base64,"); } - var Ha; - Ha = "capture-wasm.wasm"; - if (!Ga(Ha)) { - var Ia = Ha; - Ha = h.locateFile ? h.locateFile(Ia, fa) : fa + Ia; + var La; + La = "capture-wasm.wasm"; + if (!Ka(La)) { + var Ma = La; + La = g.locateFile ? g.locateFile(Ma, fa) : fa + Ma; } - function Ja(a) { + function Na(a) { try { - if (a == Ha && la) return new Uint8Array(la); + if (a == La && la) return new Uint8Array(la); if (ja) return ja(a); throw "both async and sync fetching of the wasm failed"; } catch (b) { ma(b); } } - function Ka(a) { + function Oa(a) { return la || "function" != typeof fetch ? Promise.resolve().then(function () { - return Ja(a); + return Na(a); }) : fetch(a, { credentials: "same-origin" }) .then(function (b) { @@ -411,11 +433,11 @@ var createModule = (() => { return b.arrayBuffer(); }) .catch(function () { - return Ja(a); + return Na(a); }); } - function La(a, b, c) { - return Ka(a) + function Pa(a, b, c) { + return Oa(a) .then(function (d) { return WebAssembly.instantiate(d, b); }) @@ -427,46 +449,46 @@ var createModule = (() => { ma(d); }); } - function Ma(a, b) { - var c = Ha; + function Sa(a, b) { + var c = La; return la || "function" != typeof WebAssembly.instantiateStreaming || - Ga(c) || + Ka(c) || "function" != typeof fetch - ? La(c, a, b) + ? Pa(c, a, b) : fetch(c, { credentials: "same-origin" }).then(function (d) { return WebAssembly.instantiateStreaming(d, a).then(b, function (e) { u("wasm streaming compile failed: " + e); u("falling back to ArrayBuffer instantiation"); - return La(c, a, b); + return Pa(c, a, b); }); }); } var J, K, - Pa = { - 60148: (a, b, c, d) => { + Ta = { + 59716: (a, b, c, d) => { a = v(a); b = v(b); c = v(c); d = v(d); throw Error(a + b + c + d); }, - 60364: (a, b) => { + 59932: (a, b) => { a = v(a); b = v(b); throw Error(a + b); }, }; - function Qa(a) { + function Ua(a) { this.name = "ExitStatus"; this.message = "Program terminated with exit(" + a + ")"; this.status = a; } - function Ra(a) { - for (; 0 < a.length; ) a.shift()(h); + function Va(a) { + for (; 0 < a.length; ) a.shift()(g); } - var Sa = (a, b) => { + var Wa = (a, b) => { for (var c = 0, d = a.length - 1; 0 <= d; d--) { var e = a[d]; "." === e @@ -481,7 +503,7 @@ var createModule = (() => { L = (a) => { var b = "/" === a.charAt(0), c = "/" === a.substr(-1); - (a = Sa( + (a = Wa( a.split("/").filter((d) => !!d), !b, ).join("/")) || @@ -490,7 +512,7 @@ var createModule = (() => { a && c && (a += "/"); return (b ? "/" : "") + a; }, - Ta = (a) => { + Xa = (a) => { var b = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/ .exec(a) .slice(1); @@ -500,14 +522,14 @@ var createModule = (() => { b && (b = b.substr(0, b.length - 1)); return a + b; }, - Ua = (a) => { + Ya = (a) => { if ("/" === a) return "/"; a = L(a); a = a.replace(/\/$/, ""); var b = a.lastIndexOf("/"); return -1 === b ? a : a.substr(b + 1); }; - function Va() { + function Za() { if ( "object" == typeof crypto && "function" == typeof crypto.getRandomValues @@ -520,7 +542,7 @@ var createModule = (() => { } return () => ma("randomDevice"); } - function Wa() { + function $a() { for (var a = "", b = !1, c = arguments.length - 1; -1 <= c && !b; c--) { b = 0 <= c ? arguments[c] : "/"; if ("string" != typeof b) @@ -529,56 +551,56 @@ var createModule = (() => { a = b + "/" + a; b = "/" === b.charAt(0); } - a = Sa( + a = Wa( a.split("/").filter((d) => !!d), !b, ).join("/"); return (b ? "/" : "") + a || "."; } - function Xa(a, b) { - var c = Array(ra(a) + 1); + function ab(a, b) { + var c = Array(sa(a) + 1); a = A(a, c, 0, c.length); b && (c.length = a); return c; } - var Ya = []; - function Za(a, b) { - Ya[a] = { input: [], Aa: [], Xa: b }; - $a(a, ab); + var bb = []; + function cb(a, b) { + bb[a] = { input: [], Ba: [], Ya: b }; + db(a, eb); } - var ab = { + var eb = { open: function (a) { - var b = Ya[a.node.bb]; + var b = bb[a.node.cb]; if (!b) throw new N(43); - a.Ea = b; + a.Fa = b; a.seekable = !1; }, close: function (a) { - a.Ea.Xa.ib(a.Ea); + a.Fa.Ya.jb(a.Fa); }, - ib: function (a) { - a.Ea.Xa.ib(a.Ea); + jb: function (a) { + a.Fa.Ya.jb(a.Fa); }, read: function (a, b, c, d) { - if (!a.Ea || !a.Ea.Xa.Nb) throw new N(60); + if (!a.Fa || !a.Fa.Ya.Ob) throw new N(60); for (var e = 0, f = 0; f < d; f++) { try { - var g = a.Ea.Xa.Nb(a.Ea); + var h = a.Fa.Ya.Ob(a.Fa); } catch (l) { throw new N(29); } - if (void 0 === g && 0 === e) throw new N(6); - if (null === g || void 0 === g) break; + if (void 0 === h && 0 === e) throw new N(6); + if (null === h || void 0 === h) break; e++; - b[c + f] = g; + b[c + f] = h; } e && (a.node.timestamp = Date.now()); return e; }, write: function (a, b, c, d) { - if (!a.Ea || !a.Ea.Xa.yb) throw new N(60); + if (!a.Fa || !a.Fa.Ya.zb) throw new N(60); try { - for (var e = 0; e < d; e++) a.Ea.Xa.yb(a.Ea, b[c + e]); + for (var e = 0; e < d; e++) a.Fa.Ya.zb(a.Fa, b[c + e]); } catch (f) { throw new N(29); } @@ -586,8 +608,8 @@ var createModule = (() => { return e; }, }, - bb = { - Nb: function (a) { + fb = { + Ob: function (a) { if (!a.input.length) { var b = null; "undefined" != typeof window && "function" == typeof window.prompt @@ -595,199 +617,199 @@ var createModule = (() => { : "function" == typeof readline && ((b = readline()), null !== b && (b += "\n")); if (!b) return null; - a.input = Xa(b, !0); + a.input = ab(b, !0); } return a.input.shift(); }, - yb: function (a, b) { + zb: function (a, b) { null === b || 10 === b - ? (ka(qa(a.Aa, 0)), (a.Aa = [])) - : 0 != b && a.Aa.push(b); + ? (ka(ra(a.Ba, 0)), (a.Ba = [])) + : 0 != b && a.Ba.push(b); }, - ib: function (a) { - a.Aa && 0 < a.Aa.length && (ka(qa(a.Aa, 0)), (a.Aa = [])); + jb: function (a) { + a.Ba && 0 < a.Ba.length && (ka(ra(a.Ba, 0)), (a.Ba = [])); }, }, - cb = { - yb: function (a, b) { + gb = { + zb: function (a, b) { null === b || 10 === b - ? (u(qa(a.Aa, 0)), (a.Aa = [])) - : 0 != b && a.Aa.push(b); + ? (u(ra(a.Ba, 0)), (a.Ba = [])) + : 0 != b && a.Ba.push(b); }, - ib: function (a) { - a.Aa && 0 < a.Aa.length && (u(qa(a.Aa, 0)), (a.Aa = [])); + jb: function (a) { + a.Ba && 0 < a.Ba.length && (u(ra(a.Ba, 0)), (a.Ba = [])); }, }; - function db(a) { + function hb(a) { a = 65536 * Math.ceil(a / 65536); - var b = eb(65536, a); + var b = ib(65536, a); b ? (w.fill(0, b, b + a), (a = b)) : (a = 0); return a; } var O = { - Ka: null, - Ma: function () { + La: null, + Na: function () { return O.createNode(null, "/", 16895, 0); }, createNode: function (a, b, c, d) { if (24576 === (c & 61440) || 4096 === (c & 61440)) throw new N(63); - O.Ka || - (O.Ka = { + O.La || + (O.La = { dir: { node: { - Ja: O.ua.Ja, - Da: O.ua.Da, - Ya: O.ua.Ya, - mb: O.ua.mb, - Ub: O.ua.Ub, - sb: O.ua.sb, - Vb: O.ua.Vb, - Tb: O.ua.Tb, - pb: O.ua.pb, + Ka: O.va.Ka, + Ea: O.va.Ea, + Za: O.va.Za, + nb: O.va.nb, + Vb: O.va.Vb, + tb: O.va.tb, + Wb: O.va.Wb, + Ub: O.va.Ub, + qb: O.va.qb, }, - stream: { Qa: O.va.Qa }, + stream: { Ra: O.wa.Ra }, }, file: { - node: { Ja: O.ua.Ja, Da: O.ua.Da }, + node: { Ka: O.va.Ka, Ea: O.va.Ea }, stream: { - Qa: O.va.Qa, - read: O.va.read, - write: O.va.write, - Eb: O.va.Eb, - Za: O.va.Za, - nb: O.va.nb, + Ra: O.wa.Ra, + read: O.wa.read, + write: O.wa.write, + Fb: O.wa.Fb, + $a: O.wa.$a, + ob: O.wa.ob, }, }, link: { - node: { Ja: O.ua.Ja, Da: O.ua.Da, cb: O.ua.cb }, + node: { Ka: O.va.Ka, Ea: O.va.Ea, eb: O.va.eb }, stream: {}, }, - Hb: { node: { Ja: O.ua.Ja, Da: O.ua.Da }, stream: fb }, + Ib: { node: { Ka: O.va.Ka, Ea: O.va.Ea }, stream: jb }, }); - c = gb(a, b, c, d); + c = kb(a, b, c, d); 16384 === (c.mode & 61440) - ? ((c.ua = O.Ka.dir.node), (c.va = O.Ka.dir.stream), (c.ta = {})) + ? ((c.va = O.La.dir.node), (c.wa = O.La.dir.stream), (c.ua = {})) : 32768 === (c.mode & 61440) - ? ((c.ua = O.Ka.file.node), - (c.va = O.Ka.file.stream), - (c.ya = 0), - (c.ta = null)) + ? ((c.va = O.La.file.node), + (c.wa = O.La.file.stream), + (c.za = 0), + (c.ua = null)) : 40960 === (c.mode & 61440) - ? ((c.ua = O.Ka.link.node), (c.va = O.Ka.link.stream)) + ? ((c.va = O.La.link.node), (c.wa = O.La.link.stream)) : 8192 === (c.mode & 61440) && - ((c.ua = O.Ka.Hb.node), (c.va = O.Ka.Hb.stream)); + ((c.va = O.La.Ib.node), (c.wa = O.La.Ib.stream)); c.timestamp = Date.now(); - a && ((a.ta[b] = c), (a.timestamp = c.timestamp)); + a && ((a.ua[b] = c), (a.timestamp = c.timestamp)); return c; }, - Lc: function (a) { - return a.ta - ? a.ta.subarray - ? a.ta.subarray(0, a.ya) - : new Uint8Array(a.ta) + Mc: function (a) { + return a.ua + ? a.ua.subarray + ? a.ua.subarray(0, a.za) + : new Uint8Array(a.ua) : new Uint8Array(0); }, - Kb: function (a, b) { - var c = a.ta ? a.ta.length : 0; + Lb: function (a, b) { + var c = a.ua ? a.ua.length : 0; c >= b || ((b = Math.max(b, (c * (1048576 > c ? 2 : 1.125)) >>> 0)), 0 != c && (b = Math.max(b, 256)), - (c = a.ta), - (a.ta = new Uint8Array(b)), - 0 < a.ya && a.ta.set(c.subarray(0, a.ya), 0)); + (c = a.ua), + (a.ua = new Uint8Array(b)), + 0 < a.za && a.ua.set(c.subarray(0, a.za), 0)); }, - yc: function (a, b) { - if (a.ya != b) - if (0 == b) (a.ta = null), (a.ya = 0); + zc: function (a, b) { + if (a.za != b) + if (0 == b) (a.ua = null), (a.za = 0); else { - var c = a.ta; - a.ta = new Uint8Array(b); - c && a.ta.set(c.subarray(0, Math.min(b, a.ya))); - a.ya = b; + var c = a.ua; + a.ua = new Uint8Array(b); + c && a.ua.set(c.subarray(0, Math.min(b, a.za))); + a.za = b; } }, - ua: { - Ja: function (a) { + va: { + Ka: function (a) { var b = {}; - b.fc = 8192 === (a.mode & 61440) ? a.id : 1; - b.vb = a.id; + b.hc = 8192 === (a.mode & 61440) ? a.id : 1; + b.wb = a.id; b.mode = a.mode; - b.uc = 1; + b.vc = 1; b.uid = 0; - b.nc = 0; - b.bb = a.bb; + b.oc = 0; + b.cb = a.cb; b.size = 16384 === (a.mode & 61440) ? 4096 : 32768 === (a.mode & 61440) - ? a.ya + ? a.za : 40960 === (a.mode & 61440) ? a.link.length : 0; - b.Zb = new Date(a.timestamp); - b.tc = new Date(a.timestamp); - b.dc = new Date(a.timestamp); - b.$b = 4096; - b.ac = Math.ceil(b.size / b.$b); + b.$b = new Date(a.timestamp); + b.uc = new Date(a.timestamp); + b.ec = new Date(a.timestamp); + b.ac = 4096; + b.bc = Math.ceil(b.size / b.ac); return b; }, - Da: function (a, b) { + Ea: function (a, b) { void 0 !== b.mode && (a.mode = b.mode); void 0 !== b.timestamp && (a.timestamp = b.timestamp); - void 0 !== b.size && O.yc(a, b.size); + void 0 !== b.size && O.zc(a, b.size); }, - Ya: function () { - throw hb[44]; + Za: function () { + throw lb[44]; }, - mb: function (a, b, c, d) { + nb: function (a, b, c, d) { return O.createNode(a, b, c, d); }, - Ub: function (a, b, c) { + Vb: function (a, b, c) { if (16384 === (a.mode & 61440)) { try { - var d = ib(b, c); + var d = mb(b, c); } catch (f) {} - if (d) for (var e in d.ta) throw new N(55); + if (d) for (var e in d.ua) throw new N(55); } - delete a.parent.ta[a.name]; + delete a.parent.ua[a.name]; a.parent.timestamp = Date.now(); a.name = c; - b.ta[c] = a; + b.ua[c] = a; b.timestamp = a.parent.timestamp; a.parent = b; }, - sb: function (a, b) { - delete a.ta[b]; + tb: function (a, b) { + delete a.ua[b]; a.timestamp = Date.now(); }, - Vb: function (a, b) { - var c = ib(a, b), + Wb: function (a, b) { + var c = mb(a, b), d; - for (d in c.ta) throw new N(55); - delete a.ta[b]; + for (d in c.ua) throw new N(55); + delete a.ua[b]; a.timestamp = Date.now(); }, - Tb: function (a) { + Ub: function (a) { var b = [".", ".."], c; - for (c in a.ta) a.ta.hasOwnProperty(c) && b.push(c); + for (c in a.ua) a.ua.hasOwnProperty(c) && b.push(c); return b; }, - pb: function (a, b, c) { + qb: function (a, b, c) { a = O.createNode(a, b, 41471, 0); a.link = c; return a; }, - cb: function (a) { + eb: function (a) { if (40960 !== (a.mode & 61440)) throw new N(28); return a.link; }, }, - va: { + wa: { read: function (a, b, c, d, e) { - var f = a.node.ta; - if (e >= a.node.ya) return 0; - a = Math.min(a.node.ya - e, d); + var f = a.node.ua; + if (e >= a.node.za) return 0; + a = Math.min(a.node.za - e, d); if (8 < a && f.subarray) b.set(f.subarray(e, e + a), c); else for (d = 0; d < a; d++) b[c + d] = f[e + d]; return a; @@ -797,137 +819,137 @@ var createModule = (() => { if (!d) return 0; a = a.node; a.timestamp = Date.now(); - if (b.subarray && (!a.ta || a.ta.subarray)) { - if (f) return (a.ta = b.subarray(c, c + d)), (a.ya = d); - if (0 === a.ya && 0 === e) - return (a.ta = b.slice(c, c + d)), (a.ya = d); - if (e + d <= a.ya) return a.ta.set(b.subarray(c, c + d), e), d; + if (b.subarray && (!a.ua || a.ua.subarray)) { + if (f) return (a.ua = b.subarray(c, c + d)), (a.za = d); + if (0 === a.za && 0 === e) + return (a.ua = b.slice(c, c + d)), (a.za = d); + if (e + d <= a.za) return a.ua.set(b.subarray(c, c + d), e), d; } - O.Kb(a, e + d); - if (a.ta.subarray && b.subarray) a.ta.set(b.subarray(c, c + d), e); - else for (f = 0; f < d; f++) a.ta[e + f] = b[c + f]; - a.ya = Math.max(a.ya, e + d); + O.Lb(a, e + d); + if (a.ua.subarray && b.subarray) a.ua.set(b.subarray(c, c + d), e); + else for (f = 0; f < d; f++) a.ua[e + f] = b[c + f]; + a.za = Math.max(a.za, e + d); return d; }, - Qa: function (a, b, c) { + Ra: function (a, b, c) { 1 === c ? (b += a.position) - : 2 === c && 32768 === (a.node.mode & 61440) && (b += a.node.ya); + : 2 === c && 32768 === (a.node.mode & 61440) && (b += a.node.za); if (0 > b) throw new N(28); return b; }, - Eb: function (a, b, c) { - O.Kb(a.node, b + c); - a.node.ya = Math.max(a.node.ya, b + c); + Fb: function (a, b, c) { + O.Lb(a.node, b + c); + a.node.za = Math.max(a.node.za, b + c); }, - Za: function (a, b, c, d, e) { + $a: function (a, b, c, d, e) { if (32768 !== (a.node.mode & 61440)) throw new N(43); - a = a.node.ta; + a = a.node.ua; if (e & 2 || a.buffer !== C.buffer) { if (0 < c || c + b < a.length) a = a.subarray ? a.subarray(c, c + b) : Array.prototype.slice.call(a, c, c + b); c = !0; - b = db(b); + b = hb(b); if (!b) throw new N(48); C.set(a, b); } else (c = !1), (b = a.byteOffset); - return { xa: b, Fb: c }; + return { ya: b, Gb: c }; }, - nb: function (a, b, c, d) { - O.va.write(a, b, 0, d, c, !1); + ob: function (a, b, c, d) { + O.wa.write(a, b, 0, d, c, !1); return 0; }, }, }; - function jb(a, b, c) { + function nb(a, b, c) { var d = "al " + a; ia( a, (e) => { e || ma('Loading data file "' + a + '" failed (no arrayBuffer).'); b(new Uint8Array(e)); - d && Fa(d); + d && Ja(d); }, () => { if (c) c(); else throw 'Loading data file "' + a + '" failed.'; }, ); - d && Ea(d); - } - var kb = null, - lb = {}, - mb = [], - nb = 1, - ob = null, - pb = !0, + d && Ia(d); + } + var ob = null, + pb = {}, + qb = [], + rb = 1, + sb = null, + tb = !0, N = null, - hb = {}, + lb = {}, P = (a, b = {}) => { - a = Wa(a); + a = $a(a); if (!a) return { path: "", node: null }; - b = Object.assign({ Mb: !0, Ab: 0 }, b); - if (8 < b.Ab) throw new N(32); - a = a.split("/").filter((g) => !!g); - for (var c = kb, d = "/", e = 0; e < a.length; e++) { + b = Object.assign({ Nb: !0, Bb: 0 }, b); + if (8 < b.Bb) throw new N(32); + a = a.split("/").filter((h) => !!h); + for (var c = ob, d = "/", e = 0; e < a.length; e++) { var f = e === a.length - 1; if (f && b.parent) break; - c = ib(c, a[e]); + c = mb(c, a[e]); d = L(d + "/" + a[e]); - c.$a && (!f || (f && b.Mb)) && (c = c.$a.root); - if (!f || b.hb) + c.ab && (!f || (f && b.Nb)) && (c = c.ab.root); + if (!f || b.ib) for (f = 0; 40960 === (c.mode & 61440); ) if ( - ((c = qb(d)), - (d = Wa(Ta(d), c)), - (c = P(d, { Ab: b.Ab + 1 }).node), + ((c = ub(d)), + (d = $a(Xa(d), c)), + (c = P(d, { Bb: b.Bb + 1 }).node), 40 < f++) ) throw new N(32); } return { path: d, node: c }; }, - rb = (a) => { + vb = (a) => { for (var b; ; ) { if (a === a.parent) return ( - (a = a.Ma.Pb), + (a = a.Na.Qb), b ? ("/" !== a[a.length - 1] ? a + "/" + b : a + b) : a ); b = b ? a.name + "/" + b : a.name; a = a.parent; } }, - sb = (a, b) => { + wb = (a, b) => { for (var c = 0, d = 0; d < b.length; d++) c = ((c << 5) - c + b.charCodeAt(d)) | 0; - return ((a + c) >>> 0) % ob.length; + return ((a + c) >>> 0) % sb.length; }, - ib = (a, b) => { + mb = (a, b) => { var c; - if ((c = (c = tb(a, "x")) ? c : a.ua.Ya ? 0 : 2)) throw new N(c, a); - for (c = ob[sb(a.id, b)]; c; c = c.Wa) { + if ((c = (c = xb(a, "x")) ? c : a.va.Za ? 0 : 2)) throw new N(c, a); + for (c = sb[wb(a.id, b)]; c; c = c.Xa) { var d = c.name; if (c.parent.id === a.id && d === b) return c; } - return a.ua.Ya(a, b); + return a.va.Za(a, b); }, - gb = (a, b, c, d) => { - a = new ub(a, b, c, d); - b = sb(a.parent.id, a.name); - a.Wa = ob[b]; - return (ob[b] = a); + kb = (a, b, c, d) => { + a = new yb(a, b, c, d); + b = wb(a.parent.id, a.name); + a.Xa = sb[b]; + return (sb[b] = a); }, - vb = { r: 0, "r+": 2, w: 577, "w+": 578, a: 1089, "a+": 1090 }, - wb = (a) => { + zb = { r: 0, "r+": 2, w: 577, "w+": 578, a: 1089, "a+": 1090 }, + Ab = (a) => { var b = ["r", "w", "rw"][a & 3]; a & 512 && (b += "w"); return b; }, - tb = (a, b) => { - if (pb) return 0; + xb = (a, b) => { + if (tb) return 0; if (!b.includes("r") || a.mode & 292) { if ( (b.includes("w") && !(a.mode & 146)) || @@ -937,23 +959,23 @@ var createModule = (() => { } else return 2; return 0; }, - xb = (a, b) => { + Bb = (a, b) => { try { - return ib(a, b), 20; + return mb(a, b), 20; } catch (c) {} - return tb(a, "wx"); + return xb(a, "wx"); }, - yb = () => { - for (var a = 0; 4096 >= a; a++) if (!mb[a]) return a; + Cb = () => { + for (var a = 0; 4096 >= a; a++) if (!qb[a]) return a; throw new N(33); }, - Ab = (a) => { - zb || - ((zb = function () { - this.ob = {}; + Eb = (a) => { + Db || + ((Db = function () { + this.pb = {}; }), - (zb.prototype = {}), - Object.defineProperties(zb.prototype, { + (Db.prototype = {}), + Object.defineProperties(Db.prototype, { object: { get: function () { return this.node; @@ -964,133 +986,133 @@ var createModule = (() => { }, flags: { get: function () { - return this.ob.flags; + return this.pb.flags; }, set: function (c) { - this.ob.flags = c; + this.pb.flags = c; }, }, position: { get: function () { - return this.ob.position; + return this.pb.position; }, set: function (c) { - this.ob.position = c; + this.pb.position = c; }, }, })); - a = Object.assign(new zb(), a); - var b = yb(); - a.Pa = b; - return (mb[b] = a); + a = Object.assign(new Db(), a); + var b = Cb(); + a.Qa = b; + return (qb[b] = a); }, - fb = { + jb = { open: (a) => { - a.va = lb[a.node.bb].va; - a.va.open && a.va.open(a); + a.wa = pb[a.node.cb].wa; + a.wa.open && a.wa.open(a); }, - Qa: () => { + Ra: () => { throw new N(70); }, }, - $a = (a, b) => { - lb[a] = { va: b }; + db = (a, b) => { + pb[a] = { wa: b }; }, - Bb = (a, b) => { + Fb = (a, b) => { var c = "/" === b, d = !b; - if (c && kb) throw new N(10); + if (c && ob) throw new N(10); if (!c && !d) { - var e = P(b, { Mb: !1 }); + var e = P(b, { Nb: !1 }); b = e.path; e = e.node; - if (e.$a) throw new N(10); + if (e.ab) throw new N(10); if (16384 !== (e.mode & 61440)) throw new N(54); } - b = { type: a, Oc: {}, Pb: b, sc: [] }; - a = a.Ma(b); - a.Ma = b; + b = { type: a, Pc: {}, Qb: b, tc: [] }; + a = a.Na(b); + a.Na = b; b.root = a; - c ? (kb = a) : e && ((e.$a = b), e.Ma && e.Ma.sc.push(b)); + c ? (ob = a) : e && ((e.ab = b), e.Na && e.Na.tc.push(b)); }, Q = (a, b, c) => { var d = P(a, { parent: !0 }).node; - a = Ua(a); + a = Ya(a); if (!a || "." === a || ".." === a) throw new N(28); - var e = xb(d, a); + var e = Bb(d, a); if (e) throw new N(e); - if (!d.ua.mb) throw new N(63); - return d.ua.mb(d, a, b, c); + if (!d.va.nb) throw new N(63); + return d.va.nb(d, a, b, c); }, - Cb = (a, b, c) => { + Gb = (a, b, c) => { "undefined" == typeof c && ((c = b), (b = 438)); return Q(a, b | 8192, c); }, - Db = (a, b) => { - if (!Wa(a)) throw new N(44); + Hb = (a, b) => { + if (!$a(a)) throw new N(44); var c = P(b, { parent: !0 }).node; if (!c) throw new N(44); - b = Ua(b); - var d = xb(c, b); + b = Ya(b); + var d = Bb(c, b); if (d) throw new N(d); - if (!c.ua.pb) throw new N(63); - c.ua.pb(c, b, a); + if (!c.va.qb) throw new N(63); + c.va.qb(c, b, a); }, - Eb = (a) => { + Ib = (a) => { var b = P(a, { parent: !0 }).node; if (!b) throw new N(44); - var c = Ua(a); - a = ib(b, c); + var c = Ya(a); + a = mb(b, c); a: { try { - var d = ib(b, c); + var d = mb(b, c); } catch (f) { - d = f.Fa; + d = f.Ga; break a; } - var e = tb(b, "wx"); + var e = xb(b, "wx"); d = e ? e : 16384 === (d.mode & 61440) ? 31 : 0; } if (d) throw new N(d); - if (!b.ua.sb) throw new N(63); - if (a.$a) throw new N(10); - b.ua.sb(b, c); - b = sb(a.parent.id, a.name); - if (ob[b] === a) ob[b] = a.Wa; + if (!b.va.tb) throw new N(63); + if (a.ab) throw new N(10); + b.va.tb(b, c); + b = wb(a.parent.id, a.name); + if (sb[b] === a) sb[b] = a.Xa; else - for (b = ob[b]; b; ) { - if (b.Wa === a) { - b.Wa = a.Wa; + for (b = sb[b]; b; ) { + if (b.Xa === a) { + b.Xa = a.Xa; break; } - b = b.Wa; + b = b.Xa; } }, - qb = (a) => { + ub = (a) => { a = P(a).node; if (!a) throw new N(44); - if (!a.ua.cb) throw new N(28); - return Wa(rb(a.parent), a.ua.cb(a)); + if (!a.va.eb) throw new N(28); + return $a(vb(a.parent), a.va.eb(a)); }, - Fb = (a, b) => { - a = P(a, { hb: !b }).node; + Jb = (a, b) => { + a = P(a, { ib: !b }).node; if (!a) throw new N(44); - if (!a.ua.Ja) throw new N(63); - return a.ua.Ja(a); - }, - Gb = (a) => Fb(a, !0), - Hb = (a, b) => { - a = "string" == typeof a ? P(a, { hb: !0 }).node : a; - if (!a.ua.Da) throw new N(63); - a.ua.Da(a, { + if (!a.va.Ka) throw new N(63); + return a.va.Ka(a); + }, + Kb = (a) => Jb(a, !0), + Lb = (a, b) => { + a = "string" == typeof a ? P(a, { ib: !0 }).node : a; + if (!a.va.Ea) throw new N(63); + a.va.Ea(a, { mode: (b & 4095) | (a.mode & -4096), timestamp: Date.now(), }); }, - Jb = (a, b, c) => { + Nb = (a, b, c) => { if ("" === a) throw new N(44); if ("string" == typeof b) { - var d = vb[b]; + var d = zb[b]; if ("undefined" == typeof d) throw Error("Unknown file open mode: " + b); b = d; @@ -1100,7 +1122,7 @@ var createModule = (() => { else { a = L(a); try { - e = P(a, { hb: !(b & 131072) }).node; + e = P(a, { ib: !(b & 131072) }).node; } catch (f) {} } d = !1; @@ -1116,96 +1138,96 @@ var createModule = (() => { (c = e ? 40960 === (e.mode & 61440) ? 32 - : 16384 === (e.mode & 61440) && ("r" !== wb(b) || b & 512) + : 16384 === (e.mode & 61440) && ("r" !== Ab(b) || b & 512) ? 31 - : tb(e, wb(b)) + : xb(e, Ab(b)) : 44) ) throw new N(c); if (b & 512 && !d) { c = e; - c = "string" == typeof c ? P(c, { hb: !0 }).node : c; - if (!c.ua.Da) throw new N(63); + c = "string" == typeof c ? P(c, { ib: !0 }).node : c; + if (!c.va.Ea) throw new N(63); if (16384 === (c.mode & 61440)) throw new N(31); if (32768 !== (c.mode & 61440)) throw new N(28); - if ((d = tb(c, "w"))) throw new N(d); - c.ua.Da(c, { size: 0, timestamp: Date.now() }); + if ((d = xb(c, "w"))) throw new N(d); + c.va.Ea(c, { size: 0, timestamp: Date.now() }); } b &= -131713; - e = Ab({ + e = Eb({ node: e, - path: rb(e), + path: vb(e), flags: b, seekable: !0, position: 0, - va: e.va, - Jc: [], + wa: e.wa, + Kc: [], error: !1, }); - e.va.open && e.va.open(e); - !h.logReadFiles || b & 1 || (Ib || (Ib = {}), a in Ib || (Ib[a] = 1)); + e.wa.open && e.wa.open(e); + !g.logReadFiles || b & 1 || (Mb || (Mb = {}), a in Mb || (Mb[a] = 1)); return e; }, - Kb = (a) => { - if (null === a.Pa) throw new N(8); - a.ub && (a.ub = null); + Ob = (a) => { + if (null === a.Qa) throw new N(8); + a.vb && (a.vb = null); try { - a.va.close && a.va.close(a); + a.wa.close && a.wa.close(a); } catch (b) { throw b; } finally { - mb[a.Pa] = null; + qb[a.Qa] = null; } - a.Pa = null; + a.Qa = null; }, - Lb = (a, b, c) => { - if (null === a.Pa) throw new N(8); - if (!a.seekable || !a.va.Qa) throw new N(70); + Pb = (a, b, c) => { + if (null === a.Qa) throw new N(8); + if (!a.seekable || !a.wa.Ra) throw new N(70); if (0 != c && 1 != c && 2 != c) throw new N(28); - a.position = a.va.Qa(a, b, c); - a.Jc = []; + a.position = a.wa.Ra(a, b, c); + a.Kc = []; }, - Mb = (a, b, c, d, e, f) => { + Qb = (a, b, c, d, e, f) => { if (0 > d || 0 > e) throw new N(28); - if (null === a.Pa) throw new N(8); + if (null === a.Qa) throw new N(8); if (0 === (a.flags & 2097155)) throw new N(8); if (16384 === (a.node.mode & 61440)) throw new N(31); - if (!a.va.write) throw new N(28); - a.seekable && a.flags & 1024 && Lb(a, 0, 2); - var g = "undefined" != typeof e; - if (!g) e = a.position; + if (!a.wa.write) throw new N(28); + a.seekable && a.flags & 1024 && Pb(a, 0, 2); + var h = "undefined" != typeof e; + if (!h) e = a.position; else if (!a.seekable) throw new N(70); - b = a.va.write(a, b, c, d, e, f); - g || (a.position += b); + b = a.wa.write(a, b, c, d, e, f); + h || (a.position += b); return b; }, - Nb = () => { + Rb = () => { N || ((N = function (a, b) { this.name = "ErrnoError"; this.node = b; - this.Ac = function (c) { - this.Fa = c; + this.Bc = function (c) { + this.Ga = c; }; - this.Ac(a); + this.Bc(a); this.message = "FS error"; }), (N.prototype = Error()), (N.prototype.constructor = N), [44].forEach((a) => { - hb[a] = new N(a); - hb[a].stack = ""; + lb[a] = new N(a); + lb[a].stack = ""; })); }, - Ob, - Pb = (a, b) => { + Sb, + Tb = (a, b) => { var c = 0; a && (c |= 365); b && (c |= 146); return c; }, - Qb = (a, b) => { - a = "string" == typeof a ? a : rb(a); + Ub = (a, b) => { + a = "string" == typeof a ? a : vb(a); for (b = b.split("/").reverse(); b.length; ) { var c = b.pop(); if (c) { @@ -1218,18 +1240,18 @@ var createModule = (() => { } return d; }, - Rb = (a, b, c, d) => { - a = L(("string" == typeof a ? a : rb(a)) + "/" + b); - c = Pb(c, d); + Vb = (a, b, c, d) => { + a = L(("string" == typeof a ? a : vb(a)) + "/" + b); + c = Tb(c, d); return Q(a, ((void 0 !== c ? c : 438) & 4095) | 32768, 0); }, - Sb = (a, b, c, d, e, f) => { - var g = b; + Wb = (a, b, c, d, e, f) => { + var h = b; a && - ((a = "string" == typeof a ? a : rb(a)), - (g = b ? L(a + "/" + b) : a)); - a = Pb(d, e); - g = Q(g, ((void 0 !== a ? a : 438) & 4095) | 32768, 0); + ((a = "string" == typeof a ? a : vb(a)), + (h = b ? L(a + "/" + b) : a)); + a = Tb(d, e); + h = Q(h, ((void 0 !== a ? a : 438) & 4095) | 32768, 0); if (c) { if ("string" == typeof c) { b = Array(c.length); @@ -1237,27 +1259,27 @@ var createModule = (() => { for (e = c.length; d < e; ++d) b[d] = c.charCodeAt(d); c = b; } - Hb(g, a | 146); - b = Jb(g, 577); - Mb(b, c, 0, c.length, 0, f); - Kb(b); - Hb(g, a); + Lb(h, a | 146); + b = Nb(h, 577); + Qb(b, c, 0, c.length, 0, f); + Ob(b); + Lb(h, a); } - return g; + return h; }, R = (a, b, c, d) => { - a = L(("string" == typeof a ? a : rb(a)) + "/" + b); - b = Pb(!!c, !!d); - R.Ob || (R.Ob = 64); - var e = (R.Ob++ << 8) | 0; - $a(e, { + a = L(("string" == typeof a ? a : vb(a)) + "/" + b); + b = Tb(!!c, !!d); + R.Pb || (R.Pb = 64); + var e = (R.Pb++ << 8) | 0; + db(e, { open: (f) => { f.seekable = !1; }, close: () => { d && d.buffer && d.buffer.length && d(10); }, - read: (f, g, l, m) => { + read: (f, h, l, m) => { for (var n = 0, r = 0; r < m; r++) { try { var p = c(); @@ -1267,15 +1289,15 @@ var createModule = (() => { if (void 0 === p && 0 === n) throw new N(6); if (null === p || void 0 === p) break; n++; - g[l + r] = p; + h[l + r] = p; } n && (f.node.timestamp = Date.now()); return n; }, - write: (f, g, l, m) => { + write: (f, h, l, m) => { for (var n = 0; n < m; n++) try { - d(g[l + n]); + d(h[l + n]); } catch (r) { throw new N(29); } @@ -1283,30 +1305,30 @@ var createModule = (() => { return n; }, }); - return Cb(a, b, e); + return Gb(a, b, e); }, - Tb = (a) => { - if (!(a.pc || a.qc || a.link || a.ta)) { + Xb = (a) => { + if (!(a.qc || a.rc || a.link || a.ua)) { if ("undefined" != typeof XMLHttpRequest) throw Error( "Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.", ); if (ha) try { - (a.ta = Xa(ha(a.url), !0)), (a.ya = a.ta.length); + (a.ua = ab(ha(a.url), !0)), (a.za = a.ua.length); } catch (b) { throw new N(29); } else throw Error("Cannot load without read() or XMLHttpRequest."); } }, - Ub = (a, b, c, d, e) => { + Yb = (a, b, c, d, e) => { function f() { - this.xb = !1; - this.gb = []; + this.yb = !1; + this.hb = []; } - function g(p, q, k, t, x) { - p = p.node.ta; + function h(p, q, k, t, x) { + p = p.node.ua; if (x >= p.length) return 0; t = Math.min(p.length - x, t); if (p.slice) for (var z = 0; z < t; z++) q[k + z] = p[x + z]; @@ -1315,14 +1337,14 @@ var createModule = (() => { } f.prototype.get = function (p) { if (!(p > this.length - 1 || 0 > p)) { - var q = p % this.Ib; - return this.jb((p / this.Ib) | 0)[q]; + var q = p % this.Jb; + return this.kb((p / this.Jb) | 0)[q]; } }; - f.prototype.zc = function (p) { - this.jb = p; + f.prototype.Ac = function (p) { + this.kb = p; }; - f.prototype.Gb = function () { + f.prototype.Hb = function () { var p = new XMLHttpRequest(); p.open("HEAD", c, !1); p.send(null); @@ -1335,12 +1357,12 @@ var createModule = (() => { var x = 1048576; t || (x = q); var z = this; - z.zc((F) => { + z.Ac((F) => { var G = F * x, y = (F + 1) * x - 1; y = Math.min(y, q - 1); - if ("undefined" == typeof z.gb[F]) { - var M = z.gb; + if ("undefined" == typeof z.hb[F]) { + var M = z.hb; if (G > y) throw Error( "invalid range (" + G + ", " + y + ") or no bytes requested!", @@ -1361,115 +1383,115 @@ var createModule = (() => { G = void 0 !== B.response ? new Uint8Array(B.response || []) - : Xa(B.responseText || "", !0); + : ab(B.responseText || "", !0); M[F] = G; } - if ("undefined" == typeof z.gb[F]) throw Error("doXHR failed!"); - return z.gb[F]; + if ("undefined" == typeof z.hb[F]) throw Error("doXHR failed!"); + return z.hb[F]; }); if (p || !q) (x = q = 1), - (x = q = this.jb(0).length), + (x = q = this.kb(0).length), ka( "LazyFiles on gzip forces download of the whole file when length is accessed", ); - this.Xb = q; - this.Wb = x; - this.xb = !0; + this.Yb = q; + this.Xb = x; + this.yb = !0; }; if ("undefined" != typeof XMLHttpRequest) { var l = new f(); Object.defineProperties(l, { length: { get: function () { - this.xb || this.Gb(); - return this.Xb; + this.yb || this.Hb(); + return this.Yb; }, }, - Ib: { + Jb: { get: function () { - this.xb || this.Gb(); - return this.Wb; + this.yb || this.Hb(); + return this.Xb; }, }, }); var m = void 0; } else (m = c), (l = void 0); - var n = Rb(a, b, d, e); - l ? (n.ta = l) : m && ((n.ta = null), (n.url = m)); + var n = Vb(a, b, d, e); + l ? (n.ua = l) : m && ((n.ua = null), (n.url = m)); Object.defineProperties(n, { - ya: { + za: { get: function () { - return this.ta.length; + return this.ua.length; }, }, }); var r = {}; - Object.keys(n.va).forEach((p) => { - var q = n.va[p]; + Object.keys(n.wa).forEach((p) => { + var q = n.wa[p]; r[p] = function () { - Tb(n); + Xb(n); return q.apply(null, arguments); }; }); r.read = (p, q, k, t, x) => { - Tb(n); - return g(p, q, k, t, x); + Xb(n); + return h(p, q, k, t, x); }; - r.Za = (p, q, k) => { - Tb(n); - var t = db(q); + r.$a = (p, q, k) => { + Xb(n); + var t = hb(q); if (!t) throw new N(48); - g(p, C, t, q, k); - return { xa: t, Fb: !0 }; + h(p, C, t, q, k); + return { ya: t, Gb: !0 }; }; - n.va = r; + n.wa = r; return n; }, - Wb = (a, b, c, d, e, f, g, l, m, n) => { + $b = (a, b, c, d, e, f, h, l, m, n) => { function r(k) { function t(x) { n && n(); - l || Sb(a, b, x, d, e, m); + l || Wb(a, b, x, d, e, m); f && f(); - Fa(q); + Ja(q); } - Vb.Mc(k, p, t, () => { - g && g(); - Fa(q); + Zb.Nc(k, p, t, () => { + h && h(); + Ja(q); }) || t(k); } - var p = b ? Wa(L(a + "/" + b)) : a, + var p = b ? $a(L(a + "/" + b)) : a, q = "cp " + p; - Ea(q); - "string" == typeof c ? jb(c, (k) => r(k), g) : r(c); + Ia(q); + "string" == typeof c ? nb(c, (k) => r(k), h) : r(c); }, S = {}, - zb, - Ib; - function Xb(a, b, c) { + Db, + Mb; + function ac(a, b, c) { if ("/" === b.charAt(0)) return b; - a = -100 === a ? "/" : Yb(a).path; + a = -100 === a ? "/" : bc(a).path; if (0 == b.length) { if (!c) throw new N(44); return a; } return L(a + "/" + b); } - function Zb(a, b, c) { + function cc(a, b, c) { try { var d = a(b); } catch (f) { - if (f && f.node && L(b) !== L(rb(f.node))) return -54; + if (f && f.node && L(b) !== L(vb(f.node))) return -54; throw f; } - E[c >> 2] = d.fc; - E[(c + 8) >> 2] = d.vb; + E[c >> 2] = d.hc; + E[(c + 8) >> 2] = d.wb; E[(c + 12) >> 2] = d.mode; - I[(c + 16) >> 2] = d.uc; + I[(c + 16) >> 2] = d.vc; E[(c + 20) >> 2] = d.uid; - E[(c + 24) >> 2] = d.nc; - E[(c + 28) >> 2] = d.bb; + E[(c + 24) >> 2] = d.oc; + E[(c + 28) >> 2] = d.cb; K = [ d.size >>> 0, ((J = d.size), @@ -1482,10 +1504,10 @@ var createModule = (() => { E[(c + 40) >> 2] = K[0]; E[(c + 44) >> 2] = K[1]; E[(c + 48) >> 2] = 4096; - E[(c + 52) >> 2] = d.ac; - a = d.Zb.getTime(); - b = d.tc.getTime(); - var e = d.dc.getTime(); + E[(c + 52) >> 2] = d.bc; + a = d.$b.getTime(); + b = d.uc.getTime(); + var e = d.ec.getTime(); K = [ Math.floor(a / 1e3) >>> 0, ((J = Math.floor(a / 1e3)), @@ -1523,8 +1545,8 @@ var createModule = (() => { E[(c + 92) >> 2] = K[1]; I[(c + 96) >> 2] = (e % 1e3) * 1e3; K = [ - d.vb >>> 0, - ((J = d.vb), + d.wb >>> 0, + ((J = d.wb), 1 <= +Math.abs(J) ? 0 < J ? (Math.min(+Math.floor(J / 4294967296), 4294967295) | 0) >>> 0 @@ -1535,42 +1557,42 @@ var createModule = (() => { E[(c + 108) >> 2] = K[1]; return 0; } - var $b = void 0; - function Yb(a) { - a = mb[a]; + var dc = void 0; + function bc(a) { + a = qb[a]; if (!a) throw new N(8); return a; } - var ac = {}; - function bc(a) { + var ec = {}; + function fc(a) { for (; a.length; ) { var b = a.pop(); a.pop()(b); } } - function cc(a) { + function gc(a) { return this.fromWireType(E[a >> 2]); } - var dc = {}, - ec = {}, - fc = {}; - function gc(a) { + var hc = {}, + ic = {}, + jc = {}; + function kc(a) { if (void 0 === a) return "_unknown"; a = a.replace(/[^a-zA-Z0-9_]/g, "$"); var b = a.charCodeAt(0); return 48 <= b && 57 >= b ? "_" + a : a; } - function hc(a, b) { - a = gc(a); + function lc(a, b) { + a = kc(a); return { [a]: function () { return b.apply(this, arguments); }, }[a]; } - function ic(a) { + function mc(a) { var b = Error, - c = hc(a, function (d) { + c = lc(a, function (d) { this.name = a; this.message = d; d = Error(d).stack; @@ -1587,36 +1609,36 @@ var createModule = (() => { }; return c; } - var jc = void 0; - function kc(a) { - throw new jc(a); + var nc = void 0; + function oc(a) { + throw new nc(a); } - function lc(a, b, c) { + function pc(a, b, c) { function d(l) { l = c(l); - l.length !== a.length && kc("Mismatched type converter count"); - for (var m = 0; m < a.length; ++m) mc(a[m], l[m]); + l.length !== a.length && oc("Mismatched type converter count"); + for (var m = 0; m < a.length; ++m) qc(a[m], l[m]); } a.forEach(function (l) { - fc[l] = b; + jc[l] = b; }); var e = Array(b.length), f = [], - g = 0; + h = 0; b.forEach((l, m) => { - ec.hasOwnProperty(l) - ? (e[m] = ec[l]) + ic.hasOwnProperty(l) + ? (e[m] = ic[l]) : (f.push(l), - dc.hasOwnProperty(l) || (dc[l] = []), - dc[l].push(() => { - e[m] = ec[l]; - ++g; - g === f.length && d(e); + hc.hasOwnProperty(l) || (hc[l] = []), + hc[l].push(() => { + e[m] = ic[l]; + ++h; + h === f.length && d(e); })); }); 0 === f.length && d(e); } - function nc(a) { + function rc(a) { switch (a) { case 1: return 0; @@ -1630,298 +1652,298 @@ var createModule = (() => { throw new TypeError("Unknown type size: " + a); } } - var oc = void 0; + var sc = void 0; function T(a) { - for (var b = ""; w[a]; ) b += oc[w[a++]]; + for (var b = ""; w[a]; ) b += sc[w[a++]]; return b; } - var pc = void 0; - function V(a) { - throw new pc(a); + var tc = void 0; + function U(a) { + throw new tc(a); } - function mc(a, b, c = {}) { + function qc(a, b, c = {}) { if (!("argPackAdvance" in b)) throw new TypeError( "registerType registeredInstance requires argPackAdvance", ); var d = b.name; - a || V('type "' + d + '" must have a positive integer typeid pointer'); - if (ec.hasOwnProperty(a)) { - if (c.oc) return; - V("Cannot register type '" + d + "' twice"); + a || U('type "' + d + '" must have a positive integer typeid pointer'); + if (ic.hasOwnProperty(a)) { + if (c.pc) return; + U("Cannot register type '" + d + "' twice"); } - ec[a] = b; - delete fc[a]; - dc.hasOwnProperty(a) && - ((b = dc[a]), delete dc[a], b.forEach((e) => e())); + ic[a] = b; + delete jc[a]; + hc.hasOwnProperty(a) && + ((b = hc[a]), delete hc[a], b.forEach((e) => e())); } - function qc(a) { - V(a.sa.za.wa.name + " instance already deleted"); + function uc(a) { + U(a.ta.Aa.xa.name + " instance already deleted"); } - var rc = !1; - function sc() {} - function tc(a) { + var vc = !1; + function wc() {} + function xc(a) { --a.count.value; - 0 === a.count.value && (a.Ca ? a.Ga.Na(a.Ca) : a.za.wa.Na(a.xa)); + 0 === a.count.value && (a.Da ? a.Ha.Oa(a.Da) : a.Aa.xa.Oa(a.ya)); } - function uc(a, b, c) { + function yc(a, b, c) { if (b === c) return a; - if (void 0 === c.Ha) return null; - a = uc(a, b, c.Ha); - return null === a ? null : c.hc(a); - } - var vc = {}, - wc = []; - function xc() { - for (; wc.length; ) { - var a = wc.pop(); - a.sa.Ua = !1; + if (void 0 === c.Ia) return null; + a = yc(a, b, c.Ia); + return null === a ? null : c.ic(a); + } + var zc = {}, + Ac = []; + function Bc() { + for (; Ac.length; ) { + var a = Ac.pop(); + a.ta.Va = !1; a["delete"](); } } - var yc = void 0, - zc = {}; - function Ac(a, b) { - for (void 0 === b && V("ptr should not be undefined"); a.Ha; ) - (b = a.eb(b)), (a = a.Ha); - return zc[b]; - } - function Bc(a, b) { - (b.za && b.xa) || kc("makeClassHandle requires ptr and ptrType"); - !!b.Ga !== !!b.Ca && - kc("Both smartPtrType and smartPtr must be specified"); + var Cc = void 0, + Dc = {}; + function Ec(a, b) { + for (void 0 === b && U("ptr should not be undefined"); a.Ia; ) + (b = a.fb(b)), (a = a.Ia); + return Dc[b]; + } + function Fc(a, b) { + (b.Aa && b.ya) || oc("makeClassHandle requires ptr and ptrType"); + !!b.Ha !== !!b.Da && + oc("Both smartPtrType and smartPtr must be specified"); b.count = { value: 1 }; - return Cc(Object.create(a, { sa: { value: b } })); + return Gc(Object.create(a, { ta: { value: b } })); } - function Cc(a) { + function Gc(a) { if ("undefined" === typeof FinalizationRegistry) - return (Cc = (b) => b), a; - rc = new FinalizationRegistry((b) => { - tc(b.sa); + return (Gc = (b) => b), a; + vc = new FinalizationRegistry((b) => { + xc(b.ta); }); - Cc = (b) => { - var c = b.sa; - c.Ca && rc.register(b, { sa: c }, b); + Gc = (b) => { + var c = b.ta; + c.Da && vc.register(b, { ta: c }, b); return b; }; - sc = (b) => { - rc.unregister(b); + wc = (b) => { + vc.unregister(b); }; - return Cc(a); + return Gc(a); } - function Dc() {} - function Ec(a, b, c) { - if (void 0 === a[b].Ba) { + function Hc() {} + function Ic(a, b, c) { + if (void 0 === a[b].Ca) { var d = a[b]; a[b] = function () { - a[b].Ba.hasOwnProperty(arguments.length) || - V( + a[b].Ca.hasOwnProperty(arguments.length) || + U( "Function '" + c + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + - a[b].Ba + + a[b].Ca + ")!", ); - return a[b].Ba[arguments.length].apply(this, arguments); + return a[b].Ca[arguments.length].apply(this, arguments); }; - a[b].Ba = []; - a[b].Ba[d.fb] = d; + a[b].Ca = []; + a[b].Ca[d.gb] = d; } } - function Fc(a, b, c) { - h.hasOwnProperty(a) - ? ((void 0 === c || (void 0 !== h[a].Ba && void 0 !== h[a].Ba[c])) && - V("Cannot register public name '" + a + "' twice"), - Ec(h, a, a), - h.hasOwnProperty(c) && - V( + function Jc(a, b, c) { + g.hasOwnProperty(a) + ? ((void 0 === c || (void 0 !== g[a].Ca && void 0 !== g[a].Ca[c])) && + U("Cannot register public name '" + a + "' twice"), + Ic(g, a, a), + g.hasOwnProperty(c) && + U( "Cannot register multiple overloads of a function with the same number of arguments (" + c + ")!", ), - (h[a].Ba[c] = b)) - : ((h[a] = b), void 0 !== c && (h[a].Nc = c)); + (g[a].Ca[c] = b)) + : ((g[a] = b), void 0 !== c && (g[a].Oc = c)); } - function Gc(a, b, c, d, e, f, g, l) { + function Kc(a, b, c, d, e, f, h, l) { this.name = a; this.constructor = b; - this.Va = c; - this.Na = d; - this.Ha = e; - this.jc = f; - this.eb = g; - this.hc = l; - this.wc = []; - } - function Hc(a, b, c) { + this.Wa = c; + this.Oa = d; + this.Ia = e; + this.kc = f; + this.fb = h; + this.ic = l; + this.xc = []; + } + function Lc(a, b, c) { for (; b !== c; ) - b.eb || - V( + b.fb || + U( "Expected null or instance of " + c.name + ", got an instance of " + b.name, ), - (a = b.eb(a)), - (b = b.Ha); + (a = b.fb(a)), + (b = b.Ia); return a; } - function Ic(a, b) { + function Mc(a, b) { if (null === b) - return this.wb && V("null is not a valid " + this.name), 0; - b.sa || V('Cannot pass "' + Jc(b) + '" as a ' + this.name); - b.sa.xa || - V("Cannot pass deleted object as a pointer of type " + this.name); - return Hc(b.sa.xa, b.sa.za.wa, this.wa); + return this.xb && U("null is not a valid " + this.name), 0; + b.ta || U('Cannot pass "' + Nc(b) + '" as a ' + this.name); + b.ta.ya || + U("Cannot pass deleted object as a pointer of type " + this.name); + return Lc(b.ta.ya, b.ta.Aa.xa, this.xa); } - function Kc(a, b) { + function Oc(a, b) { if (null === b) { - this.wb && V("null is not a valid " + this.name); - if (this.lb) { - var c = this.zb(); - null !== a && a.push(this.Na, c); + this.xb && U("null is not a valid " + this.name); + if (this.mb) { + var c = this.Ab(); + null !== a && a.push(this.Oa, c); return c; } return 0; } - b.sa || V('Cannot pass "' + Jc(b) + '" as a ' + this.name); - b.sa.xa || - V("Cannot pass deleted object as a pointer of type " + this.name); - !this.kb && - b.sa.za.kb && - V( + b.ta || U('Cannot pass "' + Nc(b) + '" as a ' + this.name); + b.ta.ya || + U("Cannot pass deleted object as a pointer of type " + this.name); + !this.lb && + b.ta.Aa.lb && + U( "Cannot convert argument of type " + - (b.sa.Ga ? b.sa.Ga.name : b.sa.za.name) + + (b.ta.Ha ? b.ta.Ha.name : b.ta.Aa.name) + " to parameter type " + this.name, ); - c = Hc(b.sa.xa, b.sa.za.wa, this.wa); - if (this.lb) + c = Lc(b.ta.ya, b.ta.Aa.xa, this.xa); + if (this.mb) switch ( - (void 0 === b.sa.Ca && - V("Passing raw pointer to smart pointer is illegal"), - this.Ec) + (void 0 === b.ta.Da && + U("Passing raw pointer to smart pointer is illegal"), + this.Fc) ) { case 0: - b.sa.Ga === this - ? (c = b.sa.Ca) - : V( + b.ta.Ha === this + ? (c = b.ta.Da) + : U( "Cannot convert argument of type " + - (b.sa.Ga ? b.sa.Ga.name : b.sa.za.name) + + (b.ta.Ha ? b.ta.Ha.name : b.ta.Aa.name) + " to parameter type " + this.name, ); break; case 1: - c = b.sa.Ca; + c = b.ta.Da; break; case 2: - if (b.sa.Ga === this) c = b.sa.Ca; + if (b.ta.Ha === this) c = b.ta.Da; else { var d = b.clone(); - c = this.xc( + c = this.yc( c, - Lc(function () { + Pc(function () { d["delete"](); }), ); - null !== a && a.push(this.Na, c); + null !== a && a.push(this.Oa, c); } break; default: - V("Unsupporting sharing policy"); + U("Unsupporting sharing policy"); } return c; } - function Mc(a, b) { + function Qc(a, b) { if (null === b) - return this.wb && V("null is not a valid " + this.name), 0; - b.sa || V('Cannot pass "' + Jc(b) + '" as a ' + this.name); - b.sa.xa || - V("Cannot pass deleted object as a pointer of type " + this.name); - b.sa.za.kb && - V( + return this.xb && U("null is not a valid " + this.name), 0; + b.ta || U('Cannot pass "' + Nc(b) + '" as a ' + this.name); + b.ta.ya || + U("Cannot pass deleted object as a pointer of type " + this.name); + b.ta.Aa.lb && + U( "Cannot convert argument of type " + - b.sa.za.name + + b.ta.Aa.name + " to parameter type " + this.name, ); - return Hc(b.sa.xa, b.sa.za.wa, this.wa); + return Lc(b.ta.ya, b.ta.Aa.xa, this.xa); } - function Nc(a, b, c, d) { + function Rc(a, b, c, d) { this.name = a; - this.wa = b; - this.wb = c; - this.kb = d; - this.lb = !1; - this.Na = this.xc = this.zb = this.Sb = this.Ec = this.vc = void 0; - void 0 !== b.Ha - ? (this.toWireType = Kc) - : ((this.toWireType = d ? Ic : Mc), (this.Ia = null)); - } - function Oc(a, b, c) { - h.hasOwnProperty(a) || kc("Replacing nonexistant public symbol"); - void 0 !== h[a].Ba && void 0 !== c - ? (h[a].Ba[c] = b) - : ((h[a] = b), (h[a].fb = c)); - } - var Pc = []; - function Qc(a) { - var b = Pc[a]; - b || (a >= Pc.length && (Pc.length = a + 1), (Pc[a] = b = wa.get(a))); + this.xa = b; + this.xb = c; + this.lb = d; + this.mb = !1; + this.Oa = this.yc = this.Ab = this.Tb = this.Fc = this.wc = void 0; + void 0 !== b.Ia + ? (this.toWireType = Oc) + : ((this.toWireType = d ? Mc : Qc), (this.Ja = null)); + } + function Sc(a, b, c) { + g.hasOwnProperty(a) || oc("Replacing nonexistant public symbol"); + void 0 !== g[a].Ca && void 0 !== c + ? (g[a].Ca[c] = b) + : ((g[a] = b), (g[a].gb = c)); + } + var Tc = []; + function Uc(a) { + var b = Tc[a]; + b || (a >= Tc.length && (Tc.length = a + 1), (Tc[a] = b = xa.get(a))); return b; } - function Rc(a, b) { + function Vc(a, b) { var c = []; return function () { c.length = 0; Object.assign(c, arguments); if (a.includes("j")) { - var d = h["dynCall_" + a]; + var d = g["dynCall_" + a]; d = c && c.length ? d.apply(null, [b].concat(c)) : d.call(null, b); - } else d = Qc(b).apply(null, c); + } else d = Uc(b).apply(null, c); return d; }; } function W(a, b) { a = T(a); - var c = a.includes("j") ? Rc(a, b) : Qc(b); + var c = a.includes("j") ? Vc(a, b) : Uc(b); "function" != typeof c && - V("unknown function pointer with signature " + a + ": " + b); + U("unknown function pointer with signature " + a + ": " + b); return c; } - var Sc = void 0; - function Tc(a) { - a = Uc(a); + var Wc = void 0; + function Xc(a) { + a = Yc(a); var b = T(a); X(a); return b; } - function Vc(a, b) { + function Zc(a, b) { function c(f) { - e[f] || ec[f] || (fc[f] ? fc[f].forEach(c) : (d.push(f), (e[f] = !0))); + e[f] || ic[f] || (jc[f] ? jc[f].forEach(c) : (d.push(f), (e[f] = !0))); } var d = [], e = {}; b.forEach(c); - throw new Sc(a + ": " + d.map(Tc).join([", "])); + throw new Wc(a + ": " + d.map(Xc).join([", "])); } - function Wc(a, b) { + function $c(a, b) { for (var c = [], d = 0; d < a; d++) c.push(I[(b + 4 * d) >> 2]); return c; } - function Xc(a, b, c, d, e) { + function ad(a, b, c, d, e) { var f = b.length; 2 > f && - V( + U( "argTypes array size mismatch! Must at least get return value and 'this' types!", ); - var g = null !== b[1] && null !== c, + var h = null !== b[1] && null !== c, l = !1; for (c = 1; c < b.length; ++c) - if (null !== b[c] && void 0 === b[c].Ia) { + if (null !== b[c] && void 0 === b[c].Ja) { l = !0; break; } @@ -1932,7 +1954,7 @@ var createModule = (() => { q = []; return function () { arguments.length !== n && - V( + U( "function " + a + " called with " + @@ -1942,26 +1964,26 @@ var createModule = (() => { " args!", ); q.length = 0; - p.length = g ? 2 : 1; + p.length = h ? 2 : 1; p[0] = e; - if (g) { + if (h) { var k = b[1].toWireType(q, this); p[1] = k; } for (var t = 0; t < n; ++t) (r[t] = b[t + 2].toWireType(q, arguments[t])), p.push(r[t]); t = d.apply(null, p); - if (l) bc(q); + if (l) fc(q); else - for (var x = g ? 1 : 2; x < b.length; x++) { + for (var x = h ? 1 : 2; x < b.length; x++) { var z = 1 === x ? k : r[x - 2]; - null !== b[x].Ia && b[x].Ia(z); + null !== b[x].Ja && b[x].Ja(z); } k = m ? b[0].fromWireType(t) : void 0; return k; }; } - var Yc = [], + var bd = [], Y = [ {}, { value: void 0 }, @@ -1969,14 +1991,14 @@ var createModule = (() => { { value: !0 }, { value: !1 }, ]; - function Zc(a) { - 4 < a && 0 === --Y[a].Bb && ((Y[a] = void 0), Yc.push(a)); + function cd(a) { + 4 < a && 0 === --Y[a].Cb && ((Y[a] = void 0), bd.push(a)); } - var $c = (a) => { - a || V("Cannot use deleted val. handle = " + a); + var dd = (a) => { + a || U("Cannot use deleted val. handle = " + a); return Y[a].value; }, - Lc = (a) => { + Pc = (a) => { switch (a) { case void 0: return 1; @@ -1987,33 +2009,33 @@ var createModule = (() => { case !1: return 4; default: - var b = Yc.length ? Yc.pop() : Y.length; - Y[b] = { Bb: 1, value: a }; + var b = bd.length ? bd.pop() : Y.length; + Y[b] = { Cb: 1, value: a }; return b; } }; - function Jc(a) { + function Nc(a) { if (null === a) return "null"; var b = typeof a; return "object" === b || "array" === b || "function" === b ? a.toString() : "" + a; } - function ad(a, b) { + function ed(a, b) { switch (b) { case 2: return function (c) { - return this.fromWireType(ta[c >> 2]); + return this.fromWireType(ua[c >> 2]); }; case 3: return function (c) { - return this.fromWireType(ua[c >> 3]); + return this.fromWireType(va[c >> 3]); }; default: throw new TypeError("Unknown float type: " + a); } } - function bd(a, b, c) { + function fd(a, b, c) { switch (b) { case 0: return c @@ -2026,7 +2048,7 @@ var createModule = (() => { case 1: return c ? function (d) { - return sa[d >> 1]; + return ta[d >> 1]; } : function (d) { return D[d >> 1]; @@ -2043,35 +2065,35 @@ var createModule = (() => { throw new TypeError("Unknown integer type: " + a); } } - var cd = + var gd = "undefined" != typeof TextDecoder ? new TextDecoder("utf-16le") : void 0; - function dd(a, b) { + function hd(a, b) { var c = a >> 1; for (var d = c + b / 2; !(c >= d) && D[c]; ) ++c; c <<= 1; - if (32 < c - a && cd) return cd.decode(w.subarray(a, c)); + if (32 < c - a && gd) return gd.decode(w.subarray(a, c)); c = ""; for (d = 0; !(d >= b / 2); ++d) { - var e = sa[(a + 2 * d) >> 1]; + var e = ta[(a + 2 * d) >> 1]; if (0 == e) break; c += String.fromCharCode(e); } return c; } - function ed(a, b, c) { + function jd(a, b, c) { void 0 === c && (c = 2147483647); if (2 > c) return 0; c -= 2; var d = b; c = c < 2 * a.length ? c / 2 : a.length; - for (var e = 0; e < c; ++e) (sa[b >> 1] = a.charCodeAt(e)), (b += 2); - sa[b >> 1] = 0; + for (var e = 0; e < c; ++e) (ta[b >> 1] = a.charCodeAt(e)), (b += 2); + ta[b >> 1] = 0; return b - d; } - function fd(a) { + function kd(a) { return 2 * a.length; } - function gd(a, b) { + function ld(a, b) { for (var c = 0, d = ""; !(c >= b / 4); ) { var e = E[(a + 4 * c) >> 2]; if (0 == e) break; @@ -2083,7 +2105,7 @@ var createModule = (() => { } return d; } - function hd(a, b, c) { + function md(a, b, c) { void 0 === c && (c = 2147483647); if (4 > c) return 0; var d = b; @@ -2091,8 +2113,8 @@ var createModule = (() => { for (var e = 0; e < a.length; ++e) { var f = a.charCodeAt(e); if (55296 <= f && 57343 >= f) { - var g = a.charCodeAt(++e); - f = (65536 + ((f & 1023) << 10)) | (g & 1023); + var h = a.charCodeAt(++e); + f = (65536 + ((f & 1023) << 10)) | (h & 1023); } E[b >> 2] = f; b += 4; @@ -2101,7 +2123,7 @@ var createModule = (() => { E[b >> 2] = 0; return b - d; } - function jd(a) { + function nd(a) { for (var b = 0, c = 0; c < a.length; ++c) { var d = a.charCodeAt(c); 55296 <= d && 57343 >= d && ++c; @@ -2109,18 +2131,18 @@ var createModule = (() => { } return b; } - function kd(a, b) { - var c = ec[a]; - void 0 === c && V(b + " has unknown type " + Tc(a)); + function od(a, b) { + var c = ic[a]; + void 0 === c && U(b + " has unknown type " + Xc(a)); return c; } - var ld = {}; - function md(a) { - var b = ld[a]; + var pd = {}; + function qd(a) { + var b = pd[a]; return void 0 === b ? T(a) : b; } - var nd = []; - function od() { + var rd = []; + function sd() { function a(b) { b.$$$embind_global$$$ = b; var c = @@ -2136,72 +2158,72 @@ var createModule = (() => { if ("object" == typeof $$$embind_global$$$) return $$$embind_global$$$; throw Error("unable to get global object."); } - function pd(a) { - var b = nd.length; - nd.push(a); + function td(a) { + var b = rd.length; + rd.push(a); return b; } - function qd(a, b) { + function ud(a, b) { for (var c = Array(a), d = 0; d < a; ++d) - c[d] = kd(I[(b + 4 * d) >> 2], "parameter " + d); + c[d] = od(I[(b + 4 * d) >> 2], "parameter " + d); return c; } - var rd = []; - function sd(a) { + var vd = []; + function wd(a) { var b = Array(a + 1); return function (c, d, e) { b[0] = c; for (var f = 0; f < a; ++f) { - var g = kd(I[(d + 4 * f) >> 2], "parameter " + f); - b[f + 1] = g.readValueFromPointer(e); - e += g.argPackAdvance; + var h = od(I[(d + 4 * f) >> 2], "parameter " + f); + b[f + 1] = h.readValueFromPointer(e); + e += h.argPackAdvance; } c = new (c.bind.apply(c, b))(); - return Lc(c); + return Pc(c); }; } - var td = {}; - function ud(a) { + var xd = {}; + function yd(a) { return 0 === a % 4 && (0 !== a % 100 || 0 === a % 400); } - var vd = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335], - wd = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; - function xd(a) { - return (ud(a.getFullYear()) ? vd : wd)[a.getMonth()] + a.getDate() - 1; + var zd = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335], + Ad = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; + function Bd(a) { + return (yd(a.getFullYear()) ? zd : Ad)[a.getMonth()] + a.getDate() - 1; } - function yd(a) { - var b = ra(a) + 1, - c = zd(b); + function Cd(a) { + var b = sa(a) + 1, + c = Dd(b); c && A(a, C, c, b); return c; } - var Ad = [], - Bd = {}; + var Ed = [], + Fd = {}; function Z(a, b) { I[a >> 2] = b; I[(a + 4) >> 2] = (b / 4294967296) | 0; } - var Cd; - function Dd(a, b, c, d, e) { + var Gd; + function Hd(a, b, c, d, e) { function f() { var B = 0, - U = 0; + V = 0; y.response && F && 0 === I[(a + 12) >> 2] && - (U = y.response.byteLength); - 0 < U && ((B = zd(U)), w.set(new Uint8Array(y.response), B)); + (V = y.response.byteLength); + 0 < V && ((B = Dd(V)), w.set(new Uint8Array(y.response), B)); I[(a + 12) >> 2] = B; - Z(a + 16, U); + Z(a + 16, V); Z(a + 24, 0); (B = y.response ? y.response.byteLength : 0) && Z(a + 32, B); D[(a + 40) >> 1] = y.readyState; D[(a + 42) >> 1] = y.status; y.statusText && A(y.statusText, w, a + 44, 64); } - var g = I[(a + 8) >> 2]; - if (g) { - var l = v(g), + var h = I[(a + 8) >> 2]; + if (h) { + var l = v(h), m = a + 112, n = v(m); n || (n = "GET"); @@ -2210,7 +2232,7 @@ var createModule = (() => { q = !!I[(m + 60) >> 2], k = I[(m + 68) >> 2], t = I[(m + 72) >> 2]; - g = I[(m + 76) >> 2]; + h = I[(m + 76) >> 2]; var x = I[(m + 80) >> 2], z = I[(m + 84) >> 2]; m = I[(m + 88) >> 2]; @@ -2223,47 +2245,47 @@ var createModule = (() => { y.withCredentials = q; y.open(n, l, !r, k, t); r || (y.timeout = p); - y.Qc = l; + y.Rc = l; y.responseType = "arraybuffer"; x && ((l = v(x)), y.overrideMimeType(l)); - if (g) + if (h) for (;;) { - n = I[g >> 2]; + n = I[h >> 2]; if (!n) break; - l = I[(g + 4) >> 2]; + l = I[(h + 4) >> 2]; if (!l) break; - g += 8; + h += 8; n = v(n); l = v(l); y.setRequestHeader(n, l); } var M = I[(a + 0) >> 2]; - Bd[M] = y; - g = z && m ? w.slice(z, z + m) : null; + Fd[M] = y; + h = z && m ? w.slice(z, z + m) : null; y.onload = (B) => { - M in Bd && + M in Fd && (f(), 200 <= y.status && 300 > y.status ? b && b(a, y, B) : c && c(a, y, B)); }; y.onerror = (B) => { - M in Bd && (f(), c && c(a, y, B)); + M in Fd && (f(), c && c(a, y, B)); }; y.ontimeout = (B) => { - M in Bd && c && c(a, y, B); + M in Fd && c && c(a, y, B); }; y.onprogress = (B) => { - if (M in Bd) { - var U = F && G && y.response ? y.response.byteLength : 0, + if (M in Fd) { + var V = F && G && y.response ? y.response.byteLength : 0, H = 0; - 0 < U && + 0 < V && F && G && - ((H = zd(U)), w.set(new Uint8Array(y.response), H)); + ((H = Dd(V)), w.set(new Uint8Array(y.response), H)); I[(a + 12) >> 2] = H; - Z(a + 16, U); - Z(a + 24, B.loaded - U); + Z(a + 16, V); + Z(a + 24, B.loaded - V); Z(a + 32, B.total); D[(a + 40) >> 1] = y.readyState; 3 <= y.readyState && @@ -2277,34 +2299,58 @@ var createModule = (() => { } }; y.onreadystatechange = (B) => { - M in Bd && - ((D[(a + 40) >> 1] = y.readyState), - 2 <= y.readyState && (D[(a + 42) >> 1] = y.status), - e && e(a, y, B)); + M in Fd + ? ((D[(a + 40) >> 1] = y.readyState), + 2 <= y.readyState && (D[(a + 42) >> 1] = y.status), + e && e(a, y, B)) + : --Da; }; try { - y.send(g); + y.send(h); } catch (B) { c && c(a, y, B); } } else c(a, 0, "no url specified!"); } - function Ed(a, b, c, d) { - var e = Cd; + function Id(a) { + a instanceof Ua || "unwind" == a || ea(1, a); + } + function Jd(a) { + pa = a; + if (!(noExitRuntime || 0 < Da)) { + Kd(); + Va(Aa); + Sb = !1; + Ld(0); + for (var b = 0; b < qb.length; b++) { + var c = qb[b]; + c && Ob(c); + } + Ca = !0; + } + pa = a; + if (!(noExitRuntime || 0 < Da)) { + if (g.onExit) g.onExit(a); + oa = !0; + } + ea(a, new Ua(a)); + } + function Md(a, b, c, d) { + var e = Gd; if (e) { var f = I[(a + 112 + 64) >> 2]; f || (f = I[(a + 8) >> 2]); - var g = v(f); + var h = v(f); try { var l = e .transaction(["FILES"], "readwrite") .objectStore("FILES") - .put(b, g); + .put(b, h); l.onsuccess = () => { D[(a + 40) >> 1] = 4; D[(a + 42) >> 1] = 200; A("OK", w, a + 44, 64); - c(a, 0, g); + c(a, 0, h); }; l.onerror = (m) => { D[(a + 40) >> 1] = 4; @@ -2317,8 +2363,8 @@ var createModule = (() => { } } else d(a, 0, "IndexedDB not available!"); } - function Fd(a, b, c) { - var d = Cd; + function Nd(a, b, c) { + var d = Gd; if (d) { var e = I[(a + 112 + 64) >> 2]; e || (e = I[(a + 8) >> 2]); @@ -2328,12 +2374,12 @@ var createModule = (() => { .transaction(["FILES"], "readonly") .objectStore("FILES") .get(e); - f.onsuccess = (g) => { - if (g.target.result) { - g = g.target.result; - var l = g.byteLength || g.length, - m = zd(l); - w.set(new Uint8Array(g), m); + f.onsuccess = (h) => { + if (h.target.result) { + h = h.target.result; + var l = h.byteLength || h.length, + m = Dd(l); + w.set(new Uint8Array(h), m); I[(a + 12) >> 2] = m; Z(a + 16, l); Z(a + 24, 0); @@ -2341,26 +2387,26 @@ var createModule = (() => { D[(a + 40) >> 1] = 4; D[(a + 42) >> 1] = 200; A("OK", w, a + 44, 64); - b(a, 0, g); + b(a, 0, h); } else (D[(a + 40) >> 1] = 4), (D[(a + 42) >> 1] = 404), A("Not Found", w, a + 44, 64), c(a, 0, "no data"); }; - f.onerror = (g) => { + f.onerror = (h) => { D[(a + 40) >> 1] = 4; D[(a + 42) >> 1] = 404; A("Not Found", w, a + 44, 64); - c(a, 0, g); + c(a, 0, h); }; - } catch (g) { - c(a, 0, g); + } catch (h) { + c(a, 0, h); } } else c(a, 0, "IndexedDB not available!"); } - function Gd(a, b, c) { - var d = Cd; + function Od(a, b, c) { + var d = Gd; if (d) { var e = I[(a + 112 + 64) >> 2]; e || (e = I[(a + 8) >> 2]); @@ -2370,8 +2416,8 @@ var createModule = (() => { .transaction(["FILES"], "readwrite") .objectStore("FILES") .delete(e); - f.onsuccess = (g) => { - g = g.target.result; + f.onsuccess = (h) => { + h = h.target.result; I[(a + 12) >> 2] = 0; Z(a + 16, 0); Z(a + 24, 0); @@ -2379,22 +2425,22 @@ var createModule = (() => { D[(a + 40) >> 1] = 4; D[(a + 42) >> 1] = 200; A("OK", w, a + 44, 64); - b(a, 0, g); + b(a, 0, h); }; - f.onerror = (g) => { + f.onerror = (h) => { D[(a + 40) >> 1] = 4; D[(a + 42) >> 1] = 404; A("Not Found", w, a + 44, 64); - c(a, 0, g); + c(a, 0, h); }; - } catch (g) { - c(a, 0, g); + } catch (h) { + c(a, 0, h); } } else c(a, 0, "IndexedDB not available!"); } - var Hd = {}; - function Id() { - if (!Jd) { + var Pd = {}; + function Qd() { + if (!Rd) { var a = { USER: "web_user", LOGNAME: "web_user", @@ -2411,22 +2457,22 @@ var createModule = (() => { _: da || "./this.program", }, b; - for (b in Hd) void 0 === Hd[b] ? delete a[b] : (a[b] = Hd[b]); + for (b in Pd) void 0 === Pd[b] ? delete a[b] : (a[b] = Pd[b]); var c = []; for (b in a) c.push(b + "=" + a[b]); - Jd = c; + Rd = c; } - return Jd; + return Rd; } - var Jd; - function Kd(a, b) { - Kd.Rb || (Kd.Rb = Va()); - for (var c = 0; c < b; c++) C[(a + c) >> 0] = Kd.Rb(); + var Rd; + function Sd(a, b) { + Sd.Sb || (Sd.Sb = Za()); + for (var c = 0; c < b; c++) C[(a + c) >> 0] = Sd.Sb(); return 0; } - var Ld = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], - Md = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - function Nd(a, b, c, d) { + var Td = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + Ud = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + function Vd(a, b, c, d) { function e(k, t, x) { for (k = "number" == typeof k ? k.toString() : k || ""; k.length < t; ) k = x[0] + k; @@ -2435,7 +2481,7 @@ var createModule = (() => { function f(k, t) { return e(k, t, "0"); } - function g(k, t) { + function h(k, t) { function x(F) { return 0 > F ? -1 : 0 < F ? 1 : 0; } @@ -2464,10 +2510,10 @@ var createModule = (() => { } } function m(k) { - var t = k.Ra; - for (k = new Date(new Date(k.Sa + 1900, 0, 1).getTime()); 0 < t; ) { + var t = k.Sa; + for (k = new Date(new Date(k.Ta + 1900, 0, 1).getTime()); 0 < t; ) { var x = k.getMonth(), - z = (ud(k.getFullYear()) ? Ld : Md)[x]; + z = (yd(k.getFullYear()) ? Td : Ud)[x]; if (t > z - k.getDate()) (t -= z - k.getDate() + 1), k.setDate(1), @@ -2482,25 +2528,25 @@ var createModule = (() => { x = new Date(k.getFullYear() + 1, 0, 4); t = l(new Date(k.getFullYear(), 0, 4)); x = l(x); - return 0 >= g(t, k) - ? 0 >= g(x, k) + return 0 >= h(t, k) + ? 0 >= h(x, k) ? k.getFullYear() + 1 : k.getFullYear() : k.getFullYear() - 1; } var n = E[(d + 40) >> 2]; d = { - Hc: E[d >> 2], - Gc: E[(d + 4) >> 2], - qb: E[(d + 8) >> 2], - Db: E[(d + 12) >> 2], - rb: E[(d + 16) >> 2], - Sa: E[(d + 20) >> 2], - La: E[(d + 24) >> 2], - Ra: E[(d + 28) >> 2], - Pc: E[(d + 32) >> 2], - Fc: E[(d + 36) >> 2], - Ic: n ? v(n) : "", + Ic: E[d >> 2], + Hc: E[(d + 4) >> 2], + rb: E[(d + 8) >> 2], + Eb: E[(d + 12) >> 2], + sb: E[(d + 16) >> 2], + Ta: E[(d + 20) >> 2], + Ma: E[(d + 24) >> 2], + Sa: E[(d + 28) >> 2], + Qc: E[(d + 32) >> 2], + Gc: E[(d + 36) >> 2], + Jc: n ? v(n) : "", }; c = v(c); n = { @@ -2543,25 +2589,25 @@ var createModule = (() => { ); n = { "%a": function (k) { - return p[k.La].substring(0, 3); + return p[k.Ma].substring(0, 3); }, "%A": function (k) { - return p[k.La]; + return p[k.Ma]; }, "%b": function (k) { - return q[k.rb].substring(0, 3); + return q[k.sb].substring(0, 3); }, "%B": function (k) { - return q[k.rb]; + return q[k.sb]; }, "%C": function (k) { - return f(((k.Sa + 1900) / 100) | 0, 2); + return f(((k.Ta + 1900) / 100) | 0, 2); }, "%d": function (k) { - return f(k.Db, 2); + return f(k.Eb, 2); }, "%e": function (k) { - return e(k.Db, 2, " "); + return e(k.Eb, 2, " "); }, "%g": function (k) { return m(k).toString().substring(2); @@ -2570,73 +2616,73 @@ var createModule = (() => { return m(k); }, "%H": function (k) { - return f(k.qb, 2); + return f(k.rb, 2); }, "%I": function (k) { - k = k.qb; + k = k.rb; 0 == k ? (k = 12) : 12 < k && (k -= 12); return f(k, 2); }, "%j": function (k) { for ( var t = 0, x = 0; - x <= k.rb - 1; - t += (ud(k.Sa + 1900) ? Ld : Md)[x++] + x <= k.sb - 1; + t += (yd(k.Ta + 1900) ? Td : Ud)[x++] ); - return f(k.Db + t, 3); + return f(k.Eb + t, 3); }, "%m": function (k) { - return f(k.rb + 1, 2); + return f(k.sb + 1, 2); }, "%M": function (k) { - return f(k.Gc, 2); + return f(k.Hc, 2); }, "%n": function () { return "\n"; }, "%p": function (k) { - return 0 <= k.qb && 12 > k.qb ? "AM" : "PM"; + return 0 <= k.rb && 12 > k.rb ? "AM" : "PM"; }, "%S": function (k) { - return f(k.Hc, 2); + return f(k.Ic, 2); }, "%t": function () { return "\t"; }, "%u": function (k) { - return k.La || 7; + return k.Ma || 7; }, "%U": function (k) { - return f(Math.floor((k.Ra + 7 - k.La) / 7), 2); + return f(Math.floor((k.Sa + 7 - k.Ma) / 7), 2); }, "%V": function (k) { - var t = Math.floor((k.Ra + 7 - ((k.La + 6) % 7)) / 7); - 2 >= (k.La + 371 - k.Ra - 2) % 7 && t++; + var t = Math.floor((k.Sa + 7 - ((k.Ma + 6) % 7)) / 7); + 2 >= (k.Ma + 371 - k.Sa - 2) % 7 && t++; if (t) 53 == t && - ((x = (k.La + 371 - k.Ra) % 7), - 4 == x || (3 == x && ud(k.Sa)) || (t = 1)); + ((x = (k.Ma + 371 - k.Sa) % 7), + 4 == x || (3 == x && yd(k.Ta)) || (t = 1)); else { t = 52; - var x = (k.La + 7 - k.Ra - 1) % 7; - (4 == x || (5 == x && ud((k.Sa % 400) - 1))) && t++; + var x = (k.Ma + 7 - k.Sa - 1) % 7; + (4 == x || (5 == x && yd((k.Ta % 400) - 1))) && t++; } return f(t, 2); }, "%w": function (k) { - return k.La; + return k.Ma; }, "%W": function (k) { - return f(Math.floor((k.Ra + 7 - ((k.La + 6) % 7)) / 7), 2); + return f(Math.floor((k.Sa + 7 - ((k.Ma + 6) % 7)) / 7), 2); }, "%y": function (k) { - return (k.Sa + 1900).toString().substring(2); + return (k.Ta + 1900).toString().substring(2); }, "%Y": function (k) { - return k.Sa + 1900; + return k.Ta + 1900; }, "%z": function (k) { - k = k.Fc; + k = k.Gc; var t = 0 <= k; k = Math.abs(k) / 60; return ( @@ -2645,7 +2691,7 @@ var createModule = (() => { ); }, "%Z": function (k) { - return k.Ic; + return k.Jc; }, "%%": function () { return "%"; @@ -2655,24 +2701,24 @@ var createModule = (() => { for (r in n) c.includes(r) && (c = c.replace(new RegExp(r, "g"), n[r](d))); c = c.replace(/\0\0/g, "%"); - r = Xa(c, !1); + r = ab(c, !1); if (r.length > b) return 0; C.set(r, a); return r.length - 1; } - function ub(a, b, c, d) { + function yb(a, b, c, d) { a || (a = this); this.parent = a; - this.Ma = a.Ma; - this.$a = null; - this.id = nb++; + this.Na = a.Na; + this.ab = null; + this.id = rb++; this.name = b; this.mode = c; - this.ua = {}; this.va = {}; - this.bb = d; + this.wa = {}; + this.cb = d; } - Object.defineProperties(ub.prototype, { + Object.defineProperties(yb.prototype, { read: { get: function () { return 365 === (this.mode & 365); @@ -2689,32 +2735,32 @@ var createModule = (() => { a ? (this.mode |= 146) : (this.mode &= -147); }, }, - qc: { + rc: { get: function () { return 16384 === (this.mode & 61440); }, }, - pc: { + qc: { get: function () { return 8192 === (this.mode & 61440); }, }, }); - Nb(); - ob = Array(4096); - Bb(O, "/"); + Rb(); + sb = Array(4096); + Fb(O, "/"); Q("/tmp", 16895, 0); Q("/home", 16895, 0); Q("/home/web_user", 16895, 0); (() => { Q("/dev", 16895, 0); - $a(259, { read: () => 0, write: (b, c, d, e) => e }); - Cb("/dev/null", 259); - Za(1280, bb); - Za(1536, cb); - Cb("/dev/tty", 1280); - Cb("/dev/tty1", 1536); - var a = Va(); + db(259, { read: () => 0, write: (b, c, d, e) => e }); + Gb("/dev/null", 259); + cb(1280, fb); + cb(1536, gb); + Gb("/dev/tty", 1280); + Gb("/dev/tty1", 1536); + var a = Za(); R("/dev", "random", a); R("/dev", "urandom", a); Q("/dev/shm", 16895, 0); @@ -2724,18 +2770,18 @@ var createModule = (() => { Q("/proc", 16895, 0); var a = Q("/proc/self", 16895, 0); Q("/proc/self/fd", 16895, 0); - Bb( + Fb( { - Ma: () => { - var b = gb(a, "fd", 16895, 73); - b.ua = { - Ya: (c, d) => { - var e = mb[+d]; + Na: () => { + var b = kb(a, "fd", 16895, 73); + b.va = { + Za: (c, d) => { + var e = qb[+d]; if (!e) throw new N(8); c = { parent: null, - Ma: { Pb: "fake" }, - ua: { cb: () => e.path }, + Na: { Qb: "fake" }, + va: { eb: () => e.path }, }; return (c.parent = c); }, @@ -2746,135 +2792,135 @@ var createModule = (() => { "/proc/self/fd", ); })(); - var Vb; - h.FS_createPath = Qb; - h.FS_createDataFile = Sb; - h.FS_createPreloadedFile = Wb; - h.FS_unlink = Eb; - h.FS_createLazyFile = Ub; - h.FS_createDevice = R; - jc = h.InternalError = ic("InternalError"); - for (var Od = Array(256), Pd = 0; 256 > Pd; ++Pd) - Od[Pd] = String.fromCharCode(Pd); - oc = Od; - pc = h.BindingError = ic("BindingError"); - Dc.prototype.isAliasOf = function (a) { - if (!(this instanceof Dc && a instanceof Dc)) return !1; - var b = this.sa.za.wa, - c = this.sa.xa, - d = a.sa.za.wa; - for (a = a.sa.xa; b.Ha; ) (c = b.eb(c)), (b = b.Ha); - for (; d.Ha; ) (a = d.eb(a)), (d = d.Ha); + var Zb; + g.FS_createPath = Ub; + g.FS_createDataFile = Wb; + g.FS_createPreloadedFile = $b; + g.FS_unlink = Ib; + g.FS_createLazyFile = Yb; + g.FS_createDevice = R; + nc = g.InternalError = mc("InternalError"); + for (var Wd = Array(256), Xd = 0; 256 > Xd; ++Xd) + Wd[Xd] = String.fromCharCode(Xd); + sc = Wd; + tc = g.BindingError = mc("BindingError"); + Hc.prototype.isAliasOf = function (a) { + if (!(this instanceof Hc && a instanceof Hc)) return !1; + var b = this.ta.Aa.xa, + c = this.ta.ya, + d = a.ta.Aa.xa; + for (a = a.ta.ya; b.Ia; ) (c = b.fb(c)), (b = b.Ia); + for (; d.Ia; ) (a = d.fb(a)), (d = d.Ia); return b === d && c === a; }; - Dc.prototype.clone = function () { - this.sa.xa || qc(this); - if (this.sa.ab) return (this.sa.count.value += 1), this; - var a = Cc, + Hc.prototype.clone = function () { + this.ta.ya || uc(this); + if (this.ta.bb) return (this.ta.count.value += 1), this; + var a = Gc, b = Object, c = b.create, d = Object.getPrototypeOf(this), - e = this.sa; + e = this.ta; a = a( c.call(b, d, { - sa: { + ta: { value: { count: e.count, - Ua: e.Ua, - ab: e.ab, - xa: e.xa, - za: e.za, - Ca: e.Ca, - Ga: e.Ga, + Va: e.Va, + bb: e.bb, + ya: e.ya, + Aa: e.Aa, + Da: e.Da, + Ha: e.Ha, }, }, }), ); - a.sa.count.value += 1; - a.sa.Ua = !1; + a.ta.count.value += 1; + a.ta.Va = !1; return a; }; - Dc.prototype["delete"] = function () { - this.sa.xa || qc(this); - this.sa.Ua && !this.sa.ab && V("Object already scheduled for deletion"); - sc(this); - tc(this.sa); - this.sa.ab || ((this.sa.Ca = void 0), (this.sa.xa = void 0)); + Hc.prototype["delete"] = function () { + this.ta.ya || uc(this); + this.ta.Va && !this.ta.bb && U("Object already scheduled for deletion"); + wc(this); + xc(this.ta); + this.ta.bb || ((this.ta.Da = void 0), (this.ta.ya = void 0)); }; - Dc.prototype.isDeleted = function () { - return !this.sa.xa; + Hc.prototype.isDeleted = function () { + return !this.ta.ya; }; - Dc.prototype.deleteLater = function () { - this.sa.xa || qc(this); - this.sa.Ua && !this.sa.ab && V("Object already scheduled for deletion"); - wc.push(this); - 1 === wc.length && yc && yc(xc); - this.sa.Ua = !0; + Hc.prototype.deleteLater = function () { + this.ta.ya || uc(this); + this.ta.Va && !this.ta.bb && U("Object already scheduled for deletion"); + Ac.push(this); + 1 === Ac.length && Cc && Cc(Bc); + this.ta.Va = !0; return this; }; - h.getInheritedInstanceCount = function () { - return Object.keys(zc).length; + g.getInheritedInstanceCount = function () { + return Object.keys(Dc).length; }; - h.getLiveInheritedInstances = function () { + g.getLiveInheritedInstances = function () { var a = [], b; - for (b in zc) zc.hasOwnProperty(b) && a.push(zc[b]); + for (b in Dc) Dc.hasOwnProperty(b) && a.push(Dc[b]); return a; }; - h.flushPendingDeletes = xc; - h.setDelayFunction = function (a) { - yc = a; - wc.length && yc && yc(xc); + g.flushPendingDeletes = Bc; + g.setDelayFunction = function (a) { + Cc = a; + Ac.length && Cc && Cc(Bc); }; - Nc.prototype.kc = function (a) { - this.Sb && (a = this.Sb(a)); + Rc.prototype.lc = function (a) { + this.Tb && (a = this.Tb(a)); return a; }; - Nc.prototype.Jb = function (a) { - this.Na && this.Na(a); + Rc.prototype.Kb = function (a) { + this.Oa && this.Oa(a); }; - Nc.prototype.argPackAdvance = 8; - Nc.prototype.readValueFromPointer = cc; - Nc.prototype.deleteObject = function (a) { + Rc.prototype.argPackAdvance = 8; + Rc.prototype.readValueFromPointer = gc; + Rc.prototype.deleteObject = function (a) { if (null !== a) a["delete"](); }; - Nc.prototype.fromWireType = function (a) { + Rc.prototype.fromWireType = function (a) { function b() { - return this.lb - ? Bc(this.wa.Va, { za: this.vc, xa: c, Ga: this, Ca: a }) - : Bc(this.wa.Va, { za: this, xa: a }); + return this.mb + ? Fc(this.xa.Wa, { Aa: this.wc, ya: c, Ha: this, Da: a }) + : Fc(this.xa.Wa, { Aa: this, ya: a }); } - var c = this.kc(a); - if (!c) return this.Jb(a), null; - var d = Ac(this.wa, c); + var c = this.lc(a); + if (!c) return this.Kb(a), null; + var d = Ec(this.xa, c); if (void 0 !== d) { - if (0 === d.sa.count.value) - return (d.sa.xa = c), (d.sa.Ca = a), d.clone(); + if (0 === d.ta.count.value) + return (d.ta.ya = c), (d.ta.Da = a), d.clone(); d = d.clone(); - this.Jb(a); + this.Kb(a); return d; } - d = this.wa.jc(c); - d = vc[d]; + d = this.xa.kc(c); + d = zc[d]; if (!d) return b.call(this); - d = this.kb ? d.cc : d.pointerType; - var e = uc(c, this.wa, d.wa); + d = this.lb ? d.dc : d.pointerType; + var e = yc(c, this.xa, d.xa); return null === e ? b.call(this) - : this.lb - ? Bc(d.wa.Va, { za: d, xa: e, Ga: this, Ca: a }) - : Bc(d.wa.Va, { za: d, xa: e }); + : this.mb + ? Fc(d.xa.Wa, { Aa: d, ya: e, Ha: this, Da: a }) + : Fc(d.xa.Wa, { Aa: d, ya: e }); }; - Sc = h.UnboundTypeError = ic("UnboundTypeError"); - h.count_emval_handles = function () { + Wc = g.UnboundTypeError = mc("UnboundTypeError"); + g.count_emval_handles = function () { for (var a = 0, b = 5; b < Y.length; ++b) void 0 !== Y[b] && ++a; return a; }; - h.get_first_emval = function () { + g.get_first_emval = function () { for (var a = 5; a < Y.length; ++a) if (void 0 !== Y[a]) return Y[a]; return null; }; - Ea("library_fetch_init"); + Ia("library_fetch_init"); (function (a, b) { try { var c = indexedDB.open("emscripten_filesystem", 1); @@ -2891,80 +2937,80 @@ var createModule = (() => { c.onerror = (d) => b(d); })( (a) => { - Cd = a; - Fa("library_fetch_init"); + Gd = a; + Ja("library_fetch_init"); }, () => { - Cd = !1; - Fa("library_fetch_init"); + Gd = !1; + Ja("library_fetch_init"); }, ); - var Qd = { - M: function (a, b) { + var Yd = { + L: function (a, b) { try { - var c = Yb(a); - return Zb(Fb, c.path, b); + var c = bc(a); + return cc(Jb, c.path, b); } catch (d) { if ("undefined" == typeof S || "ErrnoError" !== d.name) throw d; - return -d.Fa; + return -d.Ga; } }, - K: function (a, b, c, d) { + J: function (a, b, c, d) { try { b = v(b); var e = d & 256; - b = Xb(a, b, d & 4096); - return Zb(e ? Gb : Fb, b, c); + b = ac(a, b, d & 4096); + return cc(e ? Kb : Jb, b, c); } catch (f) { if ("undefined" == typeof S || "ErrnoError" !== f.name) throw f; - return -f.Fa; + return -f.Ga; } }, - N: function (a, b, c, d) { - $b = d; + M: function (a, b, c, d) { + dc = d; try { b = v(b); - b = Xb(a, b); + b = ac(a, b); if (d) { - $b += 4; - var e = E[($b - 4) >> 2]; + dc += 4; + var e = E[(dc - 4) >> 2]; } else e = 0; - return Jb(b, c, e).Pa; + return Nb(b, c, e).Qa; } catch (f) { if ("undefined" == typeof S || "ErrnoError" !== f.name) throw f; - return -f.Fa; + return -f.Ga; } }, - L: function (a, b) { + K: function (a, b) { try { - return (a = v(a)), Zb(Fb, a, b); + return (a = v(a)), cc(Jb, a, b); } catch (c) { if ("undefined" == typeof S || "ErrnoError" !== c.name) throw c; - return -c.Fa; + return -c.Ga; } }, - f: function (a) { - var b = ac[a]; - delete ac[a]; - var c = b.zb, - d = b.Na, - e = b.Lb, - f = e.map((g) => g.mc).concat(e.map((g) => g.Cc)); - lc([a], f, (g) => { + e: function (a) { + var b = ec[a]; + delete ec[a]; + var c = b.Ab, + d = b.Oa, + e = b.Mb, + f = e.map((h) => h.nc).concat(e.map((h) => h.Dc)); + pc([a], f, (h) => { var l = {}; e.forEach((m, n) => { - var r = g[n], - p = m.jb, - q = m.lc, - k = g[n + e.length], - t = m.Bc, - x = m.Dc; - l[m.ic] = { + var r = h[n], + p = m.kb, + q = m.mc, + k = h[n + e.length], + t = m.Cc, + x = m.Ec; + l[m.jc] = { read: (z) => r.fromWireType(p(q, z)), write: (z, F) => { var G = []; t(x, z, k.toWireType(G, F)); - bc(G); + fc(G); }, }; }); @@ -2988,156 +3034,156 @@ var createModule = (() => { return p; }, argPackAdvance: 8, - readValueFromPointer: cc, - Ia: d, + readValueFromPointer: gc, + Ja: d, }, ]; }); }, B: function () {}, - V: function (a, b, c, d, e) { - var f = nc(c); + U: function (a, b, c, d, e) { + var f = rc(c); b = T(b); - mc(a, { + qc(a, { name: b, - fromWireType: function (g) { - return !!g; + fromWireType: function (h) { + return !!h; }, - toWireType: function (g, l) { + toWireType: function (h, l) { return l ? d : e; }, argPackAdvance: 8, - readValueFromPointer: function (g) { + readValueFromPointer: function (h) { if (1 === c) var l = C; - else if (2 === c) l = sa; + else if (2 === c) l = ta; else if (4 === c) l = E; else throw new TypeError("Unknown boolean type size: " + b); - return this.fromWireType(l[g >> f]); + return this.fromWireType(l[h >> f]); }, - Ia: null, + Ja: null, }); }, - z: function (a, b, c, d, e, f, g, l, m, n, r, p, q) { + z: function (a, b, c, d, e, f, h, l, m, n, r, p, q) { r = T(r); f = W(e, f); - l && (l = W(g, l)); + l && (l = W(h, l)); n && (n = W(m, n)); q = W(p, q); - var k = gc(r); - Fc(k, function () { - Vc("Cannot construct " + r + " due to unbound types", [d]); + var k = kc(r); + Jc(k, function () { + Zc("Cannot construct " + r + " due to unbound types", [d]); }); - lc([a, b, c], d ? [d] : [], function (t) { + pc([a, b, c], d ? [d] : [], function (t) { t = t[0]; if (d) { - var x = t.wa; - var z = x.Va; - } else z = Dc.prototype; - t = hc(k, function () { + var x = t.xa; + var z = x.Wa; + } else z = Hc.prototype; + t = lc(k, function () { if (Object.getPrototypeOf(this) !== F) - throw new pc("Use 'new' to construct " + r); - if (void 0 === G.Oa) - throw new pc(r + " has no accessible constructor"); - var M = G.Oa[arguments.length]; + throw new tc("Use 'new' to construct " + r); + if (void 0 === G.Pa) + throw new tc(r + " has no accessible constructor"); + var M = G.Pa[arguments.length]; if (void 0 === M) - throw new pc( + throw new tc( "Tried to invoke ctor of " + r + " with invalid number of parameters (" + arguments.length + ") - expected (" + - Object.keys(G.Oa).toString() + + Object.keys(G.Pa).toString() + ") parameters instead!", ); return M.apply(this, arguments); }); var F = Object.create(z, { constructor: { value: t } }); t.prototype = F; - var G = new Gc(r, t, F, q, x, f, l, n); - x = new Nc(r, G, !0, !1); - z = new Nc(r + "*", G, !1, !1); - var y = new Nc(r + " const*", G, !1, !0); - vc[a] = { pointerType: z, cc: y }; - Oc(k, t); + var G = new Kc(r, t, F, q, x, f, l, n); + x = new Rc(r, G, !0, !1); + z = new Rc(r + "*", G, !1, !1); + var y = new Rc(r + " const*", G, !1, !0); + zc[a] = { pointerType: z, dc: y }; + Sc(k, t); return [x, z, y]; }); }, - da: function (a, b, c, d, e, f) { + ca: function (a, b, c, d, e, f) { 0 < b || ma(); - var g = Wc(b, c); + var h = $c(b, c); e = W(d, e); - lc([], [a], function (l) { + pc([], [a], function (l) { l = l[0]; var m = "constructor " + l.name; - void 0 === l.wa.Oa && (l.wa.Oa = []); - if (void 0 !== l.wa.Oa[b - 1]) - throw new pc( + void 0 === l.xa.Pa && (l.xa.Pa = []); + if (void 0 !== l.xa.Pa[b - 1]) + throw new tc( "Cannot register multiple constructors with identical number of parameters (" + (b - 1) + ") for class '" + l.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!", ); - l.wa.Oa[b - 1] = () => { - Vc("Cannot construct " + l.name + " due to unbound types", g); + l.xa.Pa[b - 1] = () => { + Zc("Cannot construct " + l.name + " due to unbound types", h); }; - lc([], g, function (n) { + pc([], h, function (n) { n.splice(1, 0, null); - l.wa.Oa[b - 1] = Xc(m, n, null, e, f); + l.xa.Pa[b - 1] = ad(m, n, null, e, f); return []; }); return []; }); }, - i: function (a, b, c, d, e, f, g, l) { - var m = Wc(c, d); + i: function (a, b, c, d, e, f, h, l) { + var m = $c(c, d); b = T(b); f = W(e, f); - lc([], [a], function (n) { + pc([], [a], function (n) { function r() { - Vc("Cannot call " + p + " due to unbound types", m); + Zc("Cannot call " + p + " due to unbound types", m); } n = n[0]; var p = n.name + "." + b; b.startsWith("@@") && (b = Symbol[b.substring(2)]); - l && n.wa.wc.push(b); - var q = n.wa.Va, + l && n.xa.xc.push(b); + var q = n.xa.Wa, k = q[b]; void 0 === k || - (void 0 === k.Ba && k.className !== n.name && k.fb === c - 2) - ? ((r.fb = c - 2), (r.className = n.name), (q[b] = r)) - : (Ec(q, b, p), (q[b].Ba[c - 2] = r)); - lc([], m, function (t) { - t = Xc(p, t, n, f, g); - void 0 === q[b].Ba - ? ((t.fb = c - 2), (q[b] = t)) - : (q[b].Ba[c - 2] = t); + (void 0 === k.Ca && k.className !== n.name && k.gb === c - 2) + ? ((r.gb = c - 2), (r.className = n.name), (q[b] = r)) + : (Ic(q, b, p), (q[b].Ca[c - 2] = r)); + pc([], m, function (t) { + t = ad(p, t, n, f, h); + void 0 === q[b].Ca + ? ((t.gb = c - 2), (q[b] = t)) + : (q[b].Ca[c - 2] = t); return []; }); return []; }); }, - U: function (a, b) { + T: function (a, b) { b = T(b); - mc(a, { + qc(a, { name: b, fromWireType: function (c) { - var d = $c(c); - Zc(c); + var d = dd(c); + cd(c); return d; }, toWireType: function (c, d) { - return Lc(d); + return Pc(d); }, argPackAdvance: 8, - readValueFromPointer: cc, - Ia: null, + readValueFromPointer: gc, + Ja: null, }); }, u: function (a, b, c) { - c = nc(c); + c = rc(c); b = T(b); - mc(a, { + qc(a, { name: b, fromWireType: function (d) { return d; @@ -3146,34 +3192,34 @@ var createModule = (() => { return e; }, argPackAdvance: 8, - readValueFromPointer: ad(b, c), - Ia: null, + readValueFromPointer: ed(b, c), + Ja: null, }); }, o: function (a, b, c, d, e, f) { - var g = Wc(b, c); + var h = $c(b, c); a = T(a); e = W(d, e); - Fc( + Jc( a, function () { - Vc("Cannot call " + a + " due to unbound types", g); + Zc("Cannot call " + a + " due to unbound types", h); }, b - 1, ); - lc([], g, function (l) { - Oc(a, Xc(a, [l[0], null].concat(l.slice(1)), null, e, f), b - 1); + pc([], h, function (l) { + Sc(a, ad(a, [l[0], null].concat(l.slice(1)), null, e, f), b - 1); return []; }); }, - e: function (a, b, c, d, e) { + f: function (a, b, c, d, e) { b = T(b); -1 === e && (e = 4294967295); - e = nc(c); + e = rc(c); var f = (l) => l; if (0 === d) { - var g = 32 - 8 * c; - f = (l) => (l << g) >>> g; + var h = 32 - 8 * c; + f = (l) => (l << h) >>> h; } c = b.includes("unsigned") ? function (l, m) { @@ -3182,20 +3228,20 @@ var createModule = (() => { : function (l, m) { return m; }; - mc(a, { + qc(a, { name: b, fromWireType: f, toWireType: c, argPackAdvance: 8, - readValueFromPointer: bd(b, e, 0 !== d), - Ia: null, + readValueFromPointer: fd(b, e, 0 !== d), + Ja: null, }); }, d: function (a, b, c) { function d(f) { f >>= 2; - var g = I; - return new e(g.buffer, g[f + 1], g[f]); + var h = I; + return new e(h.buffer, h[f + 1], h[f]); } var e = [ Int8Array, @@ -3208,7 +3254,7 @@ var createModule = (() => { Float64Array, ][b]; c = T(c); - mc( + qc( a, { name: c, @@ -3216,25 +3262,25 @@ var createModule = (() => { argPackAdvance: 8, readValueFromPointer: d, }, - { oc: !0 }, + { pc: !0 }, ); }, v: function (a, b) { b = T(b); var c = "std::string" === b; - mc(a, { + qc(a, { name: b, fromWireType: function (d) { var e = I[d >> 2], f = d + 4; if (c) - for (var g = f, l = 0; l <= e; ++l) { + for (var h = f, l = 0; l <= e; ++l) { var m = f + l; if (l == e || 0 == w[m]) { - g = v(g, m - g); - if (void 0 === n) var n = g; - else (n += String.fromCharCode(0)), (n += g); - g = m + 1; + h = v(h, m - h); + if (void 0 === n) var n = h; + else (n += String.fromCharCode(0)), (n += h); + h = m + 1; } } else { @@ -3252,27 +3298,27 @@ var createModule = (() => { e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array || - V("Cannot pass non-string to std::string"); - var g = c && f ? ra(e) : e.length; - var l = zd(4 + g + 1), + U("Cannot pass non-string to std::string"); + var h = c && f ? sa(e) : e.length; + var l = Dd(4 + h + 1), m = l + 4; - I[l >> 2] = g; - if (c && f) A(e, w, m, g + 1); + I[l >> 2] = h; + if (c && f) A(e, w, m, h + 1); else if (f) - for (f = 0; f < g; ++f) { + for (f = 0; f < h; ++f) { var n = e.charCodeAt(f); 255 < n && (X(m), - V("String has UTF-16 code units that do not fit in 8 bits")); + U("String has UTF-16 code units that do not fit in 8 bits")); w[m + f] = n; } - else for (f = 0; f < g; ++f) w[m + f] = e[f]; + else for (f = 0; f < h; ++f) w[m + f] = e[f]; null !== d && d.push(X, l); return l; }, argPackAdvance: 8, - readValueFromPointer: cc, - Ia: function (d) { + readValueFromPointer: gc, + Ja: function (d) { X(d); }, }); @@ -3280,17 +3326,17 @@ var createModule = (() => { n: function (a, b, c) { c = T(c); if (2 === b) { - var d = dd; - var e = ed; - var f = fd; - var g = () => D; + var d = hd; + var e = jd; + var f = kd; + var h = () => D; var l = 1; } else - 4 === b && ((d = gd), (e = hd), (f = jd), (g = () => I), (l = 2)); - mc(a, { + 4 === b && ((d = ld), (e = md), (f = nd), (h = () => I), (l = 2)); + qc(a, { name: c, fromWireType: function (m) { - for (var n = I[m >> 2], r = g(), p, q = m + 4, k = 0; k <= n; ++k) { + for (var n = I[m >> 2], r = h(), p, q = m + 4, k = 0; k <= n; ++k) { var t = m + 4 + k * b; if (k == n || 0 == r[t >> l]) (q = d(q, t - q)), @@ -3304,126 +3350,126 @@ var createModule = (() => { }, toWireType: function (m, n) { "string" != typeof n && - V("Cannot pass non-string to C++ string type " + c); + U("Cannot pass non-string to C++ string type " + c); var r = f(n), - p = zd(4 + r + b); + p = Dd(4 + r + b); I[p >> 2] = r >> l; e(n, p + 4, r + b); null !== m && m.push(X, p); return p; }, argPackAdvance: 8, - readValueFromPointer: cc, - Ia: function (m) { + readValueFromPointer: gc, + Ja: function (m) { X(m); }, }); }, g: function (a, b, c, d, e, f) { - ac[a] = { name: T(b), zb: W(c, d), Na: W(e, f), Lb: [] }; - }, - c: function (a, b, c, d, e, f, g, l, m, n) { - ac[a].Lb.push({ - ic: T(b), - mc: c, - jb: W(d, e), - lc: f, - Cc: g, - Bc: W(l, m), - Dc: n, + ec[a] = { name: T(b), Ab: W(c, d), Oa: W(e, f), Mb: [] }; + }, + b: function (a, b, c, d, e, f, h, l, m, n) { + ec[a].Mb.push({ + jc: T(b), + nc: c, + kb: W(d, e), + mc: f, + Dc: h, + Cc: W(l, m), + Ec: n, }); }, - W: function (a, b) { + V: function (a, b) { b = T(b); - mc(a, { - rc: !0, + qc(a, { + sc: !0, name: b, argPackAdvance: 0, fromWireType: function () {}, toWireType: function () {}, }); }, - X: function (a) { - var b = Bd[a]; - b && (delete Bd[a], 0 < b.readyState && 4 > b.readyState && b.abort()); + W: function (a) { + var b = Fd[a]; + b && (delete Fd[a], 0 < b.readyState && 4 > b.readyState && b.abort()); }, - P: function () { + O: function () { return !0; }, l: function (a, b, c) { - a = $c(a); - b = kd(b, "emval::as"); + a = dd(a); + b = od(b, "emval::as"); var d = [], - e = Lc(d); + e = Pc(d); I[c >> 2] = e; return b.toWireType(d, a); }, - ca: function (a, b, c, d) { - a = nd[a]; - b = $c(b); - c = md(c); + ba: function (a, b, c, d) { + a = rd[a]; + b = dd(b); + c = qd(c); a(b, c, null, d); }, - b: Zc, + c: cd, q: function (a) { - if (0 === a) return Lc(od()); - a = md(a); - return Lc(od()[a]); + if (0 === a) return Pc(sd()); + a = qd(a); + return Pc(sd()[a]); }, - ba: function (a, b) { - var c = qd(a, b), + aa: function (a, b) { + var c = ud(a, b), d = c[0]; b = d.name + "_$" + c .slice(1) - .map(function (g) { - return g.name; + .map(function (h) { + return h.name; }) .join("_") + "$"; - var e = rd[b]; + var e = vd[b]; if (void 0 !== e) return e; var f = Array(a - 1); - e = pd((g, l, m, n) => { + e = td((h, l, m, n) => { for (var r = 0, p = 0; p < a - 1; ++p) (f[p] = c[p + 1].readValueFromPointer(n + r)), (r += c[p + 1].argPackAdvance); - g = g[l].apply(g, f); - for (p = 0; p < a - 1; ++p) c[p + 1].ec && c[p + 1].ec(f[p]); - if (!d.rc) return d.toWireType(m, g); + h = h[l].apply(h, f); + for (p = 0; p < a - 1; ++p) c[p + 1].fc && c[p + 1].fc(f[p]); + if (!d.sc) return d.toWireType(m, h); }); - return (rd[b] = e); + return (vd[b] = e); }, x: function (a, b) { - a = $c(a); - b = $c(b); - return Lc(a[b]); + a = dd(a); + b = dd(b); + return Pc(a[b]); }, j: function (a) { - 4 < a && (Y[a].Bb += 1); + 4 < a && (Y[a].Cb += 1); }, p: function (a, b, c, d) { - a = $c(a); - var e = td[b]; - e || ((e = sd(b)), (td[b] = e)); + a = dd(a); + var e = xd[b]; + e || ((e = wd(b)), (xd[b] = e)); return e(a, c, d); }, w: function (a) { - return Lc(md(a)); + return Pc(qd(a)); }, k: function (a) { - var b = $c(a); - bc(b); - Zc(a); + var b = dd(a); + fc(b); + cd(a); }, h: function (a, b) { - a = kd(a, "_emval_take_value"); + a = od(a, "_emval_take_value"); a = a.readValueFromPointer(b); - return Lc(a); + return Pc(a); }, - R: function (a, b) { + Q: function (a, b) { a = new Date(1e3 * (I[a >> 2] + 4294967296 * E[(a + 4) >> 2])); E[b >> 2] = a.getSeconds(); E[(b + 4) >> 2] = a.getMinutes(); @@ -3432,14 +3478,14 @@ var createModule = (() => { E[(b + 16) >> 2] = a.getMonth(); E[(b + 20) >> 2] = a.getFullYear() - 1900; E[(b + 24) >> 2] = a.getDay(); - E[(b + 28) >> 2] = xd(a) | 0; + E[(b + 28) >> 2] = Bd(a) | 0; E[(b + 36) >> 2] = -(60 * a.getTimezoneOffset()); var c = new Date(a.getFullYear(), 6, 1).getTimezoneOffset(), d = new Date(a.getFullYear(), 0, 1).getTimezoneOffset(); E[(b + 32) >> 2] = (c != d && a.getTimezoneOffset() == Math.min(d, c)) | 0; }, - S: function (a) { + R: function (a) { var b = new Date( E[(a + 20) >> 2] + 1900, E[(a + 16) >> 2], @@ -3453,14 +3499,14 @@ var createModule = (() => { d = b.getTimezoneOffset(), e = new Date(b.getFullYear(), 6, 1).getTimezoneOffset(), f = new Date(b.getFullYear(), 0, 1).getTimezoneOffset(), - g = Math.min(f, e); + h = Math.min(f, e); 0 > c - ? (E[(a + 32) >> 2] = Number(e != f && g == d)) - : 0 < c != (g == d) && + ? (E[(a + 32) >> 2] = Number(e != f && h == d)) + : 0 < c != (h == d) && ((e = Math.max(f, e)), - b.setTime(b.getTime() + 6e4 * ((0 < c ? g : e) - d))); + b.setTime(b.getTime() + 6e4 * ((0 < c ? h : e) - d))); E[(a + 24) >> 2] = b.getDay(); - E[(a + 28) >> 2] = xd(b) | 0; + E[(a + 28) >> 2] = Bd(b) | 0; E[a >> 2] = b.getSeconds(); E[(a + 4) >> 2] = b.getMinutes(); E[(a + 8) >> 2] = b.getHours(); @@ -3469,36 +3515,36 @@ var createModule = (() => { E[(a + 20) >> 2] = b.getYear(); return (b.getTime() / 1e3) | 0; }, - G: function (a, b, c, d, e, f, g) { + F: function (a, b, c, d, e, f, h) { try { - var l = Yb(d); + var l = bc(d); if (0 !== (b & 2) && 0 === (c & 2) && 2 !== (l.flags & 2097155)) throw new N(2); if (1 === (l.flags & 2097155)) throw new N(2); - if (!l.va.Za) throw new N(43); - var m = l.va.Za(l, a, e, b, c); - var n = m.xa; - E[f >> 2] = m.Fb; - I[g >> 2] = n; + if (!l.wa.$a) throw new N(43); + var m = l.wa.$a(l, a, e, b, c); + var n = m.ya; + E[f >> 2] = m.Gb; + I[h >> 2] = n; return 0; } catch (r) { if ("undefined" == typeof S || "ErrnoError" !== r.name) throw r; - return -r.Fa; + return -r.Ga; } }, - H: function (a, b, c, d, e, f) { + G: function (a, b, c, d, e, f) { try { - var g = Yb(e); + var h = bc(e); if (c & 2) { - if (32768 !== (g.node.mode & 61440)) throw new N(43); - d & 2 || (g.va.nb && g.va.nb(g, w.slice(a, a + b), f, b, d)); + if (32768 !== (h.node.mode & 61440)) throw new N(43); + d & 2 || (h.wa.ob && h.wa.ob(h, w.slice(a, a + b), f, b, d)); } } catch (l) { if ("undefined" == typeof S || "ErrnoError" !== l.name) throw l; - return -l.Fa; + return -l.Ga; } }, - T: function (a, b, c) { + S: function (a, b, c) { function d(m) { return (m = m.toTimeString().match(/\(([A-Za-z ]+)\)$/)) ? m[1] @@ -3506,15 +3552,15 @@ var createModule = (() => { } var e = new Date().getFullYear(), f = new Date(e, 0, 1), - g = new Date(e, 6, 1); + h = new Date(e, 6, 1); e = f.getTimezoneOffset(); - var l = g.getTimezoneOffset(); + var l = h.getTimezoneOffset(); I[a >> 2] = 60 * Math.max(e, l); E[b >> 2] = Number(e != l); a = d(f); - b = d(g); - a = yd(a); - b = yd(b); + b = d(h); + a = Cd(a); + b = Cd(b); l < e ? ((I[c >> 2] = a), (I[(c + 4) >> 2] = b)) : ((I[c >> 2] = b), (I[(c + 4) >> 2] = a)); @@ -3523,23 +3569,20 @@ var createModule = (() => { ma(""); }, y: function (a, b, c) { - Ad.length = 0; + Ed.length = 0; var d; for (c >>= 2; (d = w[b++]); ) - (c += (105 != d) & c), Ad.push(105 == d ? E[c] : ua[c++ >> 1]), ++c; - return Pa[a].apply(null, Ad); + (c += (105 != d) & c), Ed.push(105 == d ? E[c] : va[c++ >> 1]), ++c; + return Ta[a].apply(null, Ed); }, - Q: function () { + P: function () { return Date.now(); }, - F: function () { - return 2147483648; - }, m: () => performance.now(), - Z: function () { + Y: function () { return !1; }, - O: function (a, b, c) { + N: function (a, b, c) { w.copyWithin(a, b, b + c); }, E: function (a) { @@ -3547,17 +3590,15 @@ var createModule = (() => { a >>>= 0; if (2147483648 < a) return !1; for (var c = 1; 4 >= c; c *= 2) { - var d = b * (1 + 0.2 / c); - d = Math.min(d, a + 100663296); - var e = Math, - f = e.min; - d = Math.max(a, d); - d += (65536 - (d % 65536)) % 65536; + var d = Math, + e = d.min; + var f = Math.max(a, b + 2097152 / c); + f += (65536 - (f % 65536)) % 65536; a: { - var g = na.buffer; + var h = na.buffer; try { - na.grow((f.call(e, 2147483648, d) - g.byteLength + 65535) >>> 16); - va(); + na.grow((e.call(d, 2147483648, f) - h.byteLength + 65535) >>> 16); + wa(); var l = 1; break a; } catch (m) {} @@ -3567,81 +3608,91 @@ var createModule = (() => { } return !1; }, - Y: function (a, b, c, d, e) { + X: function (a, b, c, d, e) { function f(H) { if (z) H(); - else if (!oa) + else if (!Ca && !oa) try { - H(); - } catch (Na) { - Na instanceof Qa || "unwind" == Na || ea(1, Na); + if ((H(), !(noExitRuntime || 0 < Da))) + try { + Jd(pa); + } catch (Qa) { + Id(Qa); + } + } catch (Qa) { + Id(Qa); } } - var g = a + 112, - l = v(g), - m = I[(g + 36) >> 2], - n = I[(g + 40) >> 2], - r = I[(g + 44) >> 2], - p = I[(g + 48) >> 2], - q = I[(g + 52) >> 2], + Da += 1; + var h = a + 112, + l = v(h), + m = I[(h + 36) >> 2], + n = I[(h + 40) >> 2], + r = I[(h + 44) >> 2], + p = I[(h + 48) >> 2], + q = I[(h + 52) >> 2], k = !!(q & 4), t = !!(q & 32), x = !!(q & 16), z = !!(q & 64), F = (H) => { + --Da; f(() => { - m ? Qc(m)(H) : b && b(H); + m ? Uc(m)(H) : b && b(H); }); }, G = (H) => { f(() => { - r ? Qc(r)(H) : d && d(H); + r ? Uc(r)(H) : d && d(H); }); }, y = (H) => { + --Da; f(() => { - n ? Qc(n)(H) : c && c(H); + n ? Uc(n)(H) : c && c(H); }); }, M = (H) => { f(() => { - p ? Qc(p)(H) : e && e(H); + p ? Uc(p)(H) : e && e(H); }); }; q = (H) => { - Dd(H, F, y, G, M); + Hd(H, F, y, G, M); }; - var B = (H, Na) => { - Ed( + var B = (H, Qa) => { + Md( H, - Na.response, - (Oa) => { + Qa.response, + (Ra) => { + --Da; f(() => { - m ? Qc(m)(Oa) : b && b(Oa); + m ? Uc(m)(Ra) : b && b(Ra); }); }, - (Oa) => { + (Ra) => { + --Da; f(() => { - m ? Qc(m)(Oa) : b && b(Oa); + m ? Uc(m)(Ra) : b && b(Ra); }); }, ); }, - U = (H) => { - Dd(H, B, y, G, M); + V = (H) => { + Hd(H, B, y, G, M); }; if ("EM_IDB_STORE" === l) - (l = I[(g + 84) >> 2]), Ed(a, w.slice(l, l + I[(g + 88) >> 2]), F, y); - else if ("EM_IDB_DELETE" === l) Gd(a, F, y); + (l = I[(h + 84) >> 2]), Md(a, w.slice(l, l + I[(h + 88) >> 2]), F, y); + else if ("EM_IDB_DELETE" === l) Od(a, F, y); else if (x) { if (t) return 0; - Dd(a, k ? B : F, y, G, M); - } else Fd(a, F, t ? y : k ? U : q); + Hd(a, k ? B : F, y, G, M); + } else Nd(a, F, t ? y : k ? V : q); return a; }, - I: function (a, b) { + H: function (a, b) { var c = 0; - Id().forEach(function (d, e) { + Qd().forEach(function (d, e) { var f = b + c; e = I[(a + 4 * e) >> 2] = f; for (f = 0; f < d.length; ++f) C[e++ >> 0] = d.charCodeAt(f); @@ -3650,8 +3701,8 @@ var createModule = (() => { }); return 0; }, - J: function (a, b) { - var c = Id(); + I: function (a, b) { + var c = Qd(); I[a >> 2] = c.length; var d = 0; c.forEach(function (e) { @@ -3660,29 +3711,23 @@ var createModule = (() => { I[b >> 2] = d; return 0; }, - aa: function (a) { - if (!noExitRuntime) { - if (h.onExit) h.onExit(a); - oa = !0; - } - ea(a, new Qa(a)); - }, + $: Jd, t: function (a) { try { - var b = Yb(a); - Kb(b); + var b = bc(a); + Ob(b); return 0; } catch (c) { if ("undefined" == typeof S || "ErrnoError" !== c.name) throw c; - return c.Fa; + return c.Ga; } }, s: function (a, b, c, d) { try { a: { - var e = Yb(a); + var e = bc(a); a = b; - for (var f, g = (b = 0); g < c; g++) { + for (var f, h = (b = 0); h < c; h++) { var l = I[a >> 2], m = I[(a + 4) >> 2]; a += 8; @@ -3692,14 +3737,14 @@ var createModule = (() => { q = f, k = C; if (0 > p || 0 > q) throw new N(28); - if (null === n.Pa) throw new N(8); + if (null === n.Qa) throw new N(8); if (1 === (n.flags & 2097155)) throw new N(8); if (16384 === (n.node.mode & 61440)) throw new N(31); - if (!n.va.read) throw new N(28); + if (!n.wa.read) throw new N(28); var t = "undefined" != typeof q; if (!t) q = n.position; else if (!n.seekable) throw new N(70); - var x = n.va.read(n, k, r, p, q); + var x = n.wa.read(n, k, r, p, q); t || (n.position += x); var z = x; if (0 > z) { @@ -3716,7 +3761,7 @@ var createModule = (() => { return 0; } catch (G) { if ("undefined" == typeof S || "ErrnoError" !== G.name) throw G; - return G.Fa; + return G.Ga; } }, A: function (a, b, c, d, e) { @@ -3726,8 +3771,8 @@ var createModule = (() => { ? (b >>> 0) + 4294967296 * c : NaN; if (isNaN(b)) return 61; - var f = Yb(a); - Lb(f, b, d); + var f = bc(a); + Pb(f, b, d); K = [ f.position >>> 0, ((J = f.position), @@ -3739,23 +3784,23 @@ var createModule = (() => { ]; E[e >> 2] = K[0]; E[(e + 4) >> 2] = K[1]; - f.ub && 0 === b && 0 === d && (f.ub = null); + f.vb && 0 === b && 0 === d && (f.vb = null); return 0; - } catch (g) { - if ("undefined" == typeof S || "ErrnoError" !== g.name) throw g; - return g.Fa; + } catch (h) { + if ("undefined" == typeof S || "ErrnoError" !== h.name) throw h; + return h.Ga; } }, r: function (a, b, c, d) { try { a: { - var e = Yb(a); + var e = bc(a); a = b; - for (var f, g = (b = 0); g < c; g++) { + for (var f, h = (b = 0); h < c; h++) { var l = I[a >> 2], m = I[(a + 4) >> 2]; a += 8; - var n = Mb(e, C, l, m, f); + var n = Qb(e, C, l, m, f); if (0 > n) { var r = -1; break a; @@ -3769,162 +3814,222 @@ var createModule = (() => { return 0; } catch (p) { if ("undefined" == typeof S || "ErrnoError" !== p.name) throw p; - return p.Fa; + return p.Ga; } }, - _: function () { + Z: function () { var a = stackTrace(), - b = ra(a) + 1, - c = zd(b); + b = sa(a) + 1, + c = Dd(b); A(a, w, c, b); return c; }, - C: Kd, - $: Nd, + C: Sd, + _: Vd, D: function (a, b, c, d) { - return Nd(a, b, c, d); + return Vd(a, b, c, d); }, }; (function () { function a(c) { c = c.exports; - h.asm = c; - na = h.asm.ea; - va(); - wa = h.asm.ia; - ya.unshift(h.asm.fa); - Fa("wasm-instantiate"); + g.asm = c; + na = g.asm.da; + wa(); + xa = g.asm.ha; + za.unshift(g.asm.ea); + Ja("wasm-instantiate"); return c; } - var b = { a: Qd }; - Ea("wasm-instantiate"); - if (h.instantiateWasm) + var b = { a: Yd }; + Ia("wasm-instantiate"); + if (g.instantiateWasm) try { - return h.instantiateWasm(b, a); + return g.instantiateWasm(b, a); } catch (c) { u("Module.instantiateWasm callback failed with error: " + c), ba(c); } - Ma(b, function (c) { + Sa(b, function (c) { a(c.instance); }).catch(ba); return {}; })(); function X() { - return (X = h.asm.ga).apply(null, arguments); + return (X = g.asm.fa).apply(null, arguments); } - function zd() { - return (zd = h.asm.ha).apply(null, arguments); + function Dd() { + return (Dd = g.asm.ga).apply(null, arguments); } - var Uc = (h.___getTypeName = function () { - return (Uc = h.___getTypeName = h.asm.ja).apply(null, arguments); - }); - h.__embind_initialize_bindings = function () { - return (h.__embind_initialize_bindings = h.asm.ka).apply(null, arguments); + var Ld = (g._fflush = function () { + return (Ld = g._fflush = g.asm.ia).apply(null, arguments); + }), + Yc = (g.___getTypeName = function () { + return (Yc = g.___getTypeName = g.asm.ja).apply(null, arguments); + }); + g.__embind_initialize_bindings = function () { + return (g.__embind_initialize_bindings = g.asm.ka).apply(null, arguments); }; - function eb() { - return (eb = h.asm.la).apply(null, arguments); + function Kd() { + return (Kd = g.asm.la).apply(null, arguments); + } + function ib() { + return (ib = g.asm.ma).apply(null, arguments); } - h.dynCall_ji = function () { - return (h.dynCall_ji = h.asm.ma).apply(null, arguments); + g.dynCall_ji = function () { + return (g.dynCall_ji = g.asm.na).apply(null, arguments); }; - h.dynCall_jiji = function () { - return (h.dynCall_jiji = h.asm.na).apply(null, arguments); + g.dynCall_jiji = function () { + return (g.dynCall_jiji = g.asm.oa).apply(null, arguments); }; - h.dynCall_viijii = function () { - return (h.dynCall_viijii = h.asm.oa).apply(null, arguments); + g.dynCall_viijii = function () { + return (g.dynCall_viijii = g.asm.pa).apply(null, arguments); }; - h.dynCall_iiiiij = function () { - return (h.dynCall_iiiiij = h.asm.pa).apply(null, arguments); + g.dynCall_iiiiij = function () { + return (g.dynCall_iiiiij = g.asm.qa).apply(null, arguments); }; - h.dynCall_iiiiijj = function () { - return (h.dynCall_iiiiijj = h.asm.qa).apply(null, arguments); + g.dynCall_iiiiijj = function () { + return (g.dynCall_iiiiijj = g.asm.ra).apply(null, arguments); }; - h.dynCall_iiiiiijj = function () { - return (h.dynCall_iiiiiijj = h.asm.ra).apply(null, arguments); + g.dynCall_iiiiiijj = function () { + return (g.dynCall_iiiiiijj = g.asm.sa).apply(null, arguments); }; - h.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE = 1024; - h.___start_em_js = 60474; - h.___stop_em_js = 60897; - h.addRunDependency = Ea; - h.removeRunDependency = Fa; - h.FS_createPath = Qb; - h.FS_createDataFile = Sb; - h.FS_createPreloadedFile = Wb; - h.FS_createLazyFile = Ub; - h.FS_createDevice = R; - h.FS_unlink = Eb; - var Rd; - Da = function Sd() { - Rd || Td(); - Rd || (Da = Sd); + g.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE = 1024; + g.___start_em_js = 60042; + g.___stop_em_js = 60465; + g.addRunDependency = Ia; + g.removeRunDependency = Ja; + g.FS_createPath = Ub; + g.FS_createDataFile = Wb; + g.FS_createPreloadedFile = $b; + g.FS_createLazyFile = Yb; + g.FS_createDevice = R; + g.FS_unlink = Ib; + var Zd; + Ha = function $d() { + Zd || ae(); + Zd || (Ha = $d); }; - function Td() { + function ae() { function a() { - if (!Rd && ((Rd = !0), (h.calledRun = !0), !oa)) { - h.noFSInit || - Ob || - ((Ob = !0), - Nb(), - (h.stdin = h.stdin), - (h.stdout = h.stdout), - (h.stderr = h.stderr), - h.stdin - ? R("/dev", "stdin", h.stdin) - : Db("/dev/tty", "/dev/stdin"), - h.stdout - ? R("/dev", "stdout", null, h.stdout) - : Db("/dev/tty", "/dev/stdout"), - h.stderr - ? R("/dev", "stderr", null, h.stderr) - : Db("/dev/tty1", "/dev/stderr"), - Jb("/dev/stdin", 0), - Jb("/dev/stdout", 1), - Jb("/dev/stderr", 1)); - pb = !1; - Ra(ya); - aa(h); - if (h.onRuntimeInitialized) h.onRuntimeInitialized(); - if (h.postRun) + if (!Zd && ((Zd = !0), (g.calledRun = !0), !oa)) { + g.noFSInit || + Sb || + ((Sb = !0), + Rb(), + (g.stdin = g.stdin), + (g.stdout = g.stdout), + (g.stderr = g.stderr), + g.stdin + ? R("/dev", "stdin", g.stdin) + : Hb("/dev/tty", "/dev/stdin"), + g.stdout + ? R("/dev", "stdout", null, g.stdout) + : Hb("/dev/tty", "/dev/stdout"), + g.stderr + ? R("/dev", "stderr", null, g.stderr) + : Hb("/dev/tty1", "/dev/stderr"), + Nb("/dev/stdin", 0), + Nb("/dev/stdout", 1), + Nb("/dev/stderr", 1)); + tb = !1; + Va(za); + aa(g); + if (g.onRuntimeInitialized) g.onRuntimeInitialized(); + if (g.postRun) for ( - "function" == typeof h.postRun && (h.postRun = [h.postRun]); - h.postRun.length; + "function" == typeof g.postRun && (g.postRun = [g.postRun]); + g.postRun.length; ) { - var b = h.postRun.shift(); - za.unshift(b); + var b = g.postRun.shift(); + Ba.unshift(b); } - Ra(za); + Va(Ba); } } - if (!(0 < Ba)) { - if (h.preRun) + if (!(0 < Fa)) { + if (g.preRun) for ( - "function" == typeof h.preRun && (h.preRun = [h.preRun]); - h.preRun.length; + "function" == typeof g.preRun && (g.preRun = [g.preRun]); + g.preRun.length; ) - Aa(); - Ra(xa); - 0 < Ba || - (h.setStatus - ? (h.setStatus("Running..."), + Ea(); + Va(ya); + 0 < Fa || + (g.setStatus + ? (g.setStatus("Running..."), setTimeout(function () { setTimeout(function () { - h.setStatus(""); + g.setStatus(""); }, 1); a(); }, 1)) : a()); } } - if (h.preInit) + if (g.preInit) for ( - "function" == typeof h.preInit && (h.preInit = [h.preInit]); - 0 < h.preInit.length; + "function" == typeof g.preInit && (g.preInit = [g.preInit]); + 0 < g.preInit.length; ) - h.preInit.pop()(); - Td(); + g.preInit.pop()(); + ae(); + if ( + "object" == typeof window && + ("undefined" == typeof ENVIRONMENT_IS_PTHREAD || !ENVIRONMENT_IS_PTHREAD) + ) { + var be = () => { + var a = 0, + b = !1, + c = (m) => { + var n = new XMLHttpRequest(); + n.open("POST", "stdio.html", !1); + n.send(m); + try { + window.close(); + } catch (r) {} + }, + d = (m) => { + var n = new XMLHttpRequest(); + ++a; + n.onreadystatechange = () => { + 4 == n.readyState && 0 == --a && b && c("^exit^" + pa); + }; + n.open("POST", "stdio.html", !0); + n.send(m); + }; + if ( + -1 != document.URL.search("localhost") || + -1 != document.URL.search(":6931/") + ) { + var e = 1, + f = ka, + h = u; + Aa.unshift(() => { + 0 == a ? c("^exit^" + pa) : (b = !0); + }); + ka = (m) => { + d("^out^" + e++ + "^" + encodeURIComponent(m)); + f(m); + }; + u = (m) => { + d("^err^" + e++ + "^" + encodeURIComponent(m)); + h(m); + }; + var l = () => { + try { + d("^pageload^"); + } catch (m) { + setTimeout(l, 50); + } + }; + l(); + } + }; + "undefined" != typeof document && be(); + } return createModule.ready; }; diff --git a/packages/capture-wasm/dist/basic/capture-wasm.wasm b/packages/capture-wasm/dist/basic/capture-wasm.wasm index 321e28f07425543c3ec7bee75e12e5d8257e24b1..87442924d88b107867914108c7c73ad7a8129ef7 100755 GIT binary patch delta 194862 zcmcG%31Ae();8Q#-LrOg(%Hzy(laCwc0@!7AZa3-T*ZC&3irAOTv%ML+k{O)5Q7ag zA}X7Lii!ptKvWcvRYXONfEX171SJY80>by4>Yho0=y%`mfB(Qtomx(%_m*n^Xw?;U0jB8)!}V-HOJwY$n6B6K+xdr-2wvqJk8c9H!ydqzQq582oA zi`s1CUDzNtNJ_=`zoZ8E{x@nkh}|H`_`XrVH%ThsnIACnnNWt_2$6q#jmKwLgcmbt9Rl3xjME~|2?KM+t+PC#Z2I1eb9 zvZiE9I#W49cm@LsXF(=sN`B5X`ynMKmKRh)jL9;xKbuCL2PHq#bvY<^W_~n9?!p?& zh7sa2{V`c#eimR{k!2~R7y&F*k^^DJr0lLr6NM=%GfmF@j0ZxJi=u?(FzOgU73fdm zTxyJrWCfLxV@j}jHx#6*N|0x}J$BFDI2;{Mhu{v%HeazI8vP~sAezSL6j2YLooKj(@RQWPnm zs9Y|E2USj$n1|4XR3)bNR{AJN-CR=g z`Vw`~m@y0(!bEbkhNUP){RoF;WyqPS3i4HAsi{PC_+pp@8b7a9e2 zB78XoH3*=?xo#MGz%aP}4{ii7HGqYl@+#v4P10+GM0s2~c4rh+^XAq9A#kzeM1C9Di+2)qDK z*PDd(3nLd@90+G;qT6I1PE8Gi4FoRH11z9iip~n6yClGh5|A*+7+1FLLmkt9&1 zfc)%?d=P0q%I2tWfZ`A(s;jV|!ITEz0ti$w#OP2Z!0u#w1A7BL5L9_?c{%s%JjSe* zlRBwzBsFlI!EYFZmfbi=I;ilQ21%v-=0VaR9=l}_sO{E4(vOUn4U*p1`QSm)8l4Xr zBvtDCwn5Tp&Tk(i?Nj+3gQUGGzjKhZN998YN#Ch_*dS@Q%7+hhs0t(X3+l^)efPiUpzs->~xYU%fC=|Q#h zSGDwnTDn6m-L95yQ%kGV&($x~b>X$)&(u%Vt!lOUiTbtrvHF$zk-A0Q$Meck_>f3bh9`o4hHsHLmbRqBiW7yR$3rR2P;u2kPq_wcvXx6~Eto9c3PnYvVs z#ntcl8|o5uv0ACVuD+(uR`&2k2zyn1MSWRasJ^7WsJ@_P#I&#TX=^VGTO9JO?| zx{ZCu_lP>oQlC|yQJ+?4syo$9>Qm}Qb%VNIouPiIKB=x#=lSRQ=lH3TzJp5Vs)9}{t$Kj8{Tf!fPH-|q6ZwhY=ZwRjsA5(3vce?4Na7B2k{5U?7@OccM ziQzYVkA|nnG+F)wpX2x(!{=ydk?%<8 zarrlVe#Pe(d=7_R_1Vwp9YT}C6T)M|Cquv6U+B&CuR=RRUxs#swuiQbzOeO_TQlZ{ z=7eU4W`&*&JrjC5G&A&6XofvLWkPIg@PPbD@Z;b|!F~E(eUJW~zDxg6`Bn#&eWS0` zOH04jOLxn=EEc;`d9i+{Y!m^{+a%%K0o+;aH~Ee_>sOvpC0^B z->iS2mu>{OL0_-0)7R?11t#%#^;P&4CXB@5>)3OCSU-)?d>%DU0giy$ZZnfb;Tc@P1I9 z)1TMp=`ZLD^!fVdfsYmX?2^|hbM-kfeYQSJpU6K}R_o8|O9Rj7PwO-FrvS~+mjs^F zr|XLYjy_GFs!suABkT!%vR)Jv8YuY01Rc*ijWo@DMlJ=tZLQI>;7HIReYX9@vJZ-Kv zN1LTRqkZLnPJ2mzQJ<|nt36E;J}!{hDIojn(m^oX7P^`eQWq6ZHxDqk8FheVqQV zK2{&2kJ3l#<@!nO5AC>CdQAIWJEHxj{i^+<9o7zMKWR1EL9O&h?FVhY_Pw@G+pB%2 z?bb?nY2Rw!XkTm9+E?06?MrIO^uP{nyS7dHLaWj~*Jj4F>Dm-+oHjFme9(*?aLzv-o# zm`GJG=z14(v-W{jx=Gupm2S}1Yo+V7wOZ+K{`a+Q49*%j&j7-^wT#B+@IyYHbs(m#5a`w7?QAT7?b(L)4gIJ3V?u73x z2*3vcrqAk8W|a)3U}SIARLPxq5Wry(9p#<4W=cJ!vt`NTrb5UEfQ*mGt&9Q=S5SyVQr%O>lJMam7*%A$;d zBnn!LRI)Kzu@(Se0DxnZ6-erXjK{2sFQ`~FQ7IwVn*If9E0Ghy9;C#Y;>L5!?2Qy- zxW$Yo73vXYp36LJLIAGG2#_LNMQ?J8k3cOfsS_WAzBS=0lo=uzH4*X$y4~nu|D4q{ z8(rj9LdQT*hxOK}5A4!?vxz}&x1XWY9f@R2MnO)J~+}rAoiReX) zM`BDQcTCEnsE1_jKmmjj3MxNYJVh@sWVF$pvI|#x57f55TsvdvQ49 zvU{f1$&L!NzsPRZ5-mv()e%q`V=>foFNUOuw~nGatoCJnloE``QM+Z%2Hz4HY3#_* zOk2+#z*gGV6pekiO0vd( zj|!X82nSmjgufpmriAt8gk1na!(qDLl20d6tpp|2+;GivQOKmW~ zWUv&GtVJiNOwg-bf~@!mtNcVEh=7VUE`2#b1=TA7=`Dutv!(+;S~L)8R00zv156fy zREc0hK!xm{XLqHRy17tG$De&)M(OBb*DAClku=%c12u^ z&;S#Eu`2d@EP+L_3>)t9w6Z_6>67=x&h=vB`Nlp~wRAbR z$jv$It;)1p1~UHwB~Mk?ITJ^+Gx?N&^X^F2(*Eq$US~fQKnI!3^o#zWDPT+qV6`&? zT^UBs^kd~w9m)}8We$!Ktr0*JX^2v^(ANzVSL5i2)~46TM%V^Bi25Q?tI_nY`6XReK~nM z7+4wV3--sYa%BLG0hMPouYC7DmGhOm?9C4hBIk?;+r`W%DN2b#f=Eb&V)RfUfPk&F zkqpZm3XZ@LgpQ!`MoUKy9H7K3a4icyA-73Bl$fWc!4Cp`5NV7uAU&wI!5m4lPSgR_ zH@X^K^FT2Gk;+hoR~C6YDMxsNCmw1KK7GbRZCJ5={X_TjiEHg04@KDs`{Y9r=x!si z7EG<|ADhZqjs5k=8_%v8$BA?!AV@Gy(?2|#YMo?5iLoW3{1gQ$9v(H4QTBtQ^3F&k zK=p|_<>ArvWCAZ+*_Z{H(3!^h8utt0S5)_7qBMafPf9a z_KTwnP}>hjNAUgA=!W=C8AIQ##CP8@4ZGHqi&hK=M-JX?N^K;+$%ZHEa%v>Rk=jW6 z*)biF*VZw|Q`5x&5GSH>h}qR+8=x*6y zreC%pJ60Eec@{R>6f}zwtMk*MyhGM_|pn| z$4hsyH=Lt4E4}RQCp3HRLJV%@>V;=AX4pqwenGuG4`UQ0j&Pp+;A>~tU%qk%YWekR z9h}j#Lg{wl>qh0jUp<3TPhIpSYCHV3+wlGMYwyWV2BOY|mxeMcm%n~CA}iD3{)LOkTH5hGViYTaZx z@N8*q^fIO~>uBAKri+ZQG-yVgBNnRzm7&=ymZV<%%;`&+RlgL%qJB>1ONAx#4I*Ex zWe~qipRvBO(Hkk8&9z%Ey}?($h4}E)r9=4>+zu|AhTvzHUC?;?W(0!-Nd_UdPJ|&_ zTAB6oSCn2|-irNUpS`>Zq@F957XW@>`6|9owyihEH#(r?X&7_G>Re_`%@WzTo{uwu zy64Sa=l;R-C_|Cr+qQ`mH4+tst%(TVyTh%4>l>GmNQF$F|B~u(=ZZFIBmT7Hzq+Cr zOaAvOUT(abs}CU>%PQD4arMzW73`aQv=dzNR?C!We)1qxMB6{S)s*$9OnaNLZZ%MB zyQtQJk7$twBX9xZM~1zsRUsB%gt`DiO*V`o*6p&pd}s0>nSIT7x3heE!*_+1>F*5U zDK7<45J_gVFJ4$V^4;TX;2;u>mag))7}y{$5-@R{RU`+XmxSa*va8tdBHrB?Af6;M z%y5Vyl!Y6-*b7!IKtU5-%~1*B!VLRmbq~AG=KJ~QsdlF| zS7=M4MUvD>!U|@+X+OE98OC+xng(UGb_G!i>cL|mO4%Ywg@hl-o;od4+$e;oA);o+ zAoY21R=eJoG*ridjY@3*0#X*xpv$huDmRU$YLq7yNxS6z7Hp^< zD?(B*U<=+a&{hiRs1q-+uqao(-zerTu3RjxF>H=h$}-k_SX4n(-2DP+2xQ|e1mnw8 zAY`d#z)I=FO*pHhVyOV`*KiBreh;@9-2HHy!~F(s5!|-LQVTeH;cW?b58PI8!xY~d zz<$a8bZyJnaFL4{XhWG4aT9(3jyyoHsp^{fq*R3sx6$~Kp`s)0QtqzYI4^YWzmq8LsELcdLN#!)xhc2|6h=s!jIv80H>A0~4-l7@$b2(A!9;!^!sDkJ z5z-cTd{(;a`3N2*QHPJ=;nru89oo>I`c=YKBn+yfcCIu;fNHAs12j{sAE29h{eToR zrG7xFnOZ-xTr*VEq8U>8~H)Gkx^~6jP}m0O=taV3%xc&t9~LZajl+ zvFC2Qrb9Qhe8CSP%dS+4lO?*BoNh8oc1qw=@du@C-%j5d9c z=by4$wx;a14}5TqbIC)jfnBw^3>>rc!)q9amT=aVsf`vuhe)eD&@Iv@M*XxEq)i$# zp0zLjs3o7b-G1n!Rte4Gs~}`AK)(wq(k|9ZI4$8C`P}ZOtV9%Djk*M7B z>4zFyX2-v|pKqCDzrU*qIeT_>upjw$16yHVylYs!@M6B>2fOL+!I2&$O%)izY41AS z$WbF=nSmI&Xm{7PLS!}M^Ihhqb8D7lvKy5drIWt*u174mb2{} z_naTXro`Pq*bl6_EVv(;8S8?kz4FJ*^mqL%)!X6v3c$>*9ron?*{r+MeGPBQeD(+X zqp1PQxI3!Q*4}4^8zQGyrzFh6l9Sp zqIj7l-`C$tewy8D_0J#B>U z-1$DwYU24qyu|eP!d?joS|o)WB@#4!cFGS8GSTw8qiRwWtKrJLkJ$8shWl{5#xZ-G{fFj0|}iwJ_u&tLZfM* zmrUJE0ay(UanN{*Bg-%eGSEFLW*X@pRn$%E6H$;kss)t+!rbhlGIfWW5vo-`Bh~9s z`|%%hbGw72%CR0p#fuU!7Ai)W#54PoADiYsEB1=U0AwZ8))A5hJP0(p+Gz({LmPO` zLFn!6>&18Z!Th$zvF!j^m{5?yA?|DZT_)=fwml`2;+om)9%tZ5ZraCdhO)bzgZC-} z?6-azYp*}l$?o}cBX*BH@aHEI5j_t*VxK&e3&m0H;cN3}jq*pr)~rzhsJ(ea=qhHt z7oec`?25yU8jflwWIlLx5!eXnKw`A}nq0a5@OiBDDt{!;%r#zABDokp$W;)(%kZs? z0F_VQ%gS2e)FW>W+E%gG?(ypc#W~X`uH5`FXtC5hqva7A8~f{;n9v~G6^{iD{VLPcBPgc~p|UX>Vv5z?e(LvW zP>yssdIxjtIY*lgSd6hUxZavCV1vBa3`krbK3V}nSE#eN(m{B5>BOrTA5MKlF6qfgA9UbALr>WXg5K-WSnDp zxwScbsBW=qNSt(Yqnc3R?gZu~!n?&-PG@ z-+rP!+hjj`q8;01e|RE4cO!IM)EaS2gvp2gfht@w9(Jzpr<`ebI@y2f1eR)7oV?q= zWs+=tKWVDQ`uJCuH-oOr9&oY)TQYSbyF7J;2vBp0C2-^2sXwtI_Op}6u$FCdu4U{J z_LH-SvCcvPCJP0a18wTn>__K(&RXS>NZcL0sX@;5ktB#32`=zy{0Z0O=T49$r zIUWFuN0t9Ujbr-U7GrNnrN>J-v z&XWPQF>72E?P9=8$5dhCflZaw(dg#ZhY(bpd(5Y!C;C~-grB{-a{yD-{& z_Lx{6U%lT~5Tn^n3kUYqLC8s1XP`VjhuSKby|)U6yR!BO3wT~6=|EmHJS2*+m#gnH%vPa+T~+0 z5P_``h-pv+M{dD8LwbK36Eg@QdAqLnx_cbZ@(Yg!z5bLfF z9f6Nnch$kdqxOmV@*^Zixa%(1npItm1x~e}`XSH0==+?r{9v)zd(hI1w2+x_VP1!vmzFUvC zZo?i@l$i)~pia7wZE#MW!5YJ9+<|p$w0b`TX|Nk>CIO%UYY_o-{=Rj;b4Lf3#jEx^ z4|iY%frBJL?AY(T)`8{RP`w`mFXVBYs|O5noN??VP91WHVAKDI52QMlwW1wsUnyc1Nm^8Ki{F zkY^8B-PrlHBfG*p0*Qj81n3Km-w1}NK+K84;r!;@b`~pfW)!oFFMN^&|Mn#H_zVFH zG`|Z24T70~K@f^@SOyP~jq^!X@tJ<|lej{DtAf!=v&wnpES4`wJHFv8R>+*LU0K`s z!A|UXR`fFOEasimk}C#z#9Go43kZ48N)s`f@v`$)XV!$h9RIR2dyBj#ExU6oR)-nf><<79&a^9PGimsr7WMl=Bz1Y=cRVT-1IhaSgnsc zjn8E{Ix;py#*#JfxKnyAYvZSMOOHEupNkQ_*LnI}b`6{0{C+NLYQE}^Kz4&zfEv2T z4r+?1B(0^YHaz}bUosd!DQl~!?ru)`mh=_aKF*Td2s;N+iuQ*0qlKt+^M{feU-NKI5WP+K_m670#SLUGxs9)b^63VykN+m zXnDYxV~bVM7*oT4WVwv z&$6e*WyX5PxrCiZ8fua^P*hDKz0grxhZA0*rM3~$op93&E2 z{}R5#{}Krw`?v6w+#upM-vB1p&AIDF;gfG-ud3ambevo;1mo=txQR7zKDmkAh7zos z*{ewU)6F7j>=xl`cdPKdb*u2*RwjJM%7pKw!NS*Ni16(jB7FDUCVb6r7rrI8vw6t# z>O0sdlHxS*A2%q3B*@MU>w#sUG8ER=JX)3 z1FU`kXakHM^wAkZurcV&zKiw4{MvsP8|GU^lAiOgyV3J=9N#_cGGubiJz$n|oO|wp zz5Xs|{yprRmKB`Dc6UoHEW?-~vWHIKe33mw4XZt}U*@FV%g*!74EEA9oP&3xp}nS(cD*FsbXiSsw8=tYWGzxG4|Qc{*<;{U49#7D(vCb)n|_grx^XE&ftIn@@7jcM z=1Nv?Jjm|PIYt`_PjNv~0{lXE;q-fmT>ve^b@wVwocKdnY=oL&t8*g8TBW-(3o2ra zbcKhmPS?_CN3;2vk9ig;0as?lhTW)eZXd&1Ij@dk*JHJtt;-Fu zQF~jL&vLHt$?4`#q}MAVxrug&W*OL*Vk~Dy4arc<*yq?|*>q>&BM{Y^9p~vz_lH>! zt+tMH)4AzkmQb!Z>klbooq6NfM)tOI=XiDtdprKccvix)yG0;j(jG$`@Jo=us5@6U z?I*Cploh@_lU7_33XC4kzbCL4RG4bQhm~XLNGE$DYscaCoyekTFzXZ%!gLh0FvYol zB8%j|MT;$w3@A+Oq9C$}l-87Zd?Ksn7~ScQv$GhweRBoNWADWGRp6>o3Tz^>A7R*>3dCZog2k9B-iIJZs1p76)`iD|@3{%{6N2WR@j zIXNAnHBQBotcGdM$QdkxO}aC01|*zr@tZcwP;HR09-CX-Ij&taTEpM`Npn)3MB0MHV1GA*&{EkHIzJ{s=b$_aNLTWNfbi zO+{%<>XsI&TbgLED6I)fD?kRDL@{oe1#V$Q{2x)W1OG)r{0<3bO|WM~&s__}IOeN_ z<4IFLE*sAiM}={sfx?S;UpO*>ye)Vp zDN!J7lz}OdFdl^kiV}^{SyC}hOUWK30)3NJfh|NV>ce7*d2cFF92lt)4*GxsFDMwE zkJ8XtB^=nMn{tHHGJ<*yj>49bf(J)^eX-~U3C7m1SW2}Zbqoj7rS$l z!;lhL;6wK6w6_izb6_kQ!uIHk*D=Yq#eaXDwPmsDxvUHgwsJ<8syH7>1Q;XClzIWd z5yP+wB%*Uh41*EZun5tDad*9hz$62&dSQf&i3t^3vOL0%#6k!rOSanZ2&sPR2Vsor z2A}{40CkWkcfC#)Zqpe5>N-q{E8+eE_bRxNV(Dr)WL0quTw-n4 zy201M`3>HG!mWmTJzV011L0EgL2!vv{tGU0`8OP5TQ|TZwsj+1N`4buFw#QlW&lWc z3mjs!x5B0LU}l1`VpdrZCwm1ebb8<`b{|9rW_<3$v~)8f0p&Olz+Hq3)+9JI=BsFp z2A2xf;ZngVaLaL0l4b{QhkF=qL%7tbjo?!Djp5RQ(F87vG2u|{BXB93C|t^>spl5JrB$F1 z?g_ZDW&kLk=5T>u1m{e$fC0OO0Sx#V2QxJluql&_{4Gr^1nzOC6&1@4rHJ?hkF?fc zZAA|XsnPmc!YYaWa(xh_YA665=LSH#UK67bbfFspK6iiu(3fri_A2`*0G;Xv;6VFZ z3PA6=0XU`;#h{zrfIu1g2`SLwZUA(^A`kSu8xSf(k0J$zz>JZ2Ye8uHkwP#QZW6W3 zGU3OdxPF+!t)~PS9XCKPvsP08hRF>`aWQC75m}~|S#)St=DM9&mK zg$X|rl4Us^AzOymr-Vf`2U|Jxz0bJM>9>-#rOC$8;`oCr*%gf4=Y0Audo#A_I1c=d zlkuAM`Ej{5hDo|0UrSM~Dn#Hz5#QEE=rHO=1U?jTur@+dtr|q&LlMVnBUIHojtG1x z;*md+WrS60+#fL+Un0h?jR~pNls{lY;zm4M8xd5kS%|=g@_MN@BA{9e5rGdy#A_p9 zguWCJ_)x^E+6bR&twux)Ulj9UZ46lT7R2B~5!-7cWEJW-+|qI*_S8n;oMA5_@F9#t zwGr5197Y5_6mc>cp&IvLVc7br)uh#kSj6nrRy z(Y3vb29H6n;zJRS*G8bh6^OuxBA%*^K!ax@0w0Q)UmJn;E%+3=DhgER_*&MG@7m?$t;5ECyK~_>*6Zx;3SE7HD2^e)Mug-=&^OuC8{Z4f z^1Me_Sxam%_cY_pV*xrxfE?Y#IsTyBB!-;^N}w75YQbRo0|0$~E!nhr`yIfrA31<<+^DsnXm61nC8qPE~Lg&+|YY$~0L zg%5%{$@C}&88wWe-gNHCM4>Pva#cErBC~Efl0;`>JAw0EFG_Y6u4g$hx}zfxwdDS& znleC~u;O$SR+&@{KrMIBM25RcdlXq$`y`O%2=z)-0A zqEYKOs!r1EFl_Hq(16(Rs8klo6e*RVku1vNmMH4nj@=nWg^M_Btq7}3w0em3Kx}AP zq$y5zL)IUOP&0^d1Q&?l6Q>3jieNU_?O-o$Gb-YNNG=sIB9ey621Vrt59!_7b^dVYW5~9gzW+Y-X2v-NGZ_Lz&|CY-3C_ zx}{A<7$Ly1;dKW#f#AgswoauUks*2tZO*PCGlxdwxH2T|0H2UAG1lo^U zxRoe6r4kMQwh|5hS1JMiljsV!63tJkME+k@0*nK+oB#i@7BM3Hx&uPBz;y)@SH=8M zO%n$)2s6{^+=qCO(hnCH85mBA#m>(MVPYUF8d!#zr+PCl z!ZGh;e8BJ`{(hz==!z63-~u`{TgWFiygtK7&=tq#UKvJdKzraVb(xSe^dr_F=BMt& z386ctVbHUi^WWx6EryJTCJHoC;CRadqh-PHmIXQ#cUJ~F|8iG`&IIA0rW0>ZP^<;V z(olp|p))NFMKCm^r2!fKmrH|KWg|M~sJB9hBOn7!^%e-@lm#NqT_6lvAkwT@dHG67 zED?7O1%JR2QFGcQBHvvL(!~VD0+2?-Iy3?UV`AeOE*ppSFxCxk6#*Adr=n6RM|aL+ zz#^E6CiX)_D&&ndrh%19z=1NoJ~T62j*T^3@`63yoQMgLUJ5MBY)XSlS(#ZbPPW+y zw;SjLgQ8(xS<7#{6giY4mjsazC@_eJ-cW%&xrC}=v4|g4A%=yq)v=WoM(t7yDJRkr z!i3a0(u$m-NNaMWNE>p3k+$R*k#^*?kF*En>H-l|(LyqNn&Z!gRI8fp1r!9-PC!L~ zVr>OTIBf*f8Bl8hVJ?`h1SA1!DInAIM^seRkE$Y+=9zBhk_DV-k`5v$!99Gp=g267 zY`3Ye!jwjIOp?cAwDYVRsrUZG}(43mI4vwJidiBx!mKMRCCIj^mmkX_NiIBjEWWuH}CAf&Kpr8@0gdjCYYnkh%}E8 zX{JGpNKou)84=b^VnkT&T}DLrSu?RRx^xIhi6}`+HqN6pK{$|u1zS2dY(jhn9<iFpOwFzpQ?nCX z2sac+Ol?T4Aw)eve5j!(sG1~S(pnNpNU9JQz%ob+Vq$56iN%N+n9a=sGw8Aw z8csh+On$S7Bo03bnIv{${-i_5%7f(U@i#Ng_kLh9oN>NU@X<0zeQD(gDKdE0Qb0aLFM?11DT7Y!*`g<+~Cm z9B9@}IMjb|{HEzPJC_DMm*7}}8+m*xL~|DsCpsu0IwD78gqf!ZHkBeK9`+0rPSef= zv0y*qRUUJjO7|{hczmLf#c=?F-u)9=EP+Qcm{pJuM6NhDshg|7``cI?CjA92UC4zn z8%l_gP3w?anY$p>ZCTd;uw`<;s2?XwXxv|7QUuzD-H_KdCD}H}cP`%PqrF%(?sUkA zJ+*Psx{dqOsL`5Vf7D`sH*8+J{*2`zQN&-g3snY| z-JeYpuA%eM7M2+!HX5NtJ|V7Sx#}MYfwb}|igR(XqN4sH+rMEK5U|Rk z?UVZgPu$NIQCZb)pAF)JzZ)=CMUL)u|sita|2t z!ER8wP`X(S%Z#U;^lhv;d)F!6#yaq=RnG0(SYE;UDqw;Q8&wJ&L6D}-QmmI{>m4Xb zaU~pEjI*3K=~;-^oKLs0D2hLVx9+s(6g3+Y7z#ev3ia8}E{E;dGuzoRTrs(F2U`vM z;YMGwey;s+juZQmwamdCMinTccKZVKZWokd#wsN~;tzQsy{pQccfVvyS!Mjbovehz z^5@NJRJcq0+iHd&Z-|-tETWj`FBve1@`&a%_N^up3i9V0e?ksu1^#Xga|5 z-udk$i!`eEs*vmt5Qe!$9`}wO@ffRO>RG%^{~CJbg6t=0Ho%@8nYeaL6RQfv5Zt4S5Qgr1e_XEYvT_+Ht$-N#3=qfU*F+sb5IwQ(Nt^ZVF!4iE4lXTsW)G?CEo6A!~h?mE_{ z!uL+pt-J7iN7km!v-hz9xRY@3KDL&x4LVEjXHmXB=gY@fVE@k zKlX6316F34wd_N}9{V6`n!1M!SViCpx=ZTp3h=IMrDFzpZr0i~p5oqdSP2b@LN;K= z0q24s?-xAIK}pPb(|I*FDQ2|MOo9^&nI^^eXYA>JLCtqJi5+51ju zm|qBfF(u49G)Nfp2@Y>0bK4Q-ZM0*=87erGO2&$KmdblDn3P_ImqI}+({z3XNaaeM zJ07VV*7?nKNCgjRyQB8Pr|v+xzIw#+?bf?j*LK+04bSe-@e^LPv8LdtRrnP0tw)qPr}mya#+Boq ze4R^BI}&d)O-}dj%sH>6^IZ3e(Z+PN0DLJsllLva#YFFZov?9W!p0#4LV-oNc;GIO zxIHx^6XRFK?12ZfoU60=jqF)xWfsrPJ|+_((FqwY3}KD1R-zroc&8?d_iJ&At)(UP z!JWy|nOesG)d1J~*$n65Z0tR}7p3Tey{NO(qr12qE=$JZxZ znQVhIF_*uL1->{B#N5LfmB&ZNAX~hnFf~SJVf4@BDKcjgj-$}Kc>Yvu$)b2N1$>{> zeEkG~rwPHC+c7_G-(dFPO12mbnAjmONKzt(1`iWL=7W5NP;bM8%^)W+ZX}ADcMRs2~h`ISL~k=_&Qan&{S-0Mr+& z88wLRH=>%N($Hs#JE0-B)^xUlT2p1H*7QDrcR;0~Mnc^JqY|+*cg50(PW8rzBRLH( z)t$_L&^}n3P)Z8&+Q6yWq!JQM@rkBLF$$DKldvgp+XA7mZd=6D0A5>!EO$5Ub*Y=t z_f%o1tjLF6CZFhgCE53$Rt_DHWTsDu({6u@ddEtrvqighOhOKT!>o zB6UcHnOf{rf=N`oevf<9^1n|kq~XDNdt#>I~4jzix$*g$ee6IMrRL^H+ZJ8A9Y-YES0z<%FcX}aRC`2AohM;e}pklLO zB50R$O@x2nIf0%z#QbL++;pH_TL&==|26RM@-j+wev0xY@tIL9R<|VzjG89KEf@Ez zNY4v>Ra%*~a}Qc?N#{k?d;x1Pql#waN1KAmhTxzyQ9kL0Y3~|^3?gvc}ze8y`B8JM#+mp%d+bwd66UtPB4Sdm+B73-9G;hvO|vct@sg7JFZ) zQjN{=TP@z0A>p{5{4TtZaiS-$^37VojT6rHQhqrWr4Hxv8~AgNIMdJNh2*~Dx%f>7 z;n#cd(G>nfFW0}!bE`c!(3_8=_{qI_M{?Kp#wA_2CwucA6)uxP4UcC=(NN$SHZqE zX|56^bCvHo4pV@NTup*Ja}~k65r$nZPK(GeCTXq$(-^TlBcoHzReYXJ3ZhOmS4l+u zwYf@wswT`;0D0yrB21X8h%jNU5+HLGJiY>hbK?v#z;H zrZ88@tUU+FOq>Jc(<$h^(JWHyLqRjxg4z-6fy`AJdgdyPTs1!UIhm`_V(Xf#G$5my zJF#{`CL;qCPp%je$rf4QSTYB>kq&HdB$i8QZi(W45#{EstU5q24J$w1r4p00AH!hvFGXQ5Z46pqryyL%fYfi=H7KG%J=E zAbKIXSmJ=BHc+7zOQduUw~=7_OO_~j`3w-f;(>&KNRI$T6(Fc6DIKSDDU=Qn9or)v zAhH-jIzV&?f^;&a^HVxNxLHT(06|)%bbv5IF*BFCgf@6+ZHRm!m;u0t0?3C$4f4@h z1$<%CAfJH~At7`%hcDV(z}_KcBR4`LEv0Uvzg<;%4vE~b0zzA|lM7S?Z`PO%gziy7 z93AtUKIg*Lyn)XJpKQ&Wbk&43gUnjg&#d52nI-co_`l|bqoTSMYx>uDHT{dcx+Uus zt)ExkY4UQ9OeHh#FEVTFWmex%Bj3~cW;*7lEE|?3_3bjU(ABWZNCBbIiFSm60!ix& zkrwoajhc`l{HCh}hr~!W6QMeiJ~Y?Ku^`!97-IO$Q1Z~TP6FU@q7A5TT!J~(EaPwU zPa0%oioyH~gNy(fWVpN!ti$7doe3g?j2J93JQfCni~t#Akewm4rC@&8Y#{D`#{5#~ z3^b+I5+fzS`{a@*)DeNa9(#%d=7i2X#5vEs=DLq%4=jFucu8*)ymhR+K@8 zUNA8P@1+f#$2=(}lVW_B!E%C6nL2`VLG%1be*{OgZ6sf$1vzr0B{@>06*<93YjTuG z8*+H0tqB8p!Oc#aZJI5~XjwMf6ie7jnk|Z@Fq|T~*CCtHVu@bdX^ra_q*sj; zOJs~@7E7cSZBi`J+W~kJlQf)-h`GsTL*jO_iQ9o#Wz1G&`V4+Yt%F0YgF~%@L#=~@ z){#SvgF}sjLydz&jf3OE%iZKs>)-^@Iyeei2Zy6|a2Q%Acr|!B_$IY31rC~pqg=O< z3L1h&DsCecw~>n5NQLT3SG+_U6}OFw+eXD~9HT}mZX*@9kvOZRMv@^f=)kih#0B!f z7<*Dxn+d1Q65%4tn3tt61@o+^{AN?Z z9KqeF0b)+M#v_8&)LO9#r34v|;O%tcmMYqUBYT<-f?+}to@`A$-sz)>VXA06Hst7{ zG85WzBuyByC7RAqcjBBd8^N{0gb7SBiW3Qyhjj&(khBl!EC`rPZ0o-ng)l+KVd8qrPa(2 zYcos|2ua|kLfpgCT6OtoL^IRLRil=|TpiV^}oTlL5ozBQ~5%CJzab&`(KWTH^|V z-X^Dzgg}>_c)Z1v4i%c3sW^+KdE@pfut7~Y+loLu^cYKa83q8%CMk@N8Vm6<(LY|^ zbmpJaVg!ar!I-k70K(S_6$x?OS)oMTT9Q>#E$gHwGlzQBgyIPl?@sopYBu-8 z^c*60;&+}sHSs{#o?6&xkX8rGi53IwR=I1Zk&xJ#m?yPH8m<8q%@r)RwI&*39ikaq z+ad1y6NQ?Uj(DL@^X5E-bC_P7E}Tp(J98SItA?Ho zDU28C*9Mp|((fEN563st9HT#Pz{~wkQGebH=?C=ZS$Ib9#{Rqr_r)jm=RJ8^^(dhU zC2bQr7?&ZPug~XaXG|r@6I0Uw083>8;;k;=*Rq_7F|6z?F8O*wdP;xDIPSytgl3>~ z#u6nzzI*_0%Tl~Frtz?uZXA#QdLe&>o>Y16Vtyu^FD~X6BwMK()lP>?cr!lA?_7Ne zZ+qrgKN=ymkR|NSIr@005ZzLZhut@H40KPb+d-K|HJ#ay_B(H0B2;?mm+~uPAXAJe zx*=w4@vBWF3#u)X4T<810g;;2krw>MM*8gvNzFiN(yU9y4@A3?@uI9Y7daS{{4i^1 zh;1dQD<2~!jzf^nU0G+MaXh-AUW7Net(Cj6N+DZo#csO3n0htIV0emgGiDlUfjEc? zt{jU=jb|{4dz!gl@q_2=uEww_exL4NxFE3MY3kln=5!W`rQ0rN0lze$;=nCW^Hy_UV+yN;ofis zKZDQu)^V=jPm&8?QrjyNb8fdRP*PemL|pb~$%n#hYhU#`^AG`#FgvR3q6?)kMyxn*qo_-C7 zt-=q^)z@Mct#)SZm$NRz-24IC3A$9r=>2DW1&sp~Lg$2u5RqyI0_ngl5r||6LV(~K zrlfWdFS}b+A2>f;%L{RAnsFUJpK0+y*Wpb~w#fOZBmNZr`@+;452=<3MDWdq8M zemFqn2CfC=Ih~`3H$~iDr4&H?75t259iAD%=9Wx%xN%6l?JW#+s!@gS@OEQy9;G*a z!R?$ek9tij2jDf0K(A>8?wXfurATz5(74|Cmo+hgIj$CyKo66^G0!D2$-C0SoC27p znH8%5=%Et0MnQ;|0n@ESk zr^LKGR>LFmSP8((gFr720&AX0mQLQ89_A*%0&^Vz50gL-lfbH3NlfxC^f0#qjtSH) zfIL(JJyZgBJ)1-&?>rB62Vj9&1;E23(8DBf)9fTBc^7+_y8sK!Y5+@D$3!B6J=DDb zU#XJt!-E!ut`i+sJE;ylN|Opbco>nC4_K%mZ0b=$pjW<$5{`TE))4?+4GHv$DWA}+ z=PTvq<*}7M%8g=bPAO^}l8B-zCj7Z5LRjq;HPef?rUUSbBG4;}z z%Y1L zn*a;cbpSk60zFIu7cWj?l6Sg?xfQU$+ycPEB+$boFt%Vx5|#Y3Jk%Y41!@%l50yX< zmB5*ABr(amz{A`HSYTEI@GuGVFbP~4Ph!T%zsN&909c^z1>m6)=%Et0YiSZyB=Rs1 zCopSjF$wfA2^_aPiAmm-E++UNJfhGe0K7s8^iaz&uWD8aR020G6d)y->4G%z$h+60 zk%{n&{Kf(B@*~j8uL9r{cl{(Vw)GW}A*Gn-f|Mb7YrG6+0u~ug2jFE$pqJq+EMp)0 zEfKOP*+lXl@iJJL$Y4Qj1_V+DF--nNZVnW*@U>(P{SYWOM;9(NzVXo{3c;1R6Dn)JaP^*D6)Z1RUpU5SKkV8E^C=$s(7LSFBYAr!xS0D)7F+radR-g zjOEi0C)7-${U=#J74i0IK}ozGZdArAhVbWE+6oW5iHi)(KDYA={)}lRF_$=t?%=n? zrhrZ2M@KtCRtB@iwj1wq{6I1?1eL{m1psk*mlv|g10dZl3!EOQe7A?R@EZ?lr3V1% zpsY54Y-$B@`-pZkMq#Bw5~9(Kwn2$-qlXCV;o8$PW0kYwPQEDXeQXG^oZt!;-o3*Y zUP3X}I3tJh^IL?l(ippBx;8*-4z2xYR3lH`!>=PyVMxB(IX)CS$c@fb!ytgKb7l?W zFY~9<3M85AMU+4DWyg{cA1K3y4?oLpR`#asnS}Il~Tu)F- zieCD)*9q7d#2t0MlB;P5Hzv~W5hAy*hV$H%y6=ilJ=^h*;O*EKPNxz4PBPG6FoJJ~ zVg8uAcr2f@F;S@DBc=-pNmHE7vUTq#g7%h+&U<1=1qDX6flg49wW18*mg&0>nI!F#`DL( zK9@b^bREmPgpXivByKTOI1i1*-RKR%R_S>UhSVB|N(sW+j=J_i;Kt!asxkw>l2nsH5>S#-R~SYVE&aST5|pDenL# zu|#1sfW{g0>1>m{OXLHz|V!j|N9g8?b=cp{v-w{UNR9^1$@G& z-nsuV-dUk{r=9p?yjf?_c-Q7W@v5xw{p>vpi{CDj@EZ=^-0_T+jE%B0H^4jHVq^19 zJ8g2+_`NJlZ;{}|QTo}Vc~BC7JBZ(26B-9-1t>_s*m4nHTPX>}M|)$AlIO~-yg=T_iVA{&iaRRm@BOLg>F&WL-+TY}_4=bdRdt?PPMtb+YCCmm z!&hmyOY%qXn5kbj@kB*$Gxtjdj4z%1pM!VKGj3SntC{?sDs0;D7UfxhCsVJLXaHs) zKHbI__&uwM3z}2y=nMQ&#SNb{rGlC*j3$#vUFV(Z#I0EabdwW9W<6dv%qgbuc^_+F z6r%UKTQ)UC4^*2OpEU^-JsO(Ho5*enCdQI4Z5zQ5FJIPt-ed^U3rw+I?{z4|P5++m z<0tMz0;lkC%5$i{cPT|Bfi|U3Av2u!AFC~#G|NhaG-ZW`ZIr*Ly0=*aY8y9+hC7-S z_){YC**y2YBjN_Uj)))QajW^1h6^^?`~`lG8sb94woP`-1^&q5!cWUols6ghjJ%T_ z7n(M_AHU_YUVzt8QJ;m;eeAz}l~8fcS549V)n+|Z1QfM}7-&nVxF-2B9nt~Pmj}OS zG6dUEk&vSzA1O~CQd)cp70FXnOj9Hul;GP`{7!^Y%6qD~$^&D%X$ThImIcYe>A7V= zG4U-ffj(ZwJY$(-Oq`N;4c?Ur6sP2Ec_}b%A-D;cqlMkNO0{2 z1_u{;GNBp8a?mGcz)#nXs`=IMtL0b6FUN20%D}zr$#x|^LZZ@QSsl!nhbj<+tg~;J zF%MUOoGm&#i5c@q1;{Dns*HPK6M<9C5z*<4A7;#>6(IU`A0;Kts{m1pUzGsoSAb~1 z#}1_h6&Pal%_QPu6(H7~J^{$dhxum(is{9-lc)zZFRB2s!}wv6 z{D}%MwZ({0y9x}O3<*JsW^o0|Efi-xGGm^q0MP_a3G#FW*trZ`QUP{JElIMqRsk{s zI|Gy%^GpTUtwg1N6)V8*WimZm0rn_Y^SKJJXDRvf6Dv_`OqjO#>I$&Tglj4=n9vy$&6sy8z}j)e z5>9I?P?#|7E$b>km@qAUeFX>;ro8cP1qc(So#nj>5GG8Mzh42uh3@6vjM-2D!h~sW z`Je)X3DsNZEFV^YFk#v+KB@p=!W8&%1qc(SrGHWZ!h|2D{r}Sn6fTTiL7!D%FkxEF zjTInF=8E;q+%6=1%Uyl5s?poJ3DoL&KLS;Br&1=hce(is&XBULIr&a42p zDx-8(1-Nx7%gL*-#hKzcpxo|fS7Ht>DHI!HqbD4NnRifVNd1?lyu z%0;Iz0U)|u_d}5<0WfwtL^_oKNG#WzWPZY-inRJ%d0;Cd0U)WIP(m#s0U)I$5{g)1 zO(BRVhnloMpr{mEet@D7xIIxjZcfx5W@(A03lf?ROPWx&VbzAu;i?f|z&%{e_!1tq z<4RmLq#kF7KrRAgabc)o<^hKY&d4lv7nU;c^#fQ6Mf>$-eh<^xEH7d7SbK~TN;tZJ zR}!L;owRA+$ZM>*tu|kLR}^jElCBX-EvbflK{47lq?5Ys8`4p@eM7p^+c%^WfbAR7 zNm&|lSh*z~H%P$*0!SO?2MCZhlihHQ-{bIZW=)9(|4eAmF=>_El14!zRBb{?EkZ~Q zGCFCGv^jpD7)R%ST<7;FHkgk~Wjvmg@kQEuQJ7WBcS#DtY;L>W%flOLbaZmn=0s7G zqi?GgNBdR{&NsC;Z_%s0(MXjIl&&(L?l2Y&uu5DM=aRQLmpD9Ltw%k2;gG3rI(3r` zVV6*r7^#)4LjIdtm83?u%^7?P)ADvIG!`b+lnM3_Eh1-QUMdVSQIEQSGp^1RP50=B z2=F#=ky*CiMS^v>BDCNl!fISmLEl9NkhpfDdAj&`#!I70K?Ix7PB|_FINu;u}yQ}pSs_OO}5Ru4DvnZ*tO!iAG ztLCb(vmUP+W5qtB8nIQUzrYm};52@>=7}NuwC2vpi<$AQnm>`$ z{3|k0%~h~!E`(L_&oih`tLCbSYOZ$%RCC#;R?TIXUo{t8HCG0zxr|Ax=4vw4Tur8$ zt02`}u4=CIs<|krnk$^vJZb730jTC`3)Nf^RC7HfpqdLY@jp(Vlmhm^OZ}cjr%h$9 z{Z@USOzPV^5fht8rCKRd)k=>ss8;Xbwy%{;TdP)zr&VME3-AxuTBhi)0%qexp#RTAqnbcHbCNZmc zNzAJ%2xV14@l=J9+*nUoRd^CtHIO_|4HQo`(8C+5f#P?Pd?-~x&8aG=AXPyHsSe7p zz1$$!^SiyJy1krm7jDeLZ*kAlNd;Les(u=|YgB$|?Ee=4RYdHdwvd=mMV`l1Mc%|! zMP$fb6%kw&QTq1c;8DV=hvKOos<`T*_^OB6SbaiskD@w-Fj1#a8>&+%Lv;!z_&<&c z&y^Z?NmBQnlDaEr*M>zrYDD3zy0_t~?y~x>y05@h-PPEt`-`}$yZBahS6iv>qM6uG zG*sPH1=U^gRCi6IRCnd0x+@=5y{LjzcM+u|3JLxjzAcS_T{a&98_kMRU6&?x72Va) z>h@w}@s}7`!b^-SF;Em0Bn?FbMHCSv4MhY=LlNOw-1eL-&J_{FxFUk$i3qB^h@h~D zp!`Gx#S;-e#1#=#u!w+DQ{v=A>Lq-;{#$(eOj4h&uI+wcg6L*-R3iCY+FYYH34m3A zo3l}^1W?*jqkaj1Rlv$lnk!P%1j6L;Sv!eY=D{lkr=|&@>K^CcKdV*ky2~!y^fR9R{~~1+ydo zb{E{nOlcT_us^^(-&!L$V(XemDzy8UjU^8HS3>dC=~R(vo%n?Hp4cQzxP)1qn1uD7 zc!X;WVv(JbZo(W-3<6O6K{~Mq7o)@-bqRB16W&k<6mJkmtg&6f8HCh3(y1a*)HRq+ zs*YX$&q86+>U663EXuH2U~b%eO57ui!a0ntlpNr4yEJ+`(N+Sa>SF5Y?=%t0v6KP)&lPCixD^6^u)w$l32q zQ<#}0^q)`A*E^GD&T8%N2kwRK#4~qwV9s9av?c%*Wo<2{i%$GC(%>VOZ3z_K=k|sSM-!L6FoINtJ(Ek^u+0+7h~{Zlxty? zHZsmnvgDx*<*0#ODK*|HrN+O``{L2mKuw{=wwOkPf?7f&v6=#QliXBGs(T1SjU9@v z4x)V2Ll)V`ukpur;&Ga!LKh^ZcemZH_2(9OnkE5HO~6~XBjHmbP-xFoF;lWJQPz{h}kTwiiSS@tTM$l8Cqyy@a@D;EF_m zJGr?IhoPk{B)V4nxlW=u&g(fur<`<6bWu{dzU?aan5&$9?mGX4Cf?LZh%haQ=a}@{ zyk*DS=pX6Lx944kih$cCpr5JY>J$>o_OG}5{q2yOV4)E=z(Tz6l;k=+$yE(Z0yiK^ z$cj}sCUz_(bT!bbYcIyt2(8J0Mra&v?x{v8|6H8p2mdI$QZh|eluX4a*^XiWjqJ)t zqGA=UM1|lI70YoYDoWH}ma!{tqXygF;Md#i<$kA5yf~HA;F6@o?yb33`KeImnbjcDaxx8i-h7ok?=IWi-HoG zqM*Kuf)b7uVT+K|+@?JPm!z%QM$$nUiGju7>f`FOk`5|JT^y&Y82g8~I++RaXcs(? zvh<}%)nI8mf41Mdb@k2u)80Wm-<8z-vgGp;a#qd7YpS`HFRHl~hpM^6nQE@EYAys- zbGfQHPL19FYQN9c&NQoD0jr>Jc~ZuxcCG)EeQLI!w`W}GciP$Yk@n5%=3MQY)g7ah zo0S>Xdi%tce!jEYK7*b~`!mB@XTJh&*TR&2+i%d(`76^eA=}v=c&k4!F*RS|h|YSX zETPNH1m~ei-_d$f)&Cc+s;^N{)n~?`+E*vdPUET7)mUnE^%wOU&FavWhtz(6i;QniL0{IC(0Z!_vD~YW5NME z(N-zr%A}0P?8w{vE%tB|Px45bjh^lroXiry_x1Geu*6a)U$=C7YTtf0$35u^WsT0YWhpD#AELGVZle+GjRCPc?Rd!g_ z+-zy8wV7wCv4D1IClHR>j(z%)Ks&A97bKK}Azv|jV)$m80(k#l(nd5I& zbkCAhShTxdvP&?&D#2LOZDGu`R~R$17REe#tkz*#q{hi57!ySpGr<e30OCv0~q(;6j2kc2@9a zf<^Nj;rZ_KE&9BI;8(lq^K1pz6MWpMtC?FB-bnbWCmkxcDLm;LP)W+ZUE!&OuOF%8 za}=CO@WNgS-l5=)1e1E*so>q1xi=SVug`ZW+{Wjm?7J0QOmJ0l3+5h$ml2-rFuzy9 zl?3OxYPKrK>ni4KSJYeuxe99LHYn@+6r9`=n)8|!ykEiT1ShKCLFNI4XAyp{NuROH zHI};MT79q;y!EE*=o=2I^+X1QlJ$$j19f7}(mdBev&(>G_yo#Gqj zwZ?qKtDN@YEVJrv~@J8gqx-i)zfBa;MdpyW~!~c!T4U~$ds&USU+(2K=7FL-Gi%I)a<8Z{56S&Ujd@t^l{MxO zxwC3ao7}5v%%gIzt}*lEUQ=V{%e}V7ERcI$jd@J&^)=?7a&M?HkITKW#w?V3Q;k_9 z_vRY&gxp(r``}4=X4ja-a&N6MPszQl#yl3zclz?dgIvsUnb7MsoE%5Xumc}#9wvw2kR!_DRqx%W4l2jo83Y#x$( zW@yd|aWC=>^KRPKH%w}vM6;Q%?-vB-C4GN8Fsns@S-wFuLJ8j>OP~x-u&dz3o>?!q zxP+I{<+<56$O|xQHcu*}8-0lvW1i*(b$!3hHwXks&%2*;AMn++sA)!`z?f%vd0p}5 z^IE3D|Ke?Tg`efEce&4b=3}`_ee;aIKku1O2&1XgY@Skqvk*kWczLsVRpEa%n`h-d z-E5Y~eWBUBDEH-N^NQT1&E^@o%bLwga-VB9&&z$Y*}Nt9wPy3W`_AL@DtJa{E)`{7 z=6y{e@S117X7hqJ3C-pD@TPCx(ubEk^SKhd?3pj*zQSAbayRg*u)e?NoA>3e_02lD zYnshFDrgPeR^biJ<^zRq56m1@=)Gq1zQP~!h_Or8Y}P6KcC%UCtp2~g*}N;j%4W05 zMQk=7$=%p&K9~C?@4hJE=e%Mp_YsM&#ixa4>1n)zgxWwvE4x3weC|&upZha)Vm7&` zFnNAcvTx8*@@$;fG$sLUn3sN=I=?CUlJPEMrp-rhaz68==yPUvsm8s`1lE`})mjtM zS4W`$JnKHcPsbHr!3)P=c|`|r0H3_i|4;8iyNmS0FZ9`N;KfX7>pQLB$F?HI`1}2B z2ce_x)COyuwz?a;vCYmJ6#c+=&mt^XZDGCtM znhedk{VSg_+PEBRSEgj@dqa@}oS|@Dnb%u5@<)%^T!a0yWuE6W2(?u5x;QjXhgw}-mu$0$XtC_2DbT4$rA{qPgFpO z=q}|w=h_#>Sjra>6;dtDIIG}h1?_t?W*IZ)>fKz^_BJaO%bXT!gXqqAnP`PtQZ^XI zj8C?gqFoE<^+M;^8_Ys6vv(t!xZ9i8R?2kJ_Uub=+hD`v%A_SyCexp8GUq(0g3VOC zXE)2&@??`~W3P!N^ui`{&u;Q9!}pr|`W(Is+}EY}uAAo)FUGs+QRiK#?~9#x0p8*r zZO-3@|EwhPgLoGu-nn=`o$n&tjrUBK?;LzrI^S%3%ahMH;$7zuxEA00N%C2EFHX>( ziT9kO*co`wa8ai(Y$}?TCtUthfnM(FG6mn=PdVUZyk|<|CSxYyy&%b}1@F|vy9r`l zo@Bcb?*$1mALE_wO89t5leyF3I^!u6qaAGF;wJN65^=+lUpFz1DgTYcyg#AECcJOC zL@i63%wq{~65bgu=45>H5@OD!Q9gFSXCGB__x8u=KXVm5V1=Fiu;1cYJLD06>&~<) zmXv7wg0tKlL`8e_BYu29F?u?yiwC;s%wr9Tz;H1*_8Tz*YBs$s#z4y-#)vt%nNKFN zWbl2lBQtxAec=&*ixzSo5pgR zRR1=P*48Ky6Ir+6MSEnM-?M4W<4w^5ckKXanMpfqXm%cFu1_zJm|4s06>a_&2TXpg z$sGs1AXVk*XnL)3!gWS^6(ITyWqSOZYl9I_%`kfvR_zk+%9TxK5c>XD~YzOc8xj?@s`rvD11`v$7I23vs?2E%GP(BAdJ!rOevA6s6LIuX4UBtekHR`D%-o5vnR$#NCd0 z6}$RXP7p7jcHz1nUbAg}4C+)(dum;wW3{u%HPXW-5R4bt2|-PdgGYK8`lFuCDpp|F zYRmq)kR9pqyfD0(1jCUYrmoaEj?q(vydcRZR`$})DR{34*q{V)>hAJ%TV)Ln;ef*lLp%T&KTAWk&?zg+VkD@?m=;cm z;dEYp^Yd&vXuD%DP8%xy{V5Auci3he=@sN3>BTs;w0j<00swp<1uQ*5$|N|iq#lwk0vx>@UVY4uBxyn+jBBS z$fLe{Vh@_mo5_czz32=Q0;@S9Vwx__#ZfdxNOKtwn|rXltk7rdU!JPz@kh_W4R)73{apDgQi@rtc&9y(MH#sFMgzgM0|-2h^kD+HEgmq@WBBhcDBqtfdL(=K?g zSI_3y=T!twjdTM@l3YVPOL_b9$-w~IVY%O>2xmiJj0TR2=pr&F47vUvT_jAp2%PZ$ zdlzxfM67tNNGEjVGxuSuBl=ucb;9VA(7dK@rM{pkP^lXgbTJUJRqx4FD4{O7^1ta; z*>82Lp{`4MdZl883M9iS&BM50CtSE@TE>OPnk3Gd*+q-&FJAS}=jDu*ukv=u2R44q z@6lxgwoR&{5A>9Xn=55<3+(vU{T;ik_|Qoa^%CDaJA!?c)ppM7etzp&Zpx(5U^


N%i`f#~d`Txm%tP!)ulw8fQPD2r+=V_iYM2b6hRbBsA7k40_-Wg$>3CFMh?v@^ z%BDTJS{)nGw(r;kr=U7lUmXNS|nY&O0v7{8(3MdM)=1^KPrUwitEEId$iI2 z5DGzbt2QN*7dSG!z|r=y->dVLzL(t`(RNRMY-cau$@@?H?h1d04&O?Adndm~qpaj; z*D3cu&gC@il~qtsE_U}fcpvmq?p8v&0hmkCdMMh~F+fS~BMC(xWB6ew%k`n1I~2+TXj*2BmI!$r`^`pUt}^ z)+*9&naO?Q*JJsgj@w?l3Z}UWJIF`{Sm_qlo_}O#c@`v^M;m@zU<@fRK zvm4*?Py9ErxXd;(yMhc?EVGMN`lE)l%dlpArL+_Q0J=w-cCvYP_&dHSHAV3qvPwsr zws%U+vf>@y@VVR$U+a&+Ic}{#rf(8Q^Et#n3quB6x9UjKKC>1>V9j>*TK|YrcKfaK ze_wl9P#VkbU&jsK6Yc7C7~Ma?zJF5q6Z`mj|BOEUxfDz1EUgq_DxF9{P(QlTzVn_x zu-%(91MSb=_xH4?oa)usgWmN!li$(r`WKe++xtEL3_E{=Kelzo`~EiGw4eU6hwbx$ z|10Wn!Uuk#!)4-Yh95C^bh5qv1OJekODIe=u`@sQFX&7R6@0G7c~viGZS9Bt(WNS# z@S)#7d1L4D5B(2==-WiG2Y=?@XGeYJH`114UH5hN;b-7@XU-f`{ z=<2>O*q15nRSl&5z&_j%>|%de6?Dcwt|}OWm8pxXf~|<~U{x^3yUqS78}!6EGaDQ~ zdV`19^T+5WVu5)Ks}7?r19i(r3Hzk8u_~Zvp2j^xevS>t!G?Ua7k=&U*-Q5q`Bgq} zj}Z~QX_?*dwZBE3GLxCKHOp*|Z~P&xUu1(dnsP7g6zpc7+^@Qi-MVwITdP+eT`j#-d--|YQFz7q2J9Y^A`1Z|ODtqFzBR|aBxGtEGvf;F`ADz{@q*Jh! z@~_Y%&1mavn#Gx21D?n_APUrUG(l|7jw*T34!+6Q_s^^9ZV&Ap^#8F=4s*HNtG#+i zmHd~=r$R23HREGXHhoiaaUCXK=ORjM1qC)HGR#+yU@vwL#`(Cr_Xv(Za#W*pq`U1ooLdeCSe z?itknkweR*G**qJ@`#%V$`tu>@$TMx5e(8onQ?x*P*v#P7Mb^E*%dv5p2Jc>4z4Kz zS%h_30r!Nl&W6~GcC?WEBmqCWU9X^rzj2w}yH_y4+h`~B3c7Dg)hIa6YlGOsHois< z45RVmLwkOeF$SuCPp@E0A0~ad7b_%)zD4g~YrC{#RkxnHl>OwJOx2_3dDv33-~O5C z@odJP(VG%(dCT73I~d|UZ(r>l{02!fx-q!azwAl-a$_*0$Lp*iV)J^Kmwh-a8)%Kq zCb{j~CotZp_Q*cLUN|@QL5_afx~NZ3?cqMNMR2I^Ew+PD%jfd9%^mg zI{1@^A%j~61XJMl;RAzFIDZ=${MdWFwQXSVhVR{AuO1xi=)G>A9~|rswAYZJ#rG%g zXfNL`_z~~Yt=Nv@FBs5z;r78+A=WVF?i}o(@2%^G23~(z+q0|IFMs?JHxb?Rgjg8G{%aZJSK+ zHt%-Uj}3Ng{o6jlpM6NXa^GNYJ`LF~SjE(!%l^Rw0GI3^JcM)J0bo74^_c@`3*vn9 zlVI{6XLkrXp3*US3W#y5XMYSlYg0~ZXpFB%tG%Stc)V!iA#GbGdC`xs$=p+GHO#Mz zfBFSHXl#Px3*Ai%%cvf4caAy6<$JNP>B1+O`R;CS9~(4zfqi~#uyvInJzBlpgKkwn z?WT24H{(v32Kn= zhaITzwW)D zDmOFhHKg-`kVves!a^<@)w<13gX*A{p3+nIZ#RF<<+esZI0cMqr{%&5@;?s>epLHu zHMPag#5VTcgM!~gmj(rcN;1l2u9n>z z(>A4bw}XRjp5Jzk{lzbX1HGs0^}h^$=RMV0cSx|EZ%6-zF7cp!{5Qci11Dkp&)G_0 z$c}FEbG^Y+ujSmU^>TYFleY1C3@Z_u_@PF85Bo2iP<@XLX$0`qFTTG4O&@dfSPLqDxs zYfS9+q1;Z?P=7#-*c<2%U=xittBGFmX=Wb|a8J}?37X!-XrMX1_N0zOPm_R{&$mlX z3U)8*ilUZIFo`dl?$z4}exxnVYn(qVFe;cSZC6jAyf%D#7!sqUIA5ohZ zlGXgGVte6#1v@(=u<0Ts*yZ8rl@b!QOaMS4D;v_A0YT!sK# z@i0p4HWa9NQfToz$>=XKeh-ed(1_yC?Q!BHB~zL!&A3U<+Z7HI*f!O;5pz}p*o5hI18P@*?EfNQr%dm#2# zCkKV$E$8UiWGH5kKz>phxK@G5Y2Zc$rlf({Jf!6eJ=?mYf-M+g1{@U(rN19>RB(+y z{a^Nm-v|BVF2wCI{a=~HV71mM8ER`rPcVG^`u9N}d*bhdZT~kZ_EzM*|G@kN_fLNa z8he(rccj##ie{9{f7Ty@k^bnMj2HE@oBj}VEZ!gcbw&SFB+QDsbYDd?5xABe6U;MJ z(L{7ddVn4rD>U2?H;j!Z-!QI_+uy)fn%KvIyUno%>bg6B@5m!Hz_s#7*=n6U(!*OX zkMy+PO+OVg@5#5#h|K$Pb@gb2JS{ZG2l7Z;@57QuPfWWEKbA+=I6jew)C>+u;h)K) z5;mq^K9?(OzK};MUSG(Q11w-Q0M4)wrNb(ZPrMGhi3u%)r#}P0kb+C(H=e8aDctdk6?f zo#8roHP2-et;gpt@pu z_d{)z!nhye?r^BJQV=Jw&PIgVEd`PT#QzfQ8>2@#cG99bXVLdWhiDV%7~p;hUVK* z=ln9XP%?25!~YkQ!CSV=Vrm)Mzk=|EWnfdu_yjmyREBOdZ=^#cG|Hx}GXJTvd*|OFIU> zx(prKjyl(rp~KS7q8zR*Lx+z`ZSf?6@H!ofCe&VE&EyH0hi zC#IL1ch&5QUdWmiDd{BYb<&z{FD$eqt&kkj~@j=4FBGMw%u!(7=D_ zzPfP+MO8P>6w+aadrNMV0qzDF>5RKUhO1g`j6qG-4Kah#AqLltFeGpT49c-?fKfs> zz)++cU&vYFM_TB`j2m9S!Hq6krh^OOMV1XzNn}dNiy$!+Dk##!j7q#n45{M^ikOhT zt-Qzvg95L-2n08H%8wk_tQC4C&G0>~U}udBdK60(pZsl#2WA#?U(OQU2$cxQyJ^tD znFnY9H<=C5Cn<#J4NL{Drk$e!QNx;mQyg$0?l5q`m_OO+$z&7&CTX%q{A)3AN`|+5 zC&QDI@3ZuRqw+dQ;eq~1!-C=D(Bcpacn#0xG{C>n%afzlT{lwb0DrE>hNlb96%q{X zf5piT^^eD?9qJ#0!{*B&u&0jAk0S42md6`Pffj9)N_dXPiL48&R?1^PoQ7fStMD|? zF#k{-l&k(oImQ0PJMFhi3YRd&X)l=_S7|f$Dgm^adRMf9EU2AW6>w@I36XnV^J0EcvJ;! zs@9o5pB#^ZPQs*8*Dno%MmdPF#HJ;`_*A6}E=JYOE&0W%i&MW?RcHt4h=!$gw8mt3X|9-v$n1ln8|AS#5<9svon~@OM#LeR zD=`t;CjQJeiX&$53S^vZjLv5zt8j}V!$-w}TR@zgeLoSPDW zCp!Vv(G}pMlBfFxI?og>#e|1nsH2iDG!SQshA?PoK2CTCb6Of2aT@7eJmHU zeN6lHB;qDyg!JR0;sc@ro$D)2f@!x+(qJQIi?8meKD(T%#uT_rZo{xZC%QOoNtVH~ zI-Vzv#ZG7*Xfdoejb$k{dc(c@958(ziarl8Y`!dzyY-07V{#Fn#ed4f8sc%e$nS-6 zncpvxt2-o5$kRL`^Q7FZMr0P3K0GDQkP(@u<&t8FT!x6Ha*6ni-2Njn|B{PTe^&0u z5t--Y690L*MXpr5AP??~a#iFqdBEi*x$%h1%W}#26}hBbE|*HYDwl+>rSR9~DuWgB zP^mZMGK#z@mm%n_)Lki;j8;kh3a7UP(5;)*^5Cw)#n*<_+!eGVv=@b!)oJyjmZkxt z*HilH&XuFD#=%FGfvy?ND`h!f9B?tJbkx^pZRnNbOoc8M`JB7Oo9s(8D!?3U{p_I|Qy7bnDl(Ls4b9mQaSSB~*lK3UYQW zp|z`P3Vm^Hp}4LwRF-QEA?TVz5Z4}}fol*I>Ka6ax)xC!*CbfGOB+Qfx>ljkRU()& zbgiP~u2qyu&El4!@06&!RvulxT_+Fhwq7pbcX9El1z)2DH+ilF)ow`(B8j5e{!lh^ zoO-MNIEk2e7_1Y|Eay>^Gp+-YZ$+J*b8^tb9(uLk(0hoRy=8KpGwyLcdapJ!$vS6u zIEZ7C-<=e6E?(EcPq*6H%B*86lf!uJD0Elft&4GbvI&81M^4|QK2;weQVcK0F?Fnt zF}a(S^)&uuj?>@B{q58+Ia7zt`Uv^N9io0X%2nI^ z_y+p*?3yO~{I!%^t0_cHT!}bPHY-7>I_~Tc3E4&miGa7LaJU{T$K#3U zTC=?wra*=r&!w4t8rhl)P8e5=rs)-8_f7jTeJ1dnVD<#|Dovf@U_ZI^Ju==2rXMdh ze$SWicoR)v$36VslwEla()67WcQn=C{%&XfN6@R7AkdNX3e$6fcKyE{%^}$3+ogBb zUJ&o?ax95{Rvki~Eznv{3wQ27l;Ha}UtoAq_t;h==*ZDT8Jh5ZBp<4-E>%YB8eQmC`nLzTO|h=4zn1mDUez zz1Cy*8Kzsn?91&a(@+c~Y%!Ci+rVXb`5BWkI7!;@FtAJJF{+|oukqX2?~yKeCaxcm z`4O49B%a}AOnby(K~0e(IudS|K^2ep(8!|JNaxAhvyuIE3X_^(okM6SyjDk5{771@ znY@>~afJ0@mgQIDVD&~ABnFs#s^lZc0TTUAQG^@Zd!jTifShDGC5 z#SQl4!-K|RgQ!#!H~7Wa5686Y9B~KIl}qYIN!`@?0>#~M^S;lagL33g$eAiZN~dBD z084Azw|Y-%;l~XwAzxe@pl>7cSF=xFAM)Y?X~YsWws1tyG%Ssq19g=Hw-Gr(tP@zM zgnSncv%ldVCm>)@s2)$^Q;!G^^Ky3i5kdccqiAgxF&lS^b3(b3rv3@8`L4F#kwJck z`b~8i@pL_$1U7~G5}K-sl<>0jK355dMzG#aI1-8}UtSrYE(lsxiTugf)fxtq0gFzO zB~{eCN)bCaRG>na@qDd`JGqX+v%^V;N&5}tRz)4z$uXp%ojMDw@HLzK-U;x&lqYTO zH%yA0%|qTqPqJ{jvNh3iDji+J^vP^*w>>BrRP3{t*4h~j5HU_TPKtHeqPcN(;11)! z-^`X@GJJWJ!A=E!G;Qwk4E8A`;+aJ`!xX?d9|QiJi!<2yS2#Zlv%AtR$)4u=)l$te zU#t#>*prS%rDFYRJL~9Rgxuvv2XUS+63&^N3}2{-BUJ=;G4$ZyA#|hG@RZ;H&s%GM zekw=RYwe?_27B7&CkI;9{+>F^mD%g1*ZDz2LbCUw)}&T)st2OL0Le|V#FbGXdZ zxAWMBm*W@UtGH&L#=9;q)D4FX;Jerxy&$`{8TD*9-Bef$B=}^#g zcUxGM4j>=QnC^_+z?mWyd|uAG4xUIOpH_-Yo*~cQhUWcir#wg8qew!5M`}(D;h5$p zKHgg%koYo1O~>759$fB8Qr_QoGI;k4|MGP-NsOK`Vl9g(=AgV*qj~MP3UvuO8O_%T zL~vh{7Mk|ptz+Xe)jlFJAw45VWM?ro4hQ*1gEF83)2*uvbleJ5g zAT%m*^dLv5rPDiAJf%P;Ewth8-+WUn=Ify}9|s11&C|{UgFm8w5DqK`C*{#q9vB>% zZ%pEKNK$pAQ4)kXghc9#x1v`(2;Gq`((&*{rcSDZU~~!oYjAXxY~+W(16_q)6E_gI zp0hdHl><77FWvBL@ndmGk=~b!)BfEsjrNPCyDk~Ie%*Omp;O#R9j{Z|m~{Itaqq;_ zeOjSw+;w`~NETh=-u&$`txi-WN)8ig7xyi@(2Glrmk`~3> z^tfw`NGJ;qB(UrMxwz9|EXre+r6*9k`e{_W!?eSa=c8%XYyW!6=)((MqZ>5o-up6~ zc>ElHaK0)w8P3gE5#2RB2g+%?NUS;iS(KNjdUm&o!L7ydepvKQiM?$-rVDa>^$WPn zmyKbKRb=m4!cVBa38}#L2p<5bX_zXrWapugI9vJVW>{M2hkL^is6~*Md&85_mMkTs zJUK<)P*n-sJII(>S*D7;4Ij*$TIYoa2(;Dj)0oTMhqx;GrzFF-k49Qi>Isoke%j7+ z170RtTgBKW{-82G0~6&iArO0Ns-qWIYbZF-TzdLh-nc=(r#Do^Rl8p>@31k`AzpZq z*l_ek(_tLg8EKbjitw~HquB`#*xr87P!ZU&Y>&d+OCB-`V@&lH6NCbUAc0>q}`ikY>Yo z(FxzMc1 zH-cPCL54Uv2y8j@QB!AXW3N&7gcRbQC;c_LN?mn(Y4nV@x9{a|lfLJix0hcLbg2HA z!JH_qbFK)cXT8%}_qaCL$vff^AI)jHX<$4=TdF3RDmc<>OX`hImoZU$gs&1Mc5xvh zkq-QAt;IZ0MuSvwvrjQq^7O|`*In_GoMN6dWA)#bbtEpZX{QeggjyYB$U00B7_V7b zO=I4ZE~=1a5-*%|X5%Ir9{o2}0_D1`Lsv6+B*q>MdvcG^>02Uk5}ndOdDM*8g%hXL z#3VSQokhtcX<)iJD#3i{)cCbmj~4fd*P&W5-ClfMuy65>Dkgp5DNc8xjY*%o1tuij zsJoq4#{obF!N$-b%-x7Rmt|j8!sgI?HMQ`x8q+$q&@mYia$42a6tK|6Y%!Jk9T^uI z;z(i57B9L`ae5YtNs?p`U<@Fd28v`9I1F0&r-)LHTGb{P-yz8Op3fG9`S|J=ze2Pl zWs&FktX=}nnrj|@p*?W-8GjxzCiybslUu%S7adtu!#0E|LL)BBIeC}M>(*3mc+wEe zZrTuw?1!v46TwJ9)n;MhE99nY`lzWu%jh_FF)4Jcw!K!swQ)V*3=2{wpPD!@ks6Vi zsYmZ{*;+@s4&q#8I3o`JA|rDuV$D=E($IdH8tjieRjda+%3;GDtr1o*S`Xu6w?{pw z%CMot{(-I~y6M_fc9q^IbB;$iBQ(5bUmeZz3R(WBk3?w4hv+gQ1!$T=lE4qStsXgMx;5NT)lI?g?&{ytuHwFE2ZJtl}KNT(SVA@qny4zJZ2Uqny zM>2uDpYRgd=YxaTn(0q8C$N2QX6x_h14jK;s-n48#ma=3xhZ^OeS3w{xlUWN997-uf(gAWhB!6{lFtXF5 zrOcF?`Gl)d7d!XXpjYLaQ>xOpH*XCJ6|l1R1@3lRuyqBDJV?O%-xl<(fTjKF3OM<; z;P+`oyVy@}E7!V&AwK{|+e6Hy6ct8chfNCQG67oP zX;e4JNiiQRwLAqWW>o|@2_EJ)Q^BvNo+s5BmYFdXts)Dq3YAZ0wW^mD#xmC5rZ^0@^g`q4cjNr)*U?ZJ-(1HCJ3%OgQy`{%wD z*`17(BJ+GMX{6<^qyzk&d0O>fkD%Jy_PPD+kzi2YwkO24Y~$xZk;zqkq%#LspuZ`w zH_QwE+q=vb<_9};y)3KiNX$icu5hkBdOkOP_O}W3IIaF9>#Qk_x*kDwFHrsNq_rQ#W^k0hR#mPF?Kn3xb1+ z?V@hyd8fMBU*6{dLD{K5UjV}ypV6qsH_vV4^}vra<{EKMCaTHpSSptasyA-^wqGi$(fmuwNE12D7Bk#LOiZ0EJ&yzGvV*lT17H*d0()LN#W};ak#ppTVmcK`8~FgP^O3`+F6T{Jcru*7YEHa8yBN$ zeyH8xKTe9ZW zoj4H1>Zbg}C)LbPiMxeM^{*t=vr2W%jxfS?*wfp=cye#k&BHsuM8F)S zd0wDIbsr^k`IY6p0}TDdan&*!%oG(8;xDoE1?5EpOg(u}FZFMiWfWKC$^?E> zD3(b3R)Qh5fIP6IncLZsXJta3RU*$5oz2^s=*Fyhp)=?H^0;oL)(gpMjVnZHAK2OT zln0Ac;T@Gy>NhDvrzox~C-}#XWvteJUwkqJEjpz6pp!%E-2|=ogw}`KpqCKckTn+$ zM)63V>+@)RMAvh;bX_l$Yw;@{5s-HC`B`LWCJJ&`XgNB(9TB5xw1 z`s_vapeKTDFc8r4MDPo4-MsKb@Y0wanIbW_;in*^LQv(wMos$1jyrcQp~;IE@! zaaJ8GYVF679FlQm0lB%KpICVo4aoudxs<1MM_BxEj4FX( z#fc;6HaB2TaR(F0owL2^BlpJb%>cQV_Xn*TBtB`3By-!@%uFS2b15eWQQo_iAmn{( zY}$|wzEFbS@BSFs*pgs9+F{Mtl;i68nlb;N52ZOjDk+@cEs(OFR|dJB$J{JQwO|{w zGEFtV9L0f@YC#zkd0CYbh4zG{OpHd^e=OxX=4R-f2(nZ;~fQ$fu| zJu~AY&3VuX6|YYHh`z%Xmt)*r(ZS|v0I8;WX4-CUPh~h>EZ854GeoM#p1EMR0a6^< z8K!gdYMl#W@Z`v6g0WuT)@z;#-tuF{!kD#JWiF6C-4st9J&(`ey6-FoeF z!GC(*YqrA+!ORAuc?)MEOvNt^?L999Kk70Xh>p%;_t3huy++&m7lT334qE62(Q7P5 zD1Me_hb-f+?;Uo3YzGv7*`6z*dui)gGsMybdsaz0zjQL-P8x*WVCaE%Mq($$$yv6D zwQvx{T@QP2OMlB^a4HPn#?56nt46NyEIG#~{4}AyW>qk_m_aff(1_KSPh z9+SzrolTZGjU3OSMuqY`=d)4V`B(}?HDLmUvK=~s0{h2Jlk)wQKic!0D8zxb@HtNB z?4Ss1P|z`)q*IXgQYlD>>lD;zyc`uF-A!H|=G6A+eb8sP$TK3d3l8etJL90{wG&S7 z5t$vugd;LL5Xz0nY>$HlZ|+9NTS=+Fm(o>Foc=m$5h072R+hL!@zbh5!$E>#&Hx11 z+hs$$=J;brdIu!%{ct!{1Tdg0Jt|!t%G+>;Cm+UAK`R&aPHnK{#XDYZg4t} z$c(`W*fUMlRQ+KZK1~)qAmtud?;ylR5 z=)Z>ge2lc7ih06-#j9DI?of~gTI4#`Bmv!obr_mg3UHCZ=UQ!2ih^@|j>ueLb5Ih` zL?5Bh^My0xEmy(=3?6{gPax;z+IM2&=aV5%MWDwcN&BCX|yodUtSvgE6Tx}lFy z3DvR~e1Xp#-qc0UJ5Tf?dOa>1CK>;)T#Kbb{(ZJJCjJxR3fa{CZ-smuj^k!~zMqli zc$dHFKz;lP`2rGcDH6IfE>{N-Hprj@@>>RDAX$bwSCAAT1EATUh}?~{dp2l0G1I2w zpt{oWLsrKR**Fg)!zr1zA3NRCEs;=hzqlVQ6c;AY!Q4%B-E+{D9!~wWJ2lk*WBY~y zd2|EE_+$7w>p}Vfnz?NpalP+xC7d)}+6pz%#2R<}>XaH>CPZF9zpaUG^%7NvE>M8# z#+m(O9VfKCUSsm6eIN=?$}K10Gpn$1kOxgcP^Il7vy$BEqhnF}!raX9g+2m|D{SFl z^(OOUDi*3c8XXM!$2)@`?D4zKPazP&sg#ie(Fk=Ur=l`MwkIi3ucUs_qsS{jE?^cs zMDNaYV!uLqH{}Qrb^N2Stt&QBjBq+yvdUP}N8bs2&Y%D-LeN%l4`gl^N@9H?;hKrJsC-B< z{2RFT6sb!1f-!ldWDOB21=!lPStjno)mk)%X#(`|#7^vVaLR#c&jpTinBbg%tro{P z-Twv?z+`A&d^#@QkzUZpA44CRvQ_kKP{^60j@2(M2O7{ic5&$nK|VuXv`a_= za0Ibp^g(rD3pR%ugy$COFw}}o9!K0<^pFo7JF2tvP-pSQViXKlzpvx^a!A}yFU-Y# z)YGvDnP@yyQ4qX(M0;vw};h)Kd1ke4R7cA-6y78y=HtCydSGT5E9!1`DX`fw~+yu}qNCK2ryGX9N$k z3qd-m$Ria2pLBa^dsj9nsJKH=g|7d#Bx+igOE4Q84{|9eXqeB8Plc#>(x~iC8te{< zdqp=mHS$iXv$9gF%C5(TDm7VOtja(5R&Y?gHUy|bhE4Rq_E{P9`jzJI47c1g6~A)* z40Tqm-CCeo5WS*1YFfWA_G2n4*-y}91~pwOT(2qHX33<>kR-F`uM7?;-r}QiThh~3b zE6HgW)Z6%HY&dr_j5OmB!*y5%KW>3Wnf*TZ5${VQDIE)yR@UbGYT zx)Ce%6&C*bt_moB)j;{H3c8!M?N)eHz}C1p1HMc2ns!9D&8vfc#pMYlU4_+og;f$r zdoI`|;k4g^WfD$%E!ZaEw9m#B>g2)W2WShaU0G4e0Lh6X^3Kj*9k9f93!H$-zO&K7 z`hH~6;377;GCupzIfxR@T-BtnbOJ~Fw*Hk+5Z&xM!`xhN#Ya+<$8Qo}k%e;7;=qsQ zW>try^ykR&(Q^CyHNiHpnq)u{TWT=6#-ko354%92RIwiP8Hn8K9sp8SI~!UhDQhW5 z!^P1tg+$1>0l-Nf; z6Ku8n;v0}G8R9GiJw$9Kx;UF_D#b)R@J$hfr29n=aQ^6Xg`;$4`JkQtPSBD&!(A*Q zHV4N2)&_$MyvV0l`80<*>#KkjK(e2qGdT!2GsL$0pVne$Z?wI6EvJK**yq*;yLqSE zF6-FNS#M8S7Zkh&cGkL}`>^#sV{z;!6E*XMRvarf~`6quUjn0KJ=xu*2qN1+ese;hvwS;C0sjo|@L z^~x|9|pVT=9B@q+rmfK2E5(=;v+VYZnuB?C>Yi7^-2+g zH@(z!N$?2Y|NGP6#PrjTZS!X+03O%+AD^*lN|eJk1}A#=+Aod{e{B1G9&GI&m$4Uo z5$s)eH|q(<&29FLFM?fqzUSw!)G(V%3%# zE=^Su*f|%E=eiNWEG$9Uyxg^QLtVJOs&z%@@M^Dhc@&0z>%^|%q^bctLqG%YKN{hV zPYW65f(ewY5U1FA%r$IF`IVnskcM0~zi-Jz2*PMjW#d!`dd_ zfPk#kJdcM(*n-$pWWSSpekMG=z@yM?&NIm}vsmYN(JFc(Gq2ZJOyE`=8@ZxK7e%>G6$?tIKRhkDK*_)00 zWZW{|Itl4QO8sU6=pIXy;1A~H1?^m3GP+;j1VRDH6Lhdfdhda}+&*9( zjr7*5E?q`?YvtAsz|~-(TI72dsRG5i-8k-dkS$8m8j12;QKTVixAXes8|C!QlihY+ z&-@lpsxIE*n0()qy7h6NW8%K!^8MUGIj%caG>!Qvn&w#jdvRmZhTIQf0^=waYh=kD zUmVB0I)PkN$V)3V&L7q&awa5;v+b%GC(kz5sm^t!+jC4L$8qZ;nNHQxi!^k=(-|`( z?Zu2g(XV7LR&(HJHrE8*)#p%}&_$L7?h2p@atBkWVj21%sJR6_o4@;OBq8joqmKdC zI>(!;3G!gsFEfEj`Y~b$zByGO;Ec4!O`sC(B{E$;Rgwk{78V6`tU+-|#{Q{qSY6Bg z!b~nCb?Y~c;b7leVh8sP``blKs=Yl1cwo!U3-s1LK^uz%M?5evyvU`RmF&@Vr+ zee+?z4liVLxvM;#eIdoB+I{okao(=>k$l*z$444jQ*DrX3U?wadfvXD4^OfeZ5jTq z+siU@fk_6&6{Z%bwjekkvk&bU{uJTyw`gPQk^RGiy$)A+te)@ov@YNwgw_R3;a zyABA4ZE*#IFIRt9_hKK+i#BHChDubM9~RzgHw_H;0jK=%u$%plL19<>W0M^{|~nKSk`G6tS;b|Fm;x{cmHmNf?#m2%~+tWbo7B z;RJAcby&E2f?DtH8VwwYF!S3fQPlRMv%V)L34Svu?7gKVshROjQ`E}!5&35&{(hRA zsGXw6?Gd|%-TY;}?BadG0rshpVQXHgy~9DRe;*Vs4ZN>g_uDq~LVL>Ip=p@hjuunxlY57Q zsqMzS!yUbq)0TYQ*y~BI-fGy_^))2EyDi05NOYz>VxRCJrZIQ#6aJbc9e*5t>QAn= zD@KLeWY0mThDBkgX1FKXkJ-|$w)=kJZhCg24!#pl!o8im40}v>-anj*vl_>4Jti#L0}cr5t^bp73-2#wg71D{I1LiNcwl&ZLh%0fuRjfc zi~rf5hG%n3U@FfIY&TUGj5i;|M?0zWWO@9{7u}31hlpfB!GN z?TTN7y%NY%2ZcW+eZOBYi+W|xaFQbb$v&}HxTl?UaJX$ZXi=}(OoRSJ`qK%LshR54 z@i~+n5?xx|yY;wT!#c^7Q%8nPT^cjVQrXi=+eKMopFS)+v9;ls;Xwhh{_C)C8++cb z!^8aZs$19pI-H`U0C%x_92Gv+y2s(%DFpJD--Jhcm$xqcO*mQ+qNBpG-qW_{@55Gm z{L$eVOc0s<-NIb(`agyPy}MeM{xN((;^T(#;qqEgWp;oBZ+-grVT(ulpBxPd&N~JI z-(!ioUF*xogue}F_2$2ZLkE0ZkesTC=2SBUQy=@GDcI%2u1nvytLJ^YSN1U2}Xm^?#a<;s#N_-<%M3x0n4bJn4UtF0Ks@W=GPYO8R3< zNg-?Lg|GHCd?uUEx*CFNPuuB4M8!<|3~1X!P7HVYUnK6Aq?=&p|5v!9J>l=jyxZ); zYr|jKeNPUD!gXU#3VA!g9(GcgzS-~`&yk#Qa`+Q}_A2|r$>E>9V(Xr#gnM}YtPfhx zJ2kA9$6itlZzJbDTEYWyE@=sWTAcfdzZaX=W@+lSeBI>2GvsO-p(W=AA3Z*w@tN%( zmdQ6in&APsf@T>GqBC1le+>GD*cjdX15Z(WJFdB7QHBd1+J5%O*gu>WZtLH%$X;?< zIBEyJL`#xK<9KZqul9yBIvt+=iBH#H`^hug?x}lTnT|X@|CJ3UhCBN$pV(a|hH?K* zUuh-d9+Ug3Nz)>?1xHeN&_9;t4J&B-_32^H+B*j^*Pyp$?7II7`$Nd+ze|MtiT&We z!!zu_Ni^OQ_TWjpceT9rqDkQcfp!5SPoacY=p&d3Q++FU; zQy6<@wq7?S%sTk3=Y{(SzVW>94|0z@Kis{;2Os<6bTr4EYy<3$^TQwO+gIm@f9&(Y zhrW)Y3RU~Fhuk^tdWhRn*S<9|PP-u7r6G;6FCPpqTwcKS+dJ&;Q^O(A+G=K;TC&%0 zdeVPOOmTzfTX(NEV-qrOt7P4S%&QTfDjx277RqVtfbR zgX|nAFpFdei=+2+(^!fgZqDZ0Sr>;>l0vt)cU~6$e6y1OZu?Dlg^rjWUQ~LQrO(CT z8J*pV_sIZm>_Nt~-b41@%foz!Mb!mDv^gv|cY|GZdD!GVVskUYgZf!7(LQD4R5su< z(KBHs?)vwVxQkp|beG?-Tu|G{!wo#xu-mM#pL?jqj&82%l|0$PQ?NhxyjHvTs&Mb_ zt<|L$hG0pC8Mir?v$-po>9*SauMD5iHVt$CXkM7R%pN)O-{x(}d+XNKGsRnXxdM9M z^}PkKB)H7>ob^A*?8;fn>~@z~-R~7aGbl)pca$b0xavOg2{~)(Vu2yb0x!ii( zRL-q^-TT{vuM5xaqh_MkJkB*pzBzBH7vf<9rq$+d2zzy&>i_@$Ij!6YX2mzGa5jHV ztEnrON!VAqi%q@C;{xt2tsXoo;~xEjchLD^;l$i76Mbk$-VpAZUF-%x%VydDd-V%uc#%c=UR>Z@<5^{aa$J$vlNLM5kcoN{~NsaU<_)d(z( z*2&t%kw3}me?+FpzuX(Jeyy}WLPW!T5NQ6pOB4d~vVUOE{JJcCAaeQ8b&(irg9);U z<(QDO+3pcb`A-HduFy{gm3er759sELL16A$`Ql>C>3oRfaC4<8KNuh?uW3zN>F@nB zvMFr5Er&i7c>&J8hayepRjN6s)d%3nPmd9w<-n}%{AKa)IY71fV?x+QYs z^2jm9COLFPK9G}6^OgV`4?Ph%$XvWq z?tB81$jr+0sFjhw7{<)>iYFtN!j(rp9ZA7?_UXtIaIRbx`GeW|TH1al@`Z`yGO{{y z3$(`Vt0RAeR*^l|M8?!`fUy$F3={Q<#s%>(S3$#W?8nf*H_3C>V92&DJs$}T<0AR` z3z1ZM>DowNv*f0grrP>1MPIb8Oz-%2~g;rc{{bBa9YmB^vSDe3epkrKmrPd>FiazlBpf~MDo z-73quMgH#9NF0a%uYDDmJ4HVDYUEhsD`~xk@$xNl_G^(rr87+j_VDm(56=HE!_%)p z{qB-GUW@b}a51Ro2nbDg(zI!K`oVdGT!f8wR2OT4{lgiA`-fMVsLzDgG15h~UXP4E zWj0no`iFNLu%!WakCEt#wuPLFO^zF~l_Y0wKrJf(t9+pY+owpp!N95`+-0|aeDy5_?X$NcJsVEpP`nwdpKvB|&8yUV+n9W}TmFOmY6CVm&YAh}4Jz}Q z8(0;2$%aVMQDra2cU;+NwNQbIjSBGxZ;ZtC#}v>Pd^{5$yQ5g*0ovK-nE=p;q8Grw zm3cpvnT?UAA_bUzWCE!DcEs(DN=!4i3{GMPlC;9)incwtQs@~7J) zKfvv|CEFuELY0f&jZ}d+`@D;Vmy6}`??(DiE@+nHru%L*mZij;o#`vzjr@U(Y3+y% zkf&#q3^+fNlL4nLhYV=gfw|Zz^5;7ujc{(>L5`7c?}&_sQ~kbjPJBP|KNY8CPq;#} z1kc<3c5P%p949#NRIBqB;m79bSFKLuo$sTJo8xhZ+6I1*seY-9GV3a-6GkkE;zQEw|?PeHp zz$MPL-OS3UW|(+P-urQ+M-sANsKJ#D8)u3k^rASu?7ww`!4^dn{3;EWVkWj582HPtRY?TR0Pzy2#2S8dst_Ml^zKg*&ZCKOIXwJ@-#51FjY3iJs63SNClgZjH^l%!Okh{ z!J^sNP*b~h_5S``4GUorNtJU=y)Cyp9bv@cvPN0}poqjpPxi>^ZQ)X`G88XR6mUTtGSE98hSYE6>Cs z>MPJv^jvlxunF}OMakTofsro6W8@LHm4`!2?VhvhI1g?+Nwn;G7X!1aL#2!H`e$FEVIPDuZU9a zalzyo2zpAq4vsNBKFX~@@}ASZ+TXin+(vAPk48uFWNEzIYukxK{ARP;4e|_!o~jcD zHl0)~He+`tv16$M(BMd@?3t9iqq&#KFq3phK@y+^9-Ozr8Dl(&L>ET%aqbF7uC>X1 z+UZ`5uo{B0jxceH@e;bEehN+|vWjX9U2i7uHsUx-##oTv|j{{+8-*{{;mZ-QU`1}~7{yG(Wh2dlk*c({FD7nQ=cp)N;V_ME*!1o}FBdQT%H>&sDX`UTd zM096P)qQ!k?#eTCPo9pBeofZ05ixflIySFM-G-o3F<9;20%C*( zC^R+V4w$0$+G*-h6GDVrq~LQ97B~dLPxl{A-s2FtiUo%v&c`CW89UK9hjA&9NUB~! zM~r7g#!NKLL0|F^DvsDSs%}De&B=AE>Hy0fMOrCsL9YRn>T{&h8SD6|3v)LGpcvDq z#U1C4&2_Llf$5W!_qZ(Js?LN$L;zY*?M@fC!}43+Pq*CY&~ml&4GEX3P%R$|fT>dD zC4FLBD?kDUbVZCuf=m~B5~yD?Xls+(=+_plLe>4opdDlVFMf}8QqdwzRue^TOm%G6 zEQGUC=kOk#logwgH6HOi25}tH-ym9uW1f>OQ1;kql-QR#fxN+* z$Tx_aB8_)P<2|bJ9?^IY0q>oQn|9KM9gt*Kx$x&dSVL2oPy@3)bnDF`w20=7AhYw0@)1!1P zB$GPw~$AfTDw$Et8=LMk}YlqaP87kBp=$!VU2s}>xDj!2j^ zGaScIc7Qn+mBfg4G^orz*ldV<3=IOY!KvrXNWZxsgCU}Bcl5k!I?hZj4`IBfMzBcb zMKIXJO&8vjh+rU!p{%nM%s}bzF;p@hrQ1UXk1}BN0#yKRRVfg)hr=J95DU59Ofan; zeQW!p0B5<4&bu6Z;yOF#7L>iHRb>ogaMY>V9ibH~hV@54fZ$00p6oNIdi4Nau+;;S z?OK}GMBKPTyYuieGahQ!>LRon?O=x|3iDbGzBxdvab(hOb*|ATIUEDGZ#9povDF=$ z3?%Q@xGh%<3uGg%36w7f#SqE?<&>A5tGP z2z6rz(eTJe3&hAl*q;>MV%$C|z^I+_S*`k#WHBLhaQ_6y-OzN5ew@c;ZK0?<6?b8f z1BjqW!e$&d1h8{3807^nyrhdW%tb0jZ~_HQiOVWDER7j2QXwPaFid5w7y+a4NX}y` z=vT{`Ca*3OU5ijDt~Y}_o#pa@LNTHcgB6V3P>GEEpb!^w32HaSY1o!kfaJuOSlA~h zfZ|q}-B)G6vLREesu5sGk*LB`6pUsQ2qxm-nil`#*#8u*id;PRsmo&S z8Aak*p!$enku=uJW5VLM!N%RWADVS~yKZY({5@Q%_w%yrXmU`A=$XV_EZ*$F4s0TV zS1oAzpBJs}HGpC;qYC^U&Eng={P24u!E{~S^olsR0K{4b!D*-&&Y@aJ4Lb<9e?^d( z450BkFSlFFTwas!68gol2rHXOHRMS@%%FhkAOAGOI< zn3RNd1?L=jY^mrzmKUn9`rRKZ9PxJ;JUG9Lc+t2_9$O|xT9@KduXBm~ zYneEy>ar-0PN9y@B~h-~vl^w?UXpuD#fkFEGSMB+sdp4TGsu%nI{Habe+jGuD_ z3Ik2E%@GzCiaGxyU#$^S%C16%co-1NCA=39a;{AOsHZRu5~yFQ>5w=NdHG<*YJrI}^v3=D4D_^&ZZP!T*Sh)Enh{u2_VM z&5er_%TTc}D@N|8Wj5yu`FUI{jIR_*rYEsvV$otdYmXR;2$0@n=W4kkA%4*$^_8oU3KXkJ2#sj6?0CV~qVtkhM#Mc;y@;B{ofw*F(i#dz#; zeA!$415X|-t`n8U=klpKaj^X|Z>FY9Y4#DL3$KcDOaz!4KYu&CA+A9+VQRTjKmRsy_DYD@Ii0K9){2X7JFi^H=%HzM=(3!q)Z`eF_vfT;#h_ ze$`jh1I_*ViN}ohz54i@wpTDN}9l>hx{(up18~F77Wj#K&Oe$2U3=QU_G| z@&(PU@L+KT&ce(42Z;5tIXIefHfbFZa|eoku@|4nMLac73@A)Z$R_xFpcoT-9tU57 z9ODN81&eYCQiH^h*vok!9~uOqId^5D9!Le)diWoImG#B2JgK*Jc(QVMY90VLK zR<|J)MW9JIu|mdtDhG1qVAT5VJdpoIg#6PG(H#476)u^Du_);6lTQv2M};TEM#<8s zQ6-nvh}zf#VWTJsX^}x^)(iz1u9Qa)75Cv_#@?aggt8SdD@Ec3ZgDy2&m|!3(;LJu zY8OUhy(lDcvP1oVj=2nnpE~E6=twzen5Y_XYt+B$5jjj5a*cIITIWXaG$_sse;?$_ zooh21lQl!cfN<(DQyw`)3`_rZm^i{P_Q>>b(YN;&z$Wp)0FZNQlzFgL8aJGe44#q0 zgv|Nqx`V_p93L5e5VGAY|8$V(?{4p@>rHj$t%c1m)e05b2}53u@`;1Q0HaOrJV+cj zbXF8dFmVZ1?S^2AH|tFvAc`vyLfclb*~bh1m`IpOXQh1VU~wHVbm~Y^H!;8vsXL5& z#6Tnx5|r97At+wRq{VD~Adz<>6atcbpN8O`7%7Gr@5m2Fg4-J9uu-B4y>QehF);QH z4ytgU)rTjV6ir}!;sbpu0>8VmWq% z;1RczM~J!Dx!O5G+%;@CEGv0$Ji$)V2!foChjIr#^&ums(71PH(FAe3u}vh~_DNcD5m%;p=D( z_{ui{n36*!-pyjt|NJ@imh;wHK47ow|mr;|EMN9HON_#~mfs#OE-1l@c5hs%S35iL%Jip)BcCxY z{p(5M`~qwpZ^x;B+^rgTf;bk=`6r0e;Jki<=nZGz38KHX*9vhvKTrPQjd@Hi3ZvMUT}5>vh{;t?aMKuKX{F-8IA6^0W*d-Em!2j1 zSl~o&&l-9ES>le;v0QIago>NkkUzgXTO1m>x}P&o-gCA%q*@KX)L_ffV=fFE*Ko{& zu8sXl)RfM}po?;J5Qbeawkk*dN?Zmie(YCb(h+Y2gA}9$eVN z*a|_8$@J+(mco(S!WQuyo__eF5-37Dt*>e=SN33~`gc5tEIp<$J#o{hDMH zJ9U_FMM`jMM(ylip*Q4Qhk+VyE2C)6WGplZ`&d=P)2Wg6#JW^q3&*5Jd$eX{#Sb2>6?6+bH>U8r|Q7tdRkM>V21E#@y z#B>xlesLP^8u`Ig(L5Tc<pwS~jRwR8_V>JxvjLRd`UP}- z1YclWsl|J@R!bEX_)mV|^KR(N3FnGhApW#-(GjQ0r_TkGFPHuPAZC=Md+3aKLKKhE zwv{9CKmQh0FdT{j{2#=p5aJ)4C%T`Kf%#A+%3xv)c^@kdLWHz( zRDS5gs{GLH?Lr%C)VDiK)4U*@3=Vu`wwv8ydtXUeZ$b-pTd|EylA}oyg!l=zuQ2PK z7E7pCZFQ_yByq{&N;PAcC?7sSRY&+rKsj-P|X$ok33fdl6ra{h-;4pU$L z)9uBP$}^$zEpBDZJ)~;8RG^ z5C16M6;}|=>BIgcx*6TC9-we_i)EBj^niyk*)*HIH?Fz*y>1XuKiOi|%VpEV{rM_7 zI0jH8r#@v?>goSI=TM{0mYLsSaCMj5_d7AE@UCc}Smp84F^?Q4C&NjLYaywwpSl2(86j z5g(jYm{6*-Tb#ba2V+Z}j!pL(Fz|=;?}pQdJz=gf%I>obhi%6>hxTp1@_gWQoV@RR zQGZkz5SQbO!gw+}Udi+Dn z!zh?oR;M?7&VZ#koucZ%DL^x>#Std}6=7=-P6V15=R-^`;CrjM;EyvFL;_CTAQT!o z2;{2v4KglS4Dm`VLi7_gT#dnfU%YvjpkLnij@eUQbAcFPgypIW#PJs8Fwj|hq3BxP ziWM95IH(^x_2f}Ee9hu_yH_&O!yD3AMgv+;*Sz^|S2_Da(QA~>)8TVKv)M%~ zY~DgD$9(-AgZ|!lp{VXQ&NY?J2lbhpH!1pSo}4~ml{v>KTYeyp8uz3*=+vlJdM@_- zZ62c#o^edI=S)X8;wCr5`nd@ll<5U(z!Ez5*W0DT!ZQRA@92``)H1Z~(<4yD7y2wI z%FI4}p`vk5nG{K~EAooYb#0!qz?l_P7TSV66qQp~o87`zyht`YWmZJ(JZV`Quz88R z@B7ipI-gqD({{F}u~|+yINZXXE|zybWq!XA&)~q214^}Uy2b{2@%NhqPTYhhBY=t> z0lRdd4kT#7QGRUUqjOea{kn@B^0Ya87_-0z7M5N(_`!~TxEU$f+ZZUJBiL%}|0svc zy0hig$W~l}-E;uL!SOE69dhl{X626nJDA69!ENchQ=@o=4cYr>W5%x!cg-k2wrV+lXFp8*)*Kx7P~9t0iA~xn>}EjQ(lwA zY-*2uBq?gr<8H(x%2*{^ZxWZnSw2^EOAonO+-gjCsgIKEG4=x{FU~4c8M1J8@Ja{I zzeCIO1G#+=EYRVrH}{D?7;VI!H6ud)=0VX_-m_f9)YBpy43D3=@V5WVEFZQ^s| z3whLhv8;qJf&bzM6QxeGD>v3#-Q?pBib~mhn>e~h6Jc>7SQX5a&Ul1ur%C>3kr)?T zq36S%rE{EI871=8G+@-Z_N)50Pr*%rJZnx z=>LsyC*`5PP9_)Tu%fHz%6P=8k*_Tj#|{33^~3fCB!_dX#&u_1kVDLo8u-~?i|B~l zxloLd=ien7Slj)(G{C~scL@UQ@;C8ipt-_qk?;I9iV-h?sdPIYPetV6WYuYI!$)( zKd{f_2Bg8KY zMKt}pG$tn{UvMvN|IafNnKVH3J(ws5gZ}Gbk&@dU5|ve1wxqd82s$uPA&Ze0J|ZT_ z6CV~+JIOlud7z*4O3YAq!k7?q`W)T~sKo&k=fOl7D$wvMB*f#7iZjh?P1O^qh~GQ{ zhDHv+$#<5CB?rnaA6ll`aNw+m$ZH=H(+-foyFB!9afs~m*f#)~AU}Fsobz=+PWsyV zPmm`p_bbtk_h;D@S%%Y;K5d1#!7#rBRo*IG+4`c0%EwlTLOFP)XbsBs`_9`4!P&YR zvgwPJ;*37nhSy|)QIL-}OkuNv79)RWwJGE8i+<_9KMBnM!SLc!VpRLG?tT&lj(u9p z3ChZKlV4WRDshZ)t=#yGsHksOB(yQQDqEzcy}VN8qpQTcuLJw@?+&j-7JMms%U#bw z{iL21ryKzM5#uE3lrwtJDYl9}k zIJxU(aZ3OuhtcVSzZ2=nV>XEKvh+2e{*v{b!c$ZRA=5dPW%J*qs?vd~ezOt%`n@%x zxDvU6BdC|`cu7Fi|M+#WC1^qiLMxV6z9CLSf8~{{g>xRuklM&H|CRBFMOt3FMLx}{_nvolF@&QzH;v-ail!`Eq^=(y_UngE&_xW-ykafcMJL9`{4X9 zH;GB|k(Y9X)u&)R4eFrcP20a&`;A1fS zy_>}`@`k+%%URtR_0652l4qS_g5~OwO{-87#2Iot&ZwYVP z&I7_b?Q0P-QT}Q7epwqnhLSk$0}P5lJwnEZu$QAVa6BtOo{)xEw8?rv|U$G#_n&XtgvhFkS zefid>?FWGEI7OTRXD%15pXBDx9$XkF8&Jqa?2iZ zbSH46^~E=~LVVd-6~29s0~HhG?63CM@;=!dxZBgndbAP6`~-*LpmR!WYpguouwDvd zBCkW!O>3i}{1fH8uyu%>D6H91My&ouQ+j#C!hw>nWS6K_E#DOgG)crwl#Q0Pyj)Gc zaO{i6>^L(;32Brt(9rNyNtT=uwO%X^CWRO*IBU|U6j+xUeN-HVh_EAvX{0}jz;_i7 zuvq> zqa!#8a1+x1)7^rRx_`-rT5C}Hs%q;pGr%{Oa@h;&+X(sNUe;3qzT17;$K0;9S3ASf zKaE@cOyj?@p|3R}{cvyVOf%?LYD7Z(ZyMjKjAGS$7Eh)jj_C)cQ~l6&#+B*g`dgDt zth6C=X!^Z@)|CB#=x_46A=dU{MIk;Q6+bYY9%{i{zzy<)2J0B(ujvWH5G=ld^rw0* z?97nI_qWbTe>&WH6`LpNe~qwCHj6=knB?nP&X$N9D$g8cZ85G$A3fT_X^=0|Gsjpb z8O2wsjXkEbacXV(M5}+gtjVf2jjNamHn+w@C))>GedGm$trB_qSZj28^*AeSv@5|+ zyr$W*(#t1U|0VpT9uE9te|6U()}6w*A${GE*1!nDD~qdoJEx7v*B(_>DszA}yL z<>((+Q_F7_Fp7`0Y`h);2iAzOP5sCZESNt^xBSprWF%Lv;BGcoHkYjEgT-#sc?FM} z!HaEY93y-=_>9%`-MG`j1p5qc&5AyV*i+cj-w2H|Lf%sh_cwMIGJrgO?yW&?@2wSm zCZ;aBc;>9uwoEEH3Jmp%iYdvD+PXsCdXn{5<9s>rWa~#0&WGV2*eQ2@>^k5hx~A7! zK<>cHRV(^9QxR@MID$oB$2p5N#3n!QAgHf$`N>v4p}p^)Y<2g&u^(Ig5;p=D>SmLI zz-~3Y3@$H5cti)_Us;hp@yFI|UUuL36RWE5W`P8$7|une4?4xVq{e8L51j`Qc7bgE zqtzRsGyZ7R^>0#Khm=?pZF2C2CCB_&!XjZ&Ab^!oQ?4xD|3{FF%3P8D@{iUVVPmR% z?E-5EoPrCjdN{-3)J}!X^_X)E%)Wt~O3+}eoHH0!_?Vjhb^?-9@(i&(3 zE17Ylo-=aD*Gv*oou;W*gul6cV`e>wjv+CoC)JPbjO@xg0{2 zTmi>tiQ0iB>)psU(j5hVqi9T<1DKNtVUL27>xZH9l5(XNLvVoY3 zxwYuPz`E+!I8Q^f#*XWvPDqJbD?FiV6ygMm+LumWZuJ#HVJH3emDXazm?5ueg=U-~ zAJ@)%tq?miWS^_8lOcqXS6hw7FV1&+y49#G=p3iL3!U>}^Mlt>dDtIE)jgd3PQ(z4 zo52e1i^Xgs;^Bjqr>PXoN4;0gdoB9U#Jgw%8g5gmW;G!93h_2eu@J`bce4 z5d&Hh4L({^DgxKQhWUtPl})!El#d9uE2AR%0l$c#KqHdygc)##2rdeM44@4(1(>`w z+|9ud>9@T;%=pM5f-a{3OoG>MR0ahJWpim8<0!;gU=-v)9Mj<%NDKD; zAWiRo(K<$;;#x{Mfi$JaMnFqbiYo+I@xHGr$wi|k> zK;(es)rW52PNh@;4nqWTJfsZ7Jd>ilL>Y$4N@gLpOQ0msdTzKVRphILg0)C&F|mB> zRjaB+D?3V^QY~fz?S|nY@koh9JW@6(?WTo}t^#pLp;6`+L;Ud-v4TKosP9-Oz!+qF z`e(0M_xyiseOqiz+i10lalFGqE$R$0%zxmZVQR!&u!HF>)^U;iI4W19v$An={8noP zgtf6vDKv~E(f2UDf&5f$u+t1G7`)B8Bo3k`hv8!xZkk#oa-|VKD9|VZ$>zUnRmyGK zuoQHi{O>kvB@`rT26$|bsw3br;lH+9l_+!TcI)~)u;l=g54H@7$p@P-u1l|c*ZQas zQ=_GyVAbb>^xL0Ue>UKr`Kfh?sW$1sg>I$dFPZ+#YO2Z(%G5*)bO_al@qLpl{M@Q8 z91n`axtBuh*$@5PIx7grz_M+hTPp-gy1Up$N&mdU{woXWZrVq)Ak}KOn=WWs7keBA z68A^!Dmc$Z?ApWFXfPy(BzyW!rJ> z74`!8rxJTBV$hbqq<56sD~$h_4eBmi%V4A`zg6Akv~rtW_4Q5LP>x#ycc#&_(?!>t z@ER--z+o8?f#D&JmducU=x(1=qQ3FW#|#XNYvjfrcDXF$$@U@X z*+<)6tocpTdn?F=A~u-b#vq6y-p1?XK@df3HoYxD5JkLWdRtjUlW|KL@Z*NLYG)d- z{~8_FhO@h1lMLpuxXZ1sV8E+x<{n z43s)ofOE+5S3kE8iZTlNSf&^J++J!luQR=ug6g2|FPomiHL-=duQ$C{gRiLjYo@23 z&*fLt{SDLmk6(A<#*^KDX>Tx>`M4Q>rrkf*{H*Cc7eD~~)uxAYIl4Che~sy3{aObB zf34~LD+mJqzfJGO_PAN>!#?tNcAI%Pj-kK~EAW6fVw_uOh#<;YKYlmB6zB}NZCnGu z=|Ma}-QuX^ixt{pOkRKtg&_K&=i2?n!N4NYb0q=T`6-ahyYrxZ-2o+7I`D%mu#1cL zbFtbXuQ=b91!OG50My_a_Pj_fIu2F9x(A=S1>dl{*f*#hj>^qQZ%*0MO-%4l{!+V>W!Z@4Fc@XDF?qvTjp1k&QSm2G6Yn)H2_*kcU<+;OQrr#WMK z%L60=<10+>i697!uQa_UgCH>el<7Sk1cC8YruU3|>@r1-pI>J8GRy@E<0Iv9m)l2~ z^LEPOzuJ9qUE;pK+Ldz6U+i(_>`vlR`^Vu>+|_@v`{ifF9lKmqqxr`Ba`6@R;pL|; zJv5~L?H+%d^9vjl!-uvj?QYV&((YrfJy0rq$fa6&pj7yfOSSYssqi6}>h1%j!Uv=} z(`yd5lcgu$4D%-5@mJP|74R6LY zwA$C#f6F@Vl^?X)XTkjQcgeI{XWIOoGHuqG)_vg8p-zn2-ohkF3GQn;I5wYYu zWm=*$E&5KG7U@hkeWy$}=}fKPDO0P?H1j)UnyEAGk@Ii(_GGk2;<1&gWFK60z9`~c zf}IHMEYi+RaBjzxO*yeKxCwnxMBf&ic@fU!hn&mtHg$@Z@Vz&*vsODRwX;+?eBIEy zTYKSa%lhW}KG;p2m5qe)O`Z=&LYS@eeVens^;zHQtS^)GEy?;8WqmhgeXUvF%&c$E zS198QRoo7Gm2X4Vw=U~jmGv#l`W9z>3$ng>S>Noe4>ln2R9|Yo{d#2ZaslhqI3AAy z*94r8hd#rx|4P^acVM}nf9i&!SI_%|e@V}}(;geC{f0bp)8Fjx8N*>l-ky{M-ah^^ zXvns#?~SZ)ZPvFk>sy-j-JSKdWqotAzFFFb?UBp@wnviOW?mWWkKlP+?vJoD@p@&@ zty$mZtZ#kRw>s;~WPMArzC~HzO<7-S);Du+m~RWQxIJH>IC;_CcCX}m5&OzAqshR~ ztikJ#>S7A6j=qA653q*GdtOzz5ZK|t)$NSv8GOclt4)mP6-0zvye*92D{=||?z`_~ zgd0TQ5?Asg#>9gd+(uD(5ASlyT`7_#m5$T{XOWgXGFXJ zcjX%VR~p=cQQ>;$zqV_FE4X?x)&HBmIC&o!`mI`)usK_W-Mokw@KUA6)aXISRMsfH3DjHt*75#)Lad z&NBkn>EvlW3c5y%V1WW0a+`eUK08tVM_lQ`I2BR6*24?G>*Y>-FwT=*7TZ0U6M@yx1M)EI&ZE^kO&A!#d3uNhRjQ12Zc;%94SGWxL!dkr4T>Wm&>6FW zxL6U8lsB$11VUn2w2zD=AQ}%90ja2rAQ7)o(FI!oYG8YY`yUU2JE$=MW8l;`h8p4Q4avFp+eh~P6Oh>XbGiKT%I1*sr|bR!t66@x_5Fwa zLvxpp#(AcTW@^qIKiBhU~9>hWk|lW#xA z;W8WX$w#G$P-F*lXWxqEXCicTV=_d9vNU3p*@@DfaEa5;;1a1UmRMyvqLm#>yaFuI z`W1rUH}wQH5zFVniCKImVz(hk%n}MwOQ=Nc4!DDeT;?Zs`Ghsm%lyPIpA~O{3ph09 zH$m3@)9xp~|4%!SBw``0`3Elap4%IS87}ogF~7V_lp}|-4H0&3e57LPp~@yk{K|n-wwfAku|k*0mvR0YC}x2$F;8lapM7_N|&;47xNi%b}_QEhuNd-;m_f+he z6AF8nbjBX0%N|Y=EW4Os*~e@R`T)7jtgY8>CFm8eGsYk)^x^9j`9`Mf>A6 zyI2S@2iqHbI=IETowM42HehdqhcZALJfML*;Vf-%*q{XL#mRX)6_xTq`$E{j_V9h*!yUfQt603y;DcSx zH9Sp-%d#rn%w_fvYb*>`E|@QuF0*T@A)%}EZ~>xM32NM?rl4LrU+!9F*B71#MKTK@ zpaSBL+UKE$H#}+|I&Lg500X78lC`&uhH=;^8qff>)AE?%Q1)xcrVrUy0j=|8^<#E@ z@;oF0WNrWE8+ag(1va3k$O7zbvH%&EEI=wC3qZ6|SL{KMEWpoX0n#E_fJ8_Z_&f;@ zd4T!y#T@dJ2bhmMz|V2Gh$ag#nk+yXBMV&Yv%vcZlLc5TS%B%t0^}^R0J4(>K17f# z0NPF}9w3X62k@OdKrrM13O(`wUGf0Ik_8BsEWp-~1(=>JkU}-c0{l)EAn%X`SWU73 zz>@`DLXa%57H*O}fOzr%6wrZrpa?whe}M(cI^luCGxip|Iyz{%{VO=vEw_I#HjmIU z-Md8Z_hiy*Bx2khOBR0*0(C_TbA`L&iWR>m(+#K%SO)5`chfn$6JEpwq<>9 zWPNM1zLnbdc`0l&K$EzWmF)s3lA^elQE}izUo;OZ<_YmY0ttvm-$szS4Ap&XG7PRkYo5>`=CbPj&*;0seL;aC` zRQNndQOvtSG?2g(UN~OrTth0`p!00iU|~zwq$G%F!q%V?#)>$YVg>~E@R&C#7j0&I5&n9t>XJ3D`Ie{3RVO{UaQV2 z_k&Es!C21GpW!ILyM4gB0r(^WPAbT-jN|eYXbw0HutN&y+_&!!dVb04Dc$08^$Dgwi^GMGS-hb$g#cc9SIEo>S8;UxA z$LqJTzYmhLR@oOM|88Q|p+*B{vp2i1^I{k^rIpWcvq}4IoJj+pEgnuXPj)`A6JfLm z_YUyf92$yH_2I<^Qq4mx!*|0o8}IY&8RIlMms#-;CaiDc)w0&;D7MD%uIM$=oI#6? z7-F=jmvv2f$ussLNti1gY0gHHi3^ZEbt(Q}WVIDq8G{xS>Gjzg3qhQO6FB{j)l9!c zPSB|LZLiHZvKp&ak#k{@iFW~1B7Vb!2emB3*DyXobHbifJdC!PUcvY99wp`})4k*( zF-_Uw@dk7F14FM!gIen8o_fVY)dc#S7GQ<*DC7**eMXv~5w5N_hCo1u_arErI*Py-f<7e$Y z1)xyk+&NL6z1kjy9n6g{*?nMH_;;_vd0Ac$C#lvo!8iC{kBWL&VO0yNcjTh5#;TS> z@61JEm30@FI~V4nu+XZOGr`NME_c!Gv>~b>v<&%g>W(IA1QzT0a<)Zs<8yY^_px}U zu!jY*>j`jdW9SCD2;b<36;c&Wi7`cFxjA{e`G}Auuh}(8=VRK)!kpgknf1u5fUHtb z@a0)}RL`)lRL{_(x@HYL^I0-i25zHgGd#D`!!!%fc2J|j08!Wp2IQo*c1hB2bwP(# z=jCKSB8X8W#=F>;pO~3BF6mrqA?^*t-NKI?kt_UgWlAB4wNV&)2OfnYPXAQ%I0;sS zhfhh}J~mXfZwoxCeQ@U+ogh-b0NtV13ftsLOwTbc2dVn?^^vdvA`X9)cJC=k$AvJ3 z^+}j7pjmo~ty;i^8r1^M5>yM=Ce;GYBUB4GvsEqNC)Gjk%ChG zABj@c9xehXv~yCY(9YSLLOZd2lYw!MM_N*N=gdvv9qz52kx4io{r0y+f2T{-3g19~ zQjrPQHdKAN2BPZARSQ*Lu9~R&a)nWm2`OGxmn$8rx^E*!^$u5bRQC{$;$yDaC_W}8 z6dx0^>LM!ttz63AW5Y_UG8sTql^C?5I7{RLL%r=;V|N(aFmZh*GC|}EBrP2 z=tDk*JxFL(BjT4g4t>3P7206CZ|hX_MCDPCoo#(vjv=y}*7p zLLBu_Xh1qc_QVnqwXR^|c|;6~@By0JHE~hscC=L8NmSAisUu#|lokh%TWTN}O~GV2 z)?TByj7WHsuE;ZhD>upfNZUp>NR*2Q*kLrF%{QtKo3Xj1$#viR62^QC`1%j zQFeT-_Rvc@L5EWf_ZsPG&QS6S1CLKQo*?D<0}%`n)p&wM`cW8Rz9-vOW7MJsA1u-T zg1zNWnV%HtM`3eW<-ZMB2sE-H&~MLgf&6MunE)aWd&Mq2g@RJaBx)>$K5il?^l`UA zp^uVNu@loM?7_XIGf~n`a#{*SC!+;uEe19i}VLt{S*XAe}7e?tT@|986Io+-mZG zZ*>aM{hrw$(Tc^|Bl;aV_+`5~$=3W|(r;mhGt#j0H~i{d6IEr(EJc~r+sXEPNG-2O zlZh1fFp-jCBv!>g|AMED_@~TMx{V~RScn2r@etevopEn8pO%ZzD@pc>BIfMqm`chY z&8r50YIH=l@l~nD>ZmM=~!lP=((U__o$G)m|6f&xItmf@`>_)T~{jj^AZ_ZTjUt^txZNQ~y)*JerO$jR#vz~yM z@pk_kg9PUa16vk2V#6H^Y;!#C{w0!O@yT|CiSdpa4K(qeDE5;4ZB_Hy>eehNTFX5q2qi!5s{pk z1N``Swku$5J3iFgumg)yp?Cul^SDC%izSvtl` zWk6Jh*E(+*R_y5R1=kqML&>EB%;;Y|Lsu=A>-QIzJ|bn1fWs-_S8W zhIcR8tXjHz(Kdx-J{qZ#ZT2(1u-S&02DW$yV+NR^_;59}k4J%+m3M7N_OP_JKr%!~ zT_D!PP_ExcTsTp0=Bp$)FgO@M{T8X;5xkL-PsB=n5Jzzn9302|1T3WFa_9)YF%{8g zfxw}##!rR;lhkYHbn;4leC$wfPmWny@kXYhm<6|C!7TX8G0P6c1!NX#Pn@yT+;Z}r zgEX^1u1yECY}3pV@lv-B^0@{6IXOS*J_DQcWTX@pL@5uaYEGJ@ISKN(-aI-UmdCtf z4|T{kN*SVYd#f}t4&P;x7(t@-=Anr&$Por+ zD7%5A?U)FH<{*lE(nFf&L`3e{ZV!u@ipnOTaS=J1FhjSfK^8p8)~5I}kFlXO^{sV&ZR+*v`ZeVKwI zI@$iZ>OH#~*dZU8L60@FdpJcxZ-v=g*rR~L_8DV->F%^;>tT{E^_B40V*^S)g@ zLV*U;Qr`vHTCc?mJ;>L3El1*c&;upD_kFuY=bYU>XPexia<<96?Q>FLqbPawPP-;g zJyUCQRPaYcYh@fL?D^T4yZtoJWMcw_{XsS+P}tpf1#kj|?PX&ii&a^_%Ekl=`|4d7 z_bWsM3Y$U|Bl7us6t0)d|BRdomQabHuKR~Vqs(Q91~q~DzKbHxr}8{Sj4AAaHF2IE z#yitg$CJoQ4tS|G$4k5O)NmVk34b}scT<*^aL5iadfw)+J9MEtlxITShJ~(7eqr0m zTUUp&T6vuTIf!JGgHR&3@YNL3_LREeYWey2EPIvN4);A#>veM?O@`GhfnN2m8O^4 zOe_bzj?o12ocxL1Pys+Bt$ajAlr3Vmob^C>c*`?dqqeWnB5`!l`K zr29~Om^V+;{ZK52;LWk@3~w>$9)CHyzk72sNB02gErMbW5OQyv&k@EE}vO z8z7mlTOPpRE+Fw+bJ`@eKBrAmvvb-c^F>aZq!ysS5&JpF#FYF#hSQhNfY7QkT z{F&hQ_A1RmDSjZ$;ZN_dM4`!mn&S>YLqBB@InvCBw;k}lL33nKOESXBfTgH84*gPh z{F7v$Tnj_T~Xbx(D8}``^n7e0gqvi-I zAYVi5FvNmR$h$y*nzp3SJ!;+pN}@`D&|XT`fXl^@Yn!6gKhLMufG0B8Amwn2%Lpc? zE|}W+6U_~pC*pXuOK`aY^B9X05UeQ{IX6V;IwaZ<7bQ&>D}qhe-WQEWvCwKDt#R#} z(Wc}bm|b%58Miffkj+7r3{}5{&Mp2YSAW8?uF_=-u`8>dd+X|DHiV`m68`g)SeU`t zuIv3wy>;q_g$Z1j#FKLBjWn3mI(LenTp)SOO*Tw)W-Wx#!Y9=FaWr0+%~z1i2cx9f zd|i;Qz}4BRvf27%vlV$!6vwCP_%dlWTPd;?`Ps^yzxcK6i$ff26sn1-Y>=-oFJB4r z75e!q{CuGV9S2x)W`Cj6!TzvSqNLK~mPCI&_JwZ%G$d}OV$KY!WG(R;++9+A0oy)!xi3+X z0~Rktfn_YPj840HRN&P=Slz7fjAZV`zg*VDKsVYFuK@mh*s#esJyGrz1Qm_rxyu8= zE+_1Am~qT|OfZ)-G03%A;^i=_p+FZT-73N^%cY1{!8ot_*qufmrzd*kz9j~u+yb^K zhD7b#RK{{ubY7FPHBNMMfwwYOOm@3XPV~ehe1Oyyr#z>_yi0*>713@<1l{fgj+hR> zdl0ya&I4W;pd-=U?MaJb=47|~3}ck(?+5(T~kly(nO^V zqpJxD0y}wRH9Rn~OZ&tKjxfLomEEB5SMO=Ks zXGDT0T?B*F7NQ5~prtb7&YN4VGKbwRDl@DOG8JElhEy=yqW4J($vmA1HG+OZ+jA^|sp<}DP)Q~9{^p`?8`O*#* zqKwC=&d-1oJJ{Y!r8Z0$r8fVzs7(w%_YwoyzoNePvnvUWCpNv0vn2iTCb^+1S|xu{ z5bZNWc&X38WT?NF`j8z@@TLf1$>Ul{#uRvF5p zV$oq!!uL#cFLlj(W;$9g@@!_+QdY|T!V>ww$HWnsk}G|_8il^*pR zK553RASq?Fpr$gHEX^do5Y)jcq+^7dO8QB{F3c9PcqS=?1w8PnR-{Q3h~w>ugtbQ& zsDs5|HV6o%X$ztMi;<)lE<|P!bX>kx!3f$1Ep{Cwap1x-axUm&LFFw0ua`i<2MGbS zC6UZaj=andRNxo7s21`8Ae|1ns8@cp|5|UJiUi3AU}!TPLDslLwb57TB~Wuvti{Nc z^oL^!+9_4il%}`QP}HInQIMrY7&nz7J1laeQk2((*r8IzRFEns}z+UMh_I-un(&QKAF+a9YdvPHkQH;nA(2~XtPo( znwU!J*Ov3ZV{FG-5Dqy5K}a5#48sfPio>Ebl06+;CAqe+1{m8|7}{&iMD+tk0LBOf z)E)#ae%B*Wl!J>d?M8;Gc8G5`ddm%Tz<4~uNj9R~^7&AxpfB&xHpuV>#5%P3`Rim(B;9Y)agQ*e8-5Lc@g4m4jMC%PJk5&w%vd9?JdLyYP z%5rLJKdmRHA_LdZvH8Oc>#69lB9+xFXaV&kwxBxb$xN+QP7O*oH8AsS%)FP=Y+o&5 z9K+0brMpAs)#nepJnI{ZkrLa zs_XTL2MWD?1aJmS=B2PZMgTEDS6+&Ob`cX$3|bGIboCZ1f!u;nNF;>spOZHm>L|IBJjQ`QLRo#cn(p$ znSIJl>2D&4Hou$Hx~3OJ-eO3D!dyY^hSKt+7!225EW4mGXU_XSXA{sF%GP5aX zbc@#19~k2q9~CJM8BLk#7Om=cK%95z%za4Q_kdj2zB9*Fp)(K2W10Os^WPmh^ME{; zGIe`%otYXAI^gY;r{wvRwZrl6pekW_qt zj%*)+j$}vWQh?doM}XH_jZyhYz-+DU$YXzIL$!3@FYO*3nhdK0auKhB4N&jvn1}OG zdmO-nGSGeu6V*X~bgGL3w;VM>1H>5+{QF*YoUcji96Yv99jYeDkZ~brZ4^mOE?PlU zby(o)k+;HSHibew!XJ08#;RDQJg-OepaHbh0<#o6dWgf0U#Rt0KvFhacmNZNCOCI# zcz1sxU+NKUfT;_s8jmpLA0+gi!Wlw2sycdm6sid$X2+CoS4V$hm~wngw150jv`beP z_W43?h?R66K@~!{Eo#AnfSgqW$YbS0HPJ?M_vdnPFU*>Xdq!=D}B4L&6)hlY5t$u>>y^wmd4n(UABk5Uq`s%`7(FSv- ziXCO_koWb9c9%wNv|F!RfPtvl3|)l9Rl}K&^NfQ->LM{hx5|;V(Sf~g{Q5M>+Gx)% zx8PU>n_0;cXBsH-9%MB(sG@A%o*f(-BR{A``=v~{(MC9@y3wk_39)i!8H*fAH#(s7 zPSO;XExQ;vK7;EWOWo*9^NP`Od^~!Wd1Hgz9*>SN@Jwt^oJJ|m@SJw)3x&wuyqfD8 zqfJ*`)*S#hh^g^oYUHVjXaYB7u@35DPn?Gop$lR~2$7ybT}+xU;m0PUP-Pklw<{}H zM~gl<>RHE=o+0NJD+@j3Ll4EeGoiB4HgUnmPri6!?i-J(IdvX6z)VR(Axd?PG82TG z&(I!#O(7AAEisL#+?0qOYJ4E;dq>9(P89H3Zs-W`0v3Dmi@h+npxXIDn9b-p3;P;i zG+fzF8O~gp>K*M~`#IJQxyp1AcUj;y>BY+NXSgFDao(0odjr!CgEEm$mFmrWR({Ys zTAsXbw;36dJoEzlLSqI-S?=USZ!(-m)lkPf+6^upv(ByKg0hQ{T0BUl_B@{CkxxW7 z8Kbo`2o4T%z(#f*EKK>HnOFngVrtk0fKA)Fln~zbdgq=b?_^)kL(2tRzvknBrgwe0 zbB`a7@wtwNx$!2W7Z#~tAfpCOLA_DKmek><0qyl-;|`We3UECMa?kWGYf>PfD&Iya zVLg7ND4`JY)<26uD5~MalJObb6)SQI5uqecw!AuQ$B#4}lr>{7#0Z`tf~-Sr=UE9H zND9S$pcal5E>)&fJYyQjrizZo%j(4a#aP}Lh035ma7HVkdb5teBUmPc)LeqC7acH1 z8eAXJ_{#wqP8e8kD+3Z@whgUB%QRN(fm zHzFD)J_6+$CYp^lpcf(uWaP7LaA1)JwFf+)_C29miCE742;4KU>|ycS9pOX975-?# zT-QuKaL83FPHmo>I2bxaO>=PAf(r{AKwy2~fyA(DPo?z7yG=#$Mh%I}eE?YDHoA>- z4he-)6Xv)F&(#RL0~>pDPsiLM4$`+Y+BEjSIs$-t1I^y2wN4{CsK|kA0G~j#la}D4 zhyZh%nn%t5Mclc-Np;lu{`BeYnKLh@fgubGkJFtY84?gk0!#*yaL5bHi##+jMn%o8 zaln|wBsbU9bdz9Y-MEgCcvwXp6_wqME*f@4#W*S(S;bv6Q8A)BuF;^PqN1Xrx!>Qv zs(X3{$W^cRqmilVI`#Nh)xZAre^r%RqYSKV8_CXJ1eE9Pl}2;7tDYRwjABV)A1j{1 z=D0Nb#U#8)ZBuQ)hzctrR%%%8h-c0X2Cy{(9kHQITTpl`opwsp zn|UmK&MDEH@|<{DBHLVd;SD)-sHgByLvJ|W#p2%ZEX5#NT7&kr(2G;H#X5Sa)MC?m z!wVGS?w2IPA)FQN2WoGAtaLwG`+{c^o7NLPL~nZ(ogHq;u*M~Q9YU~cValaye>~gI z-`&}M^hjjyF0pd%Wcg_NE}@q#@w9oFo+X*RSyd4i?}%G8ocj@P6=HgAiSJmP-R*xr zj$59nR*MFkGRkBhRe2A0KVW2|N@`l19U|)6AHu2{7T!<(p78N(3v%PU4EI6|sdk&j z?2arLH;V#{_Ggq#&LLJZ7C7Rw`Mx;2Ekoyqa(2%rnl*Clp!Zv)Wowxoa<@l0JID_s zhf)s=Ld@>XE8q4^u@pDX%WTUOMXryCGxiSk+FG-Pdw8;(ag+DG);#V(5abGpJ>k(T zc`FfDMv!z4*(%`QQ9KhN`%5xM)X)K6PxW9b?+pONd*oc}%Ll`N6vWn=_+jDI7h{ z9BlH<4~#UwWmNMw33leT+W)~Z?XTwhfVGdN+PA-qBRqS@ zX@qPstl`4_qu{u13>+KAz_E(&M{q5)w;u&Zndl)rbj_V#Xgu&%94B2aKp}EKw+&R0 z+?|og6@H^H!}#+0=^J<(;y;T*>9fP(5TXFCFCs=L?0=F7R3YTm2HGAeSRUNG)8N^M zTk&Dls@(U}-=1(own(UIHrVgIAsdYS-fQFVcvvj@0*_bMX0ah$R*yb)>kzRiD&`V) z_P9v&;s9VdhMv~FH5@LZqP1|gg$v+=9G=`yBrejivLXx_vNE?fS#(2A-jy!j zdjDCAcs`$5?iHVeERKg*L$d9iN4dUb1_hR_DYAQ)^2KJlGCbI@CRu%JX$n-GvFt^o zbYx#v|7w0S(Dz*WtnY>6%lX@rWw*8z*{@@rtil(-c%3-U4`Et9@i}yRGC86X=YWZg z+vO%tqf3je3eMvG5s1;mVd-!=3C?%8XXFzc>Ninwu?^Pa06=GKQKx1`o3aO8fe>CWaqVCkMPH zUxelq)-Wixkv0Vuh(GjfvK5ZoT%h+=2eN#Dg~G=G^OxS3o&tATUc_LaS%z=6^sJbP z8J082#&O(Al-}~v(mO&8PzzO(xh>8+p&AG-W@$_&u{b%-BWSw@N_kC$tBC%NuBc@M zAGmDHU3k(Aved5_TPWOSB-#5MZ9d@o9<5}^%5JS>&K6Wjz|i1MBXGO@LdL_bwtfd~ z{cg$D*6S8a7z%Ac1TXjq$?(%p2hX&k$FZX87IY`Du(q|J zdycc9d1qHNfQ9VxX+?9cB-#5O9IlG6Wu*{24U^$v{7FWZa%XKRr}6i~neBdQwz4!? zY;l^*jV4wT^DeQ+606Ic{k674r{Nq#sSdY9CqPHs5@o%1k1SCJL@Shg7@u*4PWr#B z&{0cN5`dOy69~#bh%5uYh94wfTnf92?ZhCzEKy!?b1Sqt{mG`>)N&K6aT4b(>sKR3 zL5q`FeR}_Mg00BVR%9n>$E?Usw;~|{Cs>ikTaZv4mM#mjtjCJoifk@yRl}@EIB$DB z)vZV%xET4!ugGv@MTT0Dt|q!Sx}v%jSzVA33$h;JvD8(fvaQH*wH3M3ugD!*kz9pV zU6I4@-E3Ul4p!twzQGG-s~a=Svvxzj*mklUwL5D~z!ulG?`^748}fEFL53kRa5dOS z8;7<$p%R_`n{kzQSQg2irgmwt;G44UBrW!4gIa4{qIWg*O1( z7df#crkWY0scWeS|rPf@f+8kGjT60Gnq@yJWs`En-C=XWTGVwkBoka`8yRXm z0@h`3)7Q zf(*ntU_%#Qb8A2B5IMHzpt*!QGF8lYOvKx zh9%T~^g_U*q^c_^xJwIM$tzGg0bglpIllBo6kQZQe`EXt-$WljsC|{My)QmbwJ)sC zvcP5O_0=ql&sHtZts9g@ZcsE1iylz3u* znas2a{Agp!lQ}mhbJ%AS4(+|k$jPQ$i4Tm1Fs^+`MtA^m)$lCb`N6n%r<|wOOFkB=<{jAV18xne9hS zv&i`+L75K$S7f^9LaY?qwK2meP(s~9{D?VZGX z<2(4fD1E3ey6k0F#Ao|Yz44_k_Q0D#hv&Y)M)*AcaZ$Xi_Hm*6Xloq3n<0mklWHMe z_QJ0CQt2uq`+4aLy53SkcbTqU5_Qa7q}4w!(=fWoB8v2m6zNrwr4)Jh5{#A*4@9BS z1HM35wc1}GH)gh~Q`JY4`mUsp1*#6{1t$=%R1p1HPNBy$IXv1qrp6h0to zh1YVRIc{L7#1mFxl~F!EX7J=m%CAC5!zxqCYL8-Nm@?0@Ue*@s4tMr1t4BftKjf^5 z7g#Ba%`?6KoTwAYzFihmEycKSnS>~0Jpo3LD>WN*&g9eV;1-~`VBJw_7zJpP8h|NQ zJ(E_J+UwwKGB^<|YjEaka4wy6SsN-xReIw3;uF-DzUW+>hI0l7$S~4T3>_X0#)~f! zThZnl9KeX{p2iCwC3T(W&PsW*U!l%7CL19_>bB;oN`5xxN;WD&vfLW!q1VPi)Nl+WmEQCK`sPV6PCZI3X4)6y-jcSOYZcHRjbh5f6Er&^5MY5f_QfGQz5_Oj+ zi@Hs&?n~35MOrV@#UY6>>BkiPX!AeX^aI}s`_gKRl(-=(cS)%CX;+NWF-hCUB+a16 zN;NP;WjvIo614bCnN~{ZxgI`$-r1)u*$87)GAZ@pxa;8ui|4_4=D}-e;@GG=)6vO9C5)A85SI!g2VCt z!6@Dz>xmRSd&8R2rSNNE6{icsW4gKV*reU4q(_Yp57Eh7FeGrPszrZ653w9#cUH4a=%Ehmdf|{f5DsA6 zh6%BI$CL09I4DO6(R*=!#NzB;iCshs7_xjcGUJt{qKDjpu@JhOzmOKNNRJDOp@?E* zvIEAxJ-z&bXnMKb{1q@u%2tisiLyC+J05VeLyTxV?m;SNj7Fv61r1WOJ9{xGhlZnG zsjK5eP!ZcphF|50k;Mvk?|`kj#p49cEDF)`{vM)P0KXt+&0UI zHxa>JAwt_mg&m7Rl%|M@W)*0O$D?A?Z*)=X6{3l(un#>_OyZ_Tir2*9BgN;$`A3S& zg~hs^m`s9f>`>{AD6+^FQTSXwo|gXV!szwmb-|0r`nG`XPD|f(Q8cx@2~#5aPV&#r z4iF#m@eRb$x>$Ne=0>y27|^Im4cJ}wnM>3F6h)175N!&*ei(Kxc}uSpsV(r9*ATUO z7sShnTD1$}=Mdd?HrQj3@)!M1;Xocwc0k!{Zw^{?AJNFA4ihc7=z;Xb7e|x(r=1qg z?`3V!4$-rE!^cC}aC<>fRH&7~3afp;!L%f^&vMNTp4}G=ThuJTNYJvXGD+xi3X~{4edKp}8 zD6vRu08l~NG$=GMsO)jjc2W4a@8D*EL9_hbOvip8Sjn`HESr>t_zvP&JZ;)F2bfnC zr^3bA3OACnGTc(x$T?9X;xG@5cS4@$tYqcSHlXKaxJfg-vv^wEGB2|sQ#@TYSL8!M zIG`){Onu#xH0lP+9?>esG&4Z>AyXNPED`N0G64f%_8 zN)n9O+#r*rnYD^=#r7A2wYYJ}5HxKq_wn3m`W7YRtC<>Vd2+Qpa>?fiA*&mD1@4HA zgBUeCv2KzG%&3Nr+YYBg^Bn!6n>uGo04#Efgy zX!0vtYMvW36zA)b<2*7AL35F-A?F57C{+krIm}2ft_ZcC8?+(J5KJgynVK7nFBTPa zV8$RgsaR4l39ULoXE9bVHNEhXsQvjId6*l_;5;V5bjTn<4o?Guh#4j*h;U-S0va1g zMQjdXqQ}l$hh~fO1I%!LJU;!GOQN1~${Gw6D#O4t{t|1ra8+77W-%Afy_C5QWj*V; zob@X`^s|_9>#ISf9vb}C*SOXe+NXqzq1gZ_(yloLVdkYnmqyP=sR%Z*94Bql((0cx>%v9B;7Hn9mlR%OBWULN>(CVA zc25z$!67DeFhMWPuYGJz)=@=$5EE{n)DLRNU#!j;=#X&PX?&-jBbz z)XshJYhs9(jCANa;F}@iU=Bp9kPP>ta1pg82U0s`ab0ES408pU#S72@sDNzh-a4NA zhNl?0eK*554C9{XPG59o)OAybr6t*TV%(+LDcfFHFM}J)UbZzI0C(%1*0}qPsxca% z`hfj=IC=DTKL zFEfDVQ>f-wsqjnFsI@nrR2**k%S{sxNSh{uOMr{$2&OcZ>soh+g7stv?w%eHd6H2% z1Yid^k9JpUYTUdGj%qoDII6J%6#Gb~)V3t^p8}x4+q-d^Fo4?pZz#%V^qo!I%-sN9 z=9kGKc(4c+rO9O}HNTg!b$Z8Ynh2uat>Q2K{u_?)e>84$-GF+p`;`ZbtonY zv1ASbedvx$F}KNbeSxgg#N|IiMCc^{5%S7^q@kWc!F^vMzX>E!5+zlnrp>+rcdj`L;|Q!rPLNQlf6TZRIf* zTW^DIy(PGR8ZEC|cby<2xNf-2T-PtU0?kN@;2iS_7ah)GwH04mb6aa`4jHx9fvs9? z!V!c3w+uHsu;yj9_!T&qLECIA@I4v1jM)loAF~2c;FwF%AL%_Y2b*pFbWu~=w7l1(+|mnBv1 z^~=(qMwWWNehHpvSvF*~EY-y5WjQ06%etJQW$A8-8M7>B)NNt-cFjm%a~*1QrTR5! zy<`n;IPNA!b6SJ)1Y<16Zep!8tR2#p;7CQ!umrWo6bj|)z5xo4!FL@ScD8@kT|HW# zAK-N_I=e}W!AP2DgBc5xF0& z_M_GP;D#N_6x@%Fc)>NM4Ye9N?Ng`wG|hfYb3bDH5v!T*;+bl^3v)Q^&BP?XMzJhJ z6XIwhB6pgng%?D{Q)Sp>_r;Dbt%Ygjz_5J3Zgv`PoKG&hEH1qDhUlcry$8d1$FGcZ zt)M#Et$)Qcacau0w1*0xseNo(>FVqM;P%^}q5T}R8VSwXkNyJfN3`GS+i(2~w2ucC zi^}!C@E2%bPNf~b{f@st`{Il{efyn%f%ZFTf0}Q9+FzjkX|#`O!tg)-3$zc#kw(MX zhw%Jy>%Zq2=?}XzG)n}?2mlHaQ?!jCK;5GVx0l6h;z?~!s7bVJ{56(|oyzSVNa+&9 zk5LF{3xGQ6j&S6QWC#y6u3<}>*GR2D(KA9;ZC!ZD$XNt=e?#~nxh5Ir^_O#Pb>=suNo)hlP6rZhx zJ(=Pq3U_BPvJvje6p`Of3x_hrMZQb$PIa;whOo5ZCDAqIK033D3(d8WEsXIH;&yYk z!mrfsDk3Hgl1ZQYx!s(M@eMdD#{an3%J5^3 zs#{@&e&`AGmFx5Zj7d$dL8gQUJuXqdU!Tg;Yshl zF`Ba6255VI;~VQ6KkQquwjZx=dwZ?zuitpw@mW?KA3Uy-z4h>HtA}Tx3XcZ;kZ;@O zaIgPiAa1J%aiAW=Ljt5WK6~q7+*X6}vwvmdGybp9PpqP$J@xQBR1eSn_3#|5hi6Yc zJP*~wbALTN2YsV9WP9qtdB}cbgZP~EgMV%C{PwS-Q@RYVx7Ne3p$bE~^kvmK+FIY> zhWZ8%)Hk@hzQL{j$2n>Gvg6K?9SaSD6jL7y(zj~xY^jH5eH9+f(UZPyo1ygFus^#E1s z0UGwL+9VCt!!uZeXU)rPjz0GCXlA)~me533oQ^HTZP~&DJ{WKd#e{jsC|K`fZvdMlCOOScC95ZEmmv z2~Q=v_*t`>448$)89X--R}~Lf8m3F+{hO3^c6I~y(A5d5O8zz3u2VeI1xwO5ujPKH zbKS3tTyU`qR=8lf3lbNclYU}t)b;#lw63_E&vU`GF1XGG3rz9R%%}}z&GOQUv0?D{ zG88y(Bh zWU*B642_IAqj;xW;hc2x&C&Al->p>8+*CLXVn&EVnY91rsF=Zv@aCvA>25A~Kuhdv z$U1vM`q`VKs~R7!3^CS~bo?u$j&%Mjqop(MuFCWHM;xcr-`~a+BU@e>oqKYf72&{$ z6#+-^n?@TDs>+{<>G(~#NyiuwD6keI0>O=l!L9Q$FL6eMXUqA~DQr;3ps&fHwBTR8 z{Qxzpd?nG>9BV&Nc8>UrQi+b(4@Rk8c)dKCTQeV^=dp8jn4!2O*>s{nJvj)rkVaSbdCDR5Hz%s|ff=MijCx4jp zqxL|NFe6vTRZ9^mm*^42j2zIE8y*|$TfC;EODQVrLog7m!6QfBPuwrDB-6>TffLhi zav}FNByXz>ViDy2iMRoeTD(M-gE#k7xc3WdiJpluQQ2vqz0arzLeZsRrp1DR6^Br)wNKU4>St zAYG#RhAzv@p0TDX{hL=si@>sm<6>Du%}OsZ&m9ze>M>a7zUI}YW zII85&*{5B1;t^BL?_SSv8%7(H8yzI=>S30#I>;P4NbT(nx4WBkf{SnEx^5Q4Xxp+g zOKXKqR85ad4_WL&{fM`~O7o4G2nv!o7^V@R&_SX-Bvp z>v7WE{Z|}iM)8MU5z!Dq98W_j6*=N4)#vg_q?wu#-62aE;PCugX^t;ln9=|b1!E+s zvlkVlwo~r*VC^?K{~j((NpJmMQFp)ELUTMt`p7Bxtjmg%#aJp_k8#ie-!)Cq?be^( z2atP1XYg^SkD+(wJ&}ti_Q$TV)xJu!+EWUk&4`t!`3Abj8&r`T1iyTWhm@QtX zaB~*chHz81c)h}n+2Z*M2eQSh6moaM)e3W5E^uXf^sZ>$$|d@JFhtovcpyaCK=@>c zvVm|oMA<;NKSbF;xGzN6K*-$#%N4>(B?|Y1#dFfz|95mUW@L!_;$C?tw#HZX%3HBD zzPeX;8nnh&^~#&EH9o&r-i@vC^}X_TM19>W@5k2ox?Xxhcx^8|BYa*jJtcfjFFhx` z25&%xt9lt3!YgnTRJf>@kt4jMH$Caq(Mc;g%7Fu7Yn+(dUu(SFeEwSF6}|L;^ox7t z@Yfn&)JqQu&+VnhgctTQ0)!XzG9rXa(mP%q&1&`BM?QQlnvnOuIx4;N9LHCA?#%OQ zo^$hjoagF1k9VOfaDfY!xZpAuIHph-@{1b#`-|_Sr~gfK3V5R7-4UW2BitSqFH^`7 zRhzbl{IqfC)TV8VpSD3iZJYhHZSvE$(N7x(L2cUZXWCTXh7cVQ;rb925n&}PUScGX z8^kbtld>~xDZWU%bo%YTiJnth4GrDR!-HCrFDAar$6ul|UA#zGd}(^!YoZ0^U)DNA z%=7bk-lK6PZ=~clAO9=jgFgP(#0Px*WyC8!eiQLSTU^CeS8h^As=5W zFt_<1uOL3?<2Mr@@bOm?ulV>a#1Hwd+)8}d$8RIP*T-K)e3u94_VlLLg7epswB9H2 zBw}*dSNA;PPx|=ti9hb+90yEx`8Y=hlkGnKLgHI|oYQg1MjyX|_5jXj z1(_G6Ke*fJIr7QVKS*-dB!#SFA=>ykD#Cy!b_u70;Bcc$s8HR2xgxbYG0haAAxJV?m7S;`*4@ z&X-2;DrwoSj;ZxZv@{KD#^o1N8?sqze7kD9MzuXhwOy;)u2XH#Q*F;zZ8xa47pS%u zsMgg&043BL@mDsfxB$tz!HV+F7r5Zd5yerFQ1t_ao^yaV2BIA1wi2*3d z0+gJMR)b=649M~XZU(}0dr}onKl=3=1yo2iKTOn9rcwBfrQy7f{BoVsC>+A$XqCzG z_^~EKO(x5mG&Cq_s4B}l(aV@W1n)AEHv=}5S(0HhCbF)==>qm=la(rVK;SyEAos7r zjS@jgcMoyMno^Rcwkd3wot20GCdKii+^QP62Z6s_XmDIVO80Uhx`J}0(p0A`r~?i) z8ZsE*==xC*=7b7_YF%|=qVxh16*c6zKu%Eifd;=4IE@AzAO|bn0kUjeMf%fm1xNy& zG8agC-jEDebTVN`-Qk>nv?#z^zM8tRmWt$OV-RW#Dmp=yb#ON%8$;&_86}q6hJ?$Y z3SMym%|$D#HzaB=MQEk=$L`R;m20 zxsuioBsxtEWQF@L-4T>zTV)7L9XpiUDrF@N15*c`urFf<^{tF)rF>td(~s%~utJYfaBVPT)kB=ZIduU*HUP+H{)A!GsD8;bm{fwhnT_i2E4wShZyG(SWtPcZ zHmVhS;nUU#EA7}pwZ!!!W4d-^NN+Jb^&o@u$?pS(bAk;hp5%a_8)1(-prXG{Z|QF~ zJkILBhXEBK^dovtWdly#ZbYq*btAfZ1SpvdD|&!b!wK*}fh%@l=jhQa|DkJtxYOe( zu7oz4?^(C6GPrT{Xfl{9++f=4rZ$)?uww_)60ZRy=s$#&YddRrfc}9+?*PVYJb6!s zkvz%9a@iV6aLMj*NAmwRkUR%K4;ZWEkFKk%8{Xs~m(QFOXzEgxgfdhbJ9~50x&SsG z+XYMPrL^lo_ec+VY{=;%AA9?gM>BvQTL*fC3*G7ftHDUtA47iueI2NvmFrPqU1hzl z#MRpJdt9{-;-%OTvXYuRh z*3brSh88;m;cM!bnM;dx+emclNOW){x~UdbkpUf};OX+JHn_@?m{$ak)B4tia>=d? z$2LtIKCWMc8%sP8}GLgWwca^){2l7hPpw#I)h6&;o=xp z9e!(vNa`3?J>MN90mtiJD}qw}Pkj3N5Utv{e2~e7`7G>XaTeTa5)x!s|GDBUS-55) zCfv3pqeDIJOyuJkhCEs(#`dJ-UU;WbpLBJxFyN%*bz?tmy18#zOYsa>(OGC!c>K(t zsEp4*sUp^uGW!)?gcASERUOE&Kc{L zF?d=2!SWaLPDbcLjNpL_orKAB#9cJH4DFAs9FO+bWkIQGoXRWr=gEH$hRPRX2>R0V3qBC(`sdmxR(SDqN zIOcArwbb)q$;}qh$-^A%fFqX$Z5hk(6J={Cmo{GWK_zEWu#kLP3li0QwEq{Au zu(Iu5w;yVJB9kP#B@Rg=t{3Ro1{uP2It)Ezri^?u zS|m6jB=sUe6`iQXi8s;m(c(>YWU>%64a^YSsUMmlc--31G&oT)ea&0A6ik3ZyiAUA zAdV7bA`@gHFUYu^OlpEZX8it<;e#hcAhhB8yUIhAfp$N9Wv!69@f)feKNDnzwm?ob z4C(@1_kzryG=4*7_oosk$3)8yR#w*wGPMCjkkJ5E>~UqotwEeMY6Iv+?I>}n2r?j_ z@rejBwdo(UQB8lhF)D&_f7;O9U*UhoL)p;XSJ_k<;vJs~wOMECMh;=6*0jkg?&)V5 z9;}or0?`XAf6~wmNCXrDJ7FbSK3Z6*joe)h^XyG&8#t|-MdQY-$^~zYx|)P}w+Qjl z=e+g*VTkV45J5aWcHN5}LcTN_A_KZ^h*pn`kfaayh&2Nw7`Yp{Du4V*12o5vj}t#c zH0s5V+W4$+<6}=`+xW0946n)_g`~q_s+4*Sk*fGnn_4(sh=(BN>nQmn(#94!`Qwkr zwg`z-XNR-t#7)sDY^g)`GPl790v?O|me^YZv3q1}rC!XYZ`g!!c&sG!2N60*tSIgf z3*Jv^ogCpe2fqpM$VqKvBuCh@;9RuA5CLDzpgKWf)Ob*Yed1{L7`fJnpg-R$Mh1>k zBXaB(X&ymbSgGd%dSqpS<G$C|#L;^BoA3tr&ZfjXYXw4k63kFN_Uki&+g z4I2vnFu|y9H^xqP^V_56;9I=w?a}hqf31lw|N3M)VRLjjW+J?MdCpx1yoKp2Hb*lr zyWYI}TpCXoVVNzRZ$5q_NgK1JtIX4HBxxX9x>`w3jwEp>|CQ<2H%H6M=Kd!Zy*nPyMeVGf5Jx;g3BRbtPurRGiDl6qs5#H*Q^X^5B9>=5V zL5&!kp3J`{{BgH+oj1d0u8U{C~5a zqCi~O;Ka*ZzZ3-b@Y$ZE@Tt(DP|s;_3+w(-S3r?X-cb9qEyOrax(~Krua#7*tMHnJ z)imZc4OeW4+>(BGn5Cjw)$hrcC4_C|mI|@WD=7Wxb$U(XJxT%Q-LOi77M~sJA_%Tj zO?bP4zsuIxTMo_1wrs6^drHGHjCo4K0kG8rFgOCh_A(tD0ic(PIi$SBTI|8zZf_Kb#QIBx4l=#mEikX@5RkGN4xT`$)LzjJi!GELNve1Xr0ppMNV$*%7Q zK!4wQqD3yLzoO87?^3J?lK>t^5p!&46h*q-bY6dnW& zZl!D$hylIiVc!9Q$ZlJ!9>ReK5$Hko&vS{dRYm6x}OHkOJMK?K0!PK{xSdQ36#RAQXOEPw1rZOG*KnDq9Am zL059Sa?*^3LqcG+Yuh&I5+;y~X1GtA(zsQ4KsQwjZ}x=;l(1o>@X$Zp4-?+3`?(E9 z>Fuh85g_=YRgLUwO&`gqdb~1x^&6_yV;{E+6(t-(4edvE@7vJllXL{x$ic>OAzv7I z%GG|Dh&pya3Bx0W%foNy4lB|mS!n?2Sq(V+b6ja0bgVRz4jG1P)uZci8Bp+821F<3 zeWdzBn|E66m~%XAoILWd?N(kCl)S6pOC!B7lOv@o@5BH^5{IWeZ1_U?()a?orf~+c zrngd9PySRhApW=vJALijlz;)GI&K5++Mj{`HYZzazzx<)BYn8iTYTwFN*EX^JveyK zVB17tE=f09>F|vkYXlPFH)4YkSxdK$+6U&E53_aC6&Jc20wR65<~9=1JZ(_I5%l9# z@-leXnyb(pm!#9&UDej^a*f@hwq8?f>NQGT6y8oX2S%#d{%){@B+M4N9lg2dG7dGj z>vnY4&S<>?FY!u!%*`X`c<|Ob6~p>gZikAJby*$7Z*)v7_oTO_bKVzq&1>%wPZvjA zpxa24^WH6zeR9jh=BZFI%NFYNT<#4PaygAD+mV!oaC?P2y>geT_9NAIT4tQ^l$WI}r5<@@ znK0dMt9T~kVvFa(HZAKfO#}{ZKV&B>Ap_|0V$IgWG?{5-pzOzkyBJU@BJHwOmd_L(hwKqvJhd2FGfMT%0wM7C=ZWFV;~V5iATk?Rr= z5-XLv5Lce&e~tLRxKNkX+lL%zi&v;>;DVIfO*Y9DzL6=NVV#Oy@WQU60aupc{Qqow z`c*94NlregPSr19-HSY>Nir%hN!r5& zEtjrLu*ZuSEc?~0w*aCN8f6`?#ks~m<%5E^sHKQZe3Lvj zF+QuTHx(xW*o6L%^oH^p=S~1F054t@@}1jPON$jCfxSrKoYK|t`7eAG-1AlX*`q&& z(iv~TO>6O6(AivJazcf3SG2s1qv){tM+hD@h@ar+c}U2~OHA%f~ZJ zYrR}30h5CAv_*o&=5fIbA@3YsS}U7@4lkvX|CyKHwRL|k?`0i*zv;HB2&3y7Bidp` z>W0QZaPe;n>yUfcN>gchsyBe3dz&iiz<%7RnD>G5pTUHw+C2HoI+)7E1u}k26-!%& z3$O@u!a}$N3)$eOCQl*LTbl3N4KV=1i#znf=gJHaaQ`vhoXBk)6-XfFiHfB zYM{#L$9%J4@W+jr&^q=5uosOWfJFW?Z9u?eYzcfi7L=C5--fRzJ>o zAxuL&EB(^HM6=RM-`LQe-txJI#;NV`tcyVpUG`U;B{K{dR}57!ec6Yi+2gG|OzG21 zeOXnc@BUD9Zl*nb^S0=u%!Kq;Wa_X?IM_2PP!elsO0A*Ev@u0(kfEPTA4j$E=?_P< zr?uv5kTM)rNrt($Yg#^pSkx zZ$yqy&j$b23kGpfeYGnsACBgBSeT_c`oqz@9$yt;GPb&(eWbp^ zhcojs2-u@)1=!Qdn%ClV_z~9Xn|BR-CZvJz_B)gITa(tc>>c1JL#~%qSYEn9j+elh zQHjztNxcmxE}m=6TAx{b8RUMv#BJqAiAm(h&oLIrP|cxw8_hoc!> z`k>9QSYS@{64q2+Wh3{z4A((%Vc%N2M2rkPeka;cC^jpYBl~X-O^xwE?Uc<@wpqJ0 z_SvQwf6jOkvFc1~`q(~g5@oG5Of*W6p0*v@JXN#_rpN{X(kg%jxH|Am@VNpLIo7i}yuWqLCex1TcSw0;eb$U{9!(4!dKgSA4zqVTM^k?jw{2NMGi z)1_hKj_XwBJJOl|#)BqM?^}6w5Mtge{w!0Rt~JcRHk_mt1v4ix86j8cj!$%(FNxFT zK#eCEmtwlaOp>)5R;RP3^}Sjd{@qk$>pbKVKDB`F!G&!hzQ)=F$Cq7|4OTjo1Bf6% z^5P5=$Drs#zAre5ppC@@c4;)Aa2=#T!*1;h<`bh2chZf%;B5O5>PLxkJkQCRju`(u z2UA&x-6{r!SG-3k7?<0U>>9a;X9D;hzLH57vM<%0digf>9u%S1T;-MF5?tEiM&}EQ zQ`D(A30Jh~k~9lKJg$GlmGOE-vrR#qG~Alxbd7u4@(kR92CWT;4|^~?PzA-L+})oH z?(qb#sE6f~kM%lY2%xIZR&-lDMb#w2Nik^LW=o7v?JO&Wk_y|CryDORmf}gelT70@ zsh`7`jk>Ie;Y!v|>1QQ0CWpB^N$(>+$t6;ggz1=*pe2kH%nAW_J3&U`wlzt3ho-^^ zdLvgOgYO|SN=*E0UeDyHo%_+t!x8)}=qE5=98cj5Q>Ab)z;e&$2OR%UaGSnM{F#1H z7YmRd7nS4EZN-w1lD;s4xA(Jfg^i7I$)=PwtWhb&>ghB@6@pGkNz;W^o^{2{LMqyM z%0%Dha5G&;;b%FBUtIWUjz4eVl5qju(T3x{p_Hq6l4|Cm0pxS5nyZwl+SieANa%A3uXrNJgIc}%jW}HaBT6=&C7#joduCG54#D{A zIrcEw`WquR##TaZjAH4}d?Q-=bB*c=`2ToVx3F+12lzPcvG%b3)G%_w?3wzqRF}RcU=fP^q-~`hsHr;hG-a2CuN5N@H?L)`D9MI|gehr_U)rAR z7gHKffJ>P42nW0-u_;uJHeQ^2En{t8Rx;_26qnc{GuiaFjnMRXlALYw@uW2>@MN&^ z#X4WTB);qcW`<@t#Zjpo%2e{5#mYJ9< zMBVAQPekXJ>2o(7Am}MYVqGW5(TY)mjO8Ga-C9-lJuWq`VIvB8eMrd4dgp&R@j+AL z>h`W7kcF9?S$j=~(PIQJ;WltRsP}Z^6(FS^VyYHS_kJR3EH9N#snqVaQxy@umz;`X zD!*A^lGAPH4Xg0EtLn_xjO(^xf%L%6R6QxD{W+$#n81h|ow0n}eJ)vKYRq1O_QNu> zgO}a*%ZVJW9Yr1C-_&GGwn(*7@UM;N@QA+z9|*;atmN+FY)eZ4xvp@v-2+aUn6B?> z)atRZ?YyWh0CViWnCsR#%Azq0$K`TRS8Fo;%1)jd=tOWSJejwpm`i3}%3LUkm7Tq) zP0VAKlF*_oD<>DLT6h-=a;PRsXBE$sfDq?Q+=oV+#sWd}%opeZn>;4dGa&`!aswB4 zO4g+&d*3J*uh6r1n)!T;TbZN{cj{J@L5wf7BajQ_-AEXZkOnii)cQ8PGIcqGw|ea}D}KriU_0Oyi-bIDaP@P#T~Z&63!X95U76%(($7>s)-Yc(^74cG4Mthrm`91dyY}*^eCoKr(FVEh$;RE76PL9LApqV0>#55SI*c*9G@BEiTX0ZJ%OCXU+~c%91cmFMVu>qC`aDu?tG!B~EE# z&}0k;Yf97EV5ZA|wsT45I>qd1omEJc0Cv6mgeT<+_X%x_6bF2IHVHgwb)CqQ#a3WS zJWJ8p*=38_ye-zFHZ3-PF}@xaTLsgfjfsotKRMu1Tsf{*8qMvp&D<{Q?{~=})j+;c zMR}J-Sf&bA;SE_u%w-VE6)XqsSF(a>8dEY|FWB8dGOy+N^JL1R^JJve+%DS$#8%SG z?XvBJZkL>GdInDtl?SBqabWTw6&y%WJxCRS0!RaOARWn&21pxJB^EsXVlOEi&lA)+ zr%tI;*p>Y-nJ34T!lCLF6>bF0TLiy9HZu9_73&Jt4R2gLZaF!A9y!iMIy~4#34az& zZ??6K@wRL`p0_3V&;91=c99*_b>9w`4XgWY+;a|s9wM%M7+&F-&40?vIUI$A)kGh{BQF~E_K;J>Br~e5-$(_zI?kj6j)c$F#6vU?uy~s$xw;` zH@8-d774Kf7jZqbBwo)_N%9ZHY)V}&AGeA4uZQjH?C|jII$I*(6TF>xm+eaedZafq zv$w*cf3?vuTC#T79Y_5%ShziIx-BhC2|IX{Tx=MdQGv^o7-)uKqPy!o-y(6dzcj<~ zCK60LE(T2+NrX{AayApn$W`yEh*=w5QOl^sYAd-J-1e)FLzX;_gGU?}LAx~yw$?n4 z&`r^hcc8-nb&iM??Br3|HQ5AW_n-(z6U~$gULS1$KrC3g(g==5Y7PquBo0+7kgN_8 zI7w|c8bN}~>nkimn3SPmn@d*UdQ{*tg6T>l!$4Eg$8CymB0%^PsIrht8;?+p3WYxMjfkE~DLLdyRPY;Vs}c^q~W&=*C$x z#)*SRrU;$^*tfC?8w82@fAf%UBMiHvvF);NqV2Q{?D zxsco4y52y;2!F~ip;sCc)HOkIGHD%p-JnB@6%`$;)Ze0>^d)_|U#UarH-hCIJz;v! zx%o-uF8cz8PeO7r$l=?bK!Z~R!^J%E9Eem(SjuTp7%mec`pU5w?kWQ2(G?vB!{sd} z6mZ9g8|ATnLSz}``B@pV%^Ey+e&TI7JMXAFnOVaV6v9$f41L$1cWp}sE8b0nfY+v7hz8D4b+!?w8tuUZ-8-G$!Aj%Vt;Yg@97bh`0J*mAxq<4| zwi1 zQj;M!%STTNuz_Kfi<=C&n<+ZXR$-Ti3At4UbJ-~59xvpkiLuB%HJK{p9zTNId2Jix z)5^K|$>oXm0o>+E9<@U8s4#q7+@`^2z-?C%Adjx-1i06vO2^b;MOiE zx<~9=Mi{ABE6+Mj`aFXF}-eU5--QR0;J34xyJigzl>$^hsk7 zIz9QZsP|7J##{bGyhT^~$Kvge{#PCesKkW{uz6Huyth@%-a5u*PJ zj{oL>+XPK0F!ru`U(E>A2F?*ysNg%~!vj7X_91>v_8osF3#C+0{vq>rx9AQJ`7`&d z%)J3VW3`TIoz*s~ZB}8Z!o;Ed*VT@U5R;Y+>CQ$%3w!{Jb{m7yuQAcURFCSnB=^%SJonXT#Hd@Y*EueTGlbQj)`LvG|D%3S*I zU*iZidTH$NvVL$dOM)n7FoZ#bzpY_{qo4cilm@wF>~fOl;om}h1lLMKZ`LRh^7AsS zE}=0QcPI9j_FK(H;=S9f6<3XWO7zTgI8-FO%*3Rf#F{q#OOD1L5d6=tFa_!+WJSoj}C z3+tAd=Fmvr0t4>#yrt|3HNB;e> zO$QujdGH(U#3`=asqv}mkZHx4Q`UEIaXeGb_58)ss@I`@o0q~lz_xAG6gK9F&XgZ{ zDJ1a(QBKtA>oW1FgWvK#%IsZ;oYFq;FirlP!ecoUEo4dCpNM9@7{C+5X(-To= zc<7gDW>g1EAGQqgFVOyGlWYc#^n%c4> z%H%Zud$Ap4XoJgV$IIWt%9&u0!r&kj= zkd}N`DRZhRdC^M}=2jC>cEtRCR`qvdKdwh4%&R8gO7jyX%&#UOL8`=p>hI?Me+&$JkS(dEbogdLayP=0`jhV{$2rx6lYFJ;Rud-oCqGt>^Ozg02hB@ofAVvs zF<&kL|0Emcq?$0*fwG+byBuBp$q!ZJ{A!MAzQ_gDgz5dsua)D%YQl{EHRWVKnU_=(aI>)-msS&SN$sPK%c{Rm zajjlX_n~H25cFV!&azPOe8eJ+^L=ivkd%QTg`%uHX|TfNR5V!JSc9ibtuWRAEh95R z$pI*nJZ3a9lYEb`iQhjXY$p6AVGH382wMq%PS{4MeB%fY6Sfl;G5GnP30`9sa{4|KTJ;%1tKtDW5z2=PCa4RKg#V-bJY9rxB{T={}s{(`OPMB0VPj31N}2 z)EATp_;s?zDCw39UO)6Jus)lz*$7^lk znH#)B`(`HjEY)k9z>`cr>2gAFT3@i7V4mT4a!OwSW+$f_KC{LQkCVlH?5UY#jv=k3 zf~zVCf+lnO0?;z)<0sgtyda@I3ioJ4xJT`)T;i1kXZHnH5zyAv1m6kL(ocBxdF4+y zYXAD*W#NL;HeR?(-=GNBDUvp)d%vRw*d1Ap(Tf zl20ep#6wjrgqT`7L^Sy=>GN3j$&ZLYGYz4kl`MZFk*W{EXstpH4bP#17DD{29%!EZ zhSVkJ%6reCfUXIzmKa`@`eSDt5L)F7tz_3N1<4fYjn@b-<^(V1cX$~NHw3pQhd3q% zub9W#MqFh^V2`=w)xF-@P)S+-vLcEHSU0=>7dp#n`l%v&)j{+`uujAM$hez4M zzjP=%D}JDXa{&-YaSeqB8gN92v-2`C!BwO>-IC7wX|!w7(pdZQPR#~4!+o*=UyQF<9Ubxvc)=8D;dmIIkgR$C&LlmM1w>r>gnx6-DcN3$2g;3V4)8E$9jQ5Q5uU<0o3 zJaBm4Dn3Z1tVhYN^kqMf=8RL?urHcyP2c_V=+w+z>3{s3r@7U@ry5$`(Hpj~;nT3} z_&N4sa}Hz4D8iq)xF~U+VJHb!lo}YXrF_B3CRV)HaS5_P2v|7JAz*Dhmw?4}EkWEDTu0E;2S=aND!QIvZn-abJ|Q@G0|D6d0s=WYilSp9 zk`rPcKMu9G3R;eHov^Agu@^xh<+`g!#gbzeSk7?2mki$}$JvCUy?ultvP%fN`^o{s zW^3jgLM@SV2}RS-BNWY7|5QHlzn2sKj^F1K0`>(2zv1VFgj%>45vth5glcXDp{iX; zs1^KdLTxFR5E7IxRX;gormk{V#>ndN{p`@{0Vy{_DW@?apb^&_k6tMqnk(wSzJwIG zH2J_xesYZajjWHHkWr`sYBCheX;#P(2gPyV$ow)Fl641AQ^vOyYFhZJi9?1oPP|Gw z`b%wvcghY0-e9er8_X=RGz@D3Fs0jl=|G>MpRs<<&Vo2HPjkmv?9K&cX>I^F^G0wI z%jj%G%61O-;2j+k#>^}Gc!o^daMoj?0TX_d9W3H+1($(kf$V2TSY4(lAOubNf^CgN zL^waJ$U3%$k0^4Gl!q136l_;S`{lnXqK)z26gj;w_-Lajk@D=Q=J}W++H60rh=}SZ z6j2l0eHmc<=?gwt{q%?;)blBYn&lxyDnRjRMTBObsYbZo)z!C45n<536Dh0sqe@Z5 zpHoDT?pEY=)bk&T2nx=%2e4Ot!50*v&>n^S{$e8-#HckQpZL`hBrR*i_GGnGvdMHq zA*#X2Ebp=wUd=#5(6VJ_BP+8?7B6HFFv}{(Q?Q}1yMdgX{DQ=gDuVF^+!Dym(Wb)p z^alYZqq%?qP#_`=F+KvG!oS49?Cc>_r3C>wYTj(mSnbMOr+ulxF*IhPKU3#M5R0aY zv@`vM5=w(0`S98Dn-0JPTzu5;$$nPn`$>hW*qolHIpzBqen#1|Z9@C}d}@$wKFMIy zStf@~=Q(|W&E^t6o78NR2`#g^B;BS`HP}=x?F(!snF>v0((C7u(58_BHj9uyn?x0~ zNj%ffA+YW-{DW)wqG|w?|5OMl|D{kR_9_A_Us6a@UsgyBk0}I%#}(4lR}|9JR}~6h zzNUz3*r&*ZzToQ$Y2pcmH1Q3EOQ65|6`_f5Dx|yLvJZX1e=AfC!-~+>w-o}z|0txJ z-|^v-3W4Ff3W4E!3RUnaMQHMXLTdhg^}`Po0frx1{}=QH2bDn4ANlad3Tf&m3ZK;% z98$=h@l%B~^)rP`>dzHEO;d*zA^e5H?Twsj(W=mjV2hkkp#O%R?3+ezzDy4cJyE+DdXm$ylahv=tQDg*9UeQU3p?2b zv#$4sp));#sxre+nlTKe6{9qhJ%$3_?y|;O01s6H5m0)t^FV`Lagx?w1xVJIyW zB@96c4MG1v{5spw-FobzcpY}3d*TAy1`%8^DPM|&t++Wak2ib(!hKm1#F2Sl1<9jT z+-ml?1#@NF*({G+Cwtt2653w2&{ICr4YkD57;3?@7-~U8K&>*{fX6LD!!1e}r4~AI4V2Cx_BNio%^bs0f(UjrUB9B)PU&AX}DjQ-UOc`Q5MUDSe zhtGyvf8c0OJ9e}wK6QuE+cui`%{&dLW@OP@2=K&OOTd}3o3tfv z$Z)L9I2fu`rZRjlXO$L*t0_Ay|A$b%4+t$_g(EAyo~np1FtYL`A~yHmAY$9zH;LH3 z_f;Y`{a+wrq(z?$0XqHsKS6>az!!;p($@dCh#7fN#Be~R3<*9@#P&am8xp8-!veKn zXuuc40zqSF@HHZ~1*)(if+B_qYSU0*HxbboDP27_s7=ELkrzXUDW1&mTbRHI!Q~YG z$5Cs>Z-hz{ufX7LYG!aZa5Y3lQ$c39A9R@+aTSnA?k^!(GY8S18@xVKYAz3Hx?8*S zv7(u7?JE4es*btaLrmtt8{nT05YyZrK+D}jqBtp?*$kwa{yIFBPGRm-CRir~*8M*J zKJv%p8peqp&?G@UDh^Dr?j_Ii4P}7cp^C(6jQ|TYPv$VK5Dx2Hka8d_Bjo}dKh%?I zA6iCtfj6?O3%UxX!SzKZgKXg)lvBwkGbO}rhyL8bF`V&-VXcSzfTuIW&`g796)S&B zi#hFX>fvtTY_oYvS>|127K68k`mq@G7e1lRL5RPYp$bNLPew&&%LNa#mxl=pPoDKb z-1@<|<%6gr?^|EOpfkwmNDSEOLsnKyvhkEUG@93*4I>&9zD?Bghe7fmtTtR*f`t7A zhp0g6oqtdW6?~gQSctbPghFwE-&l-yD3ql3PDRRaA@5S;l)hlF`sLkw)@hZR!8M|}Fj3RS~)Md;PPDqPC)R|sMLs1NaZvx+{Z5Rg8uPzt6`C_>1Q z=zthgQ5a?+l^Jn;+1f0A2b9ue7XI6Wz##cA3fTBco_bLEMDyROi0Vugk&t6!FR9lC zU!QFBq3<^O5}$4OrOFyJ{_2!XfJzOj!e0=v8KAh$fGV~r5EM2CQi9qfsBxQxCyCfJ zNSL#EP+K+;s?TOZE!b30vCRZRT{*D1(5DYo8@I_&TQ(a4(56EvHXj-Tn-Dc>6QV|K zMwG{<LMO5*x z6_IHEo9d_E5-F>mqe_up;CG7LL!RF&B6ZEv)kq~IMHQ}7ME$x)5lY{y@Lme7uV#5& zHOqa9sLj_aA^r{XeyRD_N7w6ir@sVF+laR z68xi>H+1Vne)u1W{2rga$h2>>?N}0(nS{iaXlvmoM#1=1jz94!SOxc*)l003PpcXR z#kBY&bhu`+68qwl^4{boM#d*KcuSX98lQxL&I3YJ5ILHw0Z!ggqeQE^&63G1QC zeO_#yPr`m^1;u^&BsTg3YEVqMPpTRa#gO?VZ$cDj=2NgCnt4~UpijbzXrtx$HS08X z#KSiKk`R41Oo=vJ5*B?D)PJ=5sL$2oO|TM7ebVgyq)6@GtP@^L zO!dMG+k9;eYq4lxNT3A2ygK4EznGx}R#Z%87G>D0{|sujmmf#XX7+v&i)Q%`WeVTH z`c@dwnRb-3+%+c6p6O7P&aI2 zfY|V!Dxm+LfY@AX;KV>|tL6Fs1jNBw11AQe^4@123G>>io4$=>@{h)tvQP#l$UM-T z$xnBpun=}UmDN9w{Br{4P{vAZp2@=GQ#0d6v${0O1&dYH2E&C@8Cn893|W zl`?Nir%rD=w{>uX7aXxirZ-M+I`wLKEMcA$-#I~~g-a7=(=hoQ z(%lRz8E}4g7F(r)rPUTGL>iLz+sp)rq4!(Uo2ITnFvTp!Au08;D4i|T16`g4O5|9V zrSWi;{0&jxii-vsT~LytN=~NZ3Y9LK(KJbejhSm#9)2jC6Z{vpXgAypkst0%@`=TM zj4gT}jtCQy$X=((B)d+peIu%G6S*EmbCXH7pH=%tbo94-`s^DQU}X~G?jsl2Si$cs zs1+nS`rEeowQodg-_)(d5|~BnznZ@lhsd;C?cusQ;HxW4=EID{%J)d1bs#k`5b&! zk>3&7RZaPKMO6AxJOixw=aizRb}J&b`#%(sDEIm5r!Od?n)fJzuJMZsY5PAF?&HIM zDWWFPwS;C9{E{M)2EMF_;CoCF@&1o10;2+Rp_r_BUsZ$(zot+_fr`fg@pb>@35DY8 zzoCePHB>*Lxomt>5w-9wMFhovD?)X{)i2+!e)%6oB(Q!5Z`;u1gD0!szFYnFJw+(~ zltQ(MR?1cU{c4sUC?c`thl;3I=&&3VKdMH4T>bPDMKq$^P(#m&aC^?P@sdK)%9%|e z)H?Zj4k;u|cA&xk*P{@9mMsE@bZEM03AAMW+$RE* zG+*Q~WjD18@6%(#r zuX89(){UaxbgS@K+I(_TSM!%?J=v8xgWxW<}RCCUAA%4C$mSogz=6Zqv#Z4ySKBxoLIVh67nSH$~8>q>?svH_bY8 zDV*RqqjSktw{hWm!JT73BQKK*1QhNhTXi$ZCOhAozKDYOnbaljO&{oP>YjTSQr?D) zVCw;7sNZ8I&ok%pV9RkTKWJ08x$Uy>Q2L$jrc=AVEZ68{Z(iG&iGg~#gLpIJFl!da z$twp?3pAb!C3arhEm+E0pj|L-xx%;ba=$2j-6>7oc$T-EoPOz)rjEA855^G+!28zY z9NV4#=P6B7o;xLInF9S|MzSA_bM7OSW-?62*Cms=Ti-s&M=OT@bbMD(%F9~Pjnm2p zT269Vg7MS1D!?a)ANc6YW;M;stY`(8!awKGh(PW0LGs;`Te^%XW%8Mb+nFY78DEPJ z=2}{MPxLK)@##&|=d^MwqU)XUa4myj=Kqv-Cg4#N+uQG+$poq=$jBy!EkFp!zRE5c zS=|t?xG%`6K?o26f}#^33MflJq)>wdMMZWI9YB^Ks6hdvqDI+r1r-$$H7Y3L|97f; zFh=k7`R>y9#^D1mB2b?NQ8ZT*$;q)(hi=7;_QGdVB(bm7hxae44>NNXZyrV{c$VRRySRfNprFY(2YrLvAWz&Vs^biV)r!r(Q?!+J%94#r9?}*!Q23wO#$noG?!EPXN6s5J)PG^We3l- zJ}b*xv{lvZH*}x2+dq(GJ#j41!c5r(1J4BwP-;Z?TctZ8ST2g z{z#aAWz;Vb7?jbjM+?emUq%bcXkS4K%4nl#!Jo9eo!o#L{7G$vH=+e)w42a^GTK+s zf->68Xh9k67PKIyjd(4(6*Y*dJ?%EMpo}&jEhwYijuw>BzJ?Z*(e6MC&_+sktDUGp znZU231!c5vpao^LZ=wZdv;}BE8SO5#yCQ#4zl9o<3H&x%P)55OEhwYigBFz0?nMjA zXd~~S24&QRXh9k6yJ$ff?R#iJ8SVRMx!N%f$nsH6VQyQ3tr5)tE<>Za90a%$F(N$P zRyF$55V5p@)2yUer=G?<89Y%GP6Y z4d+7ot$FZgsFMd;TQ1>DdT{Be>waCr1h5ud(AV|Y+A_SKFybLMLOgilAzzB@K4-Y-TpV=aY}fE75(ytK5%;Uke&o=a)Nxk%{3#ZQo{NMoyxC3ZLy3it7YiSWbS5iSrs?M*p$o66ASrzy zaq#fs;KBVy_|%M)x|Uo7!wGkXhOrvDI5Hze?w^A<;h7~3MLU&brEoE+$S0FCVokSC z%prQ_ieZI2{Gsc^$6*HyBf9aG=wSlLtvHS(TU0vPjwGA!rFtV{%*j}?$79J7-0Ly# zOR|VwvP287&bLB0gm=S=yFrNUrb=uvE2-j0s%uN9DuvCN=9cwk!W{Ebjf9WJk|n&C z?0b?dqL(c3!Ufx;w7IZjhAo55%op8y*iystVVe!x4cl#45vz@*&?RL3Ts_Eu;wYrI4eLGeS;6&L%_7Kz{24nf_2p`02W#8zSNPu#fAY%7d81 zRzm(=AI%2HX357+$Q;R8A>@mCkOLB?D&!a>dLE<%@`ISB65Pt85~Oy_iIDA{2-&47 zPrBsV$W*uX-esL>QLOg%#cHo8J63yz=1ic1+`(||R65gU=^2}0Ia`Dkz*ZWz54PK| zVhLy1aoEDG67Cdiy_xllwr$Y(@k$*4_jzhK5Us`yI~s)Bj0X; z$#sw=A1ls=(4)vZlD@-9dQ^DKGb!j5xbv1tz@LUEYxbBYFiUUU-4@gqe^< zLKZ@PO@J(gOcl*q$oHbz3|T6g0>~^O`ydCUNsA%RNl!Qq`MI(5zf-VP9Z+SH+G%OZ z9LTyxkX*=v)gWZmEh0IUGDs0|xcD)aE;Yk+&=J0&38Sy8&MBq-rm?8ynT^LEma2@1 z33_7}RkQx#c%BLszM*1aRbgC?>zS*j&G)fZ=$Jm$MP1!+{aHTEsS(=Ym&bPo>3RWb zZ{=qVpnTBj^6<$+I=!o!QYofql2O8l-gk*gv5)DCE>X?wSE4suqDI*E^61WPDrBDv zUjC2ZpQkdz`lY@!tftssMqdxByKQ@)Zq;2q^mn0mbyxlDS9D?zH5})`9_szLuPKhc zwWs>bzu_mJUeQanGURYCRZY+Cr4oJlQ}ps)sda0UmCnUnzUMk18;U}HbTeT7Q z_1>zPKYt289?{zkdQl(ToVoh8J}On*#eGySalh!JI*42MGIde8Q@=L|1AWb9s(M_B z*d2M9T4t|)wA&!ThRHsn{PW3#2`zKLuP+(vOVPzwsZODljfqT?7R8wrcyH^*eN|2SZQZ-CJa$L3 z`clWS6gu9ZYDUlNrxNUHzwm4)-z>;?g8WNj4mmF5rWZ6x@$dXl$LQ_XkmvX;-r9xV zj*`Pww*9-woZj1CB?n~&M{-5h^l$yuoz2Q-hb0=tJbH$Ucr`8^l+{@Ef}y*ac9$a0 zz0S-Hkjcd8(d*RJ=Tai4OnLmSZ@p1%A^~@ovp>8%n)B0Q%G;(T;bhakl-kUNcaQvER~l z2dQ@P{6d;VzHS|)p0Rf?7)&CM{5g?nQhXA5WUxsjI+y}%)>jWvUED-Y@YdkIq3Zgi z<>ff5P1)OGVpID%x5%ntd=je7M?a+v&Q+ z2zA<5I7c@gscJTGt+CS@3FOG6f_(AAPX*+-8IpvvawOqIr%Ej6j+^tfBUMVu1}~uG ze67dDz_L;X@{EC6_CcMPuHMHvkxuuStILg2ua-}zwfOy=%k`d#sopX<>P7OBNQ7RJ`Q9hn{*! z*O{QIl3vSn#c!SRG2zJxs(O{j%E`|Tl*)J~tCaHFzl6stpGg#ItyJGu7xjJlP2IRQ*y!wRUEFbuQkw5tUB7 z+q2Y0iRTVubtbEY#9KSZ#5*yEco$Dm72^)sycj$vL2jXrm|}3j2SdTuGHA9 z3f_b_=PVPbdgCmWT)N`Em}M&N`q^bFuBL7?hf7|r)ZQAmirU0VmoK$5!mXCpC{2yz zYii^Q{qtO|5TEPBdFs!>uZ--Bb5F#Uu}vK6$Oox*Sk`{a$K~>JOFk|aS3c*K6?5`& zxybTyIiDuUx8?FCNxm%?Z~3-dzUfKAl^1ArapfgcJzRMSCm%4&8?0p9j>MM_m?eG+ zu7qodE9>6m3ubwhCZ8}%Jo$uKR!ufBdVTT{l@ehVmE6h9E1BaPKxBx>WYU!(B9mEH zhKNkAT^S-Wxp!rV$dtmBAtF;6SB8jOSLBE!2onXxa|1v`rkJh_5t-t;GDKvG?aC05 zDZVR1M5Y>C86q;(;mQz^sg_2qO^IQmpnlu{5Rs`TSB8k()W~|uEY;||BZs)TW&HtF z$$|rYc%G_v?u2OZr_QsCOL(h?)DTXC$b3$Ny?Vub-Wzn(N9L<>@rASf;jd;#Z+}ef zm#b4J&G5KLPtmGSMneEx%B0vMX*fTbMH+BKsMI()GKKt9#fJ;Ib!F ze~0kwc`gf2_47}tUc{;MROvX!y*S4f6KAn*u}F2RW8%niRzptugML0VC4L&6{_<;M~r)#jcoMVRjSMX5ciq?kGM+ z3-$er)SddPm(@Z2+$XT+Q8ho-qY9$xfX(&n*^Q=0eX~)uKc7aDm1soGGA(WEp4(Md z-_|&N-eanP9{rr^8vT5`y4kL{#p`D?O`jR1uig>sXEpVa9jZf$u~Hc8IQ$&4={TDm zi+d7=LRPMkN{wjc)v9?wx7w*X*;}KjZ>lYSm_Eb3xi2(IC+sraaqSzij*xFU!s$2Y z!v8f+p3dI&=Qw+Iu~qK+XvMeG0=p7tR_GC51)F?uQkbNoZ<{`sygL@Hz$Df6oqvwz z_PB<-RhR0f=q9GrB##)T=&uKLhfS(knboRWv;7ahWxCFZdN7iR_!xgKkxH9~QJ@-;vxlDA&{Ye&8^nl2? z-xF8t^um>F^u}eyK_48X%iKY&ZCDllS=4}YY3r*Am^Hr4u+3c!<{I(hs)OvEhYFQUec;*Qc z&zAWVex_)w{BO$=%?|tk(**rqzT)NbE*{AKq36e$fls=yJ81qtbbd4J{Vy>Y^yF;o z`S<5c3*I{%mB+4nGA}m&Grs^aNfw|ot#;IJ-W-LO9rcHvw1c{6m%8{LOKC>SvU%O| zvHFthaKS5Tn69v2UBKnH!G3iY&+W7KtM%OBcR#?R{U`eE18S_jOLsfS>_AA*IjEA5 z)*e(B;p7*q>vhXRTo8BZk%!a;{%vvfbT~JznqG8>`_hoEd00)Vx~`m=+u|J&tS3dG zb+_qNhZ*FI-8#BQF?ZB|V|-rB?yi{KssC1ynB7;-*@by_cZuCgYS(5Fv1i=3m6o{Z_}NBpmg-Q+DO=4i)HnM^u9Z)_IsoxNqV@-J;hXQ5${sJJAZC ztAE+u%8_lpNeH@b`5^6-`(N5AFV;>A-FAvT^@U3IMRt1&Kq^ZmU{Bt|@SopUk2{wa z=wq_yOE~A_Kl*{8b!|Ug;$t~k*vW#IcT{B9x;!p|+6|n$P~^-ef3Z3R{KPB5OWP^UWER*ktKu9|PP*wt+NF zWlQZbfVt{@rqPIQG`jU~D!KnSk!ZbaZVcs@kchq27yQ=d*TLdsWiE?n%x*g2Q(M^G z#HttX?(2KfmCBhtDZ|HH$=f)kSTFyLkvd<0`y00nWpI~mOPnXtdi1f^`Q}+5%lY4)pe0ECWtIbD<2xenp(P% z$0ewID=B8!uE*7~Y{pHUvy8XTBSHhEg^vH17CL#v8}E*}Efj1gwZ=Aw+(TQ#BOz8A z%6DU-PsQaIpNz|QuEu2+Nd{T|1uIIlBKhzY!VJ4vgA1HIoyE8Wafr9_pDfw1xMU^NdDN9DyNvwLgb7K%I=Hdk3X}*?{UtC zv)=KCcG-!>Jz?{LVY|;R?@e~mem-8VzuCaG8QRHCRH1|ZdS)e*RnO+tI}P!99E_E? zI@Ra=i$VTTpL0v4m7lYwNG7l6_&n1K{7!O>ZnAKROR)?AQ$8ceAO5(i0Rff`K0JUKa#Y=5uwCkL9xt?x=M zI!+C2i05}yB+S|=fhx7<`D6#$rWm0MH8Qpu4aXqg2>C+i43wK%%D`qxR!)dg$$BO$ zWSe9!$~MXN&5p&&$_})>=tLZA_N9+jBPy318ElY``#rU}LY zI9E*z)UCAGmPqoeui_?$_LkRK(*g|}yL$PR*qA=4lDk%&CGtt<%b*sIUwmk>es@}+ z0p@<57MOuEd3xYtoDI_hNjM)*C(DcV+3A7$NtiT02+I$?N_5V4&iKkB*sBXefzaY; zct#+R{6%klBv4=ztHG>5D^|(gFe{Mk+g)DYKPzy#xVvTr2HIVsO=bsjZToDrU`{~$ z?6dlgd4YS*`=9~u%{Uq2!r7rvr|4(%0{sc2JIxO~M9}T?1Dovgy)g1BPDYi`+33s# zfk$n-Aeyu=FyChvh^dSGHwT(cE}vQF(i4v|~l*a(|nF=>tbhymx3uv#~=nGt<)V z9NTPM`q*)4nF9xn7}{)TM#iWNt5?Rrkwe20Zfx4vo*5ZBtCF*zdy9eTLo!CC4QVzo zV`TeggU1aTmD%iW4BR~`{my11)6&ygx5yYZDzin;mMsRg7~Nvfs8M4xhqWBqacH|C z7q{=&X7JD!qoY}sonHQO1BVPBH#YOC==y5T5B|i#B$hF-*{F=Pq3M|eGt)+;$8r>X zCeb-$t0AM)!X`%aftt?ta(Z2|Q$0E?**Q_kx8SSj_3fQrc4T9+W%aTwtKEgJ>xbLG z2jn=ffve{}&V<|H$s$8FSNp+>K+}P>n`2=Ex~Gf>RQ+pxi+$-TL-%$CwcyL zF)MOCPv)9G^Q7M2(W!kUd;A3zMKJLia^XV`@p{1I_afXh4xYMEU)$JIH!*6<`Y~Wx z4Jcbj$u5WP+sSFy_4s#I(7u(P^Me(PKY4*=&0}Z5r3e*T5T+$)1zNL`2HoCrB^@m* zhf9On7wUUEI}HOuck1UlJ1q=7tv^8BMH z&AWJkCkU;5{lA8e9XBEqYZ7#6=Rc*}!Ss2~4ZMwiA^!bJWvq07oX;)mB>r+7(|fx( zH6o&_-o@>B$M702Ubx4PT2^`V3q7>-+?dX*r*q-PQ#%q?{QI_QIdtUM!5L|zGl!

uUEZ=9(RYQ9s!Y2kT2@7L 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 JJp#Yu|37Tn;&%W5 delta 191594 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 z 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 H3-kW~_Ql!3 diff --git a/packages/capture-wasm/package.json b/packages/capture-wasm/package.json index d76504b..4cc9c85 100644 --- a/packages/capture-wasm/package.json +++ b/packages/capture-wasm/package.json @@ -1,31 +1,31 @@ { "name": "capture-wasm", - "version": "1.0.1", + "description": "Wasm runtime", "private": true, - "description": "Wasm prebuilts + TS types", + "version": "1.0.7", "scripts": { "build": "tsc", - "lint:types": "tsc --emitDeclarationOnly false --noEmit", + "clean": "rimraf .turbo types", "lint": "concurrently pnpm:lint:types", - "clean": "rimraf .turbo types" + "lint:types": "tsc --emitDeclarationOnly false --noEmit" }, + "main": "./src/index.ts", + "module": "./src/index.ts", + "types": "./types/index.ts", "files": [ "dist", "types" ], - "types": "./types/index.ts", - "main": "./src/index.ts", - "module": "./src/index.ts", "devDependencies": { - "@types/emscripten": "^1.39.6", - "concurrently": "^8.2.0", - "dotenv-cli": "^7.2.1", - "rimraf": "^5.0.1", + "@types/emscripten": "^1.39.9", + "concurrently": "^8.2.2", + "dotenv-cli": "^7.3.0", + "rimraf": "^5.0.5", "tsconfig": "workspace:*", - "tsx": "^3.12.7", - "typescript": "^5.1.6", - "vite": "^4.4.6", - "zod": "^3.21.4", + "tsx": "^3.14.0", + "typescript": "^5.2.2", + "vite": "^4.5.0", + "zod": "^3.22.4", "zx": "^7.2.3" } } diff --git a/packages/capture-wasm/src/Analyzer.ts b/packages/capture-wasm/src/Analyzer.ts index 7c5b5b1..5297dc0 100644 --- a/packages/capture-wasm/src/Analyzer.ts +++ b/packages/capture-wasm/src/Analyzer.ts @@ -9,29 +9,48 @@ * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. */ -import { EmbindObject } from "./EmbindObject"; -import { FrameAnalysisResult } from "./FrameAnalysisResult"; import { AnalyzerResult } from "./AnalyzerResult"; import { AnalyzerSettings } from "./AnalyzerSettings"; +import { EmbindObject } from "./EmbindObject"; +import { FrameAnalysisError, FrameAnalysisResult } from "./FrameAnalysisResult"; export declare class Analyzer extends EmbindObject { /** - * Performs frame analysis and returns `FrameAnalysisResult` + * Analyses a single image and returns either `FrameAnalysisResult` or `FrameAnalysisError`. + * Each captured image is stored as a candidate for the best frame. + */ + analyze(image: ImageData): FrameAnalysisResult | FrameAnalysisError; + + /** + * Returns the analyzer result. */ - analyze(image: ImageData): FrameAnalysisResult; getResult: () => AnalyzerResult; + + /** + * Returns the analyzer settings. + */ getSettings: () => AnalyzerSettings; + + /** + * Updates the analyzer settings. + */ updateSettings: (settings: AnalyzerSettings) => void; - /** Returns analyzer to initial state */ + + /** Resets the currently active capturing process. */ reset: () => void; + /** - * Method used to finish capture of current side when `Analyzer.analyze()` - * didn't return {@linkcode FrameAnalysisResult#frameAnalysisStatus} state. + * Attempts to finish the side capture early. + * + * If there aren't enough captured frames, the method returns `false` and + * further `Analyzer.analyze` calls are required. + * + * Otherwise, the method returns `true` and the `Analyzer` uses the best frame + * candidate to finish the side capture and either finish the capture process + * or continue to the next side. * - * Method tries to fill `SideCaptureResult` with current best frame, if there - * isn't one method returns `false` and result is not changed, otherwise - * `true` is returned and current best frame is filled in current - * `SideCaptureResult`. + * @returns `true` if there are enough captured frames to finish the capture + * process and `getResult` can be called, `false` otherwise. */ finishSideCapture: () => boolean; } diff --git a/packages/capture-wasm/src/AnalyzerResult.ts b/packages/capture-wasm/src/AnalyzerResult.ts index 6a67281..0588d21 100644 --- a/packages/capture-wasm/src/AnalyzerResult.ts +++ b/packages/capture-wasm/src/AnalyzerResult.ts @@ -10,7 +10,7 @@ */ /** - * The result returned from `Analyzer.analyze` + * The result returned from `Analyzer.getResult` */ export type AnalyzerResult = { /** Result of the first side capture */ @@ -20,16 +20,16 @@ export type AnalyzerResult = { /** Document group */ documentGroup: DocumentGroup; /** Completeness status of the capture process */ - completnessStatus: CompletnessStatus; + completenessStatus: CompletenessStatus; }; /** - * Result of side capture + * Capture result of a single document side. */ export type SideCaptureResult = { /** - * Original image of the captured document, untransformed, as it was used in - * analysis. + * Original image of the captured document side, untransformed, as it was used + * in the analysis. */ imageResult: ImageData; @@ -42,22 +42,28 @@ export type SideCaptureResult = { /** * Document side classification. * - * If side classification was uncertain, `"unknown"` is returned. + * If the side classification was uncertain, `"unknown"` is returned. */ side: CaptureSide; + + /** + * If the document is captured at lower dpi than `minimumDocumentDpi` from settings, + * flag is set to `true`. + */ + dpiAdjusted: boolean; }; /** * Document side classification. * - * If side classification was uncertain, `"unknown"` is returned. + * If side classification was uncertain, `"unknown"` is returned. */ export type CaptureSide = "unknown" | "front" | "back"; /** - * Completeness status of capture process + * Completeness status of capture process. */ -export type CompletnessStatus = "empty" | "one-side-missing" | "complete"; +export type CompletenessStatus = "empty" | "one-side-missing" | "complete"; /** * Document group classification. diff --git a/packages/capture-wasm/src/AnalyzerSettings.ts b/packages/capture-wasm/src/AnalyzerSettings.ts index 31aadd0..5a716ce 100644 --- a/packages/capture-wasm/src/AnalyzerSettings.ts +++ b/packages/capture-wasm/src/AnalyzerSettings.ts @@ -14,7 +14,7 @@ */ export type AnalyzerSettings = { /** - * Whether to capture a single side or capture all possible sides + * Whether to capture a single side or capture both sides * of a document with automatic side detection. */ captureSingleSide: boolean; @@ -25,7 +25,7 @@ export type AnalyzerSettings = { returnTransformedDocumentImage: boolean; /** - * Configures capture strategy used to select the best frame. + * Configures the capture strategy used to select the best frame. * * The following values are possible: * @@ -33,7 +33,7 @@ export type AnalyzerSettings = { * capture frames with lower quality * - `"optimize-for-quality"` - Analysis is slower in order to capture high * quality frames. - * - `"default"` - Trade-off for quality and speed. + * - `"default"` - Trade-off between quality and speed. * - `"single-frame"` - Captures first acceptable frame. */ captureStrategy: CaptureStrategy; @@ -45,7 +45,7 @@ export type AnalyzerSettings = { * Both margin and document are required to be fully visible on camera frame * in order to finish capture. * - * Allowed values are from 0 to 1. + * Allowed values are from 0 to 1. (0%-100%) */ documentFramingMargin: number; @@ -110,6 +110,14 @@ export type AnalyzerSettings = { * Allowed values are from 150 to 400. */ minimumDocumentDpi: number; + + /** + * Whether to automatically adjust minimum document dpi. + * + * If it is enabled, the minimum dpi is adjusted to optimal value for the + * provided input resolution to enable capture of all document groups. + */ + adjustMinimumDocumentDpi: boolean; }; /** diff --git a/packages/capture-wasm/src/FrameAnalysisResult.ts b/packages/capture-wasm/src/FrameAnalysisResult.ts index 540006a..feb8752 100644 --- a/packages/capture-wasm/src/FrameAnalysisResult.ts +++ b/packages/capture-wasm/src/FrameAnalysisResult.ts @@ -9,12 +9,33 @@ * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. */ +/** + * The return type of `Analyzer.analyze`. It contains the current capture state + * and frame analysis status. + */ export type FrameAnalysisResult = { captureState: CaptureState; frameCaptured: boolean; frameAnalysisStatus: FrameAnalysisStatus; }; +/** + * The return type of `Analyzer.analyze` when an error occurs. + */ +export type FrameAnalysisError = { + error: FrameAnalysisErrorType; +}; + +/** + * The type of error that can occur during frame analysis. + */ +export type FrameAnalysisErrorType = + | "analyzer-settings-unsuitable-error" + | "unknown-error"; + +/** + * The frame analysis status. + */ export type FrameAnalysisStatus = { sideAnalysisStatus: DocumentSideAnalysisStatus; framingStatus: DocumentFramingStatus; @@ -24,43 +45,64 @@ export type FrameAnalysisStatus = { occlusionStatus: DocumentOcclusionStatus; }; +/** + * The capture state. + */ export type CaptureState = | "side-captured" | "document-captured" | "first-side-capture-in-progress" | "second-side-capture-in-progress"; -/** Back side analysis */ +/** + * Analysis status of the document side for the current frame. + */ export type DocumentSideAnalysisStatus = | "not-available" | "side-already-captured" | "side-not-captured"; +/** + * The document framing status for the current frame. + */ export type DocumentFramingStatus = | "not-available" | "no-document" | "camera-too-far" | "camera-too-close" | "camera-angle-too-steep" + | "camera-orientation-unsuitable" | "document-too-close-to-frame-edge" | "ok"; +/** + * The document lighting status for the current frame. + */ export type DocumentLightingStatus = | "not-available" | "too-bright" | "too-dark" | "normal"; +/** + * The document blur status for the current frame. + */ export type DocumentBlurStatus = | "not-available" | "blur-detected" | "blur-not-detected"; +/** + * The document glare status for the current frame. + */ export type DocumentGlareStatus = | "not-available" | "glare-detected" | "glare-not-detected"; +/** + * The document occlusion status for the current frame. + */ export type DocumentOcclusionStatus = | "not-available" | "occluded" diff --git a/packages/capture-wasm/src/wasm-module.ts b/packages/capture-wasm/src/wasm-module.ts index 58b3646..e60558b 100644 --- a/packages/capture-wasm/src/wasm-module.ts +++ b/packages/capture-wasm/src/wasm-module.ts @@ -27,7 +27,9 @@ export type CaptureBindings = { userId: string, allowHelloMessage: boolean, ) => LicenseUnlockResult; + Analyzer: typeof Analyzer; + submitServerPermission: ( serverPermission: StringifiedBaltazarResponse, ) => ServerPermissionSubmitResult; diff --git a/packages/capture-worker/CHANGELOG.md b/packages/capture-worker/CHANGELOG.md index 0070ff1..81fc07a 100644 --- a/packages/capture-worker/CHANGELOG.md +++ b/packages/capture-worker/CHANGELOG.md @@ -1,11 +1,5 @@ # capture-worker -## 1.0.8 - -### Patch Changes - -- Bugfix: prevent loading cross-origin worker on non-threaded builds - ## 1.0.7 ### Patch Changes diff --git a/packages/capture-worker/package.json b/packages/capture-worker/package.json index f342413..acfe600 100644 --- a/packages/capture-worker/package.json +++ b/packages/capture-worker/package.json @@ -1,28 +1,24 @@ { "name": "capture-worker", - "version": "1.0.8", - "private": true, "description": "", + "private": true, + "version": "1.0.7", "scripts": { + "build": "concurrently pnpm:build:js pnpm:build:types", + "build:dev": "concurrently pnpm:build:js-dev pnpm:build:types", "build:js": "vite build", "build:js-dev": "vite build --mode development", "build:types": "tsc", - "build": "concurrently pnpm:build:js pnpm:build:types", - "build:dev": "concurrently pnpm:build:js-dev pnpm:build:types", - "watch:js": "vite build --mode development --watch", - "watch:types": "tsc --watch", - "watch": "concurrently pnpm:watch:js pnpm:watch:types", - "lint:types": "tsc --emitDeclarationOnly false --noEmit", - "lint:eslint": "eslint ./src --max-warnings 0", + "clean": "rimraf .turbo types dist public/resources/* *.tsbuildinfo", "lint": "concurrently pnpm:lint:types pnpm:lint:eslint", - "clean": "rimraf .turbo types dist public/resources/* *.tsbuildinfo" + "lint:eslint": "eslint ./src --max-warnings 0", + "lint:types": "tsc --emitDeclarationOnly false --noEmit", + "watch": "concurrently pnpm:watch:js pnpm:watch:types", + "watch:js": "vite build --mode development --watch", + "watch:types": "tsc --watch" }, - "files": [ - "dist", - "types" - ], - "types": "./types/worker.d.ts", "main": "./dist/capture-worker.js", + "types": "./types/worker.d.ts", "exports": { ".": { "require": "./dist/capture-worker.js" @@ -30,6 +26,10 @@ "./dist/*": "./dist/*", "./package.json": "./package.json" }, + "files": [ + "dist", + "types" + ], "dependencies": { "capture-wasm": "workspace:*", "comlink": "^4.4.1", @@ -37,18 +37,18 @@ }, "devDependencies": { "@mb/utils": "workspace:*", - "@types/emscripten": "^1.39.6", - "@typescript-eslint/eslint-plugin": "^6.1.0", - "concurrently": "^8.2.0", - "dotenv-cli": "^7.2.1", - "eslint": "^8.45.0", - "eslint-config-prettier": "^8.8.0", - "eslint-define-config": "^1.21.0", - "rimraf": "^5.0.1", + "@types/emscripten": "^1.39.9", + "@typescript-eslint/eslint-plugin": "^6.9.0", + "concurrently": "^8.2.2", + "dotenv-cli": "^7.3.0", + "eslint": "^8.52.0", + "eslint-config-prettier": "^9.0.0", + "eslint-define-config": "^1.24.1", + "rimraf": "^5.0.5", "tsconfig": "workspace:*", - "tsx": "^3.12.7", - "typescript": "^5.1.6", - "vite": "^4.4.6", + "tsx": "^3.14.0", + "typescript": "^5.2.2", + "vite": "^4.5.0", "zx": "^7.2.3" } } diff --git a/packages/capture-worker/src/worker.ts b/packages/capture-worker/src/worker.ts index 2fc6ddc..85ec472 100644 --- a/packages/capture-worker/src/worker.ts +++ b/packages/capture-worker/src/worker.ts @@ -15,151 +15,161 @@ import { expose, finalizer, proxy } from "comlink"; import { getCrossOriginWorkerURL } from "./getCrossOriginWorkerURL"; import { detectWasmFeatures } from "./wasm-feature-detect"; +// TODO: Need to hash filenames in /resources/ for cache busting + declare global { interface WorkerGlobalScope { createModule: EmscriptenModuleFactory; } } -// Lift it to global scope and act like it exists, just in case -let wasmModule: CaptureWasmModule; -let analyzer: Analyzer; -// we can't get the location if the worker is loaded through a `blob:` -let resourceUrl: string; - -console.log("Worker loaded"); - -// TODO: Need to hash filenames in /resources/ for cache busting - -/** - * @returns a Comlink-proxified instance of the Wasm module - */ -async function loadWasm() { - // TODO: Error handling - const wasmVariant = await detectWasmFeatures(); - - console.log(`Requesting ${wasmVariant} Wasm build`); - - const variantUrl = `${resourceUrl}/${wasmVariant}`; - - const loaderUrl = `${variantUrl}/capture-wasm.js`; - const workerUrl = `${variantUrl}/capture-wasm.worker.js`; - - let crossOriginWorkerUrl: string; +class CaptureWorker { + #wasmModule?: CaptureWasmModule; + #analyzer?: Analyzer; + #resourceUrl?: string; - const crossOriginLoaderUrl = await getCrossOriginWorkerURL(loaderUrl); - - if (wasmVariant === "advanced-threads") { - crossOriginWorkerUrl = await getCrossOriginWorkerURL(workerUrl); - } - - try { - importScripts(crossOriginLoaderUrl); - } catch (error) { - console.error("loading scripts failed", error); + /** + * @returns a Comlink-proxified instance of the Wasm module + */ + async loadWasm() { + // TODO: Error handling + const wasmVariant = await detectWasmFeatures(); + + console.log(`Requesting ${wasmVariant} Wasm build`); + + // TODO: what happens with no resourceUrl? + + const variantUrl = `${this.#resourceUrl}/${wasmVariant}`; + + const loaderUrl = `${variantUrl}/capture-wasm.js`; + const workerUrl = `${variantUrl}/capture-wasm.worker.js`; + + let crossOriginWorkerUrl: string; + + const crossOriginLoaderUrl = await getCrossOriginWorkerURL(loaderUrl); + + if (wasmVariant === "advanced-threads") { + crossOriginWorkerUrl = await getCrossOriginWorkerURL(workerUrl); + } + + try { + importScripts(crossOriginLoaderUrl); + } catch (error) { + console.error("loading scripts failed", error); + } + + /** + * https://emscripten.org/docs/api_reference/module.html#module-object + */ + this.#wasmModule = await self.createModule({ + locateFile: (path) => { + let filePath: string; + + // Since `locateFile` is synchronous, we can't use + // `getCrossOriginWorkerURL` here. Instead, we make an exception for the + // worker, as we know its name in advance + if (path.includes(".worker.js")) { + filePath = crossOriginWorkerUrl; + } else { + filePath = `${this.#resourceUrl}/${wasmVariant}/${path}`; + } + return filePath; + }, + // TODO: pthreads build breaks without this: + // "Failed to execute 'createObjectURL' on 'URL': Overload resolution failed." + mainScriptUrlOrBlob: crossOriginLoaderUrl.toString(), + setStatus: (text) => { + // console.log(text, convertEmscriptenStatusToProgress(text)); + }, + }); + + // @ts-ignore - this property exists when proxy-ed + this.#wasmModule[finalizer] = () => { + // console.log("finalizer wasmModule"); + }; + + return proxy(this.#wasmModule); } /** - * https://emscripten.org/docs/api_reference/module.html#module-object + * Separate function so that we can set a finalizer on the analyzer. */ - wasmModule = await self.createModule({ - locateFile: (path) => { - let filePath: string; - - // Since `locateFile` is synchronous, we can't use - // `getCrossOriginWorkerURL` here. Instead, we make an exception for the - // worker, as we know its name in advance - if (path.includes(".worker.js")) { - filePath = crossOriginWorkerUrl; - } else { - filePath = `${resourceUrl}/${wasmVariant}/${path}`; + createAnalyzer() { + if (!this.#wasmModule) { + console.error("Wasm is not initialized yet. Call loadWasm() first."); + return; + } + + this.#analyzer = new this.#wasmModule.Analyzer(); + + // @ts-ignore - this property exists when proxy-ed + this.#analyzer[finalizer] = () => { + console.log( + "Comlink.finalizer called on Analyzer instance. Deleting instance.", + ); + if (this.#analyzer) { + void this.#analyzer.delete(); } - return filePath; - }, - // TODO: pthreads build breaks without this: - // "Failed to execute 'createObjectURL' on 'URL': Overload resolution failed." - mainScriptUrlOrBlob: crossOriginLoaderUrl.toString(), - setStatus: (text) => { - // console.log(text, convertEmscriptenStatusToProgress(text)); - }, - }); - - // @ts-ignore - this property exists when proxy-ed - wasmModule[finalizer] = () => { - console.log("finalizer wasmModule"); - }; - - return proxy(wasmModule); -} + }; -/** - * Separate function so that we can set a finalizer on the analyzer. - */ -function createAnalyzer() { - if (!wasmModule) { - console.warn("Wasm is not initialized yet. Call loadWasm() first."); + return proxy(this.#analyzer); } - // TODO: check initialization state - - analyzer = new wasmModule.Analyzer(); - - // @ts-ignore - this property exists when proxy-ed - analyzer[finalizer] = () => { - console.log( - "Comlink.finalizer called on Analyzer instance. Deleting instance.", - ); - void analyzer.delete(); - }; - - return proxy(analyzer); -} + /** + * Separate function so that we can clear the `imageData` buffer + */ + analyze(image: Parameters[0]) { + if (!this.#analyzer) { + throw new Error( + "Analyzer is not initialized yet. Call createAnalyzer() first.", + ); + } + + const frameAnalysisResultOrError = this.#analyzer.analyze(image); + // transfer the ownership of the buffer back, without a recipient + self.postMessage({}, [image.data.buffer]); + // @ts-ignore + image = null; + + return frameAnalysisResultOrError; + } -/** - * Separate function so that we can clear the `imageData` buffer - */ -function analyze(image: Parameters[0]) { - // TODO: check what happens if it gets deleted + /** + * Terminates the workers and the Wasm runtime. + */ + terminate() { + self.close(); + } - const frameAnalysisResult = analyzer.analyze(image); - // transfer the ownership of the buffer back, without a recipient - self.postMessage({}, [image.data.buffer]); - // @ts-ignore - image = null; + /** By default, the SDK will look for the required `/resources` directory on + * the current URL path. + * + * If you are hosting the resources on a different URL, provide a new relative + * or absolute one. The SDK will then search for files in the `/resources` + * directory of that URL. + */ + setResourceUrl(url: string) { + this.#resourceUrl = url; + } - return frameAnalysisResult; + /** + * This method is called when the worker is terminated. + */ + [finalizer]() { + console.log("Comlink.finalizer called on proxyWorker"); + // Can't use this as the `proxyWorker` gets randomly GC'd, even if in use + // self.close(); + } } /** * This object contains methods exposed from the worker via Comlink */ -export const proxyWorker = { - createAnalyzer, - loadWasm, - analyze, - terminate: () => self.close(), - setResourceUrl: (url: string) => { - resourceUrl = url; - }, - // TODO: find out when this gets called - seems random - [finalizer]: () => { - console.log("Comlink.finalizer called on proxyWorker"); - // Can't use this as the `proxyWorker` gets randomly GC'd, even if in use - // self.close(); - }, -}; +const captureWorker = new CaptureWorker(); -expose(proxyWorker); +expose(captureWorker); -// https://github.com/microsoft/TypeScript/issues/47663#issuecomment-1519138189 -type ProxyType = typeof proxyWorker; -// we can't use the same symbol anyway -/* -Exported variable 'createProxyWorker' has or is using name 'finalizer' from -external module "/capture-worker/types/worker" -but cannot be named.ts(4023) -*/ -export type ProxyWorker = Omit; +export type ProxyWorker = Omit; /* TODO: document these better diff --git a/packages/capture/.gitignore b/packages/capture/.gitignore deleted file mode 100644 index 3a4fa1b..0000000 --- a/packages/capture/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# project-specific -build -dist -types -public diff --git a/packages/capture/CHANGELOG.md b/packages/capture/CHANGELOG.md deleted file mode 100644 index f36d7f6..0000000 --- a/packages/capture/CHANGELOG.md +++ /dev/null @@ -1,65 +0,0 @@ -# @microblink/capture - -## 1.0.8 - -### Patch Changes - -- Bugfix: prevent loading cross-origin worker on non-threaded builds - - capture-main@1.0.8 - - capture-ui@1.0.8 - -## 1.0.7 - -### Patch Changes - -- 15bde2b: Implemented an approach from https://github.com/CezaryDanielNowak/CrossOriginWorker to load workers cross-domain. - - According to spec, `new Worker` should honor the response's CORS headers - but this doesn't work in any of the browsers, so an approach was used - that inlines the fetched resources inside a `Blob` and a `ObjectURL` so - that they execute from the same domain. - - Note, that this approach won't work with certain CSPs and is not - recommended. It also may break at any point as it's skirting around some - pretty undefined browser behaviours. - - The recommended way is still to host the resources and the SDK on the - same domain. - -- Updated dependencies [15bde2b] - - capture-main@1.0.7 - - capture-ui@1.0.7 - -## 1.0.6 - -### Patch Changes - -- Updated dependencies [2412e97] - - capture-ui@1.0.6 - -## 1.0.5 - -### Patch Changes - -- Add missing readme to published package - -## 1.0.4 - -### Patch Changes - -- Fixes a critical issue where the published npm package was dependent on private packages - -## 1.0.3 - -### Patch Changes - -- Fixing incorrect npm publish - -## 1.0.2 - -### Patch Changes - -- - Fixed incorrect initialization of user-provided UI settings - - Fixed a bug where calling the dismount function without a target DOM node would clear the document body -- Updated dependencies - - capture-ui@1.0.1 diff --git a/packages/capture/README.md b/packages/capture/README.md deleted file mode 100644 index 513bf5f..0000000 --- a/packages/capture/README.md +++ /dev/null @@ -1,177 +0,0 @@ -![logo-microblink](https://github.com/BlinkID/capture-browser/assets/2827047/ab8ab61b-ac82-4d84-8013-f6f2efe5bec5) - -# _Capture_ SDK for browsers - -The Capture Browser SDK gives you the ability to auto-capture high-quality images of identity documents in a user-friendly way. The SDK provides you with a rectified image of the document, ensuring a high success rate in extracting document text or verifying the document's validity. - -Users are guided to avoid glare, blurred images, bad lighting conditions, fingers over the document, or too much tilt. The SDK is able to recognize if a document is single-sided (i.e., passport) or double-sided (i.e., driving license) and prompt the user to scan the back side of the document when needed. - -In the results, you can obtain a cropped, perspective-corrected image of the document, along with the original frame. These can be processed by your webapp in any way required. The SDK is lightweight and can be easily integrated into your webapp, blending seamlessly with your design. - -## Installation - -The Capture SDK is available as a package on NPM for use with a module bundler. - -```bash -# npm -npm install @microblink/capture - -# yarn -yarn add @microblink/capture - -# pnpm -pnpm add @microblink/capture -``` - -## Obtaining a licence - -A valid license key is required to initialize scanning. You can request a free trial license key after registering on [Microblink Developer Hub](https://account.microblink.com/signin). The license is bound to the application ID of your app. - -## Hosting environment - -In order for the SDK to work it needs to run inside a [secure context](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts). -Additionally, to run the threaded version of the SDK, the following headers need to be set on your server: - -``` -Cross-Origin-Embedder-Policy: require-corp -Cross-Origin-Opener-Policy: same-origin -``` - -Otherwise, you will only be able to run the single-threaded version of the SDK. - -In order to load the accompanying Wasm files and Web Workers, you also need to host them locally on your dev server. These files can be found inside the `node_modules/@microblink/capture/dist/resources` directory after installation. - -The dev environments for the example apps have these set and you can use them as a reference. - -## Examples Quick Start - -### Requirements - -In order to run the examples provided in the [GitHub repository](), you'll need the following tools: - -1. NodeJS LTS (18.x) - - - Prefer using [`nvm`](https://github.com/nvm-sh/nvm) on dev machines: - - ```sh - nvm install --lts - nvm use --lts - ``` - - - [alternative installation methods](https://nodejs.org/en/download) - -2. `pnpm` - - - alternative package manager to `npm` - - easiest to install using `npm install -g pnpm` - - [alternative installation methods](https://pnpm.io/installation) - -### Device requirements - -Additionally, your device will need a camera capable of providing a video stream with a minimum resolution of 1920x1080. - -The minimum supported browser versions are Chrome 96, Firefox 79 and Safari 15.2. Web views are not supported as they are not providing a secure context. - -### Running the provided examples - -The examples provided in the [GitHub repository]() can be run by first building the SDK by running `pnpm build`, and then navigating to the examples found in `/apps/*` and running `pnpm dev` for the dev server or `pnpm serve` for the production build. - -These examples will move the `node_modules/@microblink/capture/dist/resources` as part of the build step to [Vite's public folder](https://vitejs.dev/guide/assets.html#the-public-directory), generate a local HTTPS certificate and apply the appropriate headers to Vite's dev server. - -## Using the SDK - -It is strongly recommended to use TypeScript and an IDE that has a TypeScript language server during development as the SDK is strongly typed and provides JSdoc comments, links, usage examples, autocomplete, and other Intellisense features. - -### Using the provided UI component with `createCaptureUi` - -The simplest way to initialize the SDK and start capturing is to call `createCaptureUi` and provide it with a licence key. This will mount a full-screen capturing UI in your web app. Make sure to also load the CSS styles for the component. - -```typescript -import { createCaptureUi } from "@microblink/capture"; -import "@microblink/capture/style.css"; - -createCaptureUi({ - sdkSettings: { - licenseKey: "YOUR_LICENCE", - callbacks: { - onCaptureResult: (result) => { - /* do something with the result */ - }, - }, - }, -}); -``` - -### Headless usage with `createCaptureSdk` - -You can also use the Capture SDK without the provided UI and build your own experience by using `createCaptureSdk`. All the mechanisms that the Capture UI uses are provided by the object returned by this method. - -```typescript -import { createCaptureSdk } from "@microblink/capture"; - -const sdk = await createCaptureSdk({ - licenseKey: "YOUR_LICENCE", - callbacks: { - onCaptureResult: (result) => { - /* do something with the result */ - }, - }, -}); - -await sdk.startCameraStream(document.getElementById("videoElementId")); -``` - -The SDK will terminate automatically if the video element is dismounted and requires no handling on the developer's end. - -## Configuration - -### Configuring the Capture SDK - -The SDK can be configured on initialization using `createCaptureSdk(settings)` . The configuration documentation can be found on [`CaptureSdkSettings`](/packages/capture-main/src/createCaptureSdk.ts#30). - -The capturing process is handled using the [`Analyzer`](/packages/capture-wasm/src/Analyzer.ts). The configuration settings for the `Analyzer` can be found on [`AnalyzerSettings`](/packages/capture-wasm/src/AnalyzerSettings.ts). - -### Configuring the Capture UI - -`createCaptureUi` takes a [`CreateCaptureUiSettings`](/packages/capture-ui/src/createCaptureUi.tsx#52) configuration object as a parameter with both [`CaptureSdkSettings`](/packages/capture-main/src/createCaptureSdk.ts#30) that configures the SDK behaviour, and [`UiSettings`](/packages/capture-ui/src/StoreContext.tsx#36) which configures the UI itself. - -You can configure the mount point of the UI, toggle the display of the onboarding screen and help screens, the error screen and provide your own localization strings. - -You can find a list of all the localization strings in [`packages/capture-ui/src/locales/en.ts`](/packages/capture-ui/src/locales/en.ts) - -## Advanced usage - -### State management and subscriptions - -The Capture SDK tracks its internal state on the [`ReactiveStore`](/packages/capture-main/src/zustandStore.ts#8) object, which is implemented using [Zustand](https://github.com/pmndrs/zustand). - -The user can get the internal state of the SDK at any time by calling `getState()` on the `CaptureSdk` object returned by `createCaptureSdk`. `CaptureSdk` is also available on the `CaptureComponent` instance returned by `createCaptureUi`. - -You can also subscribe to state changes by calling `CaptureSdk.subscribe()`. Detailed documentation for using this feature is available [here](https://github.com/pmndrs/zustand#using-subscribe-with-selector). - -### UI customization - -The UI can be customized by either overriding the CSS variables found at `packages/capture-ui/src/root-styles.scss`, or by manually targetting the CSS classes applied to the UI component. - -All components rendered by the UI are nested under `.mb-style-scope` which provides some base styles. - -### Detailed capturing process information - -You can find details on the internal state of the capture process using the [`onFrameAnalysis`](/packages/capture-main/src/createCaptureSdk.ts#57) callback. This callback will provide you with an `ImageData` instance of the previously processed frame and the [`FrameAnalysisResult`](/packages/capture-wasm/src/FrameAnalysisResult.ts). - -## Troubleshooting - -### Integration problems - -If you are experiencing issues with the SDK integration, first make sure that you have followed the integration instructions and used our [provided examples as reference](#examples-quick-start). -Also make sure that your device meets the [requirements](#requirements). If you're still having problems, please contact us at [help.microblink.com](help.microblink.com). - -### Licencing problems - -If you are getting "invalid licence key" error or having other licence-related problems, first check the console. All licence-related problems are logged to error log so it is easy to determine what went wrong. - -When you have determined what is the licence-related problem or you simply do not understand the log, you should contact us [help.microblink.com](help.microblink.com). When contacting us, please make sure you provide following information: - -## Contact - -For any other questions, feel free to contact us at [help.microblink.com](help.microblink.com). diff --git a/packages/capture/duplicate-types.mts b/packages/capture/duplicate-types.mts deleted file mode 100644 index f42ea32..0000000 --- a/packages/capture/duplicate-types.mts +++ /dev/null @@ -1,3 +0,0 @@ -import "zx/globals"; - -fs.copyFileSync("types/index.d.ts", "types/index.d.cts"); diff --git a/packages/capture/npm-publish/README.md b/packages/capture/npm-publish/README.md deleted file mode 100644 index 513bf5f..0000000 --- a/packages/capture/npm-publish/README.md +++ /dev/null @@ -1,177 +0,0 @@ -![logo-microblink](https://github.com/BlinkID/capture-browser/assets/2827047/ab8ab61b-ac82-4d84-8013-f6f2efe5bec5) - -# _Capture_ SDK for browsers - -The Capture Browser SDK gives you the ability to auto-capture high-quality images of identity documents in a user-friendly way. The SDK provides you with a rectified image of the document, ensuring a high success rate in extracting document text or verifying the document's validity. - -Users are guided to avoid glare, blurred images, bad lighting conditions, fingers over the document, or too much tilt. The SDK is able to recognize if a document is single-sided (i.e., passport) or double-sided (i.e., driving license) and prompt the user to scan the back side of the document when needed. - -In the results, you can obtain a cropped, perspective-corrected image of the document, along with the original frame. These can be processed by your webapp in any way required. The SDK is lightweight and can be easily integrated into your webapp, blending seamlessly with your design. - -## Installation - -The Capture SDK is available as a package on NPM for use with a module bundler. - -```bash -# npm -npm install @microblink/capture - -# yarn -yarn add @microblink/capture - -# pnpm -pnpm add @microblink/capture -``` - -## Obtaining a licence - -A valid license key is required to initialize scanning. You can request a free trial license key after registering on [Microblink Developer Hub](https://account.microblink.com/signin). The license is bound to the application ID of your app. - -## Hosting environment - -In order for the SDK to work it needs to run inside a [secure context](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts). -Additionally, to run the threaded version of the SDK, the following headers need to be set on your server: - -``` -Cross-Origin-Embedder-Policy: require-corp -Cross-Origin-Opener-Policy: same-origin -``` - -Otherwise, you will only be able to run the single-threaded version of the SDK. - -In order to load the accompanying Wasm files and Web Workers, you also need to host them locally on your dev server. These files can be found inside the `node_modules/@microblink/capture/dist/resources` directory after installation. - -The dev environments for the example apps have these set and you can use them as a reference. - -## Examples Quick Start - -### Requirements - -In order to run the examples provided in the [GitHub repository](), you'll need the following tools: - -1. NodeJS LTS (18.x) - - - Prefer using [`nvm`](https://github.com/nvm-sh/nvm) on dev machines: - - ```sh - nvm install --lts - nvm use --lts - ``` - - - [alternative installation methods](https://nodejs.org/en/download) - -2. `pnpm` - - - alternative package manager to `npm` - - easiest to install using `npm install -g pnpm` - - [alternative installation methods](https://pnpm.io/installation) - -### Device requirements - -Additionally, your device will need a camera capable of providing a video stream with a minimum resolution of 1920x1080. - -The minimum supported browser versions are Chrome 96, Firefox 79 and Safari 15.2. Web views are not supported as they are not providing a secure context. - -### Running the provided examples - -The examples provided in the [GitHub repository]() can be run by first building the SDK by running `pnpm build`, and then navigating to the examples found in `/apps/*` and running `pnpm dev` for the dev server or `pnpm serve` for the production build. - -These examples will move the `node_modules/@microblink/capture/dist/resources` as part of the build step to [Vite's public folder](https://vitejs.dev/guide/assets.html#the-public-directory), generate a local HTTPS certificate and apply the appropriate headers to Vite's dev server. - -## Using the SDK - -It is strongly recommended to use TypeScript and an IDE that has a TypeScript language server during development as the SDK is strongly typed and provides JSdoc comments, links, usage examples, autocomplete, and other Intellisense features. - -### Using the provided UI component with `createCaptureUi` - -The simplest way to initialize the SDK and start capturing is to call `createCaptureUi` and provide it with a licence key. This will mount a full-screen capturing UI in your web app. Make sure to also load the CSS styles for the component. - -```typescript -import { createCaptureUi } from "@microblink/capture"; -import "@microblink/capture/style.css"; - -createCaptureUi({ - sdkSettings: { - licenseKey: "YOUR_LICENCE", - callbacks: { - onCaptureResult: (result) => { - /* do something with the result */ - }, - }, - }, -}); -``` - -### Headless usage with `createCaptureSdk` - -You can also use the Capture SDK without the provided UI and build your own experience by using `createCaptureSdk`. All the mechanisms that the Capture UI uses are provided by the object returned by this method. - -```typescript -import { createCaptureSdk } from "@microblink/capture"; - -const sdk = await createCaptureSdk({ - licenseKey: "YOUR_LICENCE", - callbacks: { - onCaptureResult: (result) => { - /* do something with the result */ - }, - }, -}); - -await sdk.startCameraStream(document.getElementById("videoElementId")); -``` - -The SDK will terminate automatically if the video element is dismounted and requires no handling on the developer's end. - -## Configuration - -### Configuring the Capture SDK - -The SDK can be configured on initialization using `createCaptureSdk(settings)` . The configuration documentation can be found on [`CaptureSdkSettings`](/packages/capture-main/src/createCaptureSdk.ts#30). - -The capturing process is handled using the [`Analyzer`](/packages/capture-wasm/src/Analyzer.ts). The configuration settings for the `Analyzer` can be found on [`AnalyzerSettings`](/packages/capture-wasm/src/AnalyzerSettings.ts). - -### Configuring the Capture UI - -`createCaptureUi` takes a [`CreateCaptureUiSettings`](/packages/capture-ui/src/createCaptureUi.tsx#52) configuration object as a parameter with both [`CaptureSdkSettings`](/packages/capture-main/src/createCaptureSdk.ts#30) that configures the SDK behaviour, and [`UiSettings`](/packages/capture-ui/src/StoreContext.tsx#36) which configures the UI itself. - -You can configure the mount point of the UI, toggle the display of the onboarding screen and help screens, the error screen and provide your own localization strings. - -You can find a list of all the localization strings in [`packages/capture-ui/src/locales/en.ts`](/packages/capture-ui/src/locales/en.ts) - -## Advanced usage - -### State management and subscriptions - -The Capture SDK tracks its internal state on the [`ReactiveStore`](/packages/capture-main/src/zustandStore.ts#8) object, which is implemented using [Zustand](https://github.com/pmndrs/zustand). - -The user can get the internal state of the SDK at any time by calling `getState()` on the `CaptureSdk` object returned by `createCaptureSdk`. `CaptureSdk` is also available on the `CaptureComponent` instance returned by `createCaptureUi`. - -You can also subscribe to state changes by calling `CaptureSdk.subscribe()`. Detailed documentation for using this feature is available [here](https://github.com/pmndrs/zustand#using-subscribe-with-selector). - -### UI customization - -The UI can be customized by either overriding the CSS variables found at `packages/capture-ui/src/root-styles.scss`, or by manually targetting the CSS classes applied to the UI component. - -All components rendered by the UI are nested under `.mb-style-scope` which provides some base styles. - -### Detailed capturing process information - -You can find details on the internal state of the capture process using the [`onFrameAnalysis`](/packages/capture-main/src/createCaptureSdk.ts#57) callback. This callback will provide you with an `ImageData` instance of the previously processed frame and the [`FrameAnalysisResult`](/packages/capture-wasm/src/FrameAnalysisResult.ts). - -## Troubleshooting - -### Integration problems - -If you are experiencing issues with the SDK integration, first make sure that you have followed the integration instructions and used our [provided examples as reference](#examples-quick-start). -Also make sure that your device meets the [requirements](#requirements). If you're still having problems, please contact us at [help.microblink.com](help.microblink.com). - -### Licencing problems - -If you are getting "invalid licence key" error or having other licence-related problems, first check the console. All licence-related problems are logged to error log so it is easy to determine what went wrong. - -When you have determined what is the licence-related problem or you simply do not understand the log, you should contact us [help.microblink.com](help.microblink.com). When contacting us, please make sure you provide following information: - -## Contact - -For any other questions, feel free to contact us at [help.microblink.com](help.microblink.com). diff --git a/packages/capture/npm-publish/package.json b/packages/capture/npm-publish/package.json deleted file mode 100644 index d475c10..0000000 --- a/packages/capture/npm-publish/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "@microblink/capture", - "description": "Wasm prebuilts + TS types", - "homepage": "https://microblink.com/", - "repository": "github:BlinkID/capture-browser", - "version": "1.0.8", - "type": "module", - "files": [ - "dist", - "types" - ], - "main": "./dist/capture.umd.cjs", - "module": "./dist/capture.js", - "types": "./types/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./types/index.d.ts", - "default": "./dist/capture.js" - }, - "require": { - "types": "./types/index.d.cts", - "default": "./dist/capture.umd.cjs" - } - }, - "./style.css": "./dist/style.css", - "./package.json": "./package.json" - }, - "devDependencies": { - "solid-js": "^1.7.8" - } -} diff --git a/packages/capture/package.json b/packages/capture/package.json deleted file mode 100644 index d8c5f16..0000000 --- a/packages/capture/package.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "@microblink/capture", - "description": "", - "homepage": "https://microblink.com/", - "repository": "github:BlinkID/capture-browser", - "version": "1.0.8", - "scripts": { - "rollup": "api-extractor run --local --verbose", - "build:js": "vite build", - "build:js-dev": "vite build --mode development", - "build:types": "tsc && tsx duplicate-types.mts", - "build": "concurrently -m 1 pnpm:build:js pnpm:build:types pnpm:rollup", - "build:dev": "concurrently pnpm:build:js-dev pnpm:build:types", - "lint:types": "tsc --emitDeclarationOnly false --noEmit", - "lint:package": "publint && attw --pack . --exclude-entrypoints style.css ", - "lint": "concurrently pnpm:lint:types pnpm:lint:package", - "clean": "rimraf .turbo types dist public *.tsbuildinfo" - }, - "type": "module", - "files": [ - "dist", - "types" - ], - "publishConfig": { - "directory": "npm-publish", - "linkDirectory": false - }, - "main": "./dist/capture.umd.cjs", - "module": "./dist/capture.js", - "types": "./types/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./types/index.d.ts", - "default": "./dist/capture.js" - }, - "require": { - "types": "./types/index.d.cts", - "default": "./dist/capture.umd.cjs" - } - }, - "./style.css": "./dist/style.css", - "./package.json": "./package.json" - }, - "devDependencies": { - "@arethetypeswrong/cli": "^0.7.0", - "@mb/utils": "workspace:^", - "@microsoft/api-extractor": "^7.36.3", - "concurrently": "^8.2.0", - "publint": "^0.1.16", - "rimraf": "^5.0.1", - "solid-js": "^1.7.8", - "tsconfig": "workspace:*", - "tsx": "^3.12.7", - "vite": "^4.4.6", - "zx": "^7.2.3" - }, - "dependencies": { - "capture-main": "workspace:^", - "capture-ui": "workspace:^" - } -} diff --git a/packages/capture/src/index.ts b/packages/capture/src/index.ts deleted file mode 100644 index 33a4613..0000000 --- a/packages/capture/src/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Copyright (c) 2023 Microblink Ltd. All rights reserved. - * - * ANY UNAUTHORIZED USE OR SALE, DUPLICATION, OR DISTRIBUTION - * OF THIS PROGRAM OR ANY OF ITS PARTS, IN SOURCE OR BINARY FORMS, - * WITH OR WITHOUT MODIFICATION, WITH THE PURPOSE OF ACQUIRING - * UNLAWFUL MATERIAL OR ANY OTHER BENEFIT IS PROHIBITED! - * THIS PROGRAM IS PROTECTED BY COPYRIGHT LAWS AND YOU MAY NOT - * REVERSE ENGINEER, DECOMPILE, OR DISASSEMBLE IT. - */ - -export * from "capture-main"; -export * from "capture-ui"; diff --git a/packages/capture/vite.config.mts b/packages/capture/vite.config.mts deleted file mode 100644 index cdd09a3..0000000 --- a/packages/capture/vite.config.mts +++ /dev/null @@ -1,48 +0,0 @@ -import { getPackagePath } from "@mb/utils"; -import { resolve } from "node:path"; -import { defineConfig } from "vite"; -import { fs } from "zx"; - -export default defineConfig((config) => ({ - build: { - sourcemap: config.mode === "development", - minify: config.mode === "production", - target: "es2022", - lib: { - entry: { - capture: resolve(__dirname, "./src/index.ts"), - }, - name: "capture", - // fileName: (format, name) => `${name}.${format}.js`, - fileName: "capture", - }, - }, - plugins: [ - { - name: "move-resources", - buildStart: async () => { - if (ranOnce) { - return; - } - fs.ensureDirSync(`public/resources`); - fs.copySync( - `${getPackagePath("capture-main")}/dist/resources`, - "public/resources", - { - dereference: true, - }, - ); - fs.copySync( - `${getPackagePath("capture-ui")}/dist/style.css`, - "public/style.css", - { - dereference: true, - }, - ); - ranOnce = true; - }, - }, - ], -})); - -let ranOnce = false; diff --git a/packages/tsconfig/base.json b/packages/tsconfig/base.json index 5664b5d..709fefe 100644 --- a/packages/tsconfig/base.json +++ b/packages/tsconfig/base.json @@ -5,8 +5,8 @@ "target": "ESNext", "useDefineForClassFields": true, "module": "ESNext", - "lib": ["ESNext", "DOM"], "moduleResolution": "Node", + "lib": ["ESNext", "DOM"], "strict": true, "sourceMap": true, "resolveJsonModule": true, diff --git a/packages/tsconfig/package.json b/packages/tsconfig/package.json index 3f40629..df0ddb0 100644 --- a/packages/tsconfig/package.json +++ b/packages/tsconfig/package.json @@ -1,5 +1,5 @@ { "name": "tsconfig", - "version": "0.0.0", - "private": true + "private": true, + "version": "0.0.0" } diff --git a/packages/utils/package.json b/packages/utils/package.json index f63c709..3b1074d 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,16 +1,16 @@ { "name": "@mb/utils", - "version": "0.0.0", "private": true, - "main": "utils.mjs", - "module": "utils.mjs", - "types": "types/utils.d.mts", + "version": "0.0.0", "scripts": { "build-types": "tsc" }, + "main": "utils.mjs", + "module": "utils.mjs", + "types": "types/utils.d.mts", "devDependencies": { "resolve-package-path": "^4.0.3", - "typescript": "^5.1.6", + "typescript": "^5.2.2", "zx": "^7.2.3" } } diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index f14b6be..8dff353 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -18,6 +18,7 @@ // go to js file when using IDE functions like // "Go to Definition" in VSCode "declarationMap": true, + "module": "Node16", "moduleResolution": "Node16", "skipLibCheck": true } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 29a5f63..87244de 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,20 +15,20 @@ importers: specifier: ^8.0.3 version: 8.0.3 lint-staged: - specifier: ^13.2.3 - version: 13.2.3 + specifier: ^15.0.2 + version: 15.0.2 syncpack: - specifier: ^10.7.3 - version: 10.7.3 + specifier: ^11.2.1 + version: 11.2.1 turbo: - specifier: ^1.10.8 - version: 1.10.8 + specifier: ^1.10.16 + version: 1.10.16 apps/example-react: dependencies: '@microblink/capture': - specifier: workspace:^ - version: link:../../packages/capture + specifier: workspace:* + version: link:../../packages/capture-published/publish-dir react: specifier: ^18.2.0 version: 18.2.0 @@ -37,220 +37,111 @@ importers: version: 18.2.0(react@18.2.0) devDependencies: '@mb/utils': - specifier: workspace:^ + specifier: workspace:* version: link:../../packages/utils '@types/react': - specifier: ^18.2.15 - version: 18.2.15 + specifier: ^18.2.32 + version: 18.2.32 '@types/react-dom': - specifier: ^18.2.7 - version: 18.2.7 + specifier: ^18.2.14 + version: 18.2.14 '@typescript-eslint/eslint-plugin': - specifier: ^6.1.0 - version: 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6) + specifier: ^6.9.0 + version: 6.9.0(@typescript-eslint/parser@6.9.0)(eslint@8.52.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^6.1.0 - version: 6.1.0(eslint@8.45.0)(typescript@5.1.6) + specifier: ^6.9.0 + version: 6.9.0(eslint@8.52.0)(typescript@5.2.2) '@vitejs/plugin-react': - specifier: ^4.0.3 - version: 4.0.3(vite@4.4.6) + specifier: ^4.1.0 + version: 4.1.0(vite@4.5.0) eslint: - specifier: ^8.45.0 - version: 8.45.0 + specifier: ^8.52.0 + version: 8.52.0 eslint-plugin-react-hooks: specifier: ^4.6.0 - version: 4.6.0(eslint@8.45.0) + version: 4.6.0(eslint@8.52.0) eslint-plugin-react-refresh: specifier: ^0.4.3 - version: 0.4.3(eslint@8.45.0) - typescript: - specifier: ^5.1.6 - version: 5.1.6 - vite: - specifier: ^4.4.6 - version: 4.4.6(sass@1.64.0) - vite-plugin-mkcert: - specifier: ^1.16.0 - version: 1.16.0(vite@4.4.6) - zx: - specifier: ^7.2.3 - version: 7.2.3 - - apps/example-solidjs: - dependencies: - '@kobalte/core': - specifier: ^0.9.8 - version: 0.9.8(solid-js@1.7.8) - '@motionone/solid': - specifier: ^10.16.2 - version: 10.16.2(solid-js@1.7.8) - '@solid-primitives/keyed': - specifier: ^1.2.0 - version: 1.2.0(solid-js@1.7.8) - capture-main: - specifier: workspace:* - version: link:../../packages/capture-main - capture-ui: - specifier: workspace:^ - version: link:../../packages/capture-ui - clsx: - specifier: ^2.0.0 - version: 2.0.0 - solid-js: - specifier: ^1.7.8 - version: 1.7.8 - solid-zustand: - specifier: ^1.7.0 - version: 1.7.0(solid-js@1.7.8)(zustand@4.3.9) - yy-fps: - specifier: ^2.0.1 - version: 2.0.1 - devDependencies: - '@acab/ecsstatic': - specifier: ^0.7.1 - version: 0.7.1 - '@mb/utils': - specifier: workspace:* - version: link:../../packages/utils - '@styled/typescript-styled-plugin': - specifier: ^1.0.0 - version: 1.0.0 - '@typescript-eslint/eslint-plugin': - specifier: ^6.1.0 - version: 6.1.0(@typescript-eslint/parser@6.2.0)(eslint@8.45.0)(typescript@5.1.6) - concurrently: - specifier: ^8.2.0 - version: 8.2.0 - eslint: - specifier: ^8.45.0 - version: 8.45.0 - eslint-config-prettier: - specifier: ^8.8.0 - version: 8.8.0(eslint@8.45.0) - eslint-define-config: - specifier: ^1.21.0 - version: 1.21.0 - eslint-plugin-solid: - specifier: ^0.12.1 - version: 0.12.1(eslint@8.45.0)(typescript@5.1.6) - mkcert-cli: - specifier: ^1.5.0 - version: 1.5.0 - prettier: - specifier: ^3.0.0 - version: 3.0.0 + version: 0.4.3(eslint@8.52.0) rimraf: - specifier: ^5.0.1 - version: 5.0.1 - sass: - specifier: ^1.64.0 - version: 1.64.0 - serve: - specifier: ^14.2.0 - version: 14.2.0 - tsc-files: - specifier: ^1.1.4 - version: 1.1.4(typescript@5.1.6) - tsconfig: - specifier: workspace:* - version: link:../../packages/tsconfig + specifier: ^5.0.5 + version: 5.0.5 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vite: - specifier: ^4.4.6 - version: 4.4.6(sass@1.64.0) - vite-plugin-full-reload: - specifier: ^1.0.5 - version: 1.0.5(vite@4.4.6) + specifier: ^4.5.0 + version: 4.5.0(@types/node@20.8.8)(sass@1.69.4) vite-plugin-mkcert: specifier: ^1.16.0 - version: 1.16.0(vite@4.4.6) - vite-plugin-solid: - specifier: ^2.7.0 - version: 2.7.0(solid-js@1.7.8)(vite@4.4.6) - vite-plugin-solid-svg: - specifier: ^0.6.4 - version: 0.6.4(solid-js@1.7.8)(vite@4.4.6) + version: 1.16.0(vite@4.5.0) zx: specifier: ^7.2.3 version: 7.2.3 - apps/example-solidjs-dist: + apps/example-solidjs: dependencies: '@microblink/capture': - specifier: workspace:^ - version: link:../../packages/capture + specifier: workspace:* + version: link:../../packages/capture-published/publish-dir solid-js: - specifier: ^1.7.8 - version: 1.7.8 + specifier: ^1.8.1 + version: 1.8.3 devDependencies: - '@acab/ecsstatic': - specifier: ^0.7.1 - version: 0.7.1 '@mb/utils': specifier: workspace:* version: link:../../packages/utils - '@styled/typescript-styled-plugin': - specifier: ^1.0.0 - version: 1.0.0 '@typescript-eslint/eslint-plugin': - specifier: ^6.1.0 - version: 6.1.0(@typescript-eslint/parser@6.2.0)(eslint@8.45.0)(typescript@5.1.6) + specifier: ^6.9.0 + version: 6.9.0(@typescript-eslint/parser@6.9.0)(eslint@8.52.0)(typescript@5.2.2) concurrently: - specifier: ^8.2.0 - version: 8.2.0 + specifier: ^8.2.2 + version: 8.2.2 eslint: - specifier: ^8.45.0 - version: 8.45.0 + specifier: ^8.52.0 + version: 8.52.0 eslint-config-prettier: - specifier: ^8.8.0 - version: 8.8.0(eslint@8.45.0) + specifier: ^9.0.0 + version: 9.0.0(eslint@8.52.0) eslint-define-config: - specifier: ^1.21.0 - version: 1.21.0 + specifier: ^1.24.1 + version: 1.24.1 eslint-plugin-solid: - specifier: ^0.12.1 - version: 0.12.1(eslint@8.45.0)(typescript@5.1.6) + specifier: ^0.13.0 + version: 0.13.0(eslint@8.52.0)(typescript@5.2.2) mkcert-cli: specifier: ^1.5.0 version: 1.5.0 prettier: - specifier: ^3.0.0 - version: 3.0.0 + specifier: ^3.0.3 + version: 3.0.3 rimraf: - specifier: ^5.0.1 - version: 5.0.1 + specifier: ^5.0.5 + version: 5.0.5 sass: - specifier: ^1.64.0 - version: 1.64.0 + specifier: ^1.69.4 + version: 1.69.4 serve: - specifier: ^14.2.0 - version: 14.2.0 + specifier: ^14.2.1 + version: 14.2.1 tsc-files: specifier: ^1.1.4 - version: 1.1.4(typescript@5.1.6) + version: 1.1.4(typescript@5.2.2) tsconfig: specifier: workspace:* version: link:../../packages/tsconfig typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vite: - specifier: ^4.4.6 - version: 4.4.6(sass@1.64.0) - vite-plugin-full-reload: - specifier: ^1.0.5 - version: 1.0.5(vite@4.4.6) + specifier: ^4.5.0 + version: 4.5.0(@types/node@20.8.8)(sass@1.69.4) vite-plugin-mkcert: specifier: ^1.16.0 - version: 1.16.0(vite@4.4.6) + version: 1.16.0(vite@4.5.0) vite-plugin-solid: - specifier: ^2.7.0 - version: 2.7.0(solid-js@1.7.8)(vite@4.4.6) - vite-plugin-solid-svg: - specifier: ^0.6.4 - version: 0.6.4(solid-js@1.7.8)(vite@4.4.6) + specifier: ^2.7.2 + version: 2.7.2(solid-js@1.8.3)(vite@4.5.0) zx: specifier: ^7.2.3 version: 7.2.3 @@ -258,27 +149,27 @@ importers: apps/example-vanilla-ts: dependencies: '@microblink/capture': - specifier: workspace:^ - version: link:../../packages/capture + specifier: workspace:* + version: link:../../packages/capture-published/publish-dir devDependencies: '@mb/utils': specifier: workspace:* version: link:../../packages/utils rimraf: - specifier: ^5.0.1 - version: 5.0.1 + specifier: ^5.0.5 + version: 5.0.5 tsconfig: specifier: workspace:* version: link:../../packages/tsconfig typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vite: - specifier: ^4.4.6 - version: 4.4.6(sass@1.64.0) + specifier: ^4.5.0 + version: 4.5.0(@types/node@20.8.8)(sass@1.69.4) vite-plugin-mkcert: specifier: ^1.16.0 - version: 1.16.0(vite@4.4.6) + version: 1.16.0(vite@4.5.0) zx: specifier: ^7.2.3 version: 7.2.3 @@ -286,80 +177,45 @@ importers: apps/example-vanilla-ts-headless: dependencies: '@microblink/capture': - specifier: workspace:^ - version: link:../../packages/capture + specifier: workspace:* + version: link:../../packages/capture-published/publish-dir devDependencies: '@mb/utils': specifier: workspace:* version: link:../../packages/utils rimraf: - specifier: ^5.0.1 - version: 5.0.1 + specifier: ^5.0.5 + version: 5.0.5 tsconfig: specifier: workspace:* version: link:../../packages/tsconfig typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vite: - specifier: ^4.4.6 - version: 4.4.6(sass@1.64.0) + specifier: ^4.5.0 + version: 4.5.0(@types/node@20.8.8)(sass@1.69.4) vite-plugin-mkcert: specifier: ^1.16.0 - version: 1.16.0(vite@4.4.6) + version: 1.16.0(vite@4.5.0) zx: specifier: ^7.2.3 version: 7.2.3 - packages/capture: - dependencies: - capture-main: - specifier: workspace:^ - version: link:../capture-main - capture-ui: - specifier: workspace:^ - version: link:../capture-ui - devDependencies: - '@arethetypeswrong/cli': - specifier: ^0.7.0 - version: 0.7.0 - '@mb/utils': - specifier: workspace:^ - version: link:../utils - '@microsoft/api-extractor': - specifier: ^7.36.3 - version: 7.36.3 - concurrently: - specifier: ^8.2.0 - version: 8.2.0 - publint: - specifier: ^0.1.16 - version: 0.1.16 - rimraf: - specifier: ^5.0.1 - version: 5.0.1 - solid-js: - specifier: ^1.7.8 - version: 1.7.8 - tsconfig: - specifier: workspace:* - version: link:../tsconfig - tsx: - specifier: ^3.12.7 - version: 3.12.7 - vite: - specifier: ^4.4.6 - version: 4.4.6(sass@1.64.0) - zx: - specifier: ^7.2.3 - version: 7.2.3 - publishDirectory: npm-publish - packages/capture-main: dependencies: + '@kobalte/core': + specifier: ^0.11.0 + version: 0.11.2(solid-js@1.8.3) '@mb/utils': specifier: workspace:* version: link:../utils + '@motionone/solid': + specifier: ^10.16.4 + version: 10.16.4(solid-js@1.8.3) + '@solid-primitives/keyed': + specifier: ^1.2.0 + version: 1.2.0(solid-js@1.8.3) '@wessberg/connection-observer': specifier: ^1.0.5 version: 1.0.5 @@ -369,215 +225,209 @@ importers: capture-worker: specifier: workspace:* version: link:../capture-worker + clsx: + specifier: ^2.0.0 + version: 2.0.0 comlink: specifier: ^4.4.1 version: 4.4.1 common-tags: specifier: ^1.8.2 version: 1.8.2 + deepmerge: + specifier: ^4.3.1 + version: 4.3.1 + is-plain-obj: + specifier: ^4.1.0 + version: 4.1.0 nanoid: - specifier: ^4.0.2 - version: 4.0.2 + specifier: ^5.0.2 + version: 5.0.2 rvfc-polyfill: - specifier: ^1.0.6 - version: 1.0.6 + specifier: ^1.0.7 + version: 1.0.7 + solid-js: + specifier: ^1.8.1 + version: 1.8.3 + solid-slider: + specifier: ^1.3.15 + version: 1.3.15 solid-zustand: specifier: ^1.7.0 - version: 1.7.0(solid-js@1.7.8)(zustand@4.3.9) + version: 1.7.0(solid-js@1.8.3)(zustand@4.4.4) tiny-invariant: specifier: ^1.3.1 version: 1.3.1 ts-pattern: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.0.5 + version: 5.0.5 ua-parser-js: - specifier: ^1.0.35 - version: 1.0.35 + specifier: ^1.0.36 + version: 1.0.36 zustand: - specifier: ^4.3.9 - version: 4.3.9(react@18.2.0) + specifier: ^4.4.3 + version: 4.4.4(react@18.2.0) devDependencies: + '@acab/ecsstatic': + specifier: ^0.7.1 + version: 0.7.1 + '@styled/typescript-styled-plugin': + specifier: ^1.0.0 + version: 1.0.0 '@types/common-tags': - specifier: ^1.8.1 - version: 1.8.1 + specifier: ^1.8.3 + version: 1.8.3 '@types/emscripten': - specifier: ^1.39.6 - version: 1.39.6 + specifier: ^1.39.9 + version: 1.39.9 '@types/ua-parser-js': - specifier: ^0.7.36 - version: 0.7.36 + specifier: ^0.7.38 + version: 0.7.38 '@typescript-eslint/eslint-plugin': - specifier: ^6.1.0 - version: 6.1.0(@typescript-eslint/parser@6.2.0)(eslint@8.45.0)(typescript@5.1.6) + specifier: ^6.9.0 + version: 6.9.0(@typescript-eslint/parser@6.9.0)(eslint@8.52.0)(typescript@5.2.2) concurrently: - specifier: ^8.2.0 - version: 8.2.0 + specifier: ^8.2.2 + version: 8.2.2 dotenv-cli: - specifier: ^7.2.1 - version: 7.2.1 + specifier: ^7.3.0 + version: 7.3.0 eslint: - specifier: ^8.45.0 - version: 8.45.0 + specifier: ^8.52.0 + version: 8.52.0 eslint-config-prettier: - specifier: ^8.8.0 - version: 8.8.0(eslint@8.45.0) + specifier: ^9.0.0 + version: 9.0.0(eslint@8.52.0) eslint-define-config: - specifier: ^1.21.0 - version: 1.21.0 + specifier: ^1.24.1 + version: 1.24.1 + eslint-plugin-solid: + specifier: ^0.13.0 + version: 0.13.0(eslint@8.52.0)(typescript@5.2.2) + happy-dom: + specifier: ^12.9.1 + version: 12.9.1 rimraf: - specifier: ^5.0.1 - version: 5.0.1 + specifier: ^5.0.5 + version: 5.0.5 + sass: + specifier: ^1.69.4 + version: 1.69.4 tsconfig: specifier: workspace:* version: link:../tsconfig tsx: - specifier: ^3.12.7 - version: 3.12.7 + specifier: ^3.14.0 + version: 3.14.0 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vite: - specifier: ^4.4.6 - version: 4.4.6(sass@1.64.0) + specifier: ^4.5.0 + version: 4.5.0(@types/node@20.8.8)(sass@1.69.4) + vite-plugin-css-injected-by-js: + specifier: ^3.3.0 + version: 3.3.0(vite@4.5.0) + vite-plugin-solid: + specifier: ^2.7.2 + version: 2.7.2(solid-js@1.8.3)(vite@4.5.0) + vite-plugin-solid-svg: + specifier: ^0.7.0 + version: 0.7.0(solid-js@1.8.3)(vite@4.5.0) + vitest: + specifier: ^0.34.6 + version: 0.34.6(happy-dom@12.9.1)(sass@1.69.4) zx: specifier: ^7.2.3 version: 7.2.3 - packages/capture-ui: - dependencies: - '@kobalte/core': - specifier: ^0.9.8 - version: 0.9.8(solid-js@1.7.8) - '@motionone/solid': - specifier: ^10.16.2 - version: 10.16.2(solid-js@1.7.8) - '@solid-primitives/keyed': - specifier: ^1.2.0 - version: 1.2.0(solid-js@1.7.8) - capture-main: - specifier: workspace:* - version: link:../capture-main - clsx: - specifier: ^2.0.0 - version: 2.0.0 - deepmerge: - specifier: ^4.3.1 - version: 4.3.1 - is-plain-object: - specifier: ^5.0.0 - version: 5.0.0 - just-extend: - specifier: ^6.2.0 - version: 6.2.0 - solid-js: - specifier: ^1.7.8 - version: 1.7.8 - solid-slider: - specifier: ^1.3.14 - version: 1.3.14 - solid-zustand: - specifier: ^1.7.0 - version: 1.7.0(solid-js@1.7.8)(zustand@4.3.9) + packages/capture-published: devDependencies: - '@acab/ecsstatic': - specifier: ^0.7.1 - version: 0.7.1 + '@arethetypeswrong/cli': + specifier: ^0.12.2 + version: 0.12.2 '@mb/utils': specifier: workspace:* version: link:../utils - '@styled/typescript-styled-plugin': - specifier: ^1.0.0 - version: 1.0.0 - '@typescript-eslint/eslint-plugin': - specifier: ^6.1.0 - version: 6.1.0(@typescript-eslint/parser@6.2.0)(eslint@8.45.0)(typescript@5.1.6) + '@microsoft/api-extractor': + specifier: ^7.38.0 + version: 7.38.0 + '@types/emscripten': + specifier: ^1.39.9 + version: 1.39.9 + capture-main: + specifier: 1.0.7 + version: link:../capture-main + capture-wasm: + specifier: workspace:* + version: link:../capture-wasm + capture-worker: + specifier: workspace:* + version: link:../capture-worker + comlink: + specifier: ^4.4.1 + version: 4.4.1 concurrently: - specifier: ^8.2.0 - version: 8.2.0 - eslint: - specifier: ^8.45.0 - version: 8.45.0 - eslint-config-prettier: - specifier: ^8.8.0 - version: 8.8.0(eslint@8.45.0) - eslint-define-config: - specifier: ^1.21.0 - version: 1.21.0 - eslint-plugin-solid: - specifier: ^0.12.1 - version: 0.12.1(eslint@8.45.0)(typescript@5.1.6) - mkcert-cli: - specifier: ^1.5.0 - version: 1.5.0 - prettier: - specifier: ^3.0.0 - version: 3.0.0 + specifier: ^8.2.2 + version: 8.2.2 + publint: + specifier: ^0.2.5 + version: 0.2.5 rimraf: - specifier: ^5.0.1 - version: 5.0.1 - sass: - specifier: ^1.64.0 - version: 1.64.0 - serve: - specifier: ^14.2.0 - version: 14.2.0 - tsc-files: - specifier: ^1.1.4 - version: 1.1.4(typescript@5.1.6) + specifier: ^5.0.5 + version: 5.0.5 + solid-js: + specifier: ^1.8.3 + version: 1.8.3 tsconfig: specifier: workspace:* version: link:../tsconfig - typescript: - specifier: ^5.1.6 - version: 5.1.6 + tsx: + specifier: ^3.14.0 + version: 3.14.0 + type-fest: + specifier: ^4.6.0 + version: 4.6.0 vite: - specifier: ^4.4.6 - version: 4.4.6(sass@1.64.0) - vite-plugin-css-injected-by-js: - specifier: ^3.2.1 - version: 3.2.1(vite@4.4.6) - vite-plugin-full-reload: - specifier: ^1.0.5 - version: 1.0.5(vite@4.4.6) - vite-plugin-solid: - specifier: ^2.7.0 - version: 2.7.0(solid-js@1.7.8)(vite@4.4.6) - vite-plugin-solid-svg: - specifier: ^0.6.4 - version: 0.6.4(solid-js@1.7.8)(vite@4.4.6) + specifier: ^4.5.0 + version: 4.5.0(@types/node@20.8.8)(sass@1.69.4) + zustand: + specifier: ^4.4.4 + version: 4.4.4(react@18.2.0) zx: specifier: ^7.2.3 version: 7.2.3 + publishDirectory: publish-dir packages/capture-wasm: devDependencies: '@types/emscripten': - specifier: ^1.39.6 - version: 1.39.6 + specifier: ^1.39.9 + version: 1.39.9 concurrently: - specifier: ^8.2.0 - version: 8.2.0 + specifier: ^8.2.2 + version: 8.2.2 dotenv-cli: - specifier: ^7.2.1 - version: 7.2.1 + specifier: ^7.3.0 + version: 7.3.0 rimraf: - specifier: ^5.0.1 - version: 5.0.1 + specifier: ^5.0.5 + version: 5.0.5 tsconfig: specifier: workspace:* version: link:../tsconfig tsx: - specifier: ^3.12.7 - version: 3.12.7 + specifier: ^3.14.0 + version: 3.14.0 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vite: - specifier: ^4.4.6 - version: 4.4.6(sass@1.64.0) + specifier: ^4.5.0 + version: 4.5.0(@types/node@20.8.8)(sass@1.69.4) zod: - specifier: ^3.21.4 - version: 3.21.4 + specifier: ^3.22.4 + version: 3.22.4 zx: specifier: ^7.2.3 version: 7.2.3 @@ -598,41 +448,41 @@ importers: specifier: workspace:* version: link:../utils '@types/emscripten': - specifier: ^1.39.6 - version: 1.39.6 + specifier: ^1.39.9 + version: 1.39.9 '@typescript-eslint/eslint-plugin': - specifier: ^6.1.0 - version: 6.1.0(@typescript-eslint/parser@6.2.0)(eslint@8.45.0)(typescript@5.1.6) + specifier: ^6.9.0 + version: 6.9.0(@typescript-eslint/parser@6.9.0)(eslint@8.52.0)(typescript@5.2.2) concurrently: - specifier: ^8.2.0 - version: 8.2.0 + specifier: ^8.2.2 + version: 8.2.2 dotenv-cli: - specifier: ^7.2.1 - version: 7.2.1 + specifier: ^7.3.0 + version: 7.3.0 eslint: - specifier: ^8.45.0 - version: 8.45.0 + specifier: ^8.52.0 + version: 8.52.0 eslint-config-prettier: - specifier: ^8.8.0 - version: 8.8.0(eslint@8.45.0) + specifier: ^9.0.0 + version: 9.0.0(eslint@8.52.0) eslint-define-config: - specifier: ^1.21.0 - version: 1.21.0 + specifier: ^1.24.1 + version: 1.24.1 rimraf: - specifier: ^5.0.1 - version: 5.0.1 + specifier: ^5.0.5 + version: 5.0.5 tsconfig: specifier: workspace:* version: link:../tsconfig tsx: - specifier: ^3.12.7 - version: 3.12.7 + specifier: ^3.14.0 + version: 3.14.0 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 vite: - specifier: ^4.4.6 - version: 4.4.6(sass@1.64.0) + specifier: ^4.5.0 + version: 4.5.0(@types/node@20.8.8)(sass@1.69.4) zx: specifier: ^7.2.3 version: 7.2.3 @@ -645,8 +495,8 @@ importers: specifier: ^4.0.3 version: 4.0.3 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.2.2 + version: 5.2.2 zx: specifier: ^7.2.3 version: 7.2.3 @@ -662,14 +512,14 @@ packages: resolution: {integrity: sha512-VsjrhFaFMKRcyJZL6kApYIMSUv3A3VzD82FUauAaTpRWdWFLDbWN1v6fTAbO5H5vX0jAkFaINI+ufMQ1NXld7g==} dependencies: acorn-walk: 8.2.0 - autoprefixer: 10.4.14(postcss@8.4.27) + autoprefixer: 10.4.16(postcss@8.4.31) esbuild: 0.17.19 esbuild-plugin-noexternal: 0.1.6 - magic-string: 0.30.1 - postcss: 8.4.27 - postcss-nested: 6.0.1(postcss@8.4.27) - postcss-nesting: 11.3.0(postcss@8.4.27) - postcss-scss: 4.0.6(postcss@8.4.27) + magic-string: 0.30.5 + postcss: 8.4.31 + postcss-nested: 6.0.1(postcss@8.4.31) + postcss-nesting: 11.3.0(postcss@8.4.31) + postcss-scss: 4.0.9(postcss@8.4.31) dev: true /@ampproject/remapping@2.2.1: @@ -677,67 +527,70 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.20 dev: true - /@andrewbranch/untar.js@1.0.2: - resolution: {integrity: sha512-hL80MHK3b++pEp6K23+Nl5r5D1F19DRagp2ruCBIv4McyCiLKq67vUNvEQY1aGCAKNZ8GxV23n5MhOm7RwO8Pg==} + /@andrewbranch/untar.js@1.0.3: + resolution: {integrity: sha512-Jh15/qVmrLGhkKJBdXlK1+9tY4lZruYjsgkDFj08ZmDiWVBLJcqkok7Z0/R0In+i1rScBpJlSvrTS2Lm41Pbnw==} dev: true - /@arethetypeswrong/cli@0.7.0: - resolution: {integrity: sha512-fNX9abfPkhYPUlfSI38L0TtbJWIIGuMF1TQsnw9GzAeg6FFWEj5HYoI0pRj049p++BgM9/ikRy1RS2BBDkCHXQ==} + /@arethetypeswrong/cli@0.12.2: + resolution: {integrity: sha512-SE4Rqy8LM8zgRLeVXZqFIOg4w4TCDG2AMguuZDDRcrUmVQj7phW0tWJnKwsZtyJ6SdqXTIzWvGYiUJiHg2hb9w==} hasBin: true dependencies: - '@arethetypeswrong/core': 0.7.0 + '@arethetypeswrong/core': 0.12.2 chalk: 4.1.2 cli-table3: 0.6.3 commander: 10.0.1 marked: 5.1.2 marked-terminal: 5.2.0(marked@5.1.2) + node-fetch: 2.7.0 + semver: 7.5.4 transitivePeerDependencies: - encoding dev: true - /@arethetypeswrong/core@0.7.0: - resolution: {integrity: sha512-qwWmIm8YNvmSOgDXEDJUEjd1yGX4bTY0838A+wCTHlOm2n/lFhjauZjAxfKu9DHn2TSGnHahD07tGDPp4I7fSg==} + /@arethetypeswrong/core@0.12.2: + resolution: {integrity: sha512-ez/quGfC6RVg7VrwCgMVreJ01jbkfJQRNxOG7Bpl4YGcPRs45ZE1AzpHiIdzqfwFg9EBVSaewaffrsK5MVbALw==} dependencies: - '@andrewbranch/untar.js': 1.0.2 + '@andrewbranch/untar.js': 1.0.3 fetch-ponyfill: 7.1.0 fflate: 0.7.4 semver: 7.5.4 - typescript: 5.1.6 + typescript: 5.2.2 validate-npm-package-name: 5.0.0 transitivePeerDependencies: - encoding dev: true - /@babel/code-frame@7.22.5: - resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.5 + '@babel/highlight': 7.22.20 + chalk: 2.4.2 dev: true - /@babel/compat-data@7.22.9: - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + /@babel/compat-data@7.23.2: + resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/core@7.22.9: - resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} + /@babel/core@7.23.2: + resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) - '@babel/helpers': 7.22.6 - '@babel/parser': 7.22.7 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 - convert-source-map: 1.9.0 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helpers': 7.23.2 + '@babel/parser': 7.23.0 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 @@ -746,13 +599,13 @@ packages: - supports-color dev: true - /@babel/generator@7.22.9: - resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} + /@babel/generator@7.23.0: + resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 dev: true @@ -760,101 +613,98 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true - /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.9 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 + '@babel/compat-data': 7.23.2 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.22.1 lru-cache: 5.1.1 semver: 6.3.1 dev: true - /@babel/helper-create-class-features-plugin@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==} + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.2 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.9) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 dev: true - /@babel/helper-environment-visitor@7.22.5: - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-function-name@7.22.5: - resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 dev: true /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true - /@babel/helper-member-expression-to-functions@7.22.5: - resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-module-imports@7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true - /@babel/helper-module-imports@7.22.5: - resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true - /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} + /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 dev: true /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-plugin-utils@7.22.5: @@ -862,15 +712,15 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.2): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 dev: true @@ -878,21 +728,21 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-string-parser@7.22.5: @@ -900,170 +750,170 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier@7.22.5: - resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option@7.22.5: - resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers@7.22.6: - resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} + /@babel/helpers@7.23.2: + resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 transitivePeerDependencies: - supports-color dev: true - /@babel/highlight@7.22.5: - resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 dev: true - /@babel/parser@7.22.7: - resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} + /@babel/parser@7.23.0: + resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.9): + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.9): + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} + /@babel/plugin-transform-modules-commonjs@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.9): + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typescript@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==} + /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.2 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) dev: true - /@babel/preset-typescript@7.22.5(@babel/core@7.22.9): - resolution: {integrity: sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==} + /@babel/preset-typescript@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-typescript': 7.22.9(@babel/core@7.22.9) + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.23.2) dev: true - /@babel/runtime@7.22.6: - resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} + /@babel/runtime@7.23.2: + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.13.11 + regenerator-runtime: 0.14.0 dev: true - /@babel/template@7.22.5: - resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 dev: true - /@babel/traverse@7.22.8: - resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} + /@babel/traverse@7.23.2: + resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types@7.22.5: - resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} + /@babel/types@7.23.0: + resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 dev: true /@changesets/apply-release-plan@6.1.4: resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.2 '@changesets/config': 2.3.1 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 @@ -1081,7 +931,7 @@ packages: /@changesets/assemble-release-plan@5.2.4: resolution: {integrity: sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==} dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.2 '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.3.6 '@changesets/types': 5.2.1 @@ -1099,7 +949,7 @@ packages: resolution: {integrity: sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==} hasBin: true dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.2 '@changesets/apply-release-plan': 6.1.4 '@changesets/assemble-release-plan': 5.2.4 '@changesets/changelog-git': 0.1.14 @@ -1114,11 +964,11 @@ packages: '@changesets/types': 5.2.1 '@changesets/write': 0.2.3 '@manypkg/get-packages': 1.1.3 - '@types/is-ci': 3.0.0 - '@types/semver': 7.5.0 + '@types/is-ci': 3.0.3 + '@types/semver': 7.5.4 ansi-colors: 4.1.3 chalk: 2.4.2 - enquirer: 2.3.6 + enquirer: 2.4.1 external-editor: 3.1.0 fs-extra: 7.0.1 human-id: 1.0.2 @@ -1126,12 +976,12 @@ packages: meow: 6.1.1 outdent: 0.5.0 p-limit: 2.3.0 - preferred-pm: 3.0.3 + preferred-pm: 3.1.2 resolve-from: 5.0.0 semver: 7.5.4 spawndamnit: 2.0.0 term-size: 2.2.1 - tty-table: 4.2.1 + tty-table: 4.2.2 dev: true /@changesets/config@2.3.1: @@ -1165,7 +1015,7 @@ packages: /@changesets/get-release-plan@3.0.17: resolution: {integrity: sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==} dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.2 '@changesets/assemble-release-plan': 5.2.4 '@changesets/config': 2.3.1 '@changesets/pre': 1.0.14 @@ -1181,7 +1031,7 @@ packages: /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.2 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -1206,7 +1056,7 @@ packages: /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.2 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -1216,7 +1066,7 @@ packages: /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.2 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -1237,7 +1087,7 @@ packages: /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.2 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 @@ -1260,43 +1110,37 @@ packages: postcss-selector-parser: 6.0.13 dev: true - /@effect/data@0.12.9: - resolution: {integrity: sha512-nuzFo+2LK4yG9H16WRv51MDhUAIuUGhmKYkuSrgCApwwLy2eUATaioQEbbR2rHOTprOiYpbIYKwvPsylEm/Fdw==} - dev: true - - /@effect/io@0.26.2: - resolution: {integrity: sha512-PdqtgmfEw88kX1UKZZvK42dpMZPSCPmdWAAzN17yCzfEsA3HoPjjxo9jLyzfjtUcU+tWO0tF/GY7pcDVLcJZAg==} - dependencies: - '@effect/data': 0.12.9 - dev: true - - /@effect/io@0.27.0: - resolution: {integrity: sha512-3ZUaf6B+aH83HPJ84KTthd4glgrRk6DXj9M915OB9G4cMbbJAwE/709tgamzD2IxcfSlqPowtvx73Cs4N7Ywrw==} - dependencies: - '@effect/data': 0.12.9 + /@effect/data@0.17.1: + resolution: {integrity: sha512-QCYkLE5Y5Dm5Yax5R3GmW4ZIgTx7W+kSZ7yq5eqQ/mFWa8i4yxbLuu8cudqzdeZtRtTGZKlhDxfFfgVtMywXJg==} dev: true - /@effect/match@0.24.5: - resolution: {integrity: sha512-mMoQLGt8s0AmXQR1yUTdBCbdzNIn8d5Ujf1o0T4mldiap4/eq3pf8cvyQm8dHK1Y8KyT4dA2ukJq56rSMIBZXA==} + /@effect/io@0.38.0(@effect/data@0.17.1): + resolution: {integrity: sha512-qlVC9ASxNC+L2NKX5qOV9672CE5wWizfwBSFaX2XLI7CC118WRvohCTIPQ52n50Bj5TmR20+na+U9C7e4VkqzA==} + peerDependencies: + '@effect/data': ^0.17.1 dependencies: - '@effect/data': 0.12.9 - '@effect/schema': 0.20.3 + '@effect/data': 0.17.1 dev: true - /@effect/schema@0.20.3: - resolution: {integrity: sha512-pjJW9QkHZd2/fq7Bhd6pAOidMJ0OUODOeUlesPDK0jpo62AaU9g+IGXt3v5NU8rXSX77igZgfK08XhmofwHn0A==} + /@effect/match@0.32.0(@effect/data@0.17.1)(@effect/schema@0.33.1): + resolution: {integrity: sha512-04QfnIgCcMnnNbGxTv2xa9/7q1c5kgpsBodqTUZ8eX86A/EdE8Czz+JkVarG00/xE+nYhQLXOXCN9Zj+dtqVkQ==} + peerDependencies: + '@effect/data': ^0.17.1 + '@effect/schema': ^0.33.0 dependencies: - '@effect/data': 0.12.9 - '@effect/io': 0.26.2 - fast-check: 3.11.0 + '@effect/data': 0.17.1 + '@effect/schema': 0.33.1(@effect/data@0.17.1)(@effect/io@0.38.0) dev: true - /@effect/schema@0.21.0: - resolution: {integrity: sha512-IFB6hnwuTzHKaMGrAuzp0LBIIkPtW8gaXXQAik/h7ZnPpE8sOkSWKyDHuD4lpOqgsFp1G55NobVKpJUPcL8Onw==} + /@effect/schema@0.33.1(@effect/data@0.17.1)(@effect/io@0.38.0): + resolution: {integrity: sha512-h+fQInui4q3we8fegAygL0Cs5B2DD/+oC3JWthOh8eLcbKkbYM9smCD/PsHuyQ+BaeWiSP5JdvREGlP4Sg+Ysw==} + peerDependencies: + '@effect/data': ^0.17.1 + '@effect/io': ^0.38.0 dependencies: - '@effect/data': 0.12.9 - '@effect/io': 0.27.0 - fast-check: 3.11.0 + '@effect/data': 0.17.1 + '@effect/io': 0.38.0(@effect/data@0.17.1) + fast-check: 3.13.2 dev: true /@emmetio/abbreviation@2.3.3: @@ -1315,27 +1159,6 @@ packages: resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} dev: true - /@esbuild-kit/cjs-loader@2.4.2: - resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} - dependencies: - '@esbuild-kit/core-utils': 3.1.0 - get-tsconfig: 4.6.2 - dev: true - - /@esbuild-kit/core-utils@3.1.0: - resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} - dependencies: - esbuild: 0.17.19 - source-map-support: 0.5.21 - dev: true - - /@esbuild-kit/esm-loader@2.5.5: - resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} - dependencies: - '@esbuild-kit/core-utils': 3.1.0 - get-tsconfig: 4.6.2 - dev: true - /@esbuild/android-arm64@0.17.19: resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} @@ -1345,8 +1168,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.18.17: - resolution: {integrity: sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==} + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -1363,8 +1186,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.18.17: - resolution: {integrity: sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==} + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -1381,8 +1204,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.18.17: - resolution: {integrity: sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==} + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -1399,8 +1222,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.18.17: - resolution: {integrity: sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==} + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -1417,8 +1240,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.18.17: - resolution: {integrity: sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==} + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -1435,8 +1258,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.18.17: - resolution: {integrity: sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==} + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -1453,8 +1276,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.18.17: - resolution: {integrity: sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==} + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -1471,8 +1294,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.18.17: - resolution: {integrity: sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==} + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -1489,8 +1312,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.18.17: - resolution: {integrity: sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==} + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -1507,8 +1330,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.18.17: - resolution: {integrity: sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==} + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -1525,8 +1348,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.18.17: - resolution: {integrity: sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==} + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -1543,8 +1366,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.18.17: - resolution: {integrity: sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==} + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -1561,8 +1384,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.18.17: - resolution: {integrity: sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==} + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -1579,8 +1402,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.18.17: - resolution: {integrity: sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==} + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -1597,8 +1420,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.18.17: - resolution: {integrity: sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==} + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -1615,8 +1438,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.18.17: - resolution: {integrity: sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==} + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -1633,8 +1456,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.18.17: - resolution: {integrity: sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==} + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -1651,8 +1474,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.18.17: - resolution: {integrity: sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==} + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -1669,8 +1492,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.18.17: - resolution: {integrity: sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==} + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -1687,8 +1510,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.18.17: - resolution: {integrity: sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==} + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -1705,8 +1528,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.18.17: - resolution: {integrity: sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==} + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -1723,8 +1546,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.18.17: - resolution: {integrity: sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==} + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1732,29 +1555,29 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.52.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.45.0 - eslint-visitor-keys: 3.4.1 + eslint: 8.52.0 + eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.6.2: - resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.0: - resolution: {integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==} + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.20.0 + globals: 13.23.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -1764,60 +1587,67 @@ packages: - supports-color dev: true - /@eslint/js@8.44.0: - resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} + /@eslint/js@8.52.0: + resolution: {integrity: sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@floating-ui/core@1.3.1: - resolution: {integrity: sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g==} + /@floating-ui/core@1.5.0: + resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==} + dependencies: + '@floating-ui/utils': 0.1.6 dev: false - /@floating-ui/dom@1.4.5: - resolution: {integrity: sha512-96KnRWkRnuBSSFbj0sFGwwOUd8EkiecINVl0O9wiZlZ64EkpyAOG3Xc2vKKNJmru0Z7RqWNymA+6b8OZqjgyyw==} + /@floating-ui/dom@1.5.3: + resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} dependencies: - '@floating-ui/core': 1.3.1 + '@floating-ui/core': 1.5.0 + '@floating-ui/utils': 0.1.6 dev: false - /@formatjs/ecma402-abstract@1.17.0: - resolution: {integrity: sha512-6ueQTeJZtwKjmh23bdkq/DMqH4l4bmfvtQH98blOSbiXv/OUiyijSW6jU22IT8BNM1ujCaEvJfTtyCYVH38EMQ==} + /@floating-ui/utils@0.1.6: + resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + dev: false + + /@formatjs/ecma402-abstract@1.17.2: + resolution: {integrity: sha512-k2mTh0m+IV1HRdU0xXM617tSQTi53tVR2muvYOsBeYcUgEAyxV1FOC7Qj279th3fBVQ+Dj6muvNJZcHSPNdbKg==} dependencies: - '@formatjs/intl-localematcher': 0.4.0 - tslib: 2.6.1 + '@formatjs/intl-localematcher': 0.4.2 + tslib: 2.6.2 dev: false /@formatjs/fast-memoize@2.2.0: resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} dependencies: - tslib: 2.6.1 + tslib: 2.6.2 dev: false - /@formatjs/icu-messageformat-parser@2.6.0: - resolution: {integrity: sha512-yT6at0qc0DANw9qM/TU8RZaCtfDXtj4pZM/IC2WnVU80yAcliS3KVDiuUt4jSQAeFL9JS5bc2hARnFmjPdA6qw==} + /@formatjs/icu-messageformat-parser@2.7.0: + resolution: {integrity: sha512-7uqC4C2RqOaBQtcjqXsSpGRYVn+ckjhNga5T/otFh6MgxRrCJQqvjfbrGLpX1Lcbxdm5WH3Z2WZqt1+Tm/cn/Q==} dependencies: - '@formatjs/ecma402-abstract': 1.17.0 - '@formatjs/icu-skeleton-parser': 1.6.0 - tslib: 2.6.1 + '@formatjs/ecma402-abstract': 1.17.2 + '@formatjs/icu-skeleton-parser': 1.6.2 + tslib: 2.6.2 dev: false - /@formatjs/icu-skeleton-parser@1.6.0: - resolution: {integrity: sha512-eMmxNpoX/J1IPUjPGSZwo0Wh+7CEvdEMddP2Jxg1gQJXfGfht/FdW2D5XDFj3VMbOTUQlDIdZJY7uC6O6gjPoA==} + /@formatjs/icu-skeleton-parser@1.6.2: + resolution: {integrity: sha512-VtB9Slo4ZL6QgtDFJ8Injvscf0xiDd4bIV93SOJTBjUF4xe2nAWOoSjLEtqIG+hlIs1sNrVKAaFo3nuTI4r5ZA==} dependencies: - '@formatjs/ecma402-abstract': 1.17.0 - tslib: 2.6.1 + '@formatjs/ecma402-abstract': 1.17.2 + tslib: 2.6.2 dev: false - /@formatjs/intl-localematcher@0.4.0: - resolution: {integrity: sha512-bRTd+rKomvfdS4QDlVJ6TA/Jx1F2h/TBVO5LjvhQ7QPPHp19oPNMIum7W2CMEReq/zPxpmCeB31F9+5gl/qtvw==} + /@formatjs/intl-localematcher@0.4.2: + resolution: {integrity: sha512-BGdtJFmaNJy5An/Zan4OId/yR9Ih1OojFjcduX/xOvq798OgWSyDtd6Qd5jqJXwJs1ipe4Fxu9+cshic5Ox2tA==} dependencies: - tslib: 2.6.1 + tslib: 2.6.2 dev: false - /@humanwhocodes/config-array@0.11.10: - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 1.2.1 + '@humanwhocodes/object-schema': 2.0.1 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -1829,27 +1659,27 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true - /@internationalized/date@3.3.0: - resolution: {integrity: sha512-qfRd7jCIgUjabI8RxeAsxhLDRS1u8eUPX96GB5uBp1Tpm6YY6dVveE7YwsTEV6L4QOp5LKFirFHHGsL/XQwJIA==} + /@internationalized/date@3.5.0: + resolution: {integrity: sha512-nw0Q+oRkizBWMioseI8+2TeUPEyopJVz5YxoYVzR0W1v+2YytiYah7s/ot35F149q/xAg4F1gT/6eTd+tsUpFQ==} dependencies: - '@swc/helpers': 0.5.1 + '@swc/helpers': 0.5.3 dev: false /@internationalized/message@3.1.1: resolution: {integrity: sha512-ZgHxf5HAPIaR0th+w0RUD62yF6vxitjlprSxmLJ1tam7FOekqRSDELMg4Cr/DdszG5YLsp5BG3FgHgqquQZbqw==} dependencies: - '@swc/helpers': 0.5.1 - intl-messageformat: 10.5.0 + '@swc/helpers': 0.5.3 + intl-messageformat: 10.5.4 dev: false - /@internationalized/number@3.2.1: - resolution: {integrity: sha512-hK30sfBlmB1aIe3/OwAPg9Ey0DjjXvHEiGVhNaOiBJl31G0B6wMaX8BN3ibzdlpyRNE9p7X+3EBONmxtJO9Yfg==} + /@internationalized/number@3.3.0: + resolution: {integrity: sha512-PuxgnKE5NJMOGKUcX1QROo8jq7sW7UWLrL5B6Rfe8BdWgU/be04cVvLyCeALD46vvbAv3d1mUvyHav/Q9a237g==} dependencies: - '@swc/helpers': 0.5.1 + '@swc/helpers': 0.5.3 dev: false /@isaacs/cliui@8.0.2: @@ -1864,17 +1694,24 @@ packages: wrap-ansi-cjs: /wrap-ansi@7.0.0 dev: true + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.20 dev: true - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} dev: true @@ -1883,52 +1720,49 @@ packages: engines: {node: '>=6.0.0'} dev: true - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true - /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@kobalte/core@0.9.8(solid-js@1.7.8): - resolution: {integrity: sha512-X2ZONF02MHl5eJ5gElwzmYjW1ss7DxA70Vol1pl+P3HXXru+Dc7yriBjfrvwLiuO86+qLulCvR0ni76tk8n17w==} + /@kobalte/core@0.11.2(solid-js@1.8.3): + resolution: {integrity: sha512-B19TvpmR0E8n7LJqopF0lbMayBErnWJ5MlTTnrgVAFU1up/2Bo1O6ldTK1c5NikmpppzIK2A8ovUwIhRqw/3Uw==} peerDependencies: - solid-js: ^1.7.3 + solid-js: ^1.7.11 dependencies: - '@floating-ui/dom': 1.4.5 - '@internationalized/date': 3.3.0 + '@floating-ui/dom': 1.5.3 + '@internationalized/date': 3.5.0 '@internationalized/message': 3.1.1 - '@internationalized/number': 3.2.1 - '@kobalte/utils': 0.7.2(solid-js@1.7.8) - solid-js: 1.7.8 + '@internationalized/number': 3.3.0 + '@kobalte/utils': 0.9.0(solid-js@1.8.3) + solid-js: 1.8.3 dev: false - /@kobalte/utils@0.7.2(solid-js@1.7.8): - resolution: {integrity: sha512-ZdINbHemz+jnixJ63VFi9wUEHEMAsP7iDGEADciKdSKrK4bDuccDw5th1O+5/PykfHqFwSI++JhhUpOd+iZ5jg==} + /@kobalte/utils@0.9.0(solid-js@1.8.3): + resolution: {integrity: sha512-TYVCpQcpqo1+0HBn3NXoGEBzxd4tH6Um1oc07nrYw1V7Qq0qbMaYAOnfBc1qhlh7sGV4XZldmb0j13Of0FrZQg==} peerDependencies: - solid-js: ^1.7.3 - dependencies: - '@solid-primitives/event-listener': 2.2.13(solid-js@1.7.8) - '@solid-primitives/keyed': 1.2.0(solid-js@1.7.8) - '@solid-primitives/media': 2.2.3(solid-js@1.7.8) - '@solid-primitives/props': 3.1.6(solid-js@1.7.8) - '@solid-primitives/refs': 1.0.4(solid-js@1.7.8) - '@solid-primitives/utils': 6.2.0(solid-js@1.7.8) - solid-js: 1.7.8 + solid-js: ^1.7.11 + dependencies: + '@solid-primitives/event-listener': 2.3.0(solid-js@1.8.3) + '@solid-primitives/keyed': 1.2.0(solid-js@1.8.3) + '@solid-primitives/map': 0.4.8(solid-js@1.8.3) + '@solid-primitives/media': 2.2.5(solid-js@1.8.3) + '@solid-primitives/props': 3.1.8(solid-js@1.8.3) + '@solid-primitives/refs': 1.0.5(solid-js@1.8.3) + '@solid-primitives/utils': 6.2.1(solid-js@1.8.3) + solid-js: 1.8.3 dev: false /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.2 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -1937,7 +1771,7 @@ packages: /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.2 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -1945,29 +1779,29 @@ packages: read-yaml-file: 1.1.0 dev: true - /@microsoft/api-extractor-model@7.27.5: - resolution: {integrity: sha512-9/tBzYMJitR+o+zkPr1lQh2+e8ClcaTF6eZo7vZGDqRt2O5XmXWPbYJZmxyM3wb5at6lfJNEeGZrQXLjsQ0Nbw==} + /@microsoft/api-extractor-model@7.28.2: + resolution: {integrity: sha512-vkojrM2fo3q4n4oPh4uUZdjJ2DxQ2+RnDQL/xhTWSRUNPF6P4QyrvY357HBxbnltKcYu+nNNolVqc6TIGQ73Ig==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.59.6 + '@rushstack/node-core-library': 3.61.0 transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.36.3: - resolution: {integrity: sha512-u0H6362AQq+r55X8drHx4npgkrCfJnMzRRHfQo8PMNKB8TcBnrTLfXhXWi+xnTM6CzlU/netEN8c4bq581Rnrg==} + /@microsoft/api-extractor@7.38.0: + resolution: {integrity: sha512-e1LhZYnfw+JEebuY2bzhw0imDCl1nwjSThTrQqBXl40hrVo6xm3j/1EpUr89QyzgjqmAwek2ZkIVZbrhaR+cqg==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.27.5 + '@microsoft/api-extractor-model': 7.28.2 '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.59.6 - '@rushstack/rig-package': 0.4.0 - '@rushstack/ts-command-line': 4.15.1 + '@rushstack/node-core-library': 3.61.0 + '@rushstack/rig-package': 0.5.1 + '@rushstack/ts-command-line': 4.16.1 colors: 1.2.5 lodash: 4.17.21 - resolve: 1.22.2 + resolve: 1.22.8 semver: 7.5.4 source-map: 0.6.1 typescript: 5.0.4 @@ -1988,64 +1822,64 @@ packages: resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} dev: true - /@motionone/animation@10.15.1: - resolution: {integrity: sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==} + /@motionone/animation@10.16.3: + resolution: {integrity: sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g==} dependencies: - '@motionone/easing': 10.15.1 - '@motionone/types': 10.15.1 - '@motionone/utils': 10.15.1 - tslib: 2.6.1 + '@motionone/easing': 10.16.3 + '@motionone/types': 10.16.3 + '@motionone/utils': 10.16.3 + tslib: 2.6.2 dev: false - /@motionone/dom@10.16.2: - resolution: {integrity: sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg==} + /@motionone/dom@10.16.4: + resolution: {integrity: sha512-HPHlVo/030qpRj9R8fgY50KTN4Ko30moWRTA3L3imrsRBmob93cTYmodln49HYFbQm01lFF7X523OkKY0DX6UA==} dependencies: - '@motionone/animation': 10.15.1 - '@motionone/generators': 10.15.1 - '@motionone/types': 10.15.1 - '@motionone/utils': 10.15.1 + '@motionone/animation': 10.16.3 + '@motionone/generators': 10.16.4 + '@motionone/types': 10.16.3 + '@motionone/utils': 10.16.3 hey-listen: 1.0.8 - tslib: 2.6.1 + tslib: 2.6.2 dev: false - /@motionone/easing@10.15.1: - resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} + /@motionone/easing@10.16.3: + resolution: {integrity: sha512-HWTMZbTmZojzwEuKT/xCdvoMPXjYSyQvuVM6jmM0yoGU6BWzsmYMeB4bn38UFf618fJCNtP9XeC/zxtKWfbr0w==} dependencies: - '@motionone/utils': 10.15.1 - tslib: 2.6.1 + '@motionone/utils': 10.16.3 + tslib: 2.6.2 dev: false - /@motionone/generators@10.15.1: - resolution: {integrity: sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==} + /@motionone/generators@10.16.4: + resolution: {integrity: sha512-geFZ3w0Rm0ZXXpctWsSf3REGywmLLujEjxPYpBR0j+ymYwof0xbV6S5kGqqsDKgyWKVWpUInqQYvQfL6fRbXeg==} dependencies: - '@motionone/types': 10.15.1 - '@motionone/utils': 10.15.1 - tslib: 2.6.1 + '@motionone/types': 10.16.3 + '@motionone/utils': 10.16.3 + tslib: 2.6.2 dev: false - /@motionone/solid@10.16.2(solid-js@1.7.8): - resolution: {integrity: sha512-0bl1KRDWc6BRcKXzRZR2KdRzIIN86SfSe8mcfKPwHYQDzdOEohRcYUsDaYlwWuwU07VCngOHZEPgFCofDJ80zw==} + /@motionone/solid@10.16.4(solid-js@1.8.3): + resolution: {integrity: sha512-xS3vDhWgTB7xdSYnOTs69Ai09WWjuG6bbz2E+NjP7DswD3X2jLZNNTFmf8GTGhj7UeFHiZgtERIjvpGgZTuEiQ==} peerDependencies: solid-js: ^1.5.0 dependencies: - '@motionone/dom': 10.16.2 - '@motionone/utils': 10.15.1 - '@solid-primitives/props': 3.1.6(solid-js@1.7.8) - '@solid-primitives/refs': 1.0.4(solid-js@1.7.8) - '@solid-primitives/transition-group': 1.0.2(solid-js@1.7.8) - solid-js: 1.7.8 + '@motionone/dom': 10.16.4 + '@motionone/utils': 10.16.3 + '@solid-primitives/props': 3.1.8(solid-js@1.8.3) + '@solid-primitives/refs': 1.0.5(solid-js@1.8.3) + '@solid-primitives/transition-group': 1.0.3(solid-js@1.8.3) + solid-js: 1.8.3 dev: false - /@motionone/types@10.15.1: - resolution: {integrity: sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==} + /@motionone/types@10.16.3: + resolution: {integrity: sha512-W4jkEGFifDq73DlaZs3HUfamV2t1wM35zN/zX7Q79LfZ2sc6C0R1baUHZmqc/K5F3vSw3PavgQ6HyHLd/MXcWg==} dev: false - /@motionone/utils@10.15.1: - resolution: {integrity: sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==} + /@motionone/utils@10.16.3: + resolution: {integrity: sha512-WNWDksJIxQkaI9p9Z9z0+K27xdqISGNFy1SsWVGaiedTHq0iaT6iZujby8fT/ZnZxj1EOaxJtSfUPCFNU5CRoA==} dependencies: - '@motionone/types': 10.15.1 + '@motionone/types': 10.16.3 hey-listen: 1.0.8 - tslib: 2.6.1 + tslib: 2.6.2 dev: false /@nodelib/fs.scandir@2.1.5: @@ -2109,8 +1943,8 @@ packages: - encoding dev: true - /@octokit/openapi-types@18.0.0: - resolution: {integrity: sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==} + /@octokit/openapi-types@18.1.1: + resolution: {integrity: sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==} dev: true /@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4): @@ -2159,7 +1993,7 @@ packages: '@octokit/request-error': 3.0.3 '@octokit/types': 9.3.2 is-plain-object: 5.0.0 - node-fetch: 2.6.12 + node-fetch: 2.7.0 universal-user-agent: 6.0.0 transitivePeerDependencies: - encoding @@ -2184,13 +2018,13 @@ packages: /@octokit/types@10.0.0: resolution: {integrity: sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==} dependencies: - '@octokit/openapi-types': 18.0.0 + '@octokit/openapi-types': 18.1.1 dev: true /@octokit/types@9.3.2: resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} dependencies: - '@octokit/openapi-types': 18.0.0 + '@octokit/openapi-types': 18.1.1 dev: true /@pkgjs/parseargs@0.11.0: @@ -2200,8 +2034,8 @@ packages: dev: true optional: true - /@rushstack/node-core-library@3.59.6: - resolution: {integrity: sha512-bMYJwNFfWXRNUuHnsE9wMlW/mOB4jIwSUkRKtu02CwZhQdmzMsUbxE0s1xOLwTpNIwlzfW/YT7OnOHgDffLgYg==} + /@rushstack/node-core-library@3.61.0: + resolution: {integrity: sha512-tdOjdErme+/YOu4gPed3sFS72GhtWCgNV9oDsHDnoLY5oDfwjKUc9Z+JOZZ37uAxcm/OCahDHfuu2ugqrfWAVQ==} peerDependencies: '@types/node': '*' peerDependenciesMeta: @@ -2212,20 +2046,20 @@ packages: fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.22.2 + resolve: 1.22.8 semver: 7.5.4 z-schema: 5.0.5 dev: true - /@rushstack/rig-package@0.4.0: - resolution: {integrity: sha512-FnM1TQLJYwSiurP6aYSnansprK5l8WUK8VG38CmAaZs29ZeL1msjK0AP1VS4ejD33G0kE/2cpsPsS9jDenBMxw==} + /@rushstack/rig-package@0.5.1: + resolution: {integrity: sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==} dependencies: - resolve: 1.22.2 + resolve: 1.22.8 strip-json-comments: 3.1.1 dev: true - /@rushstack/ts-command-line@4.15.1: - resolution: {integrity: sha512-EL4jxZe5fhb1uVL/P/wQO+Z8Rc8FMiWJ1G7VgnPDvdIt5GVjRfK7vwzder1CZQiX3x0PY6uxENYLNGTFd1InRQ==} + /@rushstack/ts-command-line@4.16.1: + resolution: {integrity: sha512-+OCsD553GYVLEmz12yiFjMOzuPeCiZ3f8wTiFHL30ZVXexTyPmgjwXEhg2K2P0a2lVf+8YBy7WtPoflB2Fp8/A==} dependencies: '@types/argparse': 1.0.38 argparse: 1.0.10 @@ -2233,101 +2067,123 @@ packages: string-argv: 0.3.2 dev: true - /@solid-primitives/event-listener@2.2.13(solid-js@1.7.8): - resolution: {integrity: sha512-8GtVEq0ECZoa5Klo1jjfGPfwg0zVJ8TNnNkWu8FqRkh0CkhbhCVJAKwjleem9K/qL6zUDfJihLjhqGBTBbb+8w==} + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@solid-primitives/event-listener@2.3.0(solid-js@1.8.3): + resolution: {integrity: sha512-0DS7DQZvCExWSpurVZC9/wjI8RmkhuOtWOy6Pp1Woq9ElMT9/bfjNpkwXsOwisLpcTqh9eUs17kp7jtpWcC20w==} peerDependencies: solid-js: ^1.6.12 dependencies: - '@solid-primitives/utils': 6.2.0(solid-js@1.7.8) - solid-js: 1.7.8 + '@solid-primitives/utils': 6.2.1(solid-js@1.8.3) + solid-js: 1.8.3 dev: false - /@solid-primitives/keyed@1.2.0(solid-js@1.7.8): + /@solid-primitives/keyed@1.2.0(solid-js@1.8.3): resolution: {integrity: sha512-0DuTeJdxWjCTu73XnDZs24JzfXckBnpvCfQ6Mf/kTPKkMZJh7tjkBnZEk48ckrE9xmwat9stIdfrBmZctsepIw==} peerDependencies: solid-js: ^1.6.12 dependencies: - solid-js: 1.7.8 + solid-js: 1.8.3 + dev: false + + /@solid-primitives/map@0.4.8(solid-js@1.8.3): + resolution: {integrity: sha512-p9zhIaIWOQVxLaUEjg6nzrBLZUOzozJFHatdKqISSIq7iJhVXX1M1MPzDHHqKyJw/nSENoKgvZehnG3HErnamw==} + peerDependencies: + solid-js: ^1.6.12 + dependencies: + '@solid-primitives/trigger': 1.0.8(solid-js@1.8.3) + solid-js: 1.8.3 dev: false - /@solid-primitives/media@2.2.3(solid-js@1.7.8): - resolution: {integrity: sha512-xhKaTJjH6e65OL706/hA38WWitafbJCm/Zpv7qAn4cy/cgxZ39Cl0bPdYzZhUlkJvTt8YVT0IBcOBLKlJVaPRg==} + /@solid-primitives/media@2.2.5(solid-js@1.8.3): + resolution: {integrity: sha512-wTESNFteSwOZsNIBPLMIVLuOHIIzt2AIZdaCYYxfsJIr/xjDqSomlmdFlAmxfJD3ondO7fwtWfc0rcmAvjoPCA==} peerDependencies: solid-js: ^1.6.12 dependencies: - '@solid-primitives/event-listener': 2.2.13(solid-js@1.7.8) - '@solid-primitives/rootless': 1.4.1(solid-js@1.7.8) - '@solid-primitives/static-store': 0.0.4(solid-js@1.7.8) - '@solid-primitives/utils': 6.2.0(solid-js@1.7.8) - solid-js: 1.7.8 + '@solid-primitives/event-listener': 2.3.0(solid-js@1.8.3) + '@solid-primitives/rootless': 1.4.2(solid-js@1.8.3) + '@solid-primitives/static-store': 0.0.5(solid-js@1.8.3) + '@solid-primitives/utils': 6.2.1(solid-js@1.8.3) + solid-js: 1.8.3 dev: false - /@solid-primitives/props@3.1.6(solid-js@1.7.8): - resolution: {integrity: sha512-ChtvXBDxASR+zZgH0ysoBstbVJdqJk6LITb78CScgHd+Uc8C6eaHKLmhNeuVCd36FGAuyj9vylDHe2GhmFlecA==} + /@solid-primitives/props@3.1.8(solid-js@1.8.3): + resolution: {integrity: sha512-38ERNFhl87emUDPRlYvCmlbvEcK2mOJB38SU22YS2QXFDK7TQf/7P46XZacs7oODc/fckhfZTitht71FMEDe2g==} peerDependencies: solid-js: ^1.6.12 dependencies: - '@solid-primitives/utils': 6.2.0(solid-js@1.7.8) - solid-js: 1.7.8 + '@solid-primitives/utils': 6.2.1(solid-js@1.8.3) + solid-js: 1.8.3 dev: false - /@solid-primitives/refs@1.0.4(solid-js@1.7.8): - resolution: {integrity: sha512-BxZKkct0OIyADWIoA9UITm+3G5Xb3IkOa0nZd40SgOK5DtMqpXFIEPUkJ/woPB90WqlM9UvvuiJHUyAjMeAmCw==} + /@solid-primitives/refs@1.0.5(solid-js@1.8.3): + resolution: {integrity: sha512-5hmYmYbm6rs43nMHHozyyUngGA7P7q2WtlaCLJEfmlUJf67GWI1PZmqAiol6m9F37XSMZRuvZLoQ7HA/0q3GYg==} peerDependencies: solid-js: ^1.6.12 dependencies: - '@solid-primitives/utils': 6.2.0(solid-js@1.7.8) - solid-js: 1.7.8 + '@solid-primitives/utils': 6.2.1(solid-js@1.8.3) + solid-js: 1.8.3 dev: false - /@solid-primitives/rootless@1.4.1(solid-js@1.7.8): - resolution: {integrity: sha512-h7VBUk8usD76Eh1a4wT17PcGtIRxGPlLuJ4Mf7roCNu46W5cc9DAoz8M6XebuZWVKeUkML/JuPMZQSV0mLo2Fw==} + /@solid-primitives/rootless@1.4.2(solid-js@1.8.3): + resolution: {integrity: sha512-ynI/2aEOPyc14IKCX6yDBqnsAYCoLbaP9V/jejEWMVKOT2ZdV2ZxdftaLimOpWPpvjyti5DUJIGTOfLaNb7jlg==} peerDependencies: solid-js: ^1.6.12 dependencies: - '@solid-primitives/utils': 6.2.0(solid-js@1.7.8) - solid-js: 1.7.8 + '@solid-primitives/utils': 6.2.1(solid-js@1.8.3) + solid-js: 1.8.3 dev: false - /@solid-primitives/static-store@0.0.4(solid-js@1.7.8): - resolution: {integrity: sha512-NcLtDNA6H+Z9LmqaUe4SKfMx0YbszIMXEqfV15cB34t5XyEeOM5TihYwsVJ/dpkmpHYzflm0SwAL+P9uwyzvWQ==} + /@solid-primitives/static-store@0.0.5(solid-js@1.8.3): + resolution: {integrity: sha512-ssQ+s/wrlFAEE4Zw8GV499yBfvWx7SMm+ZVc11wvao4T5xg9VfXCL9Oa+x4h+vPMvSV/Knv5LrsLiUa+wlJUXQ==} peerDependencies: solid-js: ^1.6.12 dependencies: - '@solid-primitives/utils': 6.2.0(solid-js@1.7.8) - solid-js: 1.7.8 + '@solid-primitives/utils': 6.2.1(solid-js@1.8.3) + solid-js: 1.8.3 dev: false - /@solid-primitives/timer@1.3.7(solid-js@1.7.8): + /@solid-primitives/timer@1.3.7(solid-js@1.8.3): resolution: {integrity: sha512-zS3qA7WVZYsW7+iTdk2M4W1wpMvRhdcMnO23Tcd+nX3YD7eMvjOnO15Oz2mymyfl/OC2ZgM1L5ec66GayEvPwQ==} peerDependencies: solid-js: ^1.6.12 dependencies: - solid-js: 1.7.8 + solid-js: 1.8.3 dev: false - /@solid-primitives/transition-group@1.0.2(solid-js@1.7.8): - resolution: {integrity: sha512-+o3J7TnU0/Sok+LKA0z0wvhim88dpd2eFBk8/05adE6wVypVlME8sKqTMO+xRv8HoT4Kq3sczmvwV07FKg2n+g==} + /@solid-primitives/transition-group@1.0.3(solid-js@1.8.3): + resolution: {integrity: sha512-TnFADZhx9sibdoW5gxkU1QmLabzV2H2OBKYGS2aR5IC61Q/+7v8wlxOJEevxXNbPiRo6qlE3STLU3L9XS8hDbA==} peerDependencies: solid-js: ^1.6.12 dependencies: - solid-js: 1.7.8 + solid-js: 1.8.3 dev: false - /@solid-primitives/utils@4.0.1(solid-js@1.7.8): + /@solid-primitives/trigger@1.0.8(solid-js@1.8.3): + resolution: {integrity: sha512-p9e3FGhCk8sRPxDiCT8vnTE+DOEtrAnJZP4zV0NAV6YGnpV50JATVXNiLjKgyiI/mTIRkWB0+9c5SUbRlqFx6A==} + peerDependencies: + solid-js: ^1.6.12 + dependencies: + '@solid-primitives/utils': 6.2.1(solid-js@1.8.3) + solid-js: 1.8.3 + dev: false + + /@solid-primitives/utils@4.0.1(solid-js@1.8.3): resolution: {integrity: sha512-06fSyBair7ZxCquMjIqJes29aNg65X776TVw4EUN7PBtdWsGUeIZ9F/H4ek7yrDSxaSDaPHeye5knEYsYAq2gA==} peerDependencies: solid-js: ^1.6.0 dependencies: - solid-js: 1.7.8 + solid-js: 1.8.3 dev: false - /@solid-primitives/utils@6.2.0(solid-js@1.7.8): - resolution: {integrity: sha512-T62WlLwKkbmicsw/xpwMQyv9MmZRSaVyutXfS5icc9v0cb8qGMUxRxr5LVvZHYQCZ9DEFboZB0r711xsbVBbeA==} + /@solid-primitives/utils@6.2.1(solid-js@1.8.3): + resolution: {integrity: sha512-TsecNzxiO5bLfzqb4OOuzfUmdOROcssuGqgh5rXMMaasoFZ3GoveUgdY1wcf17frMJM7kCNGNuK34EjErneZkg==} peerDependencies: solid-js: ^1.6.12 dependencies: - solid-js: 1.7.8 + solid-js: 1.8.3 dev: false /@styled/typescript-styled-plugin@1.0.0: @@ -2335,15 +2191,15 @@ packages: dependencies: '@vscode/emmet-helper': 2.9.2 typescript-template-language-service-decorator: 2.3.2 - vscode-css-languageservice: 6.2.6 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.3 + vscode-css-languageservice: 6.2.10 + vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-types: 3.17.5 dev: true - /@swc/helpers@0.5.1: - resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} + /@swc/helpers@0.5.3: + resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==} dependencies: - tslib: 2.6.1 + tslib: 2.6.2 dev: false /@trysound/sax@0.2.0: @@ -2355,162 +2211,138 @@ packages: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} dev: true - /@types/babel__core@7.20.1: - resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} + /@types/babel__core@7.20.3: + resolution: {integrity: sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==} + dependencies: + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + '@types/babel__generator': 7.6.6 + '@types/babel__template': 7.4.3 + '@types/babel__traverse': 7.20.3 + dev: true + + /@types/babel__generator@7.6.6: + resolution: {integrity: sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==} dependencies: - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.20.1 + '@babel/types': 7.23.0 dev: true - /@types/babel__generator@7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + /@types/babel__template@7.4.3: + resolution: {integrity: sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==} dependencies: - '@babel/types': 7.22.5 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 dev: true - /@types/babel__template@7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + /@types/babel__traverse@7.20.3: + resolution: {integrity: sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==} dependencies: - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true - /@types/babel__traverse@7.20.1: - resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} + /@types/chai-subset@1.3.4: + resolution: {integrity: sha512-CCWNXrJYSUIojZ1149ksLl3AN9cmZ5djf+yUoVVV+NuYrtydItQVlL2ZDqyC6M6O9LWRnVf8yYDxbXHO2TfQZg==} dependencies: - '@babel/types': 7.22.5 + '@types/chai': 4.3.9 + dev: true + + /@types/chai@4.3.9: + resolution: {integrity: sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==} dev: true - /@types/common-tags@1.8.1: - resolution: {integrity: sha512-20R/mDpKSPWdJs5TOpz3e7zqbeCNuMCPhV7Yndk9KU2Rbij2r5W4RzwDPkzC+2lzUqXYu9rFzTktCBnDjHuNQg==} + /@types/common-tags@1.8.3: + resolution: {integrity: sha512-v3smfzf7umSwpkJrmlUe+apSv6bVnrIFCeBeprnP4f8lIh6pECZxyD50e8yFwfouIt85TdxN5yXiFwS5fnsS3w==} dev: true - /@types/emscripten@1.39.6: - resolution: {integrity: sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg==} + /@types/emscripten@1.39.9: + resolution: {integrity: sha512-ILdWj4XYtNOqxJaW22NEQx2gJsLfV5ncxYhhGX1a1H1lXl2Ta0gUz7QOnOoF1xQbJwWDjImi8gXN9mKdIf6n9g==} dev: true - /@types/fs-extra@11.0.1: - resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} + /@types/fs-extra@11.0.3: + resolution: {integrity: sha512-sF59BlXtUdzEAL1u0MSvuzWd7PdZvZEtnaVkzX5mjpdWTJ8brG0jUqve3jPCzSzvAKKMHTG8F8o/WMQLtleZdQ==} dependencies: - '@types/jsonfile': 6.1.1 - '@types/node': 18.17.1 + '@types/jsonfile': 6.1.3 + '@types/node': 18.18.6 dev: true - /@types/is-ci@3.0.0: - resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} + /@types/is-ci@3.0.3: + resolution: {integrity: sha512-FdHbjLiN2e8fk9QYQyVYZrK8svUDJpxSaSWLUga8EZS1RGAvvrqM9zbVARBtQuYPeLgnJxM2xloOswPwj1o2cQ==} dependencies: - ci-info: 3.8.0 + ci-info: 3.9.0 dev: true - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + /@types/json-schema@7.0.14: + resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} dev: true - /@types/jsonfile@6.1.1: - resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} + /@types/jsonfile@6.1.3: + resolution: {integrity: sha512-/yqTk2SZ1wIezK0hiRZD7RuSf4B3whFxFamB1kGStv+8zlWScTMcHanzfc0XKWs5vA1TkHeckBlOyM8jxU8nHA==} dependencies: - '@types/node': 18.17.1 + '@types/node': 18.18.6 dev: true - /@types/minimist@1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + /@types/minimist@1.2.4: + resolution: {integrity: sha512-Kfe/D3hxHTusnPNRbycJE1N77WHDsdS4AjUYIzlDzhDrS47NrwuL3YW4VITxwR7KCVpzwgy4Rbj829KSSQmwXQ==} dev: true /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node@18.17.1: - resolution: {integrity: sha512-xlR1jahfizdplZYRU59JlUx9uzF1ARa8jbhM11ccpCJya8kvos5jwdm2ZAgxSCwOl0fq21svP18EVwPBXMQudw==} + /@types/node@18.18.6: + resolution: {integrity: sha512-wf3Vz+jCmOQ2HV1YUJuCWdL64adYxumkrxtc+H1VUQlnQI04+5HtH+qZCOE21lBE7gIrt+CwX2Wv8Acrw5Ak6w==} dev: true - /@types/node@20.4.5: - resolution: {integrity: sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==} + /@types/node@20.8.8: + resolution: {integrity: sha512-YRsdVxq6OaLfmR9Hy816IMp33xOBjfyOgUd77ehqg96CFywxAPbDbXvAsuN2KVg2HOT8Eh6uAfU+l4WffwPVrQ==} + dependencies: + undici-types: 5.25.3 dev: true - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + /@types/normalize-package-data@2.4.3: + resolution: {integrity: sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==} dev: true - /@types/prop-types@15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + /@types/prop-types@15.7.9: + resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==} dev: true - /@types/ps-tree@1.1.2: - resolution: {integrity: sha512-ZREFYlpUmPQJ0esjxoG1fMvB2HNaD3z+mjqdSosZvd3RalncI9NEur73P8ZJz4YQdL64CmV1w0RuqoRUlhQRBw==} + /@types/ps-tree@1.1.4: + resolution: {integrity: sha512-CJyu2BqU/aZN/s8Ili3jiMctqXfTjCaWXirEcjRD8y1lUQZJ8eNohnal8+LXeWFs1VbdAOrCIdgATFsv+lnQ5Q==} dev: true - /@types/react-dom@18.2.7: - resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + /@types/react-dom@18.2.14: + resolution: {integrity: sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==} dependencies: - '@types/react': 18.2.15 + '@types/react': 18.2.32 dev: true - /@types/react@18.2.15: - resolution: {integrity: sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==} + /@types/react@18.2.32: + resolution: {integrity: sha512-F0FVIZQ1x5Gxy/VYJb7XcWvCcHR28Sjwt1dXLspdIatfPq1MVACfnBDwKe6ANLxQ64riIJooXClpUR6oxTiepg==} dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 + '@types/prop-types': 15.7.9 + '@types/scheduler': 0.16.5 csstype: 3.1.2 dev: true - /@types/scheduler@0.16.3: - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - dev: true - - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} - dev: true - - /@types/svgo@2.6.4: - resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} - dependencies: - '@types/node': 20.4.5 + /@types/scheduler@0.16.5: + resolution: {integrity: sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==} dev: true - /@types/ua-parser-js@0.7.36: - resolution: {integrity: sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==} + /@types/semver@7.5.4: + resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} dev: true - /@types/which@3.0.0: - resolution: {integrity: sha512-ASCxdbsrwNfSMXALlC3Decif9rwDMu+80KGp5zI2RLRotfMsTv7fHL8W8VDp24wymzDyIFudhUeSCugrgRFfHQ==} + /@types/ua-parser-js@0.7.38: + resolution: {integrity: sha512-59CA5oavBEWSNLtS/BChj9xntiWMsIf9IytjxmBo9OuZEYuRzRf3K1ARzFPlXTOz5Zm2wXI38AP9RlLqDYMToQ==} dev: true - /@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.1.0 - '@typescript-eslint/type-utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.1.0 - debug: 4.3.4 - eslint: 8.45.0 - graphemer: 1.4.0 - ignore: 5.2.4 - natural-compare: 1.4.0 - natural-compare-lite: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 - transitivePeerDependencies: - - supports-color + /@types/which@3.0.1: + resolution: {integrity: sha512-OJWjr4k8gS1HXuOnCmQbBrQez+xqt/zqfp5PhgbKtsmEFEuojAg23arr+TiTZZ1TORdUF9RKXb/WKEpT1dwgSg==} dev: true - /@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.2.0)(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==} + /@typescript-eslint/eslint-plugin@6.9.0(@typescript-eslint/parser@6.9.0)(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -2520,27 +2352,26 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.2.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.1.0 - '@typescript-eslint/type-utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.1.0 + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.9.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.9.0 + '@typescript-eslint/type-utils': 6.9.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.9.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.9.0 debug: 4.3.4 - eslint: 8.45.0 + eslint: 8.52.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 - natural-compare-lite: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.1.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==} + /@typescript-eslint/parser@6.9.0(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2549,64 +2380,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.1.0 - '@typescript-eslint/types': 6.1.0 - '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.1.0 + '@typescript-eslint/scope-manager': 6.9.0 + '@typescript-eslint/types': 6.9.0 + '@typescript-eslint/typescript-estree': 6.9.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.9.0 debug: 4.3.4 - eslint: 8.45.0 - typescript: 5.1.6 + eslint: 8.52.0 + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.2.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.2.0 - debug: 4.3.4 - eslint: 8.45.0 - typescript: 5.1.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - dev: true - - /@typescript-eslint/scope-manager@6.1.0: - resolution: {integrity: sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.1.0 - '@typescript-eslint/visitor-keys': 6.1.0 - dev: true - - /@typescript-eslint/scope-manager@6.2.0: - resolution: {integrity: sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==} + /@typescript-eslint/scope-manager@6.9.0: + resolution: {integrity: sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/visitor-keys': 6.2.0 + '@typescript-eslint/types': 6.9.0 + '@typescript-eslint/visitor-keys': 6.9.0 dev: true - /@typescript-eslint/type-utils@6.1.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==} + /@typescript-eslint/type-utils@6.9.0(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2615,184 +2409,139 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.9.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.9.0(eslint@8.52.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.45.0 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 + eslint: 8.52.0 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@typescript-eslint/types@6.1.0: - resolution: {integrity: sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==} + /@typescript-eslint/types@6.9.0: + resolution: {integrity: sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/types@6.2.0: - resolution: {integrity: sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==} + /@typescript-eslint/typescript-estree@6.9.0(typescript@5.2.2): + resolution: {integrity: sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==} engines: {node: ^16.0.0 || >=18.0.0} - dev: true - - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@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 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.1.0(typescript@5.1.6): - resolution: {integrity: sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==} + /@typescript-eslint/utils@6.9.0(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/types': 6.1.0 - '@typescript-eslint/visitor-keys': 6.1.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) + '@types/json-schema': 7.0.14 + '@types/semver': 7.5.4 + '@typescript-eslint/scope-manager': 6.9.0 + '@typescript-eslint/types': 6.9.0 + '@typescript-eslint/typescript-estree': 6.9.0(typescript@5.2.2) + eslint: 8.52.0 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 transitivePeerDependencies: - supports-color + - typescript dev: true - /@typescript-eslint/typescript-estree@6.2.0(typescript@5.1.6): - resolution: {integrity: sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==} + /@typescript-eslint/visitor-keys@6.9.0: + resolution: {integrity: sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==} engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true dependencies: - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/visitor-keys': 6.2.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types': 6.9.0 + eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@vitejs/plugin-react@4.1.0(vite@4.5.0): + resolution: {integrity: sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: ^4.2.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) - eslint: 8.45.0 - eslint-scope: 5.1.1 - semver: 7.5.4 + '@babel/core': 7.23.2 + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.23.2) + '@types/babel__core': 7.20.3 + react-refresh: 0.14.0 + vite: 4.5.0(@types/node@20.8.8)(sass@1.69.4) transitivePeerDependencies: - supports-color - - typescript dev: true - /@typescript-eslint/utils@6.1.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + /@vitest/expect@0.34.6: + resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.1.0 - '@typescript-eslint/types': 6.1.0 - '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) - eslint: 8.45.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 + chai: 4.3.10 dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@vitest/runner@0.34.6: + resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.1 + '@vitest/utils': 0.34.6 + p-limit: 4.0.0 + pathe: 1.1.1 dev: true - /@typescript-eslint/visitor-keys@6.1.0: - resolution: {integrity: sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==} - engines: {node: ^16.0.0 || >=18.0.0} + /@vitest/snapshot@0.34.6: + resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} dependencies: - '@typescript-eslint/types': 6.1.0 - eslint-visitor-keys: 3.4.1 + magic-string: 0.30.5 + pathe: 1.1.1 + pretty-format: 29.7.0 dev: true - /@typescript-eslint/visitor-keys@6.2.0: - resolution: {integrity: sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@vitest/spy@0.34.6: + resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} dependencies: - '@typescript-eslint/types': 6.2.0 - eslint-visitor-keys: 3.4.1 + tinyspy: 2.2.0 dev: true - /@vitejs/plugin-react@4.0.3(vite@4.4.6): - resolution: {integrity: sha512-pwXDog5nwwvSIzwrvYYmA2Ljcd/ZNlcsSG2Q9CNDBwnsd55UGAyr2doXtB5j+2uymRCnCfExlznzzSFbBRcoCg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 + /@vitest/utils@0.34.6: + resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} dependencies: - '@babel/core': 7.22.9 - '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.9) - '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.9) - react-refresh: 0.14.0 - vite: 4.4.6(sass@1.64.0) - transitivePeerDependencies: - - supports-color + diff-sequences: 29.6.3 + loupe: 2.3.7 + pretty-format: 29.7.0 dev: true /@vscode/emmet-helper@2.9.2: resolution: {integrity: sha512-MaGuyW+fa13q3aYsluKqclmh62Hgp0BpKIqS66fCxfOaBcVQ1OnMQxRRgQUYnCkxFISAQlkJ0qWWPyXjro1Qrg==} dependencies: - emmet: 2.4.5 + emmet: 2.4.6 jsonc-parser: 2.3.1 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.3 + vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-types: 3.17.5 vscode-uri: 2.1.2 dev: true - /@vscode/l10n@0.0.14: - resolution: {integrity: sha512-/yrv59IEnmh655z1oeDnGcvMYwnEzNzHLgeYcQCkhYX0xBvYWrAuefoiLcPBUkMpJsb46bqQ6Yv4pwTTQ4d3Qg==} + /@vscode/l10n@0.0.16: + resolution: {integrity: sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==} dev: true /@wessberg/connection-observer@1.0.5: @@ -2831,14 +2580,6 @@ packages: hasBin: true dev: true - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: true - /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -2868,11 +2609,11 @@ packages: engines: {node: '>=6'} dev: true - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} + /ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} dependencies: - type-fest: 0.21.3 + type-fest: 1.4.0 dev: true /ansi-escapes@6.2.0: @@ -2906,6 +2647,11 @@ packages: color-convert: 2.0.1 dev: true + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -2944,18 +2690,18 @@ packages: /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 is-array-buffer: 3.0.2 dev: true - /array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} 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.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 is-string: 1.0.7 dev: true @@ -2964,24 +2710,25 @@ packages: engines: {node: '>=8'} dev: true - /array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 dev: true - /arraybuffer.prototype.slice@1.0.1: - resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 - define-properties: 1.2.0 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 dev: true @@ -2991,28 +2738,27 @@ packages: engines: {node: '>=0.10.0'} dev: true - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /autoprefixer@10.4.14(postcss@8.4.27): - resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} + /autoprefixer@10.4.16(postcss@8.4.31): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.9 - caniuse-lite: 1.0.30001517 - fraction.js: 4.2.0 + browserslist: 4.22.1 + caniuse-lite: 1.0.30001554 + fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.27 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true @@ -3021,36 +2767,36 @@ packages: engines: {node: '>= 0.4'} dev: true - /axios@1.4.0(debug@4.3.4): - resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} + /axios@1.5.1(debug@4.3.4): + resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==} dependencies: - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.3(debug@4.3.4) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug dev: true - /babel-plugin-jsx-dom-expressions@0.36.10(@babel/core@7.22.9): - resolution: {integrity: sha512-QA2k/14WGw+RgcGGnEuLWwnu4em6CGhjeXtjvgOYyFHYS2a+CzPeaVQHDOlfuiBcjq/3hWMspHMIMnPEOIzdBg==} + /babel-plugin-jsx-dom-expressions@0.37.2(@babel/core@7.23.2): + resolution: {integrity: sha512-u3VKB+On86cYSLAbw9j0m0X8ZejL4MR7oG7TRlrMQ/y1mauR/ZpM2xkiOPZEUlzHLo1GYGlTdP9s5D3XuA6iSQ==} peerDependencies: '@babel/core': ^7.20.12 dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.2 '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.9) - '@babel/types': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) + '@babel/types': 7.23.0 html-entities: 2.3.3 validate-html-nesting: 1.2.2 dev: true - /babel-preset-solid@1.7.7(@babel/core@7.22.9): - resolution: {integrity: sha512-tdxVzx3kgcIjNXAOmGRbzIhFBPeJjSakiN9yM+IYdL/+LtXNnbGqb0Va5tJb8Sjbk+QVEriovCyuzB5T7jeTvg==} + /babel-preset-solid@1.8.2(@babel/core@7.23.2): + resolution: {integrity: sha512-hEIy4K1CGPQwCekFJ9NV3T92fezS4GQV0SQXEGVe9dyo+7iI7Fjuu6OKIdE5z/S4IfMEL6gCU+1AZ3yK6PnGMg==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.9 - babel-plugin-jsx-dom-expressions: 0.36.10(@babel/core@7.22.9) + '@babel/core': 7.23.2 + babel-plugin-jsx-dom-expressions: 0.37.2(@babel/core@7.23.2) dev: true /balanced-match@1.0.2: @@ -3129,15 +2875,15 @@ packages: wcwidth: 1.0.1 dev: true - /browserslist@4.21.9: - resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + /browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001517 - electron-to-chromium: 1.4.473 + caniuse-lite: 1.0.30001554 + electron-to-chromium: 1.4.566 node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.9) + update-browserslist-db: 1.0.13(browserslist@4.22.1) dev: true /buffer-from@1.1.2: @@ -3162,11 +2908,17 @@ packages: engines: {node: '>= 0.8'} dev: true - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.1 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 dev: true /callsites@3.1.0: @@ -3193,8 +2945,8 @@ packages: engines: {node: '>=14.16'} dev: true - /caniuse-lite@1.0.30001517: - resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} + /caniuse-lite@1.0.30001554: + resolution: {integrity: sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==} dev: true /cardinal@2.1.1: @@ -3205,6 +2957,19 @@ packages: redeyed: 2.1.1 dev: true + /chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + /chalk-template@0.4.0: resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} engines: {node: '>=12'} @@ -3234,11 +2999,6 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true - /chalk@5.2.0: - resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: true - /chalk@5.3.0: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} @@ -3248,6 +3008,12 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -3260,19 +3026,14 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} dev: true - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: true - /cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -3285,8 +3046,15 @@ packages: restore-cursor: 3.1.0 dev: true - /cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + /cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + restore-cursor: 4.0.0 + dev: true + + /cli-spinners@2.9.1: + resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} engines: {node: '>=6'} dev: true @@ -3299,14 +3067,6 @@ packages: '@colors/colors': 1.5.0 dev: true - /cli-truncate@2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} - dependencies: - slice-ansi: 3.0.0 - string-width: 4.2.3 - dev: true - /cli-truncate@3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3390,7 +3150,6 @@ packages: /comlink@4.4.1: resolution: {integrity: sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==} - dev: false /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} @@ -3402,6 +3161,11 @@ packages: engines: {node: '>=16'} dev: true + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + dev: true + /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -3445,8 +3209,8 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /concurrently@8.2.0: - resolution: {integrity: sha512-nnLMxO2LU492mTUj9qX/az/lESonSZu81UznYDoXtz1IQf996ixVqPAgHXwvHiHCAef/7S8HIK+fTFK7Ifk8YA==} + /concurrently@8.2.2: + resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} engines: {node: ^14.13.0 || >=16.0.0} hasBin: true dependencies: @@ -3466,8 +3230,8 @@ packages: engines: {node: '>= 0.6'} dev: true - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true /cosmiconfig@8.2.0: @@ -3497,22 +3261,30 @@ packages: which: 2.0.2 dev: true - /css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: boolbase: 1.0.0 css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 + domhandler: 5.0.3 + domutils: 3.1.0 nth-check: 2.1.1 dev: true - /css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} + /css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 + mdn-data: 2.0.28 + source-map-js: 1.0.2 + dev: true + + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 dev: true /css-what@6.1.0: @@ -3520,17 +3292,21 @@ packages: engines: {node: '>= 6'} dev: true + /css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: true + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true dev: true - /csso@4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} + /csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} dependencies: - css-tree: 1.1.3 + css-tree: 2.2.1 dev: true /csstype@3.1.2: @@ -3567,7 +3343,7 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.23.2 dev: true /debug@2.6.9: @@ -3606,6 +3382,13 @@ packages: engines: {node: '>=0.10.0'} dev: true + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -3626,11 +3409,21 @@ packages: clone: 1.0.4 dev: true - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - has-property-descriptors: 1.0.0 + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 object-keys: 1.1.1 dev: true @@ -3648,6 +3441,11 @@ packages: engines: {node: '>=8'} dev: true + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -3662,35 +3460,35 @@ packages: esutils: 2.0.3 dev: true - /dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 + domhandler: 5.0.3 + entities: 4.5.0 dev: true /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true - /domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 dev: true - /domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} dependencies: - dom-serializer: 1.4.1 + dom-serializer: 2.0.0 domelementtype: 2.3.0 - domhandler: 4.3.1 + domhandler: 5.0.3 dev: true - /dotenv-cli@7.2.1: - resolution: {integrity: sha512-ODHbGTskqRtXAzZapDPvgNuDVQApu4oKX8lZW7Y0+9hKA6le1ZJlyRS687oU9FXjOVEDU/VFV6zI125HzhM1UQ==} + /dotenv-cli@7.3.0: + resolution: {integrity: sha512-314CA4TyK34YEJ6ntBf80eUY+t1XaFLyem1k9P0sX1gn30qThZ5qZr/ZwE318gEnzyYP9yj9HJk6SqwE0upkfw==} hasBin: true dependencies: cross-spawn: 7.0.3 @@ -3717,12 +3515,12 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.473: - resolution: {integrity: sha512-aVfC8+440vGfl06l8HKKn8/PD5jRfSnLkTTD65EFvU46igbpQRri1gxSzW9/+TeUlwYzrXk1sw867T96zlyECA==} + /electron-to-chromium@1.4.566: + resolution: {integrity: sha512-mv+fAy27uOmTVlUULy15U3DVJ+jg+8iyKH1bpwboCRhtDC69GKf1PPTZvEIhCyDr81RFqfxZJYrbgp933a1vtg==} dev: true - /emmet@2.4.5: - resolution: {integrity: sha512-xOiVNINJFh0dMik+KzXSEYbAnFLTnadEzanxj7+F15uIf6avQwu3uPa1wI/8AFtOWKZ8lHg7TjC83wXcPhgOPw==} + /emmet@2.4.6: + resolution: {integrity: sha512-dJfbdY/hfeTyf/Ef7Y7ubLYzkBvPQ912wPaeVYpAxvFxkEBf/+hJu4H6vhAvFN6HlxqedlfVn2x1S44FfQ97pg==} dependencies: '@emmetio/abbreviation': 2.3.3 '@emmetio/css-abbreviation': 2.1.8 @@ -3736,15 +3534,17 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 + strip-ansi: 6.0.1 dev: true - /entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} dev: true /error-ex@1.3.2: @@ -3753,26 +3553,26 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract@1.22.1: - resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.1 + arraybuffer.prototype.slice: 1.0.2 available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.2 es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.1 has-proto: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.5 + hasown: 2.0.0 + internal-slot: 1.0.6 is-array-buffer: 3.0.2 is-callable: 1.2.7 is-negative-zero: 2.0.2 @@ -3781,36 +3581,36 @@ packages: is-string: 1.0.7 is-typed-array: 1.1.12 is-weakref: 1.0.2 - object-inspect: 1.12.3 + object-inspect: 1.13.1 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - safe-array-concat: 1.0.0 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 typed-array-buffer: 1.0.0 typed-array-byte-length: 1.0.0 typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.11 + which-typed-array: 1.1.13 dev: true - /es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 + get-intrinsic: 1.2.2 has-tostringtag: 1.0.0 + hasown: 2.0.0 dev: true - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - has: 1.0.3 + hasown: 2.0.0 dev: true /es-to-primitive@1.2.1: @@ -3856,34 +3656,34 @@ packages: '@esbuild/win32-x64': 0.17.19 dev: true - /esbuild@0.18.17: - resolution: {integrity: sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==} + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.18.17 - '@esbuild/android-arm64': 0.18.17 - '@esbuild/android-x64': 0.18.17 - '@esbuild/darwin-arm64': 0.18.17 - '@esbuild/darwin-x64': 0.18.17 - '@esbuild/freebsd-arm64': 0.18.17 - '@esbuild/freebsd-x64': 0.18.17 - '@esbuild/linux-arm': 0.18.17 - '@esbuild/linux-arm64': 0.18.17 - '@esbuild/linux-ia32': 0.18.17 - '@esbuild/linux-loong64': 0.18.17 - '@esbuild/linux-mips64el': 0.18.17 - '@esbuild/linux-ppc64': 0.18.17 - '@esbuild/linux-riscv64': 0.18.17 - '@esbuild/linux-s390x': 0.18.17 - '@esbuild/linux-x64': 0.18.17 - '@esbuild/netbsd-x64': 0.18.17 - '@esbuild/openbsd-x64': 0.18.17 - '@esbuild/sunos-x64': 0.18.17 - '@esbuild/win32-arm64': 0.18.17 - '@esbuild/win32-ia32': 0.18.17 - '@esbuild/win32-x64': 0.18.17 + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 dev: true /escalade@3.1.1: @@ -3901,47 +3701,47 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@8.8.0(eslint@8.45.0): - resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + /eslint-config-prettier@9.0.0(eslint@8.52.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.45.0 + eslint: 8.52.0 dev: true - /eslint-define-config@1.21.0: - resolution: {integrity: sha512-OKfreV19Nw4yK4UX1CDkv5FXWdzeF+VSROsO28DVi1BrzqOD4a3U71LJqEhcupK65MoLXxARQ0pSg8bDvNPONA==} - engines: {node: ^16.13.0 || >=18.0.0, npm: '>=7.0.0', pnpm: '>= 8.6.0'} + /eslint-define-config@1.24.1: + resolution: {integrity: sha512-o36vBhPSWyIQlHoMqGhhcGmOOm2A2ccBVIdLTG/AWdm9YmjpsLpf+5ntf9LlHR6dduLREgxtGwvwPwSt7vnXJg==} + engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>= 8.6.0'} dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.45.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.52.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.45.0 + eslint: 8.52.0 dev: true - /eslint-plugin-react-refresh@0.4.3(eslint@8.45.0): + /eslint-plugin-react-refresh@0.4.3(eslint@8.52.0): resolution: {integrity: sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==} peerDependencies: eslint: '>=7' dependencies: - eslint: 8.45.0 + eslint: 8.52.0 dev: true - /eslint-plugin-solid@0.12.1(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-fM0sEg9PcS1mcNbWklwc+W/lOv1/XyEwXf53HmFFy4GOA8E3u41h8JW+hc+Vv1m3kh01umKoTalOTET08zKdAQ==} + /eslint-plugin-solid@0.13.0(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-Sutd+DxEGu9+Z9ITtHKXRAClxVe1a6C1XQZSuN8iBsMy0IAVEc6Tca1UYgc7tD2ZrRRjZKB9mohBOaZl5NJLgg==} engines: {node: '>=12.0.0'} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.1.6) - eslint: 8.45.0 + '@typescript-eslint/utils': 6.9.0(eslint@8.52.0)(typescript@5.2.2) + eslint: 8.52.0 is-html: 2.0.0 - jsx-ast-utils: 3.3.4 + jsx-ast-utils: 3.3.5 kebab-case: 1.0.2 known-css-properties: 0.24.0 style-to-object: 0.3.0 @@ -3950,47 +3750,40 @@ packages: - typescript dev: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - - /eslint-scope@7.2.1: - resolution: {integrity: sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==} + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true - /eslint-visitor-keys@3.4.1: - resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.45.0: - resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==} + /eslint@8.52.0: + resolution: {integrity: sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) - '@eslint-community/regexpp': 4.6.2 - '@eslint/eslintrc': 2.1.0 - '@eslint/js': 8.44.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.52.0 + '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.1 - eslint-visitor-keys: 3.4.1 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 @@ -3998,7 +3791,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.20.0 + globals: 13.23.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -4023,7 +3816,7 @@ packages: dependencies: acorn: 8.10.0 acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.1 + eslint-visitor-keys: 3.4.3 dev: true /esprima@4.0.1: @@ -4046,11 +3839,6 @@ packages: estraverse: 5.3.0 dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -4073,6 +3861,10 @@ packages: through: 2.3.8 dev: true + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: true + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -4088,18 +3880,18 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} dependencies: cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 + get-stream: 8.0.1 + human-signals: 5.0.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 + signal-exit: 4.1.0 strip-final-newline: 3.0.0 dev: true @@ -4116,11 +3908,11 @@ packages: tmp: 0.0.33 dev: true - /fast-check@3.11.0: - resolution: {integrity: sha512-H2tctb7AGfFQfz+DEr3UWhJ3s47LXsGp5g3jeJr5tHjnf4xUvpArIqiwcDmL2EXiv+auLHIpF5MqaIpIKvpxiA==} + /fast-check@3.13.2: + resolution: {integrity: sha512-ouTiFyeMoqmNg253xqy4NSacr5sHxH6pZpLOaHgaAdgZxFWdtsfxExwolpveoAE9CJdV+WYjqErNGef6SqA5Mg==} engines: {node: '>=8.0.0'} dependencies: - pure-rand: 6.0.2 + pure-rand: 6.0.4 dev: true /fast-deep-equal@3.1.3: @@ -4169,7 +3961,7 @@ packages: /fetch-ponyfill@7.1.0: resolution: {integrity: sha512-FhbbL55dj/qdVO3YNK7ZEkshvj3eQ7EuIGV2I6ic/2YiocvyWv+7jg2s4AyS0wdRU75s3tA8ZxI/xPigb0v5Aw==} dependencies: - node-fetch: 2.6.12 + node-fetch: 2.6.13 transitivePeerDependencies: - encoding dev: true @@ -4182,7 +3974,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.0.4 + flat-cache: 3.1.1 dev: true /fill-range@7.0.1: @@ -4215,20 +4007,21 @@ packages: pkg-dir: 4.2.0 dev: true - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} + engines: {node: '>=12.0.0'} dependencies: - flatted: 3.2.7 + flatted: 3.2.9 + keyv: 4.5.4 rimraf: 3.0.2 dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true - /follow-redirects@1.15.2(debug@4.3.4): - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + /follow-redirects@1.15.3(debug@4.3.4): + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -4250,7 +4043,7 @@ packages: engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 - signal-exit: 4.0.2 + signal-exit: 4.1.0 dev: true /form-data@4.0.0: @@ -4269,8 +4062,8 @@ packages: fetch-blob: 3.2.0 dev: true - /fraction.js@4.2.0: - resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: true /from@0.1.7: @@ -4308,25 +4101,25 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true dev: true optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: true - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 functions-have-names: 1.2.3 dev: true @@ -4334,8 +4127,8 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /fx@28.0.0: - resolution: {integrity: sha512-vKQDA9g868cZiW8ulgs2uN1yx1i7/nsS33jTMOxekk0Z03BJLffVcdW6AVD32fWb3E6RtmWWuBXBZOk8cLXFNQ==} + /fx@30.2.0: + resolution: {integrity: sha512-rIYQBmx85Jfhd3pkSw06YPgvSvfTi022ZXTeFDkcCZGCs5nt3sjqFBGtcMFe1TR2S00RDz63be0ab5mhCiOLBw==} hasBin: true dev: true @@ -4349,13 +4142,17 @@ packages: engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} dependencies: - function-bind: 1.1.1 - has: 1.0.3 + function-bind: 1.1.2 has-proto: 1.0.1 has-symbols: 1.0.3 + hasown: 2.0.0 dev: true /get-stream@6.0.1: @@ -4363,16 +4160,21 @@ packages: engines: {node: '>=10'} dev: true + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 dev: true - /get-tsconfig@4.6.2: - resolution: {integrity: sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==} + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -4391,15 +4193,15 @@ packages: is-glob: 4.0.3 dev: true - /glob@10.3.3: - resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: foreground-child: 3.1.1 - jackspeak: 2.2.2 + jackspeak: 2.3.6 minimatch: 9.0.3 - minipass: 7.0.2 + minipass: 7.0.4 path-scurry: 1.10.1 dev: true @@ -4430,8 +4232,8 @@ packages: engines: {node: '>=4'} dev: true - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -4441,7 +4243,7 @@ packages: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: - define-properties: 1.2.0 + define-properties: 1.2.1 dev: true /globby@11.1.0: @@ -4470,7 +4272,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.2 dev: true /graceful-fs@4.2.11: @@ -4485,6 +4287,17 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true + /happy-dom@12.9.1: + resolution: {integrity: sha512-UvQ3IwKn1G3iiNCdTrhijdLGqf8Vj7d3OpmYcPwlKakjFy83oYbW6TmOKDLMTVLO9whmOC1HIpS09wf/14k7cA==} + dependencies: + css.escape: 1.5.1 + entities: 4.5.0 + iconv-lite: 0.6.3 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + dev: true + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -4504,10 +4317,10 @@ packages: engines: {node: '>=8'} dev: true - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.2 dev: true /has-proto@1.0.1: @@ -4527,11 +4340,11 @@ packages: has-symbols: 1.0.3 dev: true - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} dependencies: - function-bind: 1.1.1 + function-bind: 1.1.2 dev: true /hey-listen@1.0.8: @@ -4542,6 +4355,13 @@ packages: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true + /hosted-git-info@6.1.1: + resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + lru-cache: 7.18.3 + dev: true + /html-entities@2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} dev: true @@ -4560,9 +4380,9 @@ packages: engines: {node: '>=10.17.0'} dev: true - /human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} dev: true /husky@8.0.3: @@ -4578,6 +4398,13 @@ packages: safer-buffer: 2.1.2 dev: true + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true @@ -4594,8 +4421,8 @@ packages: engines: {node: '>= 4'} dev: true - /immutable@4.3.1: - resolution: {integrity: sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A==} + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} dev: true /import-fresh@3.3.0: @@ -4640,29 +4467,29 @@ packages: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: true - /internal-slot@1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + /internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 + get-intrinsic: 1.2.2 + hasown: 2.0.0 side-channel: 1.0.4 dev: true - /intl-messageformat@10.5.0: - resolution: {integrity: sha512-AvojYuOaRb6r2veOKfTVpxH9TrmjSdc5iR9R5RgBwrDZYSmAAFVT+QLbW3C4V7Qsg0OguMp67Q/EoUkxZzXRGw==} + /intl-messageformat@10.5.4: + resolution: {integrity: sha512-z+hrFdiJ/heRYlzegrdFYqU1m/KOMOVMqNilIArj+PbsuU8TNE7v4TWdQgSoxlxbT4AcZH3Op3/Fu15QTp+W1w==} dependencies: - '@formatjs/ecma402-abstract': 1.17.0 + '@formatjs/ecma402-abstract': 1.17.2 '@formatjs/fast-memoize': 2.2.0 - '@formatjs/icu-messageformat-parser': 2.6.0 - tslib: 2.6.1 + '@formatjs/icu-messageformat-parser': 2.7.0 + tslib: 2.6.2 dev: false /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 is-typed-array: 1.1.12 dev: true @@ -4687,7 +4514,7 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-tostringtag: 1.0.0 dev: true @@ -4700,13 +4527,13 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: - ci-info: 3.8.0 + ci-info: 3.9.0 dev: true - /is-core-module@2.12.1: - resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - has: 1.0.3 + hasown: 2.0.0 dev: true /is-date-object@1.0.5: @@ -4783,9 +4610,15 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: false + /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} + dev: true /is-port-reachable@4.0.0: resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} @@ -4796,14 +4629,14 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-tostringtag: 1.0.0 dev: true /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 dev: true /is-stream@2.0.1: @@ -4841,7 +4674,7 @@ packages: resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.11 + which-typed-array: 1.1.13 dev: true /is-unicode-supported@0.1.0: @@ -4852,7 +4685,7 @@ packages: /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 dev: true /is-what@4.1.15: @@ -4880,8 +4713,8 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /jackspeak@2.2.2: - resolution: {integrity: sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg==} + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} dependencies: '@isaacs/cliui': 8.0.2 @@ -4917,6 +4750,10 @@ packages: hasBin: true dev: true + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true @@ -4943,6 +4780,10 @@ packages: resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} dev: true + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: @@ -4957,20 +4798,16 @@ packages: graceful-fs: 4.2.11 dev: true - /jsx-ast-utils@3.3.4: - resolution: {integrity: sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==} + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 object.assign: 4.1.4 - object.values: 1.1.6 + object.values: 1.1.7 dev: true - /just-extend@6.2.0: - resolution: {integrity: sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==} - dev: false - /kebab-case@1.0.2: resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==} dev: true @@ -4979,6 +4816,12 @@ packages: resolution: {integrity: sha512-dcEQ7GDBpCjUQA8XZeWh3oBBLLmyn8aoeIQFGL/NTVkoEOsmlnXqA4QykUm/SncolAZYGsEk/PfUhLZ7mwMM2w==} dev: false + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -5015,46 +4858,35 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true - /lint-staged@13.2.3: - resolution: {integrity: sha512-zVVEXLuQIhr1Y7R7YAWx4TZLdvuzk7DnmrsTNL0fax6Z3jrpFcas+vKbzxhhvp6TA55m1SQuWkpzI1qbfDZbAg==} - engines: {node: ^14.13.1 || >=16.0.0} + /lint-staged@15.0.2: + resolution: {integrity: sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==} + engines: {node: '>=18.12.0'} hasBin: true dependencies: - chalk: 5.2.0 - cli-truncate: 3.1.0 - commander: 10.0.1 + chalk: 5.3.0 + commander: 11.1.0 debug: 4.3.4 - execa: 7.2.0 + execa: 8.0.1 lilconfig: 2.1.0 - listr2: 5.0.8 + listr2: 7.0.2 micromatch: 4.0.5 - normalize-path: 3.0.0 - object-inspect: 1.12.3 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.3.1 + yaml: 2.3.3 transitivePeerDependencies: - - enquirer - supports-color dev: true - /listr2@5.0.8: - resolution: {integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==} - engines: {node: ^14.13.1 || >=16.0.0} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true + /listr2@7.0.2: + resolution: {integrity: sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==} + engines: {node: '>=16.0.0'} dependencies: - cli-truncate: 2.1.0 + cli-truncate: 3.1.0 colorette: 2.0.20 - log-update: 4.0.0 - p-map: 4.0.0 + eventemitter3: 5.0.1 + log-update: 5.0.1 rfdc: 1.3.0 - rxjs: 7.8.1 - through: 2.3.8 - wrap-ansi: 7.0.0 + wrap-ansi: 8.1.0 dev: true /load-yaml-file@0.2.0: @@ -5067,6 +4899,11 @@ packages: strip-bom: 3.0.0 dev: true + /local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + dev: true + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -5109,14 +4946,15 @@ packages: is-unicode-supported: 0.1.0 dev: true - /log-update@4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} + /log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 + ansi-escapes: 5.0.0 + cli-cursor: 4.0.0 + slice-ansi: 5.0.0 + strip-ansi: 7.1.0 + wrap-ansi: 8.1.0 dev: true /loose-envify@1.4.0: @@ -5124,10 +4962,15 @@ packages: hasBin: true dependencies: js-tokens: 4.0.0 - dev: false - /lru-cache@10.0.0: - resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==} + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /lru-cache@10.0.1: + resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} engines: {node: 14 || >=16.14} dev: true @@ -5151,8 +4994,13 @@ packages: yallist: 4.0.0 dev: true - /magic-string@0.30.1: - resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} + /lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + dev: true + + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -5193,15 +5041,19 @@ packages: hasBin: true dev: true - /mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + /mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + dev: true + + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} dev: true /meow@6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} dependencies: - '@types/minimist': 1.2.2 + '@types/minimist': 1.2.4 camelcase-keys: 6.2.2 decamelize-keys: 1.1.1 hard-rejection: 2.1.0 @@ -5290,13 +5142,6 @@ packages: brace-expansion: 2.0.1 dev: true - /minimatch@9.0.2: - resolution: {integrity: sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -5317,8 +5162,8 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /minipass@7.0.2: - resolution: {integrity: sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==} + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} dev: true @@ -5337,6 +5182,15 @@ packages: semver-compare: 1.0.0 dev: true + /mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + dependencies: + acorn: 8.10.0 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.3.1 + dev: true + /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -5356,16 +5210,12 @@ packages: hasBin: true dev: true - /nanoid@4.0.2: - resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} - engines: {node: ^14 || ^16 || >=18} + /nanoid@5.0.2: + resolution: {integrity: sha512-2ustYUX1R2rL/Br5B/FMhi8d5/QzvkJ912rBYxskcpu0myTHzSZfTr1LAS2Sm7jxRUObRrSBFoyzwAhL49aVSg==} + engines: {node: ^18 || >=20} hasBin: true dev: false - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -5386,8 +5236,20 @@ packages: lodash: 4.17.21 dev: true - /node-fetch@2.6.12: - resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} + /node-fetch@2.6.13: + resolution: {integrity: sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -5415,7 +5277,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.2 + resolve: 1.22.8 semver: 5.7.2 validate-npm-package-license: 3.0.4 dev: true @@ -5442,6 +5304,16 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dev: true + /npm-package-arg@10.1.0: + resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + hosted-git-info: 6.1.1 + proc-log: 3.0.0 + semver: 7.5.4 + validate-npm-package-name: 5.0.0 + dev: true + /npm-packlist@5.1.3: resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -5473,8 +5345,8 @@ packages: boolbase: 1.0.0 dev: true - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} dev: true /object-keys@1.1.1: @@ -5486,19 +5358,19 @@ packages: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 + call-bind: 1.0.5 + define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true - /object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true /on-headers@1.0.2: @@ -5545,7 +5417,7 @@ packages: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.9.0 + cli-spinners: 2.9.1 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 @@ -5583,6 +5455,13 @@ packages: yocto-queue: 0.1.0 dev: true + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -5602,13 +5481,6 @@ packages: engines: {node: '>=6'} dev: true - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - dev: true - /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -5625,7 +5497,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.22.5 + '@babel/code-frame': 7.22.13 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -5675,8 +5547,8 @@ packages: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.0.0 - minipass: 7.0.2 + lru-cache: 10.0.1 + minipass: 7.0.4 dev: true /path-to-regexp@2.2.1: @@ -5688,6 +5560,14 @@ packages: engines: {node: '>=8'} dev: true + /pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + /pause-stream@0.0.11: resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} dependencies: @@ -5721,34 +5601,42 @@ packages: find-up: 4.1.0 dev: true - /postcss-nested@6.0.1(postcss@8.4.27): + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.4.2 + pathe: 1.1.1 + dev: true + + /postcss-nested@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.27 + postcss: 8.4.31 postcss-selector-parser: 6.0.13 dev: true - /postcss-nesting@11.3.0(postcss@8.4.27): + /postcss-nesting@11.3.0(postcss@8.4.31): resolution: {integrity: sha512-JlS10AQm/RzyrUGgl5irVkAlZYTJ99mNueUl+Qab+TcHhVedLiylWVkKBhRale+rS9yWIJK48JVzQlq3LcSdeA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) - postcss: 8.4.27 + postcss: 8.4.31 postcss-selector-parser: 6.0.13 dev: true - /postcss-scss@4.0.6(postcss@8.4.27): - resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==} + /postcss-scss@4.0.9(postcss@8.4.31): + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} engines: {node: '>=12.0'} peerDependencies: - postcss: ^8.4.19 + postcss: ^8.4.29 dependencies: - postcss: 8.4.27 + postcss: 8.4.31 dev: true /postcss-selector-parser@6.0.13: @@ -5763,8 +5651,8 @@ packages: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss@8.4.27: - resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -5772,8 +5660,8 @@ packages: source-map-js: 1.0.2 dev: true - /preferred-pm@3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} + /preferred-pm@3.1.2: + resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} engines: {node: '>=10'} dependencies: find-up: 5.0.0 @@ -5793,12 +5681,26 @@ packages: hasBin: true dev: true - /prettier@3.0.0: - resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} hasBin: true dev: true + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -5823,8 +5725,8 @@ packages: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true - /publint@0.1.16: - resolution: {integrity: sha512-wJgk7HnXDT5Ap0DjFYbGz78kPkN44iQvDiaq8P63IEEyNU9mYXvaMd2cAyIM6OgqXM/IA3CK6XWIsRq+wjNpgw==} + /publint@0.2.5: + resolution: {integrity: sha512-eoQiP0WXkxkpth1fMLoS1I/6BQoxKNZxTAAnFjPgURFrJulC5D5Uifk49a9kfNCYmcza9E/ZkbFhQQdjkmKAbg==} engines: {node: '>=16'} hasBin: true dependencies: @@ -5842,8 +5744,8 @@ packages: engines: {node: '>=6'} dev: true - /pure-rand@6.0.2: - resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} + /pure-rand@6.0.4: + resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} dev: true /queue-microtask@1.2.3: @@ -5880,6 +5782,10 @@ packages: scheduler: 0.23.0 dev: false + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + /react-refresh@0.14.0: resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} @@ -5890,7 +5796,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - dev: false /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} @@ -5905,7 +5810,7 @@ packages: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: - '@types/normalize-package-data': 2.4.1 + '@types/normalize-package-data': 2.4.3 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 @@ -5959,17 +5864,17 @@ packages: esprima: 4.0.1 dev: true - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} dev: true - /regexp.prototype.flags@1.5.0: - resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 + call-bind: 1.0.5 + define-properties: 1.2.1 + set-function-name: 2.0.1 dev: true /registry-auth-token@3.3.2: @@ -6024,15 +5929,15 @@ packages: /resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.1 path-parse: 1.0.7 dev: true - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -6045,6 +5950,14 @@ packages: signal-exit: 3.0.7 dev: true + /restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -6061,20 +5974,20 @@ packages: glob: 7.2.3 dev: true - /rimraf@5.0.1: - resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} + /rimraf@5.0.5: + resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} engines: {node: '>=14'} hasBin: true dependencies: - glob: 10.3.3 + glob: 10.3.10 dev: true - /rollup@3.26.3: - resolution: {integrity: sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==} + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /run-parallel@1.2.0: @@ -6083,14 +5996,14 @@ packages: queue-microtask: 1.2.3 dev: true - /rvfc-polyfill@1.0.6: - resolution: {integrity: sha512-y7tu9Bh19CTnzBZWEQEEEo5UYvhVi5Ud9C3ndeWtm9m+tUO5vK8qqbpAMJfEDgRSFZokrVHmehnhGjd9LyazBg==} + /rvfc-polyfill@1.0.7: + resolution: {integrity: sha512-seBl7J1J3/k0LuzW2T9fG6JIOpni5AbU+/87LA+zTYKgTVhsfShmS8K/yOo1eeEjGJHnAdkVAUUM+PEjN9Mpkw==} dev: false /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.6.1 + tslib: 2.6.2 dev: true /sade@1.8.1: @@ -6100,12 +6013,12 @@ packages: mri: 1.2.0 dev: true - /safe-array-concat@1.0.0: - resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 has-symbols: 1.0.3 isarray: 2.0.5 dev: true @@ -6121,8 +6034,8 @@ packages: /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 is-regex: 1.1.4 dev: true @@ -6130,13 +6043,13 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sass@1.64.0: - resolution: {integrity: sha512-m7YtAGmQta9uANIUJwXesAJMSncqH+3INc8kdVXs6eV6GUC8Qu2IYKQSN8PRLgiQfpca697G94klm2leYMxSHw==} + /sass@1.69.4: + resolution: {integrity: sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==} engines: {node: '>=14.0.0'} hasBin: true dependencies: chokidar: 3.5.3 - immutable: 4.3.1 + immutable: 4.3.4 source-map-js: 1.0.2 dev: true @@ -6160,14 +6073,6 @@ packages: hasBin: true dev: true - /semver@7.5.3: - resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -6176,8 +6081,8 @@ packages: lru-cache: 6.0.0 dev: true - /seroval@0.5.1: - resolution: {integrity: sha512-ZfhQVB59hmIauJG5Ydynupy8KHyr5imGNtdDhbZG68Ufh1Ynkv9KOYOAABf71oVbQxJ8VkWnMHAjEHE7fWkH5g==} + /seroval@0.11.6: + resolution: {integrity: sha512-Lhy+94CNcNza6d0vM4sQKLsaLaX39q0ELqIBc7DkdiFljI8Q387Yb+xKgLxRWXs7uuHRu/ZcJ64xfVJ0Bj4LPg==} engines: {node: '>=10'} /serve-handler@6.1.5: @@ -6193,8 +6098,8 @@ packages: range-parser: 1.2.0 dev: true - /serve@14.2.0: - resolution: {integrity: sha512-+HOw/XK1bW8tw5iBilBz/mJLWRzM8XM6MPxL4J/dKzdxq1vfdEWSwhaR7/yS8EJp5wzvP92p1qirysJvnEtjXg==} + /serve@14.2.1: + resolution: {integrity: sha512-48er5fzHh7GCShLnNyPBRPEjs2I6QBozeGr02gaacROiyS/8ARADlj595j39iZXAqBbJHH/ivJJyPRWY9sQWZA==} engines: {node: '>= 14'} hasBin: true dependencies: @@ -6217,6 +6122,25 @@ packages: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + dev: true + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -6248,17 +6172,21 @@ packages: /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - object-inspect: 1.12.3 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + dev: true + + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /signal-exit@4.0.2: - resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} dev: true @@ -6276,24 +6204,6 @@ packages: engines: {node: '>=12'} dev: true - /slice-ansi@3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -6307,7 +6217,7 @@ packages: engines: {node: '>=6'} hasBin: true dependencies: - array.prototype.flat: 1.3.1 + array.prototype.flat: 1.3.2 breakword: 1.0.6 grapheme-splitter: 1.0.4 strip-ansi: 6.0.1 @@ -6315,40 +6225,40 @@ packages: yargs: 15.4.1 dev: true - /solid-js@1.7.8: - resolution: {integrity: sha512-XHBWk1FvFd0JMKljko7FfhefJMTSgYEuVKcQ2a8hzRXfiuSJAGsrPPafqEo+f6l+e8Oe3cROSpIL6kbzjC1fjQ==} + /solid-js@1.8.3: + resolution: {integrity: sha512-S7ztgPI6X4tUaWmhZe3aDx0E9F6FGxXVU8NsocrPqqUbxHoFi8eTPlDMcenOlXuo2ITQ97j2URaj0StfJci4KQ==} dependencies: csstype: 3.1.2 - seroval: 0.5.1 + seroval: 0.11.6 - /solid-refresh@0.5.3(solid-js@1.7.8): + /solid-refresh@0.5.3(solid-js@1.8.3): resolution: {integrity: sha512-Otg5it5sjOdZbQZJnvo99TEBAr6J7PQ5AubZLNU6szZzg3RQQ5MX04oteBIIGDs0y2Qv8aXKm9e44V8z+UnFdw==} peerDependencies: solid-js: ^1.3 dependencies: - '@babel/generator': 7.22.9 - '@babel/helper-module-imports': 7.22.5 - '@babel/types': 7.22.5 - solid-js: 1.7.8 + '@babel/generator': 7.23.0 + '@babel/helper-module-imports': 7.22.15 + '@babel/types': 7.23.0 + solid-js: 1.8.3 dev: true - /solid-slider@1.3.14: - resolution: {integrity: sha512-zOSCr9/AS1pgIJt16jKSX3U+wVN4pMXahm4Bh6pf1vGRU554wKb5QJdlrDGB1X5rKGy6DygvG+fQrPU6+TcfeA==} + /solid-slider@1.3.15: + resolution: {integrity: sha512-5VdpvBOaP3OrMcgDpG0NxozQjsPDMDxQIAseyKon9+S4I/508TdQnUoDJllP2ED0qlNdOl++88cfvFXOKg+xKg==} dependencies: - '@solid-primitives/timer': 1.3.7(solid-js@1.7.8) - '@solid-primitives/utils': 4.0.1(solid-js@1.7.8) + '@solid-primitives/timer': 1.3.7(solid-js@1.8.3) + '@solid-primitives/utils': 4.0.1(solid-js@1.8.3) keen-slider: 6.8.6 - solid-js: 1.7.8 + solid-js: 1.8.3 dev: false - /solid-zustand@1.7.0(solid-js@1.7.8)(zustand@4.3.9): + /solid-zustand@1.7.0(solid-js@1.8.3)(zustand@4.4.4): resolution: {integrity: sha512-BWLSYIUOr7qhAdY+IFh1fA3+s6LvqQuxmHgzuZ8BQHHBcoq/a1S+lgDbWQmFF8fhmJyXHbSbp/WlPJgvdjmSiw==} peerDependencies: solid-js: ^1.6.0 zustand: ^4.3.0 dependencies: - solid-js: 1.7.8 - zustand: 4.3.9(react@18.2.0) + solid-js: 1.8.3 + zustand: 4.4.4(react@18.2.0) dev: false /source-map-js@1.0.2: @@ -6383,7 +6293,7 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.16 dev: true /spdx-exceptions@2.3.0: @@ -6394,11 +6304,11 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.16 dev: true - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} dev: true /split@0.3.3: @@ -6411,9 +6321,12 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /std-env@3.4.3: + resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} dev: true /stream-combiner@0.0.4: @@ -6451,29 +6364,29 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 dev: true /string_decoder@1.3.0: @@ -6533,6 +6446,12 @@ packages: engines: {node: '>=8'} dev: true + /strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + dependencies: + acorn: 8.10.0 + dev: true + /style-to-object@0.3.0: resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} dependencies: @@ -6573,40 +6492,39 @@ packages: engines: {node: '>= 0.4'} dev: true - /svgo@2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} - engines: {node: '>=10.13.0'} + /svgo@3.0.2: + resolution: {integrity: sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==} + engines: {node: '>=14.0.0'} hasBin: true dependencies: '@trysound/sax': 0.2.0 commander: 7.2.0 - css-select: 4.3.0 - css-tree: 1.1.3 - csso: 4.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + csso: 5.0.5 picocolors: 1.0.0 - stable: 0.1.8 dev: true - /syncpack@10.7.3: - resolution: {integrity: sha512-nhsiOHR1zebKRn4eZn5zUjbSJm4D8GgqiraY45MsaOClPbhVJny/jWhWrjSOuwwupdwv8EYH+GA9sqCEn4DCnA==} - engines: {node: '>=18'} + /syncpack@11.2.1: + resolution: {integrity: sha512-WoUtm+ZLmWUvy0cLJy8ds/smVRH3ivI6iANcGTPrsvareCc4SmRVMvr+TwjZyFm0FDGmEfMVsAX7z16+yxL6bQ==} + engines: {node: '>=16'} hasBin: true dependencies: - '@effect/data': 0.12.9 - '@effect/io': 0.27.0 - '@effect/match': 0.24.5 - '@effect/schema': 0.21.0 + '@effect/data': 0.17.1 + '@effect/io': 0.38.0(@effect/data@0.17.1) + '@effect/match': 0.32.0(@effect/data@0.17.1)(@effect/schema@0.33.1) + '@effect/schema': 0.33.1(@effect/data@0.17.1)(@effect/io@0.38.0) chalk: 4.1.2 commander: 11.0.0 cosmiconfig: 8.2.0 - enquirer: 2.3.6 - fs-extra: 11.1.1 + enquirer: 2.4.1 globby: 11.1.0 - minimatch: 9.0.2 + minimatch: 9.0.3 + npm-package-arg: 10.1.0 ora: 5.4.1 prompts: 2.4.2 read-yaml-file: 2.1.0 - semver: 7.5.3 + semver: 7.5.4 tightrope: 0.1.0 ts-toolbelt: 9.6.0 dev: true @@ -6633,6 +6551,20 @@ packages: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} dev: false + /tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} + dev: true + + /tinypool@0.7.0: + resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + engines: {node: '>=14.0.0'} + dev: true + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -6666,62 +6598,48 @@ packages: engines: {node: '>=8'} dev: true - /ts-api-utils@1.0.1(typescript@5.1.6): - resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.1.6 + typescript: 5.2.2 dev: true - /ts-pattern@5.0.4: - resolution: {integrity: sha512-D5iVliqugv2C9541W2CNXFYNEZxr4TiHuLPuf49tKEdQFp/8y8fR0v1RExUvXkiWozKCwE7zv07C6EKxf0lKuQ==} + /ts-pattern@5.0.5: + resolution: {integrity: sha512-tL0w8U/pgaacOmkb9fRlYzWEUDCfVjjv9dD4wHTgZ61MjhuMt46VNWTG747NqW6vRzoWIKABVhFSOJ82FvXrfA==} dev: false /ts-toolbelt@9.6.0: resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} dev: true - /tsc-files@1.1.4(typescript@5.1.6): + /tsc-files@1.1.4(typescript@5.2.2): resolution: {integrity: sha512-RePsRsOLru3BPpnf237y1Xe1oCGta8rmSYzM76kYo5tLGsv5R2r3s64yapYorGTPuuLyfS9NVbh9ydzmvNie2w==} hasBin: true peerDependencies: typescript: '>=3' dependencies: - typescript: 5.1.6 - dev: true - - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + typescript: 5.2.2 dev: true - /tslib@2.6.1: - resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} - - /tsutils@3.21.0(typescript@5.1.6): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - 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' - dependencies: - tslib: 1.14.1 - typescript: 5.1.6 - dev: true + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsx@3.12.7: - resolution: {integrity: sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==} + /tsx@3.14.0: + resolution: {integrity: sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==} hasBin: true dependencies: - '@esbuild-kit/cjs-loader': 2.4.2 - '@esbuild-kit/core-utils': 3.1.0 - '@esbuild-kit/esm-loader': 2.5.5 + esbuild: 0.18.20 + get-tsconfig: 4.7.2 + source-map-support: 0.5.21 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true - /tty-table@4.2.1: - resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} + /tty-table@4.2.2: + resolution: {integrity: sha512-2gvCArMZLxgvpZ2NvQKdnYWIFLe7I/z5JClMuhrDXunmKgSZcQKcZRjN9XjAFiToMz2pUo1dEIXyrm0AwgV5Tw==} engines: {node: '>=8.0.0'} hasBin: true dependencies: @@ -6734,65 +6652,64 @@ packages: yargs: 17.7.2 dev: true - /turbo-darwin-64@1.10.8: - resolution: {integrity: sha512-FOK3qrLZE2Yq7/2DkAnAzghisGQroZJs85Rui3IXM/2e7rTtBADmU9w36d4k0Yw7RHEiOo8U4eAYUl52OWRwJQ==} + /turbo-darwin-64@1.10.16: + resolution: {integrity: sha512-+Jk91FNcp9e9NCLYlvDDlp2HwEDp14F9N42IoW3dmHI5ZkGSXzalbhVcrx3DOox3QfiNUHxzWg4d7CnVNCuuMg==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-darwin-arm64@1.10.8: - resolution: {integrity: sha512-8mbgH8oBycusa8RnbHlvrpHxfZsgNrk6CXMu/KJECpajYT3nSOMK2Rrs+422HqLDTVUw4GAqmTr26nUx8yJoyA==} + /turbo-darwin-arm64@1.10.16: + resolution: {integrity: sha512-jqGpFZipIivkRp/i+jnL8npX0VssE6IAVNKtu573LXtssZdV/S+fRGYA16tI46xJGxSAivrZ/IcgZrV6Jk80bw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-linux-64@1.10.8: - resolution: {integrity: sha512-eJ1ND3LuILw28gd+9f3Ews7Eika9WOxp+/PxJI+EPHseTrbLMLYqSPAunmZdOx840Pq0Sk5j4Nik7NCzuCWXkg==} + /turbo-linux-64@1.10.16: + resolution: {integrity: sha512-PpqEZHwLoizQ6sTUvmImcRmACyRk9EWLXGlqceogPZsJ1jTRK3sfcF9fC2W56zkSIzuLEP07k5kl+ZxJd8JMcg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-arm64@1.10.8: - resolution: {integrity: sha512-3+pVaOzGP/5GFvQakxuHDMsj43Y6bmaq5/84tvgGL0FgtKpsQvBfdaDs12HX5cb/zUnd2/jdQPNiGJwVeC/McA==} + /turbo-linux-arm64@1.10.16: + resolution: {integrity: sha512-TMjFYz8to1QE0fKVXCIvG/4giyfnmqcQIwjdNfJvKjBxn22PpbjeuFuQ5kNXshUTRaTJihFbuuCcb5OYFNx4uw==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-windows-64@1.10.8: - resolution: {integrity: sha512-LdryI+ZQsVrW4hWZw5G5vJz0syjWxyc0tnieZRefy+d9Ti1du/qCYLP0KQRgL9Yuh1klbH/tzmx70upGARgWKQ==} + /turbo-windows-64@1.10.16: + resolution: {integrity: sha512-+jsf68krs0N66FfC4/zZvioUap/Tq3sPFumnMV+EBo8jFdqs4yehd6+MxIwYTjSQLIcpH8KoNMB0gQYhJRLZzw==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /turbo-windows-arm64@1.10.8: - resolution: {integrity: sha512-whHnhM84KIa2Ly/fcw2Ujw2Rr/9wh8ynAdZ9bdvZoZKAbOr3tXKft0tmy50jQ6IsNr6Cj0XD4cuSTKhvqoGtYA==} + /turbo-windows-arm64@1.10.16: + resolution: {integrity: sha512-sKm3hcMM1bl0B3PLG4ifidicOGfoJmOEacM5JtgBkYM48ncMHjkHfFY7HrJHZHUnXM4l05RQTpLFoOl/uIo2HQ==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /turbo@1.10.8: - resolution: {integrity: sha512-lmPKkeRMC/3gjTVxICt93A8zAzjGjbZINdekjzivn4g/rOjpHVNuOuVANU5L4H4R1bzQr8FFvZNQeQaElOjz/Q==} + /turbo@1.10.16: + resolution: {integrity: sha512-2CEaK4FIuSZiP83iFa9GqMTQhroW2QryckVqUydmg4tx78baftTOS0O+oDAhvo9r9Nit4xUEtC1RAHoqs6ZEtg==} hasBin: true - requiresBuild: true optionalDependencies: - turbo-darwin-64: 1.10.8 - turbo-darwin-arm64: 1.10.8 - turbo-linux-64: 1.10.8 - turbo-linux-arm64: 1.10.8 - turbo-windows-64: 1.10.8 - turbo-windows-arm64: 1.10.8 + turbo-darwin-64: 1.10.16 + turbo-darwin-arm64: 1.10.16 + turbo-linux-64: 1.10.16 + turbo-linux-arm64: 1.10.16 + turbo-windows-64: 1.10.16 + turbo-windows-arm64: 1.10.16 dev: true /type-check@0.4.0: @@ -6802,6 +6719,11 @@ packages: prelude-ls: 1.2.1 dev: true + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + /type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} @@ -6812,11 +6734,6 @@ packages: engines: {node: '>=10'} dev: true - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true - /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} @@ -6827,6 +6744,11 @@ packages: engines: {node: '>=8'} dev: true + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: true + /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} @@ -6837,12 +6759,17 @@ packages: engines: {node: '>=14.16'} dev: true + /type-fest@4.6.0: + resolution: {integrity: sha512-rLjWJzQFOq4xw7MgJrCZ6T1jIOvvYElXT12r+y0CC6u67hegDHaxcPqb2fZHOGlqxugGQPNB1EnTezjBetkwkw==} + engines: {node: '>=16'} + dev: true + /typed-array-buffer@1.0.0: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 is-typed-array: 1.1.12 dev: true @@ -6850,7 +6777,7 @@ packages: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 @@ -6861,7 +6788,7 @@ packages: engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + call-bind: 1.0.5 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 @@ -6870,7 +6797,7 @@ packages: /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 for-each: 0.3.3 is-typed-array: 1.1.12 dev: true @@ -6885,25 +6812,33 @@ packages: hasBin: true dev: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true dev: true - /ua-parser-js@1.0.35: - resolution: {integrity: sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==} + /ua-parser-js@1.0.36: + resolution: {integrity: sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==} dev: false + /ufo@1.3.1: + resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} + dev: true + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 dev: true + /undici-types@5.25.3: + resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + dev: true + /universal-user-agent@6.0.0: resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} dev: true @@ -6918,13 +6853,13 @@ packages: engines: {node: '>= 10.0.0'} dev: true - /update-browserslist-db@1.0.11(browserslist@4.21.9): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + /update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.9 + browserslist: 4.22.1 escalade: 3.1.1 picocolors: 1.0.0 dev: true @@ -6948,7 +6883,6 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: react: 18.2.0 - dev: false /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -6972,8 +6906,8 @@ packages: builtins: 5.0.1 dev: true - /validator@13.9.0: - resolution: {integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==} + /validator@13.11.0: + resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} engines: {node: '>= 0.10'} dev: true @@ -6982,73 +6916,84 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-plugin-css-injected-by-js@3.2.1(vite@4.4.6): - resolution: {integrity: sha512-8UQWy7tcmgwkaUKYfbj/8GOeAD0RPG2tdetAGg7WikWC8IEtNrovs8RRuLjFqdRqORT1XxchBB5tPl6xO/H95g==} - peerDependencies: - vite: '>2.0.0-0' + /vite-node@0.34.6(@types/node@20.8.8)(sass@1.69.4): + resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} + engines: {node: '>=v14.18.0'} + hasBin: true dependencies: - vite: 4.4.6(sass@1.64.0) + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.4.2 + pathe: 1.1.1 + picocolors: 1.0.0 + vite: 4.5.0(@types/node@20.8.8)(sass@1.69.4) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser dev: true - /vite-plugin-full-reload@1.0.5(vite@4.4.6): - resolution: {integrity: sha512-kVZFDFWr0DxiHn6MuDVTQf7gnWIdETGlZh0hvTiMXzRN80vgF4PKbONSq8U1d0WtHsKaFODTQgJeakLacoPZEQ==} + /vite-plugin-css-injected-by-js@3.3.0(vite@4.5.0): + resolution: {integrity: sha512-xG+jyHNCmUqi/TXp6q88wTJGeAOrNLSyUUTp4qEQ9QZLGcHWQQsCsSSKa59rPMQr8sOzfzmWDd8enGqfH/dBew==} peerDependencies: - vite: ^2 || ^3 || ^4 + vite: '>2.0.0-0' dependencies: - picocolors: 1.0.0 - picomatch: 2.3.1 - vite: 4.4.6(sass@1.64.0) + vite: 4.5.0(@types/node@20.8.8)(sass@1.69.4) dev: true - /vite-plugin-mkcert@1.16.0(vite@4.4.6): + /vite-plugin-mkcert@1.16.0(vite@4.5.0): resolution: {integrity: sha512-5r+g8SB9wZzLNUFekGwZo3e0P6QlS6rbxK5p9z/itxNAimsYohgjK/YfVPVxM9EuglP9hjridq0lUejo9v1nVg==} engines: {node: '>=v16.7.0'} peerDependencies: vite: '>=3' dependencies: '@octokit/rest': 19.0.13 - axios: 1.4.0(debug@4.3.4) + axios: 1.5.1(debug@4.3.4) debug: 4.3.4 picocolors: 1.0.0 - vite: 4.4.6(sass@1.64.0) + vite: 4.5.0(@types/node@20.8.8)(sass@1.69.4) transitivePeerDependencies: - encoding - supports-color dev: true - /vite-plugin-solid-svg@0.6.4(solid-js@1.7.8)(vite@4.4.6): - resolution: {integrity: sha512-T8uNBq8JhOvqp877v2J3Zzp575lL3NcvFXvq7VsrBGKZKyO3+jx2wKPawAxVOOKijrmDOnvu35c9eLzbU+hsHA==} + /vite-plugin-solid-svg@0.7.0(solid-js@1.8.3)(vite@4.5.0): + resolution: {integrity: sha512-skErWSlCdI/NbrnyFQJWQk8RWjtRQGfknm1FjIgW190osiyVIZLWnQyT2ErV92ru9p5FjFgA4L482Y7ZBPcRzA==} peerDependencies: solid-js: ^1 - vite: '>=2.4' + vite: ^4 dependencies: - '@types/svgo': 2.6.4 - solid-js: 1.7.8 - svgo: 2.8.0 - vite: 4.4.6(sass@1.64.0) + solid-js: 1.8.3 + svgo: 3.0.2 + vite: 4.5.0(@types/node@20.8.8)(sass@1.69.4) dev: true - /vite-plugin-solid@2.7.0(solid-js@1.7.8)(vite@4.4.6): - resolution: {integrity: sha512-avp/Jl5zOp/Itfo67xtDB2O61U7idviaIp4mLsjhCa13PjKNasz+IID0jYTyqUp9SFx6/PmBr6v4KgDppqompg==} + /vite-plugin-solid@2.7.2(solid-js@1.8.3)(vite@4.5.0): + resolution: {integrity: sha512-GV2SMLAibOoXe76i02AsjAg7sbm/0lngBlERvJKVN67HOrJsHcWgkt0R6sfGLDJuFkv2aBe14Zm4vJcNME+7zw==} peerDependencies: solid-js: ^1.7.2 vite: ^3.0.0 || ^4.0.0 dependencies: - '@babel/core': 7.22.9 - '@babel/preset-typescript': 7.22.5(@babel/core@7.22.9) - '@types/babel__core': 7.20.1 - babel-preset-solid: 1.7.7(@babel/core@7.22.9) + '@babel/core': 7.23.2 + '@babel/preset-typescript': 7.23.2(@babel/core@7.23.2) + '@types/babel__core': 7.20.3 + babel-preset-solid: 1.8.2(@babel/core@7.23.2) merge-anything: 5.1.7 - solid-js: 1.7.8 - solid-refresh: 0.5.3(solid-js@1.7.8) - vite: 4.4.6(sass@1.64.0) - vitefu: 0.2.4(vite@4.4.6) + solid-js: 1.8.3 + solid-refresh: 0.5.3(solid-js@1.8.3) + vite: 4.5.0(@types/node@20.8.8)(sass@1.69.4) + vitefu: 0.2.5(vite@4.5.0) transitivePeerDependencies: - supports-color dev: true - /vite@4.4.6(sass@1.64.0): - resolution: {integrity: sha512-EY6Mm8vJ++S3D4tNAckaZfw3JwG3wa794Vt70M6cNJ6NxT87yhq7EC8Rcap3ahyHdo8AhCmV9PTk+vG1HiYn1A==} + /vite@4.5.0(@types/node@20.8.8)(sass@1.69.4): + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -7075,48 +7020,115 @@ packages: terser: optional: true dependencies: - esbuild: 0.18.17 - postcss: 8.4.27 - rollup: 3.26.3 - sass: 1.64.0 + '@types/node': 20.8.8 + esbuild: 0.18.20 + postcss: 8.4.31 + rollup: 3.29.4 + sass: 1.69.4 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true - /vitefu@0.2.4(vite@4.4.6): - resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} + /vitefu@0.2.5(vite@4.5.0): + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: - vite: ^3.0.0 || ^4.0.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 peerDependenciesMeta: vite: optional: true dependencies: - vite: 4.4.6(sass@1.64.0) + vite: 4.5.0(@types/node@20.8.8)(sass@1.69.4) + dev: true + + /vitest@0.34.6(happy-dom@12.9.1)(sass@1.69.4): + resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + dependencies: + '@types/chai': 4.3.9 + '@types/chai-subset': 1.3.4 + '@types/node': 20.8.8 + '@vitest/expect': 0.34.6 + '@vitest/runner': 0.34.6 + '@vitest/snapshot': 0.34.6 + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 + acorn: 8.10.0 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.10 + debug: 4.3.4 + happy-dom: 12.9.1 + local-pkg: 0.4.3 + magic-string: 0.30.5 + pathe: 1.1.1 + picocolors: 1.0.0 + std-env: 3.4.3 + strip-literal: 1.3.0 + tinybench: 2.5.1 + tinypool: 0.7.0 + vite: 4.5.0(@types/node@20.8.8)(sass@1.69.4) + vite-node: 0.34.6(@types/node@20.8.8)(sass@1.69.4) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser dev: true - /vscode-css-languageservice@6.2.6: - resolution: {integrity: sha512-SA2WkeOecIpUiEbZnjOsP/fI5CRITZEiQGSHXKiDQDwLApfKcnLhZwMtOBbIifSzESVcQa7b/shX/nbnF4NoCg==} + /vscode-css-languageservice@6.2.10: + resolution: {integrity: sha512-sYUZPku4mQ06AWGCbMyjv2tdR6juBW6hTbVPFwbJvNVzdtEfBioQOgkdXg7yMJNWnXkvWSU1FL2kb4Vxu5Cdyw==} dependencies: - '@vscode/l10n': 0.0.14 - vscode-languageserver-textdocument: 1.0.8 - vscode-languageserver-types: 3.17.3 - vscode-uri: 3.0.7 + '@vscode/l10n': 0.0.16 + vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.0.8 dev: true - /vscode-languageserver-textdocument@1.0.8: - resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} + /vscode-languageserver-textdocument@1.0.11: + resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} dev: true - /vscode-languageserver-types@3.17.3: - resolution: {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==} + /vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} dev: true /vscode-uri@2.1.2: resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} dev: true - /vscode-uri@3.0.7: - resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} + /vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} dev: true /wasm-feature-detect@1.5.1: @@ -7138,11 +7150,28 @@ packages: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + /webpod@0.0.2: resolution: {integrity: sha512-cSwwQIeg8v4i3p4ajHhwgR7N6VyxAf+KYSSsY6Pd3aETE+xEU4vbitz7qQkB0I321xnhDdgtxuiSfk5r/FVtjg==} hasBin: true dev: true + /whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -7172,12 +7201,12 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array@1.1.11: - resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} + /which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + call-bind: 1.0.5 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 @@ -7206,6 +7235,15 @@ packages: isexe: 2.0.0 dev: true + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + /widest-line@4.0.1: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} @@ -7265,8 +7303,8 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + /yaml@2.3.3: + resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} engines: {node: '>= 14'} dev: true @@ -7318,9 +7356,10 @@ packages: engines: {node: '>=10'} dev: true - /yy-fps@2.0.1: - resolution: {integrity: sha512-iwvXWco+WFIDjbT9krASxWiW7FvwUGCYSxjhsU0tPBPKV/MD+GddBH1A2QzE6apIXJvv3AHavQUVl7iTwFTW+g==} - dev: false + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true /z-schema@5.0.5: resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} @@ -7329,22 +7368,25 @@ packages: dependencies: lodash.get: 4.4.2 lodash.isequal: 4.5.0 - validator: 13.9.0 + validator: 13.11.0 optionalDependencies: commander: 9.5.0 dev: true - /zod@3.21.4: - resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: true - /zustand@4.3.9(react@18.2.0): - resolution: {integrity: sha512-Tat5r8jOMG1Vcsj8uldMyqYKC5IZvQif8zetmLHs9WoZlntTHmIoNM8TpLRY31ExncuUvUOXehd0kvahkuHjDw==} + /zustand@4.4.4(react@18.2.0): + resolution: {integrity: sha512-5UTUIAiHMNf5+mFp7/AnzJXS7+XxktULFN0+D1sCiZWyX7ZG+AQpqs2qpYrynRij4QvoDdCD+U+bmg/cG3Ucxw==} engines: {node: '>=12.7.0'} peerDependencies: + '@types/react': '>=16.8' immer: '>=9.0' react: '>=16.8' peerDependenciesMeta: + '@types/react': + optional: true immer: optional: true react: @@ -7352,26 +7394,25 @@ packages: dependencies: react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) - dev: false /zx@7.2.3: resolution: {integrity: sha512-QODu38nLlYXg/B/Gw7ZKiZrvPkEsjPN3LQ5JFXM7h0JvwhEdPNNl+4Ao1y4+o3CLNiDUNcwzQYZ4/Ko7kKzCMA==} engines: {node: '>= 16.0.0'} hasBin: true dependencies: - '@types/fs-extra': 11.0.1 - '@types/minimist': 1.2.2 - '@types/node': 18.17.1 - '@types/ps-tree': 1.1.2 - '@types/which': 3.0.0 + '@types/fs-extra': 11.0.3 + '@types/minimist': 1.2.4 + '@types/node': 18.18.6 + '@types/ps-tree': 1.1.4 + '@types/which': 3.0.1 chalk: 5.3.0 fs-extra: 11.1.1 - fx: 28.0.0 + fx: 30.2.0 globby: 13.2.2 minimist: 1.2.8 node-fetch: 3.3.1 ps-tree: 1.2.0 webpod: 0.0.2 which: 3.0.1 - yaml: 2.3.1 + yaml: 2.3.3 dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 461a5a1..9ddff0f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,4 +1,4 @@ packages: - "apps/*" - "packages/*" - - "release" + - "github/" diff --git a/syncpack.config.js b/syncpack.config.js new file mode 100644 index 0000000..a395942 --- /dev/null +++ b/syncpack.config.js @@ -0,0 +1,24 @@ +// @ts-check + +/** @type {import("syncpack").RcFile} */ +const config = { + sortFirst: [ + "name", + "description", + "homepage", + "repository", + "private", + "version", + "author", + "scripts", + "type", + "main", + "module", + "types", + "exports", + "files", + ], + dependencyTypes: ["!local"], +}; + +module.exports = config;