diff --git a/.changeset/config.json b/.changeset/config.json index fef6dd0..7a67203 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -4,10 +4,25 @@ "commit": false, "fixed": [ [ - "@microblink/blinkid*" + "@microblink/blinkid", + "@microblink/blinkid-core", + "@microblink/blinkid-ux-manager", + "@microblink/blinkid-wasm", + "@microblink/blinkid-worker" ], [ - "@microblink/blinkcard*" + "@microblink/blinkid-verify", + "@microblink/blinkid-verify-core", + "@microblink/blinkid-verify-ux-manager", + "@microblink/blinkid-verify-wasm", + "@microblink/blinkid-verify-worker" + ], + [ + "@microblink/blinkcard", + "@microblink/blinkcard-core", + "@microblink/blinkcard-ux-manager", + "@microblink/blinkcard-wasm", + "@microblink/blinkcard-worker" ] ], "access": "public", @@ -16,6 +31,7 @@ "ignore": [ "@microblink/*-example", "@microblink/*-qa-app", - "@microblink/*-test" -] + "@microblink/*-test", + "github-release" + ] } diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 8e59b16..1753441 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -34,8 +34,8 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: '24' - registry-url: 'https://registry.npmjs.org/' + node-version: "24" + registry-url: "https://registry.npmjs.org/" - name: Setup pnpm uses: pnpm/action-setup@v4 @@ -84,6 +84,13 @@ jobs: "@microblink/blinkcard" ) ;; + "@microblink/blinkid-verify") + PACKAGES=( + "@microblink/blinkid-verify-core" + "@microblink/blinkid-verify-ux-manager" + "@microblink/blinkid-verify" + ) + ;; *) echo "skip_publish=true" >> "$GITHUB_OUTPUT" echo "skip_reason=Release name does not contain a supported package name before the last @." >> "$GITHUB_OUTPUT" diff --git a/README.md b/README.md index 272e5f7..349bb48 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,9 @@ Have questions, feedback, or running into issues? We're here to help! Contact us | [@microblink/blinkid](https://github.com/microblink/web-sdks/tree/main/packages/blinkid) | [![npm](https://img.shields.io/npm/v/@microblink/blinkid.svg)](https://www.npmjs.com/package/@microblink/blinkid) | [CHANGELOG](https://github.com/microblink/web-sdks/blob/main/packages/blinkid/CHANGELOG.md) | | [@microblink/blinkid-core](https://github.com/microblink/web-sdks/tree/main/packages/blinkid-core) | [![npm](https://img.shields.io/npm/v/@microblink/blinkid-core.svg)](https://www.npmjs.com/package/@microblink/blinkid-core) | [CHANGELOG](https://github.com/microblink/web-sdks/blob/main/packages/blinkid-core/CHANGELOG.md) | | [@microblink/blinkid-ux-manager](https://github.com/microblink/web-sdks/tree/main/packages/blinkid-ux-manager) | [![npm](https://img.shields.io/npm/v/@microblink/blinkid-ux-manager.svg)](https://www.npmjs.com/package/@microblink/blinkid-ux-manager) | [CHANGELOG](https://github.com/microblink/web-sdks/blob/main/packages/blinkid-ux-manager/CHANGELOG.md) | +| [@microblink/blinkid-verify](https://github.com/microblink/web-sdks/tree/main/packages/blinkid-verify) | [![npm](https://img.shields.io/npm/v/@microblink/blinkid-verify.svg)](https://www.npmjs.com/package/@microblink/blinkid-verify) | [CHANGELOG](https://github.com/microblink/web-sdks/blob/main/packages/blinkid-verify/CHANGELOG.md) | +| [@microblink/blinkid-verify-core](https://github.com/microblink/web-sdks/tree/main/packages/blinkid-verify-core) | [![npm](https://img.shields.io/npm/v/@microblink/blinkid-verify-core.svg)](https://www.npmjs.com/package/@microblink/blinkid-verify-core) | [CHANGELOG](https://github.com/microblink/web-sdks/blob/main/packages/blinkid-verify-core/CHANGELOG.md) | +| [@microblink/blinkid-verify-ux-manager](https://github.com/microblink/web-sdks/tree/main/packages/blinkid-verify-ux-manager) | [![npm](https://img.shields.io/npm/v/@microblink/blinkid-verify-ux-manager.svg)](https://www.npmjs.com/package/@microblink/blinkid-verify-ux-manager) | [CHANGELOG](https://github.com/microblink/web-sdks/blob/main/packages/blinkid-verify-ux-manager/CHANGELOG.md) | | [@microblink/blinkcard](https://github.com/microblink/web-sdks/tree/main/packages/blinkcard) | [![npm](https://img.shields.io/npm/v/@microblink/blinkcard.svg)](https://www.npmjs.com/package/@microblink/blinkcard) | [CHANGELOG](https://github.com/microblink/web-sdks/blob/main/packages/blinkcard/CHANGELOG.md) | | [@microblink/blinkcard-core](https://github.com/microblink/web-sdks/tree/main/packages/blinkcard-core) | [![npm](https://img.shields.io/npm/v/@microblink/blinkcard-core.svg)](https://www.npmjs.com/package/@microblink/blinkcard-core) | [CHANGELOG](https://github.com/microblink/web-sdks/blob/main/packages/blinkcard-core/CHANGELOG.md) | | [@microblink/blinkcard-ux-manager](https://github.com/microblink/web-sdks/tree/main/packages/blinkcard-ux-manager) | [![npm](https://img.shields.io/npm/v/@microblink/blinkcard-ux-manager.svg)](https://www.npmjs.com/package/@microblink/blinkcard-ux-manager) | [CHANGELOG](https://github.com/microblink/web-sdks/blob/main/packages/blinkcard-ux-manager/CHANGELOG.md) | diff --git a/apps/examples/README.md b/apps/examples/README.md index dc22e18..794f953 100644 --- a/apps/examples/README.md +++ b/apps/examples/README.md @@ -1,6 +1,6 @@ -# BlinkID and BlinkCard Example Applications +# BlinkID, BlinkCard, and BlinkID Verify Example Applications -This directory contains example applications demonstrating the capabilities of the BlinkID and BlinkCard SDKs. +This directory contains example applications demonstrating the capabilities of the BlinkID, BlinkCard, and BlinkID Verify SDKs. ## Available Examples @@ -23,6 +23,11 @@ This directory contains example applications demonstrating the capabilities of t - [Camera Manager](./camera-manager/): An example of how to use the camera manager. - [Camera Selection](./camera-selection/): An example of how to use the camera selection feature. +### BlinkID Verify + +- [BlinkID Verify Simple](./blinkid-verify-simple/): A simple example of how to use the BlinkID Verify SDK. +- [BlinkID Verify Advanced Setup](./blinkid-verify-advanced-setup/): Demonstrates advanced setup and customization of the BlinkID Verify SDK. + ## Getting Started To run any of the example applications, follow these steps: @@ -45,11 +50,11 @@ pnpm build:packages ### 3. Set up the License Key -BlinkID and BlinkCard example applications require a license key to run. You can obtain a free trial license key by registering on the [Microblink Developer Hub](https://developer.microblink.com/license/new). +BlinkID, BlinkCard, and BlinkID Verify example applications require a license key to run. You can obtain a free trial license key by registering on the [Microblink Developer Hub](https://developer.microblink.com/license/new). After obtaining the license key, create a `.env.local` file in the root of the specific example application you want to run (e.g., `apps/examples/blinkid-simple/.env.local`) and add the following line: -``` +```env VITE_LICENCE_KEY=your-license-key ``` diff --git a/apps/examples/blinkid-verify-advanced-setup/.env.example b/apps/examples/blinkid-verify-advanced-setup/.env.example new file mode 100644 index 0000000..b3facb7 --- /dev/null +++ b/apps/examples/blinkid-verify-advanced-setup/.env.example @@ -0,0 +1,7 @@ +# 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/examples/blinkid-verify-advanced-setup/.eslintrc.cjs b/apps/examples/blinkid-verify-advanced-setup/.eslintrc.cjs new file mode 100644 index 0000000..4b6a985 --- /dev/null +++ b/apps/examples/blinkid-verify-advanced-setup/.eslintrc.cjs @@ -0,0 +1,53 @@ +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/examples/blinkid-verify-advanced-setup/.gitignore b/apps/examples/blinkid-verify-advanced-setup/.gitignore new file mode 100644 index 0000000..dd89a0e --- /dev/null +++ b/apps/examples/blinkid-verify-advanced-setup/.gitignore @@ -0,0 +1,7 @@ +node_modules +dist +public +types +certs +*.local +.env.production \ No newline at end of file diff --git a/apps/examples/blinkid-verify-advanced-setup/README.md b/apps/examples/blinkid-verify-advanced-setup/README.md new file mode 100644 index 0000000..c1bc175 --- /dev/null +++ b/apps/examples/blinkid-verify-advanced-setup/README.md @@ -0,0 +1,33 @@ +# BlinkID Verify Advanced Setup Example + +This example application demonstrates an advanced setup of the BlinkID Verify SDK, showcasing the integration of various components such as `@microblink/blinkid-verify-core`, `@microblink/blinkid-verify-ux-manager`, and `@microblink/camera-manager`. + +## Functionality + +The application performs the following actions: + +1. **Initializes the BlinkID Verify Core**: It starts by loading the WebAssembly (WASM) module and initializing the scanning engine with a license key. + +2. **Creates a Scanning Session**: A new scanning session is created with specific settings. + +3. **Manages the Camera**: It utilizes the `CameraManager` to handle the camera stream. + +4. **Manages the User Experience**: The `BlinkIdVerifyUxManager` is used to orchestrate the user experience, managing the interaction between the camera and the scanning session. + +5. **Renders the UI**: The application creates and mounts the camera and feedback UI components to the DOM, rendered as a portal outside the root element. It provides an option to show or hide an onboarding guide for the user. + +6. **Handles Results**: Upon successful scanning, the application displays the captured front, back, and barcode frame images. It also includes an optional debug overlay that shows live feedback stabilizer scores as a bar chart, the current UX state key, and the processing status. + +7. **Cleanup**: When the UI is dismounted, the application terminates the BlinkID Verify Core instance to free up resources. + +## Key Features Demonstrated + +- **Modular Integration**: Shows how to import and use different modules of the BlinkID Verify SDK (`blinkid-verify-core`, `blinkid-verify-ux-manager`, `camera-manager`) independently. +- **Manual Control**: Demonstrates how to manually control the initialization, scanning process, and UI components. +- **Custom UI**: Provides an example of how to integrate the SDK's UI components into a custom application layout. +- **Event Handling**: Shows how to subscribe to events from the `CameraManager` and `BlinkIdVerifyUxManager` to create a responsive user experience. +- **Result Handling**: Illustrates how to receive and display scanning results, including captured document frame images. + +## How to Run + +For detailed instructions on how to install dependencies and run this example, please refer to the [main README file](./../README.md). diff --git a/apps/examples/blinkid-verify-advanced-setup/index.html b/apps/examples/blinkid-verify-advanced-setup/index.html new file mode 100644 index 0000000..b0c53a1 --- /dev/null +++ b/apps/examples/blinkid-verify-advanced-setup/index.html @@ -0,0 +1,20 @@ + + + + + + + + + BlinkID Verify Advanced Setup Example + + + +
+ + + + diff --git a/apps/examples/blinkid-verify-advanced-setup/lint-staged.config.cjs b/apps/examples/blinkid-verify-advanced-setup/lint-staged.config.cjs new file mode 100644 index 0000000..13dc136 --- /dev/null +++ b/apps/examples/blinkid-verify-advanced-setup/lint-staged.config.cjs @@ -0,0 +1,7 @@ +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/examples/blinkid-verify-advanced-setup/package.json b/apps/examples/blinkid-verify-advanced-setup/package.json new file mode 100644 index 0000000..855998d --- /dev/null +++ b/apps/examples/blinkid-verify-advanced-setup/package.json @@ -0,0 +1,46 @@ +{ + "name": "example-blinkid-verify-advanced-setup", + "description": "An example of advanced BlinkID Verify SDK setup", + "private": true, + "scripts": { + "build": "vite build", + "build:js-dev": "vite build --mode development", + "clean": "rimraf dist public .turbo types tsconfig.tsbuildinfo", + "dev": "vite --host", + "lint": "concurrently pnpm:lint:types pnpm:lint:eslint", + "lint:eslint": "eslint ./src --max-warnings 0", + "lint:types": "tsc --emitDeclarationOnly false --noEmit", + "preview": "vite preview", + "watch": "vite build --watch --mode development" + }, + "type": "module", + "dependencies": { + "@microblink/blinkid-verify-core": "workspace:^", + "@microblink/blinkid-verify-ux-manager": "workspace:^", + "@microblink/camera-manager": "workspace:^", + "@microblink/feedback-stabilizer": "workspace:^", + "solid-js": "^1.9.11", + "yy-fps": "^2.0.1" + }, + "devDependencies": { + "@microblink/tsconfig": "workspace:*", + "@microblink/repo-utils": "workspace:*", + "@typescript-eslint/eslint-plugin": "^6.9.0", + "concurrently": "^9.1.2", + "eslint": "^8.57.0", + "eslint-config-prettier": "10.1.8", + "eslint-define-config": "^1.24.1", + "eslint-plugin-solid": "0.14.5", + "mkcert-cli": "^1.5.0", + "prettier": "^3.8.1", + "rimraf": "^6.0.1", + "tsc-files": "^1.1.4", + "typescript": "5.8.3", + "vite": "^6.2.1", + "vite-plugin-mkcert": "^1.17.9", + "vite-plugin-qrcode": "0.3.0", + "vite-plugin-solid": "^2.11.10", + "zx": "^8.8.5" + }, + "license": "MIT" +} diff --git a/apps/examples/blinkid-verify-advanced-setup/src/App.tsx b/apps/examples/blinkid-verify-advanced-setup/src/App.tsx new file mode 100644 index 0000000..f0f133a --- /dev/null +++ b/apps/examples/blinkid-verify-advanced-setup/src/App.tsx @@ -0,0 +1,282 @@ +/** + * Copyright (c) 2026 Microblink Ltd. All rights reserved. + */ + +/* @refresh reload */ + +import { + BlinkIdVerifyProcessResult, + BlinkIdVerifyScanningResult, + loadBlinkIdVerifyCore, +} from "@microblink/blinkid-verify-core"; +import { + BlinkIdVerifyUxManager, + createBlinkIdVerifyFeedbackUi, + createBlinkIdVerifyUxManager, +} from "@microblink/blinkid-verify-ux-manager"; +import { + CameraManager, + createCameraManagerUi, +} from "@microblink/camera-manager"; + +import { + Component, + createEffect, + createMemo, + createSignal, + onMount, + Show, +} from "solid-js"; + +/** + * Debug info will be displayed in the UI. + */ +const SHOW_DEBUG = true; + +/** + * If you are using a portal, you can set this to true. Portal is a way to render the UI outside of the root element. + * This is useful if you want to use the SDK in a modal or a popup. + */ +const USE_PORTAL = true; + +/** + * If the onboarding guide should be shown. + */ +const SHOW_ONBOARDING = false; + +/** + * This is the target node for the UI. + */ +const targetNode = !USE_PORTAL ? document.getElementById("root")! : undefined; + +/** + * This is the main component of the application. + */ +export const App: Component = () => { + const [result, setResult] = createSignal(); + const [blinkIdVerifyUxManager, setBlinkIdVerifyUxManager] = + createSignal(); + const [loadState, setLoadState] = createSignal< + "not-loaded" | "loading" | "ready" + >("not-loaded"); + + /** + * This function removes the images from the result object. This is done only so we don't display raw images data in the UI. + */ + const resultWithoutImages = () => { + const resultCopy = structuredClone(result()); + + return resultCopy; + }; + + async function init() { + setLoadState("loading"); + setResult(undefined); + + /* + * We first initialize the direct API. This loads the WASM module and initializes the engine. + * For additional configuration look at the BlinkIdVerifyInitSettings type. + * + */ + const blinkIdVerifyCore = await loadBlinkIdVerifyCore({ + licenseKey: import.meta.env.VITE_LICENCE_KEY, + }); + + console.log("creating new session"); + + /* + * Initialize the session with the default settings. + * For additional configuration look at the BlinkIdVerifySessionSettings type. + * + */ + const session = await blinkIdVerifyCore.createScanningSession({}); + + /* + * Create the camera manager. + */ + const cameraManager = new CameraManager(); + + /* + * Create the UX manager. + */ + const uxManager = await createBlinkIdVerifyUxManager( + cameraManager, + session, + ); + // set the timeout duration to null to disable the timeout. + uxManager.setTimeoutDuration(null); + + setBlinkIdVerifyUxManager(uxManager); + + /* + * This creates the UI and attaches it to the DOM. + * For additional configuration look at the CameraManagerUiOptions type. + * + */ + const cameraUi = await createCameraManagerUi(cameraManager, targetNode, { + showMirrorCameraButton: true, + }); + + /* + * This callback is called when the UI is dismounted. + * This is useful if you want to perform some actions when the UI is dismounted. + */ + cameraUi.addOnDismountCallback(() => { + void blinkIdVerifyCore.terminate(); + setBlinkIdVerifyUxManager(undefined); + setLoadState("not-loaded"); + }); + + /* + * This callback is called when the result is ready. + * This is useful if you want to perform some actions when the result is ready. + */ + uxManager.addOnResultCallback((result) => { + setResult(result); + cameraUi.dismount(); + }); + + /* + * This callback is called when the frame is processed. + * This is useful if you want to perform some actions on certain results. + */ + uxManager.addOnFrameProcessCallback( + (frameProcessResult: BlinkIdVerifyProcessResult) => { + console.log("frame processed", frameProcessResult); + }, + ); + + /* + * Subscribe to the playback state. + */ + const unsub = cameraManager.subscribe( + (s) => s.playbackState, + (state) => { + /* + * We wait until the video starts playing before we create the feedback UI + * and start the frame capture. This also allows for the user to retry granting + * camera permissions if they are not granted on the first try. + */ + if (state === "playback") { + /* + * this creates the feedback UI and attaches it to the camera UI + */ + createBlinkIdVerifyFeedbackUi(uxManager, cameraUi, { + showOnboardingGuide: SHOW_ONBOARDING, + /* + * example of localization update + */ + // localizationStrings: { + // scan_the_front_side: "Scan the front side of the ID card", + // }, + }); + + /* + * if we are not showing the onboarding guide, we start the frame + * capture manually otherwise, the user will be prompted to start the + * frame capture + */ + if (!SHOW_ONBOARDING) { + void cameraManager.startFrameCapture(); + } + + setLoadState("ready"); + unsub(); // unsubscribe from the playback state + } + }, + ); + + /* + * Start the camera stream. This will start the camera stream and ask the user for camera permissions. + */ + await cameraManager.startCameraStream({ + /* + * This is an example of how to set the preferred camera. + * In this case, we are setting the preferred camera to the first camera that contains "obs" in the name. + */ + preferredCamera: (cameras) => { + return cameras.find((camera) => + camera.name.toLowerCase().includes("obs"), + ); + }, + }); + } + + onMount(() => { + void init(); + }); + + return ( +
+ + + + + {/* Results */} + + {(trimmedResult) => ( + + )} + +
+ ); +}; + +function DisplayBlinkIdVerifyResult(props: { + result: BlinkIdVerifyScanningResult; +}) { + createEffect(() => { + console.log(props.result); + }); + + const CreateImageSection = (props: { title: string; bytes: Uint8Array }) => { + // Clone into a guaranteed-ArrayBuffer-backed typed array + const url = createMemo(() => { + const cloned = props.bytes.slice(); // Uint8Array.slice() creates new ArrayBuffer + const blob = new Blob([cloned.buffer], { type: "image/jpeg" }); + const url = URL.createObjectURL(blob); + return url; + }); + + return ( +
+
+ {props.title} +
+ URL.revokeObjectURL(url())} + /> +
+ ); + }; + + return ( +
+ + + + + + + + + +
+ ); +} diff --git a/apps/examples/blinkid-verify-advanced-setup/src/assets/favicon.ico b/apps/examples/blinkid-verify-advanced-setup/src/assets/favicon.ico new file mode 100644 index 0000000..b836b2b Binary files /dev/null and b/apps/examples/blinkid-verify-advanced-setup/src/assets/favicon.ico differ diff --git a/apps/examples/blinkid-verify-advanced-setup/src/index.css b/apps/examples/blinkid-verify-advanced-setup/src/index.css new file mode 100644 index 0000000..4ea5126 --- /dev/null +++ b/apps/examples/blinkid-verify-advanced-setup/src/index.css @@ -0,0 +1,22 @@ +body { + margin: 0; +} + +:root { + background-color: #282c34; + color: white; + min-height: 300vh; + font-family: + -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", + "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; +} + +/* override variable example */ +/*#mb-camera-host::part(capture-screen-part) { + --color-primary: 255 5 5; +}*/ + +/* modify the camera select here */ +/* #mb-camera-host::part(camera-select-part) { + display: none; +} */ diff --git a/apps/examples/blinkid-verify-advanced-setup/src/index.tsx b/apps/examples/blinkid-verify-advanced-setup/src/index.tsx new file mode 100644 index 0000000..e9119f1 --- /dev/null +++ b/apps/examples/blinkid-verify-advanced-setup/src/index.tsx @@ -0,0 +1,9 @@ +/** + * Copyright (c) 2026 Microblink Ltd. All rights reserved. + */ + +import { render } from "solid-js/web"; +import { App } from "./App"; +import "./index.css"; + +render(() => , document.getElementById("root")!); diff --git a/apps/examples/blinkid-verify-advanced-setup/tsconfig.json b/apps/examples/blinkid-verify-advanced-setup/tsconfig.json new file mode 100644 index 0000000..b742594 --- /dev/null +++ b/apps/examples/blinkid-verify-advanced-setup/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "@microblink/tsconfig/base.json", + "compilerOptions": { + "noEmit": true, + "declaration": false, + "declarationMap": false, + "rootDir": "src", + "jsx": "preserve", + "jsxImportSource": "solid-js", + "types": ["vite/client"] + }, + "include": ["src"] +} diff --git a/apps/examples/blinkid-verify-advanced-setup/vite.config.ts b/apps/examples/blinkid-verify-advanced-setup/vite.config.ts new file mode 100644 index 0000000..1d79bf7 --- /dev/null +++ b/apps/examples/blinkid-verify-advanced-setup/vite.config.ts @@ -0,0 +1,52 @@ +/** + * Copyright (c) 2026 Microblink Ltd. All rights reserved. + */ + +import { moveResources } from "@microblink/repo-utils"; +import dns from "dns"; +import { ServerOptions, defineConfig } from "vite"; +import mkcert from "vite-plugin-mkcert"; +import { qrcode } from "vite-plugin-qrcode"; +import solidPlugin from "vite-plugin-solid"; + +// https://vitejs.dev/guide/migration.html#architecture-changes-and-legacy-options +dns.setDefaultResultOrder("verbatim"); + +let ranOnce = false; + +const serverOptions: ServerOptions = { + port: 3000, + headers: { + "Cross-Origin-Embedder-Policy": "require-corp", + "Cross-Origin-Opener-Policy": "same-origin", + }, +}; + +export default defineConfig((config) => { + return { + base: "./", + build: { + sourcemap: config.mode === "development", + target: "es2022", + }, + plugins: [ + // symlink wasm resources to public/resources + { + name: "move-resources", + buildStart: async () => { + if (ranOnce) { + return; + } + moveResources("@microblink/blinkid-verify-core", "public/resources"); + ranOnce = true; + }, + }, + qrcode(), + solidPlugin(), + // Generates certificates for https + mkcert(), + ], + server: serverOptions, + preview: serverOptions, + }; +}); diff --git a/apps/examples/blinkid-verify-simple/.env.example b/apps/examples/blinkid-verify-simple/.env.example new file mode 100644 index 0000000..b3facb7 --- /dev/null +++ b/apps/examples/blinkid-verify-simple/.env.example @@ -0,0 +1,7 @@ +# 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/examples/blinkid-verify-simple/.eslintrc.cjs b/apps/examples/blinkid-verify-simple/.eslintrc.cjs new file mode 100644 index 0000000..4b6a985 --- /dev/null +++ b/apps/examples/blinkid-verify-simple/.eslintrc.cjs @@ -0,0 +1,53 @@ +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/examples/blinkid-verify-simple/.gitignore b/apps/examples/blinkid-verify-simple/.gitignore new file mode 100644 index 0000000..dd89a0e --- /dev/null +++ b/apps/examples/blinkid-verify-simple/.gitignore @@ -0,0 +1,7 @@ +node_modules +dist +public +types +certs +*.local +.env.production \ No newline at end of file diff --git a/apps/examples/blinkid-verify-simple/README.md b/apps/examples/blinkid-verify-simple/README.md new file mode 100644 index 0000000..acb909f --- /dev/null +++ b/apps/examples/blinkid-verify-simple/README.md @@ -0,0 +1,26 @@ +# BlinkID Verify Simple Example + +This example application provides a minimal demonstration of how to integrate and use the BlinkID Verify SDK in a web application. It showcases the simplest way to get started with document scanning. + +## Functionality + +The application performs the following actions: + +1. **Initializes BlinkID Verify**: It calls the `createBlinkIdVerify` function, which handles the entire setup process, including loading the SDK, setting up the camera, and creating the UI. + +2. **Sets up a Result Callback**: It registers a callback function that will be invoked when a document is successfully scanned. + +3. **Logs the Result**: When the callback is triggered, it logs the scanning result to the console. + +4. **Cleans up Resources**: After logging the result, it calls the `destroy` method to release all resources used by the SDK. + +## Key Features Demonstrated + +- **High-Level API**: Shows the usage of the `createBlinkIdVerify` high-level function, which simplifies the integration process by abstracting away the underlying complexities. +- **Minimal Configuration**: Demonstrates how to initialize the SDK with just a license key and minimal UI options. +- **Result Handling**: Provides a straightforward example of how to receive scanning results using a callback. +- **Resource Management**: Illustrates the importance of calling the `destroy` method to clean up resources after the scanning is complete. + +## How to Run + +For detailed instructions on how to install dependencies and run this example, please refer to the [main README file](./../README.md). diff --git a/apps/examples/blinkid-verify-simple/index.html b/apps/examples/blinkid-verify-simple/index.html new file mode 100644 index 0000000..7edf117 --- /dev/null +++ b/apps/examples/blinkid-verify-simple/index.html @@ -0,0 +1,21 @@ + + + + + + + + + BlinkID Verify Simple Example + + + +
+ + + + + diff --git a/apps/examples/blinkid-verify-simple/lint-staged.config.cjs b/apps/examples/blinkid-verify-simple/lint-staged.config.cjs new file mode 100644 index 0000000..13dc136 --- /dev/null +++ b/apps/examples/blinkid-verify-simple/lint-staged.config.cjs @@ -0,0 +1,7 @@ +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/examples/blinkid-verify-simple/package.json b/apps/examples/blinkid-verify-simple/package.json new file mode 100644 index 0000000..35e9a55 --- /dev/null +++ b/apps/examples/blinkid-verify-simple/package.json @@ -0,0 +1,40 @@ +{ + "name": "example-blinkid-verify-simple", + "description": "Example quickstart app showcasing usage of the @microblink/blinkid-verify package", + "private": true, + "scripts": { + "build": "vite build", + "build:js-dev": "vite build --mode development", + "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", + "preview": "vite preview", + "watch": "vite build --watch --mode development" + }, + "type": "module", + "dependencies": { + "@microblink/blinkid-verify": "workspace:^" + }, + "devDependencies": { + "@microblink/tsconfig": "workspace:*", + "@microblink/repo-utils": "workspace:*", + "@typescript-eslint/eslint-plugin": "^6.9.0", + "concurrently": "^9.1.2", + "eslint": "^8.57.0", + "eslint-config-prettier": "10.1.8", + "eslint-define-config": "^1.24.1", + "eslint-plugin-solid": "0.14.5", + "prettier": "^3.8.1", + "resolve-package-path": "^4.0.3", + "rimraf": "^6.0.1", + "sass": "^1.85.0", + "tsc-files": "^1.1.4", + "typescript": "5.8.3", + "vite": "^6.2.1", + "vite-plugin-mkcert": "^1.17.9", + "zx": "^8.8.5" + }, + "license": "MIT" +} diff --git a/apps/examples/blinkid-verify-simple/src/assets/favicon.ico b/apps/examples/blinkid-verify-simple/src/assets/favicon.ico new file mode 100644 index 0000000..b836b2b Binary files /dev/null and b/apps/examples/blinkid-verify-simple/src/assets/favicon.ico differ diff --git a/apps/examples/blinkid-verify-simple/src/index.ts b/apps/examples/blinkid-verify-simple/src/index.ts new file mode 100644 index 0000000..58fd25f --- /dev/null +++ b/apps/examples/blinkid-verify-simple/src/index.ts @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2026 Microblink Ltd. All rights reserved. + */ + +import { + BlinkIdVerifyScanningResult, + createBlinkIdVerify, +} from "@microblink/blinkid-verify"; + +/** + * This is the main component of the application. + * It creates the BlinkID verify instance. For additional configuration look at the createBlinkIdVerify function. + * + */ +const blinkIdVerify = await createBlinkIdVerify({ + licenseKey: import.meta.env.VITE_LICENCE_KEY, + cameraManagerUiOptions: { + showMirrorCameraButton: false, + }, +}); + +/** + * This callback is called when the result is ready. + * This is useful if you want to perform some actions when the result is ready. + * For additional configuration look at the addOnResultCallback function. + * + */ +blinkIdVerify.addOnResultCallback((result: BlinkIdVerifyScanningResult) => { + console.log("Result:", result); + void blinkIdVerify.destroy(); +}); diff --git a/apps/examples/blinkid-verify-simple/src/vite-env.d.ts b/apps/examples/blinkid-verify-simple/src/vite-env.d.ts new file mode 100644 index 0000000..93130bf --- /dev/null +++ b/apps/examples/blinkid-verify-simple/src/vite-env.d.ts @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2026 Microblink Ltd. All rights reserved. + */ + +/// + +interface ImportMetaEnv { + readonly VITE_LICENCE_KEY: string; +} + +interface ImportMeta { + readonly env: ImportMetaEnv; +} diff --git a/apps/examples/blinkid-verify-simple/tsconfig.json b/apps/examples/blinkid-verify-simple/tsconfig.json new file mode 100644 index 0000000..3e2db0d --- /dev/null +++ b/apps/examples/blinkid-verify-simple/tsconfig.json @@ -0,0 +1,14 @@ +{ + // "extends": "@microblink/tsconfig/base.json", + "compilerOptions": { + "noEmit": true, + "module": "Preserve", + "strict": true, + "declarationMap": false, + "target": "es2022", + "rootDir": "src", + "jsx": "preserve", + "types": ["vite/client"] + }, + "include": ["src"] +} diff --git a/apps/examples/blinkid-verify-simple/vite.config.ts b/apps/examples/blinkid-verify-simple/vite.config.ts new file mode 100644 index 0000000..843e243 --- /dev/null +++ b/apps/examples/blinkid-verify-simple/vite.config.ts @@ -0,0 +1,65 @@ +/** + * Copyright (c) 2026 Microblink Ltd. All rights reserved. + */ + +import { moveResources } from "@microblink/repo-utils"; +import dns from "dns"; +import { defineConfig, Plugin, ServerOptions } from "vite"; +import mkcert from "vite-plugin-mkcert"; + +// https://vitejs.dev/guide/migration.html#architecture-changes-and-legacy-options +dns.setDefaultResultOrder("verbatim"); + +let ranOnce = false; + +const serverOptions: ServerOptions = { + port: 3000, + headers: { + "Cross-Origin-Embedder-Policy": "require-corp", + "Cross-Origin-Opener-Policy": "same-origin", + }, + host: true, +}; + +// Custom plugin to add resource-specific headers +const resourceHeadersPlugin: Plugin = { + name: "resource-headers-plugin", + configureServer(server) { + server.middlewares.use((req, res, next) => { + if (req.url?.includes("/resources/")) { + res.setHeader("Cache-Control", "max-age=300"); + res.setHeader("Access-Control-Allow-Origin", "*"); + } + next(); + }); + }, +}; + +export default defineConfig((config) => { + return { + base: "./", + build: { + sourcemap: config.mode === "development", + target: "es2022", + }, + plugins: [ + // symlink wasm resources to public/resources + { + name: "move-resources", + buildStart: async () => { + if (ranOnce) { + return; + } + moveResources("@microblink/blinkid-verify", "public/resources"); + ranOnce = true; + }, + }, + // Add resource-specific headers + resourceHeadersPlugin, + // Generates certificates for https + mkcert(), + ], + server: serverOptions, + preview: serverOptions, + }; +}); diff --git a/docs/blinkcard/OssDependencies.md b/docs/blinkcard/OssDependencies.md index 3438089..768f712 100644 --- a/docs/blinkcard/OssDependencies.md +++ b/docs/blinkcard/OssDependencies.md @@ -12,10 +12,10 @@ This report includes: | Package | Version | License | Author | Homepage | |---------|---------|---------|---------|----------| -| @ark-ui/solid | 5.31.0 | MIT | N/A | [Link](https://ark-ui.com) | +| @ark-ui/solid | 5.30.0 | MIT | N/A | [Link](https://ark-ui.com) | | @csstools/normalize.css | 12.1.1 | CC0-1.0 | Jonathan Neal | [Link](https://github.com/csstools/normalize.css#readme) | -| @floating-ui/core | 1.7.4 | MIT | atomiks | [Link](https://floating-ui.com) | -| @floating-ui/dom | 1.7.5 | MIT | atomiks | [Link](https://floating-ui.com) | +| @floating-ui/core | 1.7.3 | MIT | atomiks | [Link](https://floating-ui.com) | +| @floating-ui/dom | 1.7.4 | MIT | atomiks | [Link](https://floating-ui.com) | | @floating-ui/utils | 0.2.10 | MIT | atomiks | [Link](https://floating-ui.com) | | @internationalized/date | 3.10.0 | Apache-2.0 | N/A | [Link](https://github.com/adobe/react-spectrum/tree/main#readme) | | @internationalized/number | 3.6.5 | Apache-2.0 | N/A | [Link](https://github.com/adobe/react-spectrum#readme) | @@ -25,90 +25,90 @@ This report includes: | @motionone/generators | 10.18.0 | MIT | Matt Perry | N/A | | @motionone/types | 10.17.1 | MIT | Matt Perry | N/A | | @motionone/utils | 10.18.0 | MIT | Matt Perry | N/A | -| @solid-primitives/event-listener | 2.4.3 | MIT | David Di Biase | [Link](https://primitives.solidjs.community/package/event-listener) | -| @solid-primitives/keyed | 1.5.3 | MIT | Damian Tarnawski @thetarnav | [Link](https://primitives.solidjs.community/package/keyed) | +| @solid-primitives/event-listener | 2.4.5 | MIT | David Di Biase | [Link](https://primitives.solidjs.community/package/event-listener) | +| @solid-primitives/keyed | 1.5.2 | MIT | Damian Tarnawski @thetarnav | [Link](https://primitives.solidjs.community/package/keyed) | | @solid-primitives/props | 3.1.11 | MIT | Damian Tarnawski | [Link](https://primitives.solidjs.community/package/props) | | @solid-primitives/refs | 1.0.8 | MIT | Damian Tarnawski @thetarnav | [Link](https://primitives.solidjs.community/package/refs) | -| @solid-primitives/resize-observer | 2.1.3 | MIT | Moshe Udimar | [Link](https://primitives.solidjs.community/package/resize-observer) | -| @solid-primitives/rootless | 1.5.2 | MIT | Damian Tarnawski @thetarnav | [Link](https://primitives.solidjs.community/package/rootless) | -| @solid-primitives/static-store | 0.1.2 | MIT | Damian Tarnawski | [Link](https://primitives.solidjs.community/package/static-store) | +| @solid-primitives/resize-observer | 2.1.5 | MIT | Moshe Udimar | [Link](https://primitives.solidjs.community/package/resize-observer) | +| @solid-primitives/rootless | 1.5.3 | MIT | Damian Tarnawski @thetarnav | [Link](https://primitives.solidjs.community/package/rootless) | +| @solid-primitives/static-store | 0.1.3 | MIT | Damian Tarnawski | [Link](https://primitives.solidjs.community/package/static-store) | | @solid-primitives/transition-group | 1.0.5 | MIT | Damian Tarnawski | [Link](https://primitives.solidjs.community/package/transition-group) | | @solid-primitives/utils | 6.2.3 | MIT | Damian Tarnawski @thetarnav | [Link](https://github.com/solidjs-community/solid-primitives/tree/main/packages/utils#readme) | | @swc/helpers | 0.5.3 | Apache-2.0 | 강동윤 | [Link](https://swc.rs) | | @wessberg/connection-observer | 1.0.5 | MIT | N/A | [Link](https://github.com/wessberg/connection-observer#readme) | -| @zag-js/accordion | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/anatomy | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/angle-slider | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/aria-hidden | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/async-list | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/auto-resize | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/avatar | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/bottom-sheet | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/carousel | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/checkbox | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/clipboard | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/collapsible | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/collection | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/color-picker | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/color-utils | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/combobox | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/core | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/date-picker | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/date-utils | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/dialog | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/dismissable | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/dom-query | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/editable | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/file-upload | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/file-utils | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/floating-panel | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/focus-trap | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/focus-visible | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/highlight-word | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/hover-card | 1.33.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/i18n-utils | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/image-cropper | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/interact-outside | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/json-tree-utils | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/listbox | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/live-region | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/marquee | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/menu | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/navigation-menu | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/number-input | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/pagination | 1.33.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/password-input | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/pin-input | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/popover | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/popper | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/presence | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/progress | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/qr-code | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/radio-group | 1.33.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/rating-group | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/rect-utils | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/remove-scroll | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/scroll-area | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/scroll-snap | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/select | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/signature-pad | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/slider | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/solid | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/splitter | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/steps | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/store | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/switch | 1.33.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/tabs | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/tags-input | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/timer | 1.33.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/toast | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/toggle | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/toggle-group | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/tooltip | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/tour | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/tree-view | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/types | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/utils | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/accordion | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/anatomy | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/angle-slider | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/aria-hidden | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/async-list | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/auto-resize | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/avatar | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/bottom-sheet | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/carousel | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/checkbox | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/clipboard | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/collapsible | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/collection | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/color-picker | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/color-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/combobox | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/core | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/date-picker | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/date-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/dialog | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/dismissable | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/dom-query | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/editable | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/file-upload | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/file-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/floating-panel | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/focus-trap | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/focus-visible | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/highlight-word | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/hover-card | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/i18n-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/image-cropper | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/interact-outside | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/json-tree-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/listbox | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/live-region | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/marquee | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/menu | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/navigation-menu | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/number-input | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/pagination | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/password-input | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/pin-input | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/popover | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/popper | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/presence | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/progress | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/qr-code | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/radio-group | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/rating-group | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/rect-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/remove-scroll | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/scroll-area | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/scroll-snap | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/select | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/signature-pad | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/slider | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/solid | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/splitter | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/steps | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/store | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/switch | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tabs | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tags-input | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/timer | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/toast | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/toggle | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/toggle-group | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tooltip | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tour | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tree-view | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/types | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | | clsx | 2.1.1 | MIT | Luke Edwards | [Link](https://github.com/lukeed/clsx#readme) | | comlink | 4.4.2 | Apache-2.0 | Surma | [Link](https://github.com/GoogleChromeLabs/comlink#readme) | | common-tags | 1.8.2 | MIT | Declan de Wet | [Link](https://github.com/zspecza/common-tags) | diff --git a/docs/blinkid-verify/OssDependencies.md b/docs/blinkid-verify/OssDependencies.md new file mode 100644 index 0000000..1b893a1 --- /dev/null +++ b/docs/blinkid-verify/OssDependencies.md @@ -0,0 +1,140 @@ +# Open Source Dependencies Report + +This report lists all open source dependencies used in the BlinkID Verify SDK packages. + +## Summary + +This report includes: +- **NPM Dependencies**: Production dependencies from all packages in the monorepo (126 packages) +- **C++ Dependencies**: Native dependencies for WebAssembly builds (0 unique packages across 0 build flavors) + +## NPM Dependencies + +| Package | Version | License | Author | Homepage | +|---------|---------|---------|---------|----------| +| @ark-ui/solid | 5.30.0 | MIT | N/A | [Link](https://ark-ui.com) | +| @csstools/normalize.css | 12.1.1 | CC0-1.0 | Jonathan Neal | [Link](https://github.com/csstools/normalize.css#readme) | +| @floating-ui/core | 1.7.3 | MIT | atomiks | [Link](https://floating-ui.com) | +| @floating-ui/dom | 1.7.4 | MIT | atomiks | [Link](https://floating-ui.com) | +| @floating-ui/utils | 0.2.10 | MIT | atomiks | [Link](https://floating-ui.com) | +| @internationalized/date | 3.10.0 | Apache-2.0 | N/A | [Link](https://github.com/adobe/react-spectrum/tree/main#readme) | +| @internationalized/number | 3.6.5 | Apache-2.0 | N/A | [Link](https://github.com/adobe/react-spectrum#readme) | +| @motionone/animation | 10.18.0 | MIT | Matt Perry | N/A | +| @motionone/dom | 10.18.0 | MIT | Matt Perry | N/A | +| @motionone/easing | 10.18.0 | MIT | Matt Perry | N/A | +| @motionone/generators | 10.18.0 | MIT | Matt Perry | N/A | +| @motionone/types | 10.17.1 | MIT | Matt Perry | N/A | +| @motionone/utils | 10.18.0 | MIT | Matt Perry | N/A | +| @solid-primitives/event-listener | 2.4.5 | MIT | David Di Biase | [Link](https://primitives.solidjs.community/package/event-listener) | +| @solid-primitives/keyed | 1.5.2 | MIT | Damian Tarnawski @thetarnav | [Link](https://primitives.solidjs.community/package/keyed) | +| @solid-primitives/props | 3.1.11 | MIT | Damian Tarnawski | [Link](https://primitives.solidjs.community/package/props) | +| @solid-primitives/refs | 1.0.8 | MIT | Damian Tarnawski @thetarnav | [Link](https://primitives.solidjs.community/package/refs) | +| @solid-primitives/resize-observer | 2.1.5 | MIT | Moshe Udimar | [Link](https://primitives.solidjs.community/package/resize-observer) | +| @solid-primitives/rootless | 1.5.3 | MIT | Damian Tarnawski @thetarnav | [Link](https://primitives.solidjs.community/package/rootless) | +| @solid-primitives/static-store | 0.1.3 | MIT | Damian Tarnawski | [Link](https://primitives.solidjs.community/package/static-store) | +| @solid-primitives/transition-group | 1.0.5 | MIT | Damian Tarnawski | [Link](https://primitives.solidjs.community/package/transition-group) | +| @solid-primitives/utils | 6.2.3 | MIT | Damian Tarnawski @thetarnav | [Link](https://github.com/solidjs-community/solid-primitives/tree/main/packages/utils#readme) | +| @swc/helpers | 0.5.3 | Apache-2.0 | 강동윤 | [Link](https://swc.rs) | +| @wessberg/connection-observer | 1.0.5 | MIT | N/A | [Link](https://github.com/wessberg/connection-observer#readme) | +| @zag-js/accordion | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/anatomy | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/angle-slider | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/aria-hidden | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/async-list | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/auto-resize | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/avatar | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/bottom-sheet | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/carousel | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/checkbox | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/clipboard | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/collapsible | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/collection | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/color-picker | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/color-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/combobox | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/core | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/date-picker | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/date-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/dialog | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/dismissable | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/dom-query | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/editable | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/file-upload | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/file-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/floating-panel | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/focus-trap | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/focus-visible | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/highlight-word | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/hover-card | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/i18n-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/image-cropper | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/interact-outside | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/json-tree-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/listbox | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/live-region | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/marquee | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/menu | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/navigation-menu | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/number-input | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/pagination | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/password-input | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/pin-input | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/popover | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/popper | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/presence | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/progress | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/qr-code | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/radio-group | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/rating-group | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/rect-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/remove-scroll | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/scroll-area | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/scroll-snap | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/select | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/signature-pad | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/slider | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/solid | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/splitter | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/steps | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/store | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/switch | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tabs | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tags-input | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/timer | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/toast | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/toggle | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/toggle-group | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tooltip | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tour | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tree-view | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/types | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| clsx | 2.1.1 | MIT | Luke Edwards | [Link](https://github.com/lukeed/clsx#readme) | +| comlink | 4.4.2 | Apache-2.0 | Surma | [Link](https://github.com/GoogleChromeLabs/comlink#readme) | +| common-tags | 1.8.2 | MIT | Declan de Wet | [Link](https://github.com/zspecza/common-tags) | +| csstype | 3.1.3 | MIT | Fredrik Nicol | [Link](https://github.com/frenic/csstype#readme) | +| hey-listen | 1.0.8 | MIT | Matt Perry | [Link](https://github.com/Popmotion/hey-listen#readme) | +| is-what | 5.0.2 | MIT | Luca Ban - Mesqueeb | [Link](https://github.com/mesqueeb/is-what#readme) | +| js-tokens | 4.0.0 | MIT | Simon Lydell | [Link](https://github.com/lydell/js-tokens#readme) | +| loose-envify | 1.4.0 | MIT | Andres Suarez | [Link](https://github.com/zertosh/loose-envify) | +| merge-anything | 6.0.3 | MIT | Luca Ban - Mesqueeb | [Link](https://github.com/mesqueeb/merge-anything#readme) | +| nanoid | 5.0.2 | MIT | Andrey Sitnik | [Link](https://github.com/ai/nanoid#readme) | +| perfect-debounce | 2.1.0 | MIT | N/A | [Link](https://github.com/unjs/perfect-debounce#readme) | +| perfect-freehand | 1.2.2 | MIT | Steve Ruiz | [Link](https://github.com/steveruizok/perfect-freehand#readme) | +| proxy-compare | 3.0.0 | MIT | Daishi Kato | [Link](https://github.com/dai-shi/proxy-compare#readme) | +| proxy-memoize | 3.0.1 | MIT | Daishi Kato | [Link](https://github.com/dai-shi/proxy-memoize#readme) | +| rad-event-listener | 0.2.4 | MIT | N/A | [Link](https://github.com/JLarky/rad-event-listener#readme) | +| react | 18.2.0 | MIT | N/A | [Link](https://reactjs.org/) | +| rvfc-polyfill | 1.0.7 | GPL-3.0 | ThaUnknown | [Link](https://github.com/ThaUnknown/rvfc-polyfill#readme) | +| seroval | 1.5.0 | MIT | Alexis Munsayac | [Link](https://github.com/lxsmnsyc/seroval/tree/main/packages/seroval) | +| seroval-plugins | 1.5.0 | MIT | Alexis Munsayac | [Link](https://github.com/lxsmnsyc/seroval/tree/main/packages/plugins) | +| solid-js | 1.9.11 | MIT | Ryan Carniato | [Link](https://solidjs.com) | +| solid-motionone | 1.0.3 | MIT | Damian Tarnawski | N/A | +| solid-zustand | 1.8.1 | MIT | N/A | [Link](https://github.com/wobsoriano/solid-zustand#readme) | +| ts-pattern | 5.6.2 | MIT | Gabriel Vergnaud | [Link](https://github.com/gvergnaud/ts-pattern#readme) | +| tslib | 2.6.2 | 0BSD | Microsoft Corp. | [Link](https://www.typescriptlang.org/) | +| type-fest | 4.35.0 | (MIT OR CC0-1.0) | Sindre Sorhus | [Link](https://github.com/sindresorhus/type-fest#readme) | +| uqr | 0.1.2 | MIT | Anthony Fu | [Link](https://github.com/unjs/uqr#readme) | +| use-sync-external-store | 1.2.2 | MIT | N/A | [Link](https://github.com/facebook/react#readme) | +| wasm-feature-detect | 1.8.0 | Apache-2.0 | Surma | [Link](https://github.com/GoogleChromeLabs/wasm-feature-detect#readme) | +| zustand | 4.5.5 | MIT | Paul Henschel | [Link](https://github.com/pmndrs/zustand) | diff --git a/docs/blinkid/OssDependencies.md b/docs/blinkid/OssDependencies.md index 1004c08..e6081eb 100644 --- a/docs/blinkid/OssDependencies.md +++ b/docs/blinkid/OssDependencies.md @@ -12,10 +12,10 @@ This report includes: | Package | Version | License | Author | Homepage | |---------|---------|---------|---------|----------| -| @ark-ui/solid | 5.31.0 | MIT | N/A | [Link](https://ark-ui.com) | +| @ark-ui/solid | 5.30.0 | MIT | N/A | [Link](https://ark-ui.com) | | @csstools/normalize.css | 12.1.1 | CC0-1.0 | Jonathan Neal | [Link](https://github.com/csstools/normalize.css#readme) | -| @floating-ui/core | 1.7.4 | MIT | atomiks | [Link](https://floating-ui.com) | -| @floating-ui/dom | 1.7.5 | MIT | atomiks | [Link](https://floating-ui.com) | +| @floating-ui/core | 1.7.3 | MIT | atomiks | [Link](https://floating-ui.com) | +| @floating-ui/dom | 1.7.4 | MIT | atomiks | [Link](https://floating-ui.com) | | @floating-ui/utils | 0.2.10 | MIT | atomiks | [Link](https://floating-ui.com) | | @internationalized/date | 3.10.0 | Apache-2.0 | N/A | [Link](https://github.com/adobe/react-spectrum/tree/main#readme) | | @internationalized/number | 3.6.5 | Apache-2.0 | N/A | [Link](https://github.com/adobe/react-spectrum#readme) | @@ -25,90 +25,90 @@ This report includes: | @motionone/generators | 10.18.0 | MIT | Matt Perry | N/A | | @motionone/types | 10.17.1 | MIT | Matt Perry | N/A | | @motionone/utils | 10.18.0 | MIT | Matt Perry | N/A | -| @solid-primitives/event-listener | 2.4.3 | MIT | David Di Biase | [Link](https://primitives.solidjs.community/package/event-listener) | -| @solid-primitives/keyed | 1.5.3 | MIT | Damian Tarnawski @thetarnav | [Link](https://primitives.solidjs.community/package/keyed) | +| @solid-primitives/event-listener | 2.4.5 | MIT | David Di Biase | [Link](https://primitives.solidjs.community/package/event-listener) | +| @solid-primitives/keyed | 1.5.2 | MIT | Damian Tarnawski @thetarnav | [Link](https://primitives.solidjs.community/package/keyed) | | @solid-primitives/props | 3.1.11 | MIT | Damian Tarnawski | [Link](https://primitives.solidjs.community/package/props) | | @solid-primitives/refs | 1.0.8 | MIT | Damian Tarnawski @thetarnav | [Link](https://primitives.solidjs.community/package/refs) | -| @solid-primitives/resize-observer | 2.1.3 | MIT | Moshe Udimar | [Link](https://primitives.solidjs.community/package/resize-observer) | -| @solid-primitives/rootless | 1.5.2 | MIT | Damian Tarnawski @thetarnav | [Link](https://primitives.solidjs.community/package/rootless) | -| @solid-primitives/static-store | 0.1.2 | MIT | Damian Tarnawski | [Link](https://primitives.solidjs.community/package/static-store) | +| @solid-primitives/resize-observer | 2.1.5 | MIT | Moshe Udimar | [Link](https://primitives.solidjs.community/package/resize-observer) | +| @solid-primitives/rootless | 1.5.3 | MIT | Damian Tarnawski @thetarnav | [Link](https://primitives.solidjs.community/package/rootless) | +| @solid-primitives/static-store | 0.1.3 | MIT | Damian Tarnawski | [Link](https://primitives.solidjs.community/package/static-store) | | @solid-primitives/transition-group | 1.0.5 | MIT | Damian Tarnawski | [Link](https://primitives.solidjs.community/package/transition-group) | | @solid-primitives/utils | 6.2.3 | MIT | Damian Tarnawski @thetarnav | [Link](https://github.com/solidjs-community/solid-primitives/tree/main/packages/utils#readme) | | @swc/helpers | 0.5.3 | Apache-2.0 | 강동윤 | [Link](https://swc.rs) | | @wessberg/connection-observer | 1.0.5 | MIT | N/A | [Link](https://github.com/wessberg/connection-observer#readme) | -| @zag-js/accordion | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/anatomy | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/angle-slider | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/aria-hidden | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/async-list | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/auto-resize | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/avatar | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/bottom-sheet | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/carousel | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/checkbox | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/clipboard | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/collapsible | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/collection | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/color-picker | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/color-utils | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/combobox | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/core | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/date-picker | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/date-utils | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/dialog | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/dismissable | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/dom-query | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/editable | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/file-upload | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/file-utils | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/floating-panel | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/focus-trap | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/focus-visible | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/highlight-word | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/hover-card | 1.33.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/i18n-utils | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/image-cropper | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/interact-outside | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/json-tree-utils | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/listbox | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/live-region | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/marquee | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/menu | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/navigation-menu | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/number-input | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/pagination | 1.33.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/password-input | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/pin-input | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/popover | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/popper | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/presence | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/progress | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/qr-code | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/radio-group | 1.33.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/rating-group | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/rect-utils | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/remove-scroll | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/scroll-area | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/scroll-snap | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/select | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/signature-pad | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/slider | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/solid | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/splitter | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/steps | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/store | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/switch | 1.33.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/tabs | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/tags-input | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/timer | 1.33.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/toast | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/toggle | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/toggle-group | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/tooltip | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/tour | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/tree-view | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/types | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | -| @zag-js/utils | 1.33.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/accordion | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/anatomy | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/angle-slider | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/aria-hidden | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/async-list | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/auto-resize | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/avatar | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/bottom-sheet | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/carousel | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/checkbox | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/clipboard | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/collapsible | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/collection | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/color-picker | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/color-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/combobox | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/core | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/date-picker | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/date-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/dialog | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/dismissable | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/dom-query | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/editable | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/file-upload | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/file-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/floating-panel | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/focus-trap | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/focus-visible | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/highlight-word | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/hover-card | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/i18n-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/image-cropper | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/interact-outside | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/json-tree-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/listbox | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/live-region | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/marquee | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/menu | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/navigation-menu | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/number-input | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/pagination | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/password-input | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/pin-input | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/popover | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/popper | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/presence | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/progress | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/qr-code | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/radio-group | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/rating-group | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/rect-utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/remove-scroll | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/scroll-area | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/scroll-snap | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/select | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/signature-pad | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/slider | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/solid | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/splitter | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/steps | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/store | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/switch | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tabs | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tags-input | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/timer | 1.31.1 | MIT | Abraham Aremu | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/toast | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/toggle | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/toggle-group | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tooltip | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tour | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/tree-view | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/types | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | +| @zag-js/utils | 1.31.1 | MIT | Segun Adebayo | [Link](https://github.com/chakra-ui/zag#readme) | | clsx | 2.1.1 | MIT | Luke Edwards | [Link](https://github.com/lukeed/clsx#readme) | | comlink | 4.4.2 | Apache-2.0 | Surma | [Link](https://github.com/GoogleChromeLabs/comlink#readme) | | common-tags | 1.8.2 | MIT | Declan de Wet | [Link](https://github.com/zspecza/common-tags) | @@ -131,7 +131,7 @@ This report includes: | solid-js | 1.9.11 | MIT | Ryan Carniato | [Link](https://solidjs.com) | | solid-motionone | 1.0.3 | MIT | Damian Tarnawski | N/A | | solid-zustand | 1.8.1 | MIT | N/A | [Link](https://github.com/wobsoriano/solid-zustand#readme) | -| ts-pattern | 5.9.0 | MIT | Gabriel Vergnaud | [Link](https://github.com/gvergnaud/ts-pattern#readme) | +| ts-pattern | 5.6.2 | MIT | Gabriel Vergnaud | [Link](https://github.com/gvergnaud/ts-pattern#readme) | | tslib | 2.6.2 | 0BSD | Microsoft Corp. | [Link](https://www.typescriptlang.org/) | | type-fest | 4.35.0 | (MIT OR CC0-1.0) | Sindre Sorhus | [Link](https://github.com/sindresorhus/type-fest#readme) | | uqr | 0.1.2 | MIT | Anthony Fu | [Link](https://github.com/unjs/uqr#readme) | diff --git a/package.json b/package.json index 0db5da4..a87d0ac 100644 --- a/package.json +++ b/package.json @@ -6,17 +6,21 @@ "build:packages": "VITE_BUILD_MODE=development turbo build --filter={./packages/*}", "build:blinkid": "turbo build --filter=@microblink/blinkid...", "build:blinkcard": "turbo build --filter=@microblink/blinkcard...", + "build:blinkid-verify": "turbo build --filter=@microblink/blinkid-verify...", "build:publish": "turbo build:publish --filter={./packages/*}", "clean:blinkid": "turbo clean --filter=@microblink/blinkid...", "clean:blinkcard": "turbo clean --filter=@microblink/blinkcard...", + "clean:blinkid-verify": "turbo clean --filter=@microblink/blinkid-verify...", "clean": "turbo clean && rimraf .turbo .venv", "lint:blinkid": "turbo lint --filter=@microblink/blinkid...", "lint:blinkcard": "turbo lint --filter=@microblink/blinkcard...", + "lint:blinkid-verify": "turbo lint --filter=@microblink/blinkid-verify...", "lint": "turbo lint", "prepare": "husky", "publish-test": "turbo publish-test", "test:blinkid": "turbo test --filter=@microblink/blinkid...", "test:blinkcard": "turbo test --filter=@microblink/blinkcard...", + "test:blinkid-verify": "turbo test --filter=@microblink/blinkid-verify...", "test": "turbo test", "test:watch": "turbo test:watch", "upgrade-packages": "pnpm dlx npm-check-updates -ui -ws --root", diff --git a/packages/analytics/CHANGELOG.md b/packages/analytics/CHANGELOG.md index b0de83f..50a2ff1 100644 --- a/packages/analytics/CHANGELOG.md +++ b/packages/analytics/CHANGELOG.md @@ -1,5 +1,11 @@ # @microblink/analytics +## 1.0.2 + +### Patch Changes + +- Updated dependencies + ## 1.0.1 ### Patch Changes diff --git a/packages/analytics/README.md b/packages/analytics/README.md index eb83f9d..49595b6 100644 --- a/packages/analytics/README.md +++ b/packages/analytics/README.md @@ -1,6 +1,6 @@ # @microblink/analytics -Internal package for SDK analytics and telemetry. It provides services and ping types for collecting and sending analytics events (e.g. SDK init, scan events, camera info, errors) used by BlinkID and BlinkCard browser SDK packages. +Internal package for SDK analytics and telemetry. It provides services and ping types for collecting and sending analytics events (e.g. SDK init, scan events, camera info, errors) used by BlinkID, BlinkCard, and BlinkID Verify browser SDK packages. ## Overview diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 37f14d5..638b039 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,7 +1,7 @@ { "name": "@microblink/analytics", "private": true, - "version": "1.0.1", + "version": "1.0.2", "scripts": { "build": "tsc", "build:publish": "tsc", diff --git a/packages/blinkcard-core/CHANGELOG.md b/packages/blinkcard-core/CHANGELOG.md index 0f2aa5e..1d37a40 100644 --- a/packages/blinkcard-core/CHANGELOG.md +++ b/packages/blinkcard-core/CHANGELOG.md @@ -1,5 +1,13 @@ # @microblink/blinkcard-core +## 3000.0.4 + +### Patch Changes + +- Updated dependencies + - @microblink/blinkcard-wasm@3000.0.4 + - @microblink/blinkcard-worker@3000.0.4 + ## 3000.0.3 ### Patch Changes diff --git a/packages/blinkcard-core/README.md b/packages/blinkcard-core/README.md index 1ac78de..e083b12 100644 --- a/packages/blinkcard-core/README.md +++ b/packages/blinkcard-core/README.md @@ -47,7 +47,7 @@ You must host the `dist/resources` directory from this package without modificat - Must be served in a [secure context](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts). - For multithreaded builds, your site must be [cross-origin isolated](https://web.dev/articles/why-coop-coep): - ``` + ```http Cross-Origin-Embedder-Policy: require-corp Cross-Origin-Opener-Policy: same-origin ``` diff --git a/packages/blinkcard-core/docs/README.md b/packages/blinkcard-core/docs/README.md index b53c4cb..0080be0 100644 --- a/packages/blinkcard-core/docs/README.md +++ b/packages/blinkcard-core/docs/README.md @@ -6,12 +6,14 @@ ## Classes +- [AnalyticService](classes/AnalyticService.md) - [BlinkCardWorker](classes/BlinkCardWorker.md) - [LicenseError](classes/LicenseError.md) - [ServerPermissionError](classes/ServerPermissionError.md) ## Interfaces +- [PingBase](interfaces/PingBase.md) - [UADataValues](interfaces/UADataValues.md) - [WasmBindings](interfaces/WasmBindings.md) - [WasmModule](interfaces/WasmModule.md) @@ -57,6 +59,27 @@ - [LivenessSettings](type-aliases/LivenessSettings.md) - [LoadWasmParams](type-aliases/LoadWasmParams.md) - [PartialScanningSettingsInput](type-aliases/PartialScanningSettingsInput.md) +- [Ping](type-aliases/Ping.md) +- [PingBrowserDeviceInfo](type-aliases/PingBrowserDeviceInfo.md) +- [PingBrowserDeviceInfoData](type-aliases/PingBrowserDeviceInfoData.md) +- [PingCameraHardwareInfo](type-aliases/PingCameraHardwareInfo.md) +- [PingCameraHardwareInfoData](type-aliases/PingCameraHardwareInfoData.md) +- [PingCameraInputInfo](type-aliases/PingCameraInputInfo.md) +- [PingCameraInputInfoData](type-aliases/PingCameraInputInfoData.md) +- [PingCameraPermission](type-aliases/PingCameraPermission.md) +- [PingCameraPermissionData](type-aliases/PingCameraPermissionData.md) +- [PingError](type-aliases/PingError.md) +- [PingErrorData](type-aliases/PingErrorData.md) +- [PingLog](type-aliases/PingLog.md) +- [PingLogData](type-aliases/PingLogData.md) +- [PingScanningConditions](type-aliases/PingScanningConditions.md) +- [PingScanningConditionsData](type-aliases/PingScanningConditionsData.md) +- [PingSdkInitStart](type-aliases/PingSdkInitStart.md) +- [PingSdkInitStartData](type-aliases/PingSdkInitStartData.md) +- [PingUxEvent](type-aliases/PingUxEvent.md) +- [PingUxEventData](type-aliases/PingUxEventData.md) +- [PingWrapperProductInfo](type-aliases/PingWrapperProductInfo.md) +- [PingWrapperProductInfoData](type-aliases/PingWrapperProductInfoData.md) - [ProcessingStatus](type-aliases/ProcessingStatus.md) - [ProcessResultWithBuffer](type-aliases/ProcessResultWithBuffer.md) - [ProgressStatusCallback](type-aliases/ProgressStatusCallback.md) @@ -66,11 +89,13 @@ - [ScanningSettings](type-aliases/ScanningSettings.md) - [ScanningSide](type-aliases/ScanningSide.md) - [ScanningStatus](type-aliases/ScanningStatus.md) +- [SchemaName](type-aliases/SchemaName.md) - [ServerPermissionErrorReason](type-aliases/ServerPermissionErrorReason.md) - [ServerPermissionSubmitError](type-aliases/ServerPermissionSubmitError.md) - [SingleSideScanningResult](type-aliases/SingleSideScanningResult.md) - [StrictnessLevel](type-aliases/StrictnessLevel.md) - [WasmBuildType](type-aliases/WasmBuildType.md) +- [WasmSimdVariant](type-aliases/WasmSimdVariant.md) - [WasmVariant](type-aliases/WasmVariant.md) - [WorkerScanningSession](type-aliases/WorkerScanningSession.md) @@ -79,6 +104,7 @@ - [getCrossOriginWorkerURL](variables/getCrossOriginWorkerURL.md) - [resourceFileTypes](variables/resourceFileTypes.md) - [wasmBuildTypes](variables/wasmBuildTypes.md) +- [wasmSimdVariants](variables/wasmSimdVariants.md) - [wasmVariants](variables/wasmVariants.md) ## Functions diff --git a/packages/blinkcard-core/docs/classes/AnalyticService.md b/packages/blinkcard-core/docs/classes/AnalyticService.md new file mode 100644 index 0000000..ea03494 --- /dev/null +++ b/packages/blinkcard-core/docs/classes/AnalyticService.md @@ -0,0 +1,324 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / AnalyticService + +# Class: AnalyticService + +Analytic service +Provides a clean interface for tracking user interactions and events + +## Constructors + +### Constructor + +> **new AnalyticService**(`__namedParameters`): `AnalyticService` + +#### Parameters + +##### \_\_namedParameters + +###### pingFn + +(`ping`) => `Promise`\<`void`\> + +###### sendPingletsFn + +() => `Promise`\<`void`\> + +#### Returns + +`AnalyticService` + +## Methods + +### logAlertDisplayedEvent() + +> **logAlertDisplayedEvent**(`alertType`): `Promise`\<`void`\> + +#### Parameters + +##### alertType + +`NonNullable`\<`undefined` \| `AlertType`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logAppMovedToBackgroundEvent() + +> **logAppMovedToBackgroundEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraClosedEvent() + +> **logCameraClosedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraInputInfo() + +> **logCameraInputInfo**(`pingData`): `Promise`\<`void`\> + +#### Parameters + +##### pingData + +[`PingCameraInputInfoData`](../type-aliases/PingCameraInputInfoData.md) + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraPermissionCheck() + +> **logCameraPermissionCheck**(`granted`): `Promise`\<`void`\> + +#### Parameters + +##### granted + +`boolean` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraPermissionRequest() + +> **logCameraPermissionRequest**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraPermissionUserResponse() + +> **logCameraPermissionUserResponse**(`granted`): `Promise`\<`void`\> + +#### Parameters + +##### granted + +`boolean` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraStartedEvent() + +> **logCameraStartedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCloseButtonClickedEvent() + +> **logCloseButtonClickedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logDeviceInfo() + +> **logDeviceInfo**(`pingData`): `Promise`\<`void`\> + +#### Parameters + +##### pingData + +[`PingBrowserDeviceInfoData`](../type-aliases/PingBrowserDeviceInfoData.md) + +#### Returns + +`Promise`\<`void`\> + +*** + +### logDeviceOrientation() + +> **logDeviceOrientation**(`orientation`): `Promise`\<`void`\> + +#### Parameters + +##### orientation + +`undefined` | `DeviceOrientation` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logErrorEvent() + +> **logErrorEvent**(`__namedParameters`): `Promise`\<`void`\> + +#### Parameters + +##### \_\_namedParameters + +###### error + +`unknown` + +###### errorType + +`ErrorType` + +###### origin + +`string` + +###### sessionNumber? + +`number` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logErrorMessageEvent() + +> **logErrorMessageEvent**(`errorMessageType`): `Promise`\<`void`\> + +#### Parameters + +##### errorMessageType + +`undefined` | `ErrorMessageType` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logFlashlightState() + +> **logFlashlightState**(`flashlightOn`): `Promise`\<`void`\> + +#### Parameters + +##### flashlightOn + +`boolean` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logHardwareCameraInfo() + +> **logHardwareCameraInfo**(`cameras`): `Promise`\<`void`\> + +#### Parameters + +##### cameras + +`AvailableCamerasItem`[] + +#### Returns + +`Promise`\<`void`\> + +*** + +### logHelpClosedEvent() + +> **logHelpClosedEvent**(`contentFullyViewed`): `Promise`\<`void`\> + +#### Parameters + +##### contentFullyViewed + +`boolean` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logHelpOpenedEvent() + +> **logHelpOpenedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logHelpTooltipDisplayedEvent() + +> **logHelpTooltipDisplayedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logOnboardingDisplayedEvent() + +> **logOnboardingDisplayedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logStepTimeoutEvent() + +> **logStepTimeoutEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### sendPinglets() + +> **sendPinglets**(): `Promise`\<`void`\> + +Safely send queued pinglets, handling errors gracefully + +#### Returns + +`Promise`\<`void`\> diff --git a/packages/blinkcard-core/docs/classes/BlinkCardWorker.md b/packages/blinkcard-core/docs/classes/BlinkCardWorker.md index e28e372..39388b1 100644 --- a/packages/blinkcard-core/docs/classes/BlinkCardWorker.md +++ b/packages/blinkcard-core/docs/classes/BlinkCardWorker.md @@ -40,29 +40,9 @@ This method is called when the worker is terminated. *** -### createProxySession() - -> **createProxySession**(`session`): `object` & `object` & `ProxyMarked` - -This method creates a proxy session. - -#### Parameters - -##### session - -[`BlinkCardScanningSession`](../type-aliases/BlinkCardScanningSession.md) - -The BlinkCard scanning session. - -#### Returns - -The proxy session. - -*** - ### createScanningSession() -> **createScanningSession**(`sessionSettings?`): `object` & `object` & `ProxyMarked` +> **createScanningSession**(`sessionSettings?`): `Omit`\<[`BlinkCardScanningSession`](../type-aliases/BlinkCardScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` & `ProxyMarked` This method creates a BlinkCard scanning session. @@ -122,7 +102,7 @@ This method initializes the BlinkCard Wasm module. ##### pinglet -`Ping` +[`Ping`](../type-aliases/Ping.md) #### Returns diff --git a/packages/blinkcard-core/docs/functions/loadBlinkCardCore.md b/packages/blinkcard-core/docs/functions/loadBlinkCardCore.md index d29d759..8493db7 100644 --- a/packages/blinkcard-core/docs/functions/loadBlinkCardCore.md +++ b/packages/blinkcard-core/docs/functions/loadBlinkCardCore.md @@ -6,7 +6,7 @@ # Function: loadBlinkCardCore() -> **loadBlinkCardCore**(`settings`, `progressCallback?`): `Promise`\<\{ `progressStatusCallback?`: `Promise`\<`undefined`\> \| `Remote`\<[`ProgressStatusCallback`](../type-aliases/ProgressStatusCallback.md)\>; `createProxySession`: `Promise`\<`Remote`\<`object` & `object` & `ProxyMarked`\>\>; `createScanningSession`: `Promise`\<`Remote`\<`object` & `object` & `ProxyMarked`\>\>; `initBlinkCard`: `Promise`\<`void`\>; `reportPinglet`: `Promise`\<`void`\>; `sendPinglets`: `Promise`\<`void`\>; `terminate`: `Promise`\<`void`\>; \}\> +> **loadBlinkCardCore**(`settings`, `progressCallback?`): `Promise`\<\{ `progressStatusCallback?`: `Promise`\<`undefined`\> \| `Remote`\<[`ProgressStatusCallback`](../type-aliases/ProgressStatusCallback.md)\>; `createScanningSession`: `Promise`\<`Remote`\<`Omit`\<[`BlinkCardScanningSession`](../type-aliases/BlinkCardScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` & `ProxyMarked`\>\>; `initBlinkCard`: `Promise`\<`void`\>; `reportPinglet`: `Promise`\<`void`\>; `sendPinglets`: `Promise`\<`void`\>; `terminate`: `Promise`\<`void`\>; \}\> Creates and initializes a BlinkCard core instance. @@ -80,7 +80,7 @@ Optional callback for tracking resource download progress (WASM, data files) ## Returns -`Promise`\<\{ `progressStatusCallback?`: `Promise`\<`undefined`\> \| `Remote`\<[`ProgressStatusCallback`](../type-aliases/ProgressStatusCallback.md)\>; `createProxySession`: `Promise`\<`Remote`\<`object` & `object` & `ProxyMarked`\>\>; `createScanningSession`: `Promise`\<`Remote`\<`object` & `object` & `ProxyMarked`\>\>; `initBlinkCard`: `Promise`\<`void`\>; `reportPinglet`: `Promise`\<`void`\>; `sendPinglets`: `Promise`\<`void`\>; `terminate`: `Promise`\<`void`\>; \}\> +`Promise`\<\{ `progressStatusCallback?`: `Promise`\<`undefined`\> \| `Remote`\<[`ProgressStatusCallback`](../type-aliases/ProgressStatusCallback.md)\>; `createScanningSession`: `Promise`\<`Remote`\<`Omit`\<[`BlinkCardScanningSession`](../type-aliases/BlinkCardScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` & `ProxyMarked`\>\>; `initBlinkCard`: `Promise`\<`void`\>; `reportPinglet`: `Promise`\<`void`\>; `sendPinglets`: `Promise`\<`void`\>; `terminate`: `Promise`\<`void`\>; \}\> Promise that resolves with initialized BlinkCard core instance diff --git a/packages/blinkcard-core/docs/interfaces/PingBase.md b/packages/blinkcard-core/docs/interfaces/PingBase.md new file mode 100644 index 0000000..e29bad1 --- /dev/null +++ b/packages/blinkcard-core/docs/interfaces/PingBase.md @@ -0,0 +1,51 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingBase + +# Interface: PingBase\ + +Generated base structure for a ping event. + +## Type Parameters + +### TSchemaName + +`TSchemaName` *extends* [`SchemaName`](../type-aliases/SchemaName.md) + +### TSchemaVersion + +`TSchemaVersion` *extends* `Semver` = `"1.0.0"` + +### TData + +`TData` *extends* `object` = \{ \} + +### TSessionNumber + +`TSessionNumber` *extends* `number` = `number` + +## Properties + +### data + +> **data**: `TData` + +*** + +### schemaName + +> **schemaName**: `TSchemaName` + +*** + +### schemaVersion + +> **schemaVersion**: `TSchemaVersion` + +*** + +### sessionNumber? + +> `optional` **sessionNumber**: `TSessionNumber` diff --git a/packages/blinkcard-core/docs/type-aliases/Ping.md b/packages/blinkcard-core/docs/type-aliases/Ping.md new file mode 100644 index 0000000..a40c167 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/Ping.md @@ -0,0 +1,9 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / Ping + +# Type Alias: Ping + +> **Ping** = [`PingBrowserDeviceInfo`](PingBrowserDeviceInfo.md) \| [`PingError`](PingError.md) \| [`PingCameraHardwareInfo`](PingCameraHardwareInfo.md) \| [`PingLog`](PingLog.md) \| [`PingCameraInputInfo`](PingCameraInputInfo.md) \| [`PingCameraPermission`](PingCameraPermission.md) \| [`PingSdkInitStart`](PingSdkInitStart.md) \| [`PingScanningConditions`](PingScanningConditions.md) \| [`PingUxEvent`](PingUxEvent.md) \| [`PingWrapperProductInfo`](PingWrapperProductInfo.md) diff --git a/packages/blinkcard-core/docs/type-aliases/PingBrowserDeviceInfo.md b/packages/blinkcard-core/docs/type-aliases/PingBrowserDeviceInfo.md new file mode 100644 index 0000000..a083ece --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingBrowserDeviceInfo.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingBrowserDeviceInfo + +# Type Alias: PingBrowserDeviceInfo + +> **PingBrowserDeviceInfo** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.browser.device.info"`, `"1.0.0"`, [`PingBrowserDeviceInfoData`](PingBrowserDeviceInfoData.md)\> + +Ping type for ping.browser.device.info diff --git a/packages/blinkcard-core/docs/type-aliases/PingBrowserDeviceInfoData.md b/packages/blinkcard-core/docs/type-aliases/PingBrowserDeviceInfoData.md new file mode 100644 index 0000000..ffceb01 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingBrowserDeviceInfoData.md @@ -0,0 +1,57 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingBrowserDeviceInfoData + +# Type Alias: PingBrowserDeviceInfoData + +> **PingBrowserDeviceInfoData** = `object` + +## Properties + +### browserStorageSupport + +> **browserStorageSupport**: `BrowserStorageSupport` + +*** + +### derivedDeviceInfo + +> **derivedDeviceInfo**: `DerivedDeviceInfo` + +*** + +### gpu? + +> `optional` **gpu**: `Gpu` + +*** + +### memory? + +> `optional` **memory**: `number` + +*** + +### screen + +> **screen**: `Screen` + +*** + +### threads + +> **threads**: `number` + +*** + +### userAgent + +> **userAgent**: `string` + +*** + +### userAgentData? + +> `optional` **userAgentData**: `UserAgentData` diff --git a/packages/blinkcard-core/docs/type-aliases/PingCameraHardwareInfo.md b/packages/blinkcard-core/docs/type-aliases/PingCameraHardwareInfo.md new file mode 100644 index 0000000..066d332 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingCameraHardwareInfo.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingCameraHardwareInfo + +# Type Alias: PingCameraHardwareInfo + +> **PingCameraHardwareInfo** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.hardware.camera.info"`, `"1.0.3"`, [`PingCameraHardwareInfoData`](PingCameraHardwareInfoData.md)\> + +Ping type for ping.hardware.camera.info diff --git a/packages/blinkcard-core/docs/type-aliases/PingCameraHardwareInfoData.md b/packages/blinkcard-core/docs/type-aliases/PingCameraHardwareInfoData.md new file mode 100644 index 0000000..548ece7 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingCameraHardwareInfoData.md @@ -0,0 +1,15 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingCameraHardwareInfoData + +# Type Alias: PingCameraHardwareInfoData + +> **PingCameraHardwareInfoData** = `object` + +## Properties + +### availableCameras + +> **availableCameras**: `AvailableCamerasItem`[] diff --git a/packages/blinkcard-core/docs/type-aliases/PingCameraInputInfo.md b/packages/blinkcard-core/docs/type-aliases/PingCameraInputInfo.md new file mode 100644 index 0000000..a2b20ba --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingCameraInputInfo.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingCameraInputInfo + +# Type Alias: PingCameraInputInfo + +> **PingCameraInputInfo** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.camera.input.info"`, `"1.0.2"`, [`PingCameraInputInfoData`](PingCameraInputInfoData.md)\> + +Ping type for ping.sdk.camera.input.info diff --git a/packages/blinkcard-core/docs/type-aliases/PingCameraInputInfoData.md b/packages/blinkcard-core/docs/type-aliases/PingCameraInputInfoData.md new file mode 100644 index 0000000..58ea504 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingCameraInputInfoData.md @@ -0,0 +1,51 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingCameraInputInfoData + +# Type Alias: PingCameraInputInfoData + +> **PingCameraInputInfoData** = `object` + +## Properties + +### cameraFacing + +> **cameraFacing**: `CameraFacing` + +*** + +### cameraFrameHeight + +> **cameraFrameHeight**: `number` + +*** + +### cameraFrameWidth + +> **cameraFrameWidth**: `number` + +*** + +### deviceId + +> **deviceId**: `string` + +*** + +### roiHeight + +> **roiHeight**: `number` + +*** + +### roiWidth + +> **roiWidth**: `number` + +*** + +### viewPortAspectRatio + +> **viewPortAspectRatio**: `number` diff --git a/packages/blinkcard-core/docs/type-aliases/PingCameraPermission.md b/packages/blinkcard-core/docs/type-aliases/PingCameraPermission.md new file mode 100644 index 0000000..f3db8d5 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingCameraPermission.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingCameraPermission + +# Type Alias: PingCameraPermission + +> **PingCameraPermission** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.camera.permission"`, `"1.0.0"`, [`PingCameraPermissionData`](PingCameraPermissionData.md)\> + +Ping type for ping.sdk.camera.permission diff --git a/packages/blinkcard-core/docs/type-aliases/PingCameraPermissionData.md b/packages/blinkcard-core/docs/type-aliases/PingCameraPermissionData.md new file mode 100644 index 0000000..19a4693 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingCameraPermissionData.md @@ -0,0 +1,21 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingCameraPermissionData + +# Type Alias: PingCameraPermissionData + +> **PingCameraPermissionData** = `object` + +## Properties + +### cameraPermissionGranted? + +> `optional` **cameraPermissionGranted**: `boolean` + +*** + +### eventType + +> **eventType**: `EventType` diff --git a/packages/blinkcard-core/docs/type-aliases/PingError.md b/packages/blinkcard-core/docs/type-aliases/PingError.md new file mode 100644 index 0000000..c8fa8f3 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingError.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingError + +# Type Alias: PingError + +> **PingError** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.error"`, `"1.0.0"`, [`PingErrorData`](PingErrorData.md)\> + +Ping type for ping.error diff --git a/packages/blinkcard-core/docs/type-aliases/PingErrorData.md b/packages/blinkcard-core/docs/type-aliases/PingErrorData.md new file mode 100644 index 0000000..6f9b3a2 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingErrorData.md @@ -0,0 +1,27 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingErrorData + +# Type Alias: PingErrorData + +> **PingErrorData** = `object` + +## Properties + +### errorMessage + +> **errorMessage**: `string` + +*** + +### errorType + +> **errorType**: `ErrorType` + +*** + +### stackTrace? + +> `optional` **stackTrace**: `string` diff --git a/packages/blinkcard-core/docs/type-aliases/PingLog.md b/packages/blinkcard-core/docs/type-aliases/PingLog.md new file mode 100644 index 0000000..2f17cef --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingLog.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingLog + +# Type Alias: PingLog + +> **PingLog** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.log"`, `"1.0.0"`, [`PingLogData`](PingLogData.md)\> + +Ping type for ping.log diff --git a/packages/blinkcard-core/docs/type-aliases/PingLogData.md b/packages/blinkcard-core/docs/type-aliases/PingLogData.md new file mode 100644 index 0000000..20b9317 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingLogData.md @@ -0,0 +1,21 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingLogData + +# Type Alias: PingLogData + +> **PingLogData** = `object` + +## Properties + +### logLevel + +> **logLevel**: `LogLevel` + +*** + +### logMessage + +> **logMessage**: `string` diff --git a/packages/blinkcard-core/docs/type-aliases/PingScanningConditions.md b/packages/blinkcard-core/docs/type-aliases/PingScanningConditions.md new file mode 100644 index 0000000..1e793fa --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingScanningConditions.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingScanningConditions + +# Type Alias: PingScanningConditions + +> **PingScanningConditions** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.scan.conditions"`, `"1.0.0"`, [`PingScanningConditionsData`](PingScanningConditionsData.md)\> + +Ping type for ping.sdk.scan.conditions diff --git a/packages/blinkcard-core/docs/type-aliases/PingScanningConditionsData.md b/packages/blinkcard-core/docs/type-aliases/PingScanningConditionsData.md new file mode 100644 index 0000000..36cdaf3 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingScanningConditionsData.md @@ -0,0 +1,27 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingScanningConditionsData + +# Type Alias: PingScanningConditionsData + +> **PingScanningConditionsData** = `object` + +## Properties + +### deviceOrientation? + +> `optional` **deviceOrientation**: `DeviceOrientation` + +*** + +### flashlightOn? + +> `optional` **flashlightOn**: `boolean` + +*** + +### updateType + +> **updateType**: `UpdateType` diff --git a/packages/blinkcard-core/docs/type-aliases/PingSdkInitStart.md b/packages/blinkcard-core/docs/type-aliases/PingSdkInitStart.md new file mode 100644 index 0000000..ed8b99c --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingSdkInitStart.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingSdkInitStart + +# Type Alias: PingSdkInitStart + +> **PingSdkInitStart** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.init.start"`, `"1.1.0"`, [`PingSdkInitStartData`](PingSdkInitStartData.md)\> + +Ping type for ping.sdk.init.start diff --git a/packages/blinkcard-core/docs/type-aliases/PingSdkInitStartData.md b/packages/blinkcard-core/docs/type-aliases/PingSdkInitStartData.md new file mode 100644 index 0000000..911d314 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingSdkInitStartData.md @@ -0,0 +1,39 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingSdkInitStartData + +# Type Alias: PingSdkInitStartData + +> **PingSdkInitStartData** = `object` + +## Properties + +### packageName + +> **packageName**: `string` + +*** + +### platform + +> **platform**: `Platform` + +*** + +### platformDetails? + +> `optional` **platformDetails**: `PlatformDetails` + +*** + +### product + +> **product**: `Product` + +*** + +### userId + +> **userId**: `string` diff --git a/packages/blinkcard-core/docs/type-aliases/PingUxEvent.md b/packages/blinkcard-core/docs/type-aliases/PingUxEvent.md new file mode 100644 index 0000000..c51c477 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingUxEvent.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingUxEvent + +# Type Alias: PingUxEvent + +> **PingUxEvent** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.ux.event"`, `"1.0.0"`, [`PingUxEventData`](PingUxEventData.md)\> + +Ping type for ping.sdk.ux.event diff --git a/packages/blinkcard-core/docs/type-aliases/PingUxEventData.md b/packages/blinkcard-core/docs/type-aliases/PingUxEventData.md new file mode 100644 index 0000000..640e65c --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingUxEventData.md @@ -0,0 +1,33 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingUxEventData + +# Type Alias: PingUxEventData + +> **PingUxEventData** = `object` + +## Properties + +### alertType? + +> `optional` **alertType**: `AlertType` + +*** + +### errorMessageType? + +> `optional` **errorMessageType**: `ErrorMessageType` + +*** + +### eventType + +> **eventType**: `EventType` + +*** + +### helpCloseType? + +> `optional` **helpCloseType**: `HelpCloseType` diff --git a/packages/blinkcard-core/docs/type-aliases/PingWrapperProductInfo.md b/packages/blinkcard-core/docs/type-aliases/PingWrapperProductInfo.md new file mode 100644 index 0000000..3f98e29 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingWrapperProductInfo.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingWrapperProductInfo + +# Type Alias: PingWrapperProductInfo + +> **PingWrapperProductInfo** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.wrapper.product"`, `"1.0.0"`, [`PingWrapperProductInfoData`](PingWrapperProductInfoData.md)\> + +Ping type for ping.sdk.wrapper.product diff --git a/packages/blinkcard-core/docs/type-aliases/PingWrapperProductInfoData.md b/packages/blinkcard-core/docs/type-aliases/PingWrapperProductInfoData.md new file mode 100644 index 0000000..4435f7c --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/PingWrapperProductInfoData.md @@ -0,0 +1,21 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / PingWrapperProductInfoData + +# Type Alias: PingWrapperProductInfoData + +> **PingWrapperProductInfoData** = `object` + +## Properties + +### correlationId? + +> `optional` **correlationId**: `string` + +*** + +### wrapperProduct + +> **wrapperProduct**: `WrapperProduct` diff --git a/packages/blinkcard-core/docs/type-aliases/SchemaName.md b/packages/blinkcard-core/docs/type-aliases/SchemaName.md new file mode 100644 index 0000000..466d9df --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/SchemaName.md @@ -0,0 +1,9 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / SchemaName + +# Type Alias: SchemaName + +> **SchemaName** = [`Ping`](Ping.md)\[`"schemaName"`\] diff --git a/packages/blinkcard-core/docs/type-aliases/WasmSimdVariant.md b/packages/blinkcard-core/docs/type-aliases/WasmSimdVariant.md new file mode 100644 index 0000000..77157f0 --- /dev/null +++ b/packages/blinkcard-core/docs/type-aliases/WasmSimdVariant.md @@ -0,0 +1,9 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / WasmSimdVariant + +# Type Alias: WasmSimdVariant + +> **WasmSimdVariant** = *typeof* [`wasmSimdVariants`](../variables/wasmSimdVariants.md)\[`number`\] diff --git a/packages/blinkcard-core/docs/type-aliases/WorkerScanningSession.md b/packages/blinkcard-core/docs/type-aliases/WorkerScanningSession.md index b1bc384..cf89625 100644 --- a/packages/blinkcard-core/docs/type-aliases/WorkerScanningSession.md +++ b/packages/blinkcard-core/docs/type-aliases/WorkerScanningSession.md @@ -6,7 +6,7 @@ # Type Alias: WorkerScanningSession -> **WorkerScanningSession** = `OverrideProperties`\<[`BlinkCardScanningSession`](BlinkCardScanningSession.md), \{ `process`: (`image`) => [`ProcessResultWithBuffer`](ProcessResultWithBuffer.md); \}\> & `object` +> **WorkerScanningSession** = `Omit`\<[`BlinkCardScanningSession`](BlinkCardScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` The worker scanning session. @@ -52,6 +52,20 @@ The settings. > **ping**: [`BlinkCardWorker`](../classes/BlinkCardWorker.md)\[`"reportPinglet"`\] +### process() + +> **process**: (`image`) => [`ProcessResultWithBuffer`](ProcessResultWithBuffer.md) + +#### Parameters + +##### image + +`ImageData` + +#### Returns + +[`ProcessResultWithBuffer`](ProcessResultWithBuffer.md) + ### sendPinglets > **sendPinglets**: [`BlinkCardWorker`](../classes/BlinkCardWorker.md)\[`"sendPinglets"`\] diff --git a/packages/blinkcard-core/docs/variables/wasmSimdVariants.md b/packages/blinkcard-core/docs/variables/wasmSimdVariants.md new file mode 100644 index 0000000..9fc685d --- /dev/null +++ b/packages/blinkcard-core/docs/variables/wasmSimdVariants.md @@ -0,0 +1,9 @@ +[**@microblink/blinkcard-core**](../README.md) + +*** + +[@microblink/blinkcard-core](../README.md) / wasmSimdVariants + +# Variable: wasmSimdVariants + +> `const` **wasmSimdVariants**: readonly \[`"advanced"`, `"advanced-threads"`\] diff --git a/packages/blinkcard-core/package.json b/packages/blinkcard-core/package.json index ab112b0..a8205a9 100644 --- a/packages/blinkcard-core/package.json +++ b/packages/blinkcard-core/package.json @@ -1,7 +1,7 @@ { "name": "@microblink/blinkcard-core", "description": "BlinkCard Core SDK", - "version": "3000.0.3", + "version": "3000.0.4", "author": "Microblink", "scripts": { "build": "concurrently pnpm:build:js pnpm:build:types", @@ -45,6 +45,7 @@ "types" ], "dependencies": { + "@microblink/analytics": "workspace:*", "@microblink/blinkcard-wasm": "workspace:*", "@microblink/blinkcard-worker": "workspace:*", "@microblink/core-common": "workspace:*", @@ -54,9 +55,11 @@ }, "devDependencies": { "@arethetypeswrong/cli": "0.18.2", - "@microblink/tsconfig": "workspace:*", "@microblink/repo-utils": "workspace:*", "@microblink/test-utils": "workspace:*", + "@microblink/tsconfig": "workspace:*", + "@microblink/wasm-common": "workspace:*", + "@microblink/worker-common": "workspace:*", "@microsoft/api-extractor": "^7.52.4", "@types/common-tags": "^1.8.3", "@typescript-eslint/eslint-plugin": "^6.9.0", @@ -92,4 +95,4 @@ "webassembly" ], "license": "ISC" -} +} \ No newline at end of file diff --git a/packages/blinkcard-core/scripts/prepare-publish.mts b/packages/blinkcard-core/scripts/prepare-publish.mts index c93d94e..659e36c 100644 --- a/packages/blinkcard-core/scripts/prepare-publish.mts +++ b/packages/blinkcard-core/scripts/prepare-publish.mts @@ -29,23 +29,33 @@ const corePackageJson = pickKeys([ "files", ]); +const bundledDependencies = [ + "@microblink/analytics", + "@microblink/blinkcard-wasm", + "@microblink/blinkcard-worker", + "@microblink/core-common", +]; + +const publishedDependencies = Object.fromEntries( + Object.entries(packageJson.dependencies).filter( + ([key]) => !bundledDependencies.includes(key), + ), +); + await fs.emptyDir(publishPath); await fs.copy("dist", path.join(publishPath, "dist")); await fs.copy("types", path.join(publishPath, "types")); await fs.copy("README.md", path.join(publishPath, "README.md")); -// We don't want to include [@microblink/blinkcard-worker, @microblink/blinkcard-wasm and @microblink/core-common] in the published package.json. -// They are rolled up into the main types file, and don't have any runtime code +// Keep bundled internal packages out of the published manifest. They are +// either rolled into the runtime bundle or inlined into index.rollup.d.ts. await writePackage( newPackagePath, { ...corePackageJson, - dependencies: { - "type-fest": packageJson.dependencies["type-fest"], - comlink: packageJson.dependencies.comlink, - }, + dependencies: publishedDependencies, access: "public", registry: "https://registry.npmjs.org/", types: "./types/index.rollup.d.ts", diff --git a/packages/blinkcard-core/src/index.ts b/packages/blinkcard-core/src/index.ts index 5399a5a..dd5b12a 100644 --- a/packages/blinkcard-core/src/index.ts +++ b/packages/blinkcard-core/src/index.ts @@ -14,6 +14,8 @@ import { Remote } from "comlink"; export type * from "@microblink/blinkcard-wasm"; export type * from "@microblink/blinkcard-worker"; +export { AnalyticService } from "@microblink/analytics/AnalyticService"; +export type * from "@microblink/analytics/ping"; export { createProxyWorker } from "@microblink/core-common/createProxyWorker"; export { createDerivedDeviceInfo, diff --git a/packages/blinkcard-ux-manager/CHANGELOG.md b/packages/blinkcard-ux-manager/CHANGELOG.md index 5111aff..42b369a 100644 --- a/packages/blinkcard-ux-manager/CHANGELOG.md +++ b/packages/blinkcard-ux-manager/CHANGELOG.md @@ -1,5 +1,14 @@ # @microblink/blinkcard-ux-manager +## 3000.0.4 + +### Patch Changes + +- Updated dependencies + - @microblink/camera-manager@7.3.2 + - @microblink/blinkcard-core@3000.0.4 + - @microblink/analytics@1.0.2 + ## 3000.0.3 ### Patch Changes diff --git a/packages/blinkcard-ux-manager/README.md b/packages/blinkcard-ux-manager/README.md index f8f4626..5ae5942 100644 --- a/packages/blinkcard-ux-manager/README.md +++ b/packages/blinkcard-ux-manager/README.md @@ -113,7 +113,7 @@ The output files will be available in the `dist/` and `types/` directories. You can customize UI strings when creating the feedback UI: -``` +```typescript createBlinkCardFeedbackUi(uxManager, cameraUi, { localizationStrings: { scan_the_barcode: "Please scan the barcode" diff --git a/packages/blinkcard-ux-manager/api-extractor.json b/packages/blinkcard-ux-manager/api-extractor.json index ff90932..b05ab5f 100644 --- a/packages/blinkcard-ux-manager/api-extractor.json +++ b/packages/blinkcard-ux-manager/api-extractor.json @@ -2,7 +2,6 @@ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", "mainEntryPointFilePath": "/types/index.d.ts", "bundledPackages": [ - "@microblink/analytics", "@microblink/feedback-stabilizer", "@microblink/ux-common" ], diff --git a/packages/blinkcard-ux-manager/docs/interfaces/BlinkCardUxManager.md b/packages/blinkcard-ux-manager/docs/interfaces/BlinkCardUxManager.md index 8c96f88..8b395bf 100644 --- a/packages/blinkcard-ux-manager/docs/interfaces/BlinkCardUxManager.md +++ b/packages/blinkcard-ux-manager/docs/interfaces/BlinkCardUxManager.md @@ -121,7 +121,7 @@ Use `mappedUiStateKey` (internal/debug) or `uiStateKey` (displayed state). The current UI state. Updated internally by the RAF update loop. Read externally once at UI mount to seed the initial Solid signal value; -subsequent updates are delivered via [addOnUiStateChangedCallback](#addonuistatechangedcallback). +subsequent updates are delivered via `addOnUiStateChangedCallback`. ##### Returns diff --git a/packages/blinkcard-ux-manager/package.json b/packages/blinkcard-ux-manager/package.json index cb11eb7..4812553 100644 --- a/packages/blinkcard-ux-manager/package.json +++ b/packages/blinkcard-ux-manager/package.json @@ -1,7 +1,7 @@ { "name": "@microblink/blinkcard-ux-manager", "description": "BlinkCard UX Manager provides user feedback based on the blinkcard process results.", - "version": "3000.0.3", + "version": "3000.0.4", "author": "Microblink", "scripts": { "build": "concurrently pnpm:build:js pnpm:build:types", @@ -45,7 +45,6 @@ "types" ], "dependencies": { - "@microblink/analytics": "workspace:^", "@microblink/blinkcard-core": "workspace:^", "@microblink/camera-manager": "workspace:^", "@microblink/ux-common": "workspace:^", @@ -68,8 +67,8 @@ "@microsoft/api-extractor": "^7.52.4", "@typescript-eslint/eslint-plugin": "^6.9.0", "@typescript-eslint/parser": "^6.9.0", - "@unocss/eslint-config": "^65.5.0", - "@unocss/preset-uno": "^65.5.0", + "@unocss/eslint-config": "^66.6.5", + "@unocss/preset-uno": "^66.6.5", "@vitest/browser": "^3.0.8", "concurrently": "^9.1.2", "eslint": "^8.57.0", @@ -84,7 +83,7 @@ "typedoc": "^0.28.7", "typedoc-plugin-markdown": "^4.7.0", "typescript": "5.8.3", - "unocss": "^66.5.7", + "unocss": "^66.6.5", "vite": "^6.2.1", "vite-plugin-css-injected-by-js": "^3.5.2", "vite-plugin-externalize-dependencies": "1.0.1", diff --git a/packages/blinkcard-ux-manager/scripts/prepare-publish.mts b/packages/blinkcard-ux-manager/scripts/prepare-publish.mts index 99dbe14..9c41ca0 100644 --- a/packages/blinkcard-ux-manager/scripts/prepare-publish.mts +++ b/packages/blinkcard-ux-manager/scripts/prepare-publish.mts @@ -38,7 +38,7 @@ await fs.copy("README.md", path.join(publishPath, "README.md")); // These dependencies are bundled into the main types file, so we don't need to // include them in the dependencies. -const bundleDependencies = ["@microblink/analytics", "@microblink/ux-common"]; +const bundleDependencies = ["@microblink/ux-common"]; const microblinkDependencies = Object.keys(packageJson.dependencies).filter( (key) => key.startsWith("@microblink") && !bundleDependencies.includes(key), diff --git a/packages/blinkcard-ux-manager/src/core/BlinkCardUxManager.test.ts b/packages/blinkcard-ux-manager/src/core/BlinkCardUxManager.test.ts index c2b5c04..fa0e880 100644 --- a/packages/blinkcard-ux-manager/src/core/BlinkCardUxManager.test.ts +++ b/packages/blinkcard-ux-manager/src/core/BlinkCardUxManager.test.ts @@ -21,8 +21,10 @@ vi.mock("@microblink/ux-common/utils", async (importOriginal) => { }; }); -import { AnalyticService } from "@microblink/analytics/AnalyticService"; -import type { ProcessResultWithBuffer } from "@microblink/blinkcard-core"; +import { + AnalyticService, + type ProcessResultWithBuffer, +} from "@microblink/blinkcard-core"; import { createFakeImageData, enableRafAwareFakeTimers, diff --git a/packages/blinkcard-ux-manager/src/core/BlinkCardUxManager.ts b/packages/blinkcard-ux-manager/src/core/BlinkCardUxManager.ts index 8749c57..9b93fe7 100644 --- a/packages/blinkcard-ux-manager/src/core/BlinkCardUxManager.ts +++ b/packages/blinkcard-ux-manager/src/core/BlinkCardUxManager.ts @@ -2,12 +2,16 @@ * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ -import type { - BlinkCardScanningResult, - BlinkCardSessionSettings, - DeviceInfo, - ProcessResultWithBuffer, - RemoteScanningSession, +import { + AnalyticService, + type BlinkCardScanningResult, + type BlinkCardSessionSettings, + type DeviceInfo, + type PingCameraInputInfoData, + type PingScanningConditionsData, + type PingUxEventData, + type ProcessResultWithBuffer, + type RemoteScanningSession, } from "@microblink/blinkcard-core"; import type { CameraManager, @@ -15,12 +19,6 @@ import type { } from "@microblink/camera-manager"; import { FeedbackStabilizer } from "@microblink/feedback-stabilizer"; -import { AnalyticService } from "@microblink/analytics/AnalyticService"; -import type { - PingCameraInputInfoData, - PingScanningConditionsData, - PingUxEventData, -} from "@microblink/analytics/ping"; import { buildCameraAnalyticsKey, convertCameraInputToPingData, @@ -65,7 +63,7 @@ export class BlinkCardUxManager { /** * The current UI state. Updated internally by the RAF update loop. * Read externally once at UI mount to seed the initial Solid signal value; - * subsequent updates are delivered via {@link addOnUiStateChangedCallback}. + * subsequent updates are delivered via `addOnUiStateChangedCallback`. */ get uiState(): BlinkCardUiState { return this.#uiState; @@ -133,7 +131,7 @@ export class BlinkCardUxManager { #analytics: AnalyticService; /** Tracks last reported camera hardware state. */ #reportedCameraKeys = new Set(); - /** Debounced wrapper around {@link #syncCameraInputToAnalytics} (300 ms). */ + /** Debounced wrapper around `#syncCameraInputToAnalytics` (300 ms). */ #debouncedCameraInputSyncToAnalytics = debounce(() => { this.#syncCameraInputToAnalytics(); }, 300); diff --git a/packages/blinkcard-wasm/CHANGELOG.md b/packages/blinkcard-wasm/CHANGELOG.md index a0698e7..b2cb6c9 100644 --- a/packages/blinkcard-wasm/CHANGELOG.md +++ b/packages/blinkcard-wasm/CHANGELOG.md @@ -1,5 +1,12 @@ # @microblink/blinkcard-wasm +## 3000.0.4 + +### Patch Changes + +- Updated dependencies + - @microblink/wasm-common@2.0.0 + ## 3000.0.3 ## 3000.0.2 diff --git a/packages/blinkcard-wasm/dist/advanced-threads/BlinkCardModule.js b/packages/blinkcard-wasm/dist/advanced-threads/BlinkCardModule.js index 8c33827..35c1ace 100644 --- a/packages/blinkcard-wasm/dist/advanced-threads/BlinkCardModule.js +++ b/packages/blinkcard-wasm/dist/advanced-threads/BlinkCardModule.js @@ -1,141 +1,140 @@ async function createModule(moduleArg={}){var moduleRtn;var h=moduleArg,aa=!!globalThis.window,ba=!!globalThis.WorkerGlobalScope,m=ba&&self.name?.startsWith("em-pthread");let ca;(ca=h).expectedDataFileDownloads??(ca.expectedDataFileDownloads=0);h.expectedDataFileDownloads++; (()=>{var a="undefined"!=typeof ENVIRONMENT_IS_WASM_WORKER&&ENVIRONMENT_IS_WASM_WORKER;"undefined"!=typeof m&&m||a||async function(b){async function c(l,n){var q;(q=h).dataFileDownloads??(q.dataFileDownloads={});try{var p=await fetch(l)}catch(x){throw Error(`Network Error: ${l}`,{e:x});}if(!p.ok)throw Error(`${p.status}: ${p.url}`);q=[];n=Number(p.headers.get("Content-Length")??n);let u=0;h.setStatus?.("Downloading data...");for(p=p.body.getReader();;){var {done:z,value:v}=await p.read();if(z)break; -q.push(v);u+=v.length;h.dataFileDownloads[l]={loaded:u,total:n};let x=0,F=0;for(var w of Object.values(h.dataFileDownloads))x+=w.loaded,F+=w.total;h.setStatus?.(`Downloading data... (${x}/${F})`)}l=new Uint8Array(q.map(x=>x.length).reduce((x,F)=>x+F,0));w=0;for(const x of q)l.set(x,w),w+=x.length;return l.buffer}async function d(l){l.FS_createPath("/","microblink",!0,!0);l.FS_createPath("/microblink","blinkcard",!0,!0);for(var n of b.files)l.addRunDependency(`fp ${n.filename}`);l.addRunDependency("datafile_/opt/jenkins/root/E0/b/packages/blinkcard-wasm/dist/advanced-threads/BlinkCardModule.data"); -l.preloadResults??(l.preloadResults={});l.preloadResults["/opt/jenkins/root/E0/b/packages/blinkcard-wasm/dist/advanced-threads/BlinkCardModule.data"]={qd:!1};k||=await g;(async function(q){if(!q)throw Error("Loading data file failed.");if(q.constructor.name!==ArrayBuffer.name)throw Error("bad input to processPackageData");q=new Uint8Array(q);for(var p of b.files){var u=p.filename;l.FS_createDataFile(u,null,q.subarray(p.start,p.end),!0,!0,!0);l.removeRunDependency(`fp ${u}`)}l.removeRunDependency("datafile_/opt/jenkins/root/E0/b/packages/blinkcard-wasm/dist/advanced-threads/BlinkCardModule.data")})(k)} +q.push(v);u+=v.length;h.dataFileDownloads[l]={loaded:u,total:n};let x=0,F=0;for(var w of Object.values(h.dataFileDownloads))x+=w.loaded,F+=w.total;h.setStatus?.(`Downloading data... (${x}/${F})`)}l=new Uint8Array(q.map(x=>x.length).reduce((x,F)=>x+F,0));w=0;for(const x of q)l.set(x,w),w+=x.length;return l.buffer}async function d(l){l.FS_createPath("/","microblink",!0,!0);l.FS_createPath("/microblink","blinkcard",!0,!0);for(var n of b.files)l.addRunDependency(`fp ${n.filename}`);l.addRunDependency("datafile_/opt/jenkins/android-arm64-oneplus7t/root/E0/b/packages/blinkcard-wasm/dist/advanced-threads/BlinkCardModule.data"); +l.preloadResults??(l.preloadResults={});l.preloadResults["/opt/jenkins/android-arm64-oneplus7t/root/E0/b/packages/blinkcard-wasm/dist/advanced-threads/BlinkCardModule.data"]={pd:!1};k||=await g;(async function(q){if(!q)throw Error("Loading data file failed.");if(q.constructor.name!==ArrayBuffer.name)throw Error("bad input to processPackageData");q=new Uint8Array(q);for(var p of b.files){var u=p.filename;l.FS_createDataFile(u,null,q.subarray(p.start,p.end),!0,!0,!0);l.removeRunDependency(`fp ${u}`)}l.removeRunDependency("datafile_/opt/jenkins/android-arm64-oneplus7t/root/E0/b/packages/blinkcard-wasm/dist/advanced-threads/BlinkCardModule.data")})(k)} "object"===typeof window?window.encodeURIComponent(window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/"):"undefined"===typeof process&&"undefined"!==typeof location&&encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf("/"))+"/");var e=h.locateFile?.("BlinkCardModule.data","")??"BlinkCardModule.data",f=b.remote_package_size,g,k=h.getPreloadedPackage?.(e,f);k||(g=c(e,f));if(h.calledRun)d(h);else{let l;((l=h).preRun??(l.preRun=[])).push(d)}}({files:[{filename:"/microblink/blinkcard/Model_1118d9d674e23996f70c6416b2bf5a6ce6ef24a6ad2c92f0ddd1e198e5f05305.strop", start:0,end:19102},{filename:"/microblink/blinkcard/Model_349432d66ef2b216155673b634f7d5c47795bed35719b954f726b5f0856740f3.strop",start:19102,end:67419},{filename:"/microblink/blinkcard/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop",start:67419,end:336140},{filename:"/microblink/blinkcard/Model_5065f3a3bc1c2fece482ee66e9275fc198b9be239547e08b6086c59f347ca72f.strop",start:336140,end:2591295},{filename:"/microblink/blinkcard/Model_830c13896f96c1cb6d5cad725f44e6aae470f8672d640d20b3272ed4bb839699.strop", start:2591295,end:2848318},{filename:"/microblink/blinkcard/Model_9f6734be0f5c1e4f3c6c621f4a72db8241feaf7c8705dc68a9cc07a7b634ee85.strop",start:2848318,end:2931954},{filename:"/microblink/blinkcard/Model_abb3e9795585a24a9bbd1dd41ec97daa2e1d7d42087aacd981411fd8b26bf493.strop",start:2931954,end:3264110},{filename:"/microblink/blinkcard/Model_b9263312a9b623d1a3b75b643ccdcbc36aae52c278d721443468147c50e44583.strop",start:3264110,end:3532384},{filename:"/microblink/blinkcard/Model_c99d9c4b96e424a1b5a17758060a8116912f78d14318e471e0606709227b9497.strop", start:3532384,end:6369917},{filename:"/microblink/blinkcard/Model_cc1fab8df49d9a21de6c7b76ccf0dac40b17fcfb7073cc520eca073cbf8e33e9.strop",start:6369917,end:6373648},{filename:"/microblink/blinkcard/Model_f132d1bd7614b1274fafb8a41ec6c047b84b2a43654ae2da5ddd78a2765601c6.strop",start:6373648,end:7208473},{filename:"/microblink/blinkcard/bin-database_1.0.zzip",start:7208473,end:8578325}],remote_package_size:8578325})})(); h.onAbort=function(a){r("Aborted with message: "+a);try{throw new WebAssembly.RuntimeError(a);}catch(b){r("Stacktrace: "+b.stack)}};h="undefined"!==typeof h?h:{};(function(){var a="",b=!1;try{if("undefined"!==typeof self&&self.location&&self.location.href){var c=self.location.href;0===c.indexOf("blob:")&&(a=c,b=!0)}}catch(d){}b&&!h.locateFile&&(h.locateFile=function(d,e){return"BlinkCardModule.wasm"===d?a:e+d})})();var da="./this.program",ea=import.meta.url,fa="",ha,ia; if(aa||ba){try{fa=(new URL(".",ea)).href}catch{}ba&&(ia=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)});ha=async a=>{a=await fetch(a,{credentials:"same-origin"});if(a.ok)return a.arrayBuffer();throw Error(a.status+" : "+a.url);}}var ja=console.log.bind(console),r=console.error.bind(console),ka,la,ma=!1,na;function t(){oa.buffer!=A.buffer&&pa()}var qa,ra,sa; -if(m){var ta=!1;self.onunhandledrejection=b=>{throw b.reason||b;};function a(b){try{var c=b.data,d=c.qb;if("load"===d){let e=[];self.onmessage=f=>e.push(f);sa=()=>{postMessage({qb:"loaded"});for(let f of e)a(f);self.onmessage=a};for(const f of c.Ic)if(!h[f]||h[f].proxy)h[f]=(...g)=>{postMessage({qb:"callHandler",Hc:f,vc:g})},"print"==f&&(ja=h[f]),"printErr"==f&&(r=h[f]);oa=c.gd;pa();la=c.hd;ua();va()}else if("run"===d){wa(c.mb);xa(c.mb,0,0,1,0,0);ya();za(c.mb);ta||(Aa(),ta=!0);try{Ba(c.dd,c.Vb)}catch(e){if("unwind"!= -e)throw e;}}else"setimmediate"!==c.target&&("checkMailbox"===d?ta&&Ca():d&&(r(`worker: received unknown command ${d}`),r(c)))}catch(e){throw Ea(),e;}}self.onmessage=a}var A,B,C,Fa,E,H,Ga,Ha,K,Ia,Ja=!1;function pa(){var a=oa.buffer;A=new Int8Array(a);C=new Int16Array(a);B=new Uint8Array(a);Fa=new Uint16Array(a);E=new Int32Array(a);H=new Uint32Array(a);Ga=new Float32Array(a);Ha=new Float64Array(a);K=new BigInt64Array(a);Ia=new BigUint64Array(a)}var oa; -function Ka(){Ja=!0;if(m)sa();else{if(!h.noFSInit&&!La){var a,b,c;La=!0;a??=h.stdin;b??=h.stdout;c??=h.stderr;a?Ma("/dev","stdin",a):Na("/dev/tty","/dev/stdin");b?Ma("/dev","stdout",null,b):Na("/dev/tty","/dev/stdout");c?Ma("/dev","stderr",null,c):Na("/dev/tty1","/dev/stderr");Oa("/dev/stdin",0);Oa("/dev/stdout",1);Oa("/dev/stderr",1)}Pa.va();Qa=!1}} +if(m){var ta=!1;self.onunhandledrejection=b=>{throw b.reason||b;};function a(b){try{var c=b.data,d=c.pb;if("load"===d){let e=[];self.onmessage=f=>e.push(f);sa=()=>{postMessage({pb:"loaded"});for(let f of e)a(f);self.onmessage=a};for(const f of c.Hc)if(!h[f]||h[f].proxy)h[f]=(...g)=>{postMessage({pb:"callHandler",Gc:f,uc:g})},"print"==f&&(ja=h[f]),"printErr"==f&&(r=h[f]);oa=c.fd;pa();la=c.gd;ua();va()}else if("run"===d){wa(c.lb);xa(c.lb,0,0,1,0,0);ya();za(c.lb);ta||(Aa(),ta=!0);try{Ba(c.cd,c.Ub)}catch(e){if("unwind"!= +e)throw e;}}else"setimmediate"!==c.target&&("checkMailbox"===d?ta&&Da():d&&(r(`worker: received unknown command ${d}`),r(c)))}catch(e){throw Ea(),e;}}self.onmessage=a}var A,B,C,Fa,E,H,Ga,Ha,K,Ia,Ja=!1;function pa(){var a=oa.buffer;A=new Int8Array(a);C=new Int16Array(a);B=new Uint8Array(a);Fa=new Uint16Array(a);E=new Int32Array(a);H=new Uint32Array(a);Ga=new Float32Array(a);Ha=new Float64Array(a);K=new BigInt64Array(a);Ia=new BigUint64Array(a)}var oa; +function Ka(){Ja=!0;if(m)sa();else{if(!h.noFSInit&&!La){var a,b,c;La=!0;a??=h.stdin;b??=h.stdout;c??=h.stderr;a?Ma("/dev","stdin",a):Na("/dev/tty","/dev/stdin");b?Ma("/dev","stdout",null,b):Na("/dev/tty","/dev/stdout");c?Ma("/dev","stderr",null,c):Na("/dev/tty1","/dev/stderr");Oa("/dev/stdin",0);Oa("/dev/stdout",1);Oa("/dev/stderr",1)}Pa.ua();Qa=!1}} function Ra(a){h.onAbort?.(a);a="Aborted("+a+")";r(a);ma=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");ra?.(a);throw a;}var Sa;async function Ta(a){if(!ka)try{var b=await ha(a);return new Uint8Array(b)}catch{}if(a==Sa&&ka)a=new Uint8Array(ka);else if(ia)a=ia(a);else throw"both async and sync fetching of the wasm failed";return a} async function Ua(a,b){try{var c=await Ta(a);return await WebAssembly.instantiate(c,b)}catch(d){r(`failed to asynchronously prepare wasm: ${d}`),Ra(d)}}async function Va(a){var b=Sa;if(!ka)try{var c=fetch(b,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(c,a)}catch(d){r(`wasm streaming compile failed: ${d}`),r("falling back to ArrayBuffer instantiation")}return Ua(b,a)} -function Wa(){Ya={J:Za,Q:$a,w:ab,ga:bb,ha:cb,ea:db,da:eb,x:fb,fa:gb,ka:hb,e:ib,B:jb,D:kb,pa:lb,p:mb,ta:nb,A:ob,h:pb,k:qb,g:rb,l:sb,C:tb,q:ub,f:vb,b:wb,H:xb,aa:yb,P:zb,S:Ab,L:Bb,s:Cb,_:za,ja:Db,I:Eb,d:Fb,ra:Gb,oa:Hb,j:Ib,$:Jb,c:Kb,qa:Lb,sa:Mb,R:Nb,V:Ob,W:Pb,T:Qb,U:Rb,M:Sb,X:Tb,m:Ub,Y:Vb,n:Wb,t:Xb,ia:Yb,la:Zb,i:$b,y:ac,O:bc,ma:cc,ba:dc,ca:ec,z:fc,o:gc,v:hc,Z:ic,u:jc,na:kc,ua:lc,E:mc,r:nc,F:oc,G:pc,a:oa,K:qc,N:rc};return{a:Ya}} -async function ua(){function a(d,e){Pa=d.exports;sc.push(Pa.Ba);d=Pa;tc=d.wa;Aa=d.xa;uc=d.ya;vc=d.za;wc=d.Aa;xc=d.Ca;xa=d.Ea;Ea=d.Fa;yc=d.Ga;zc=d.Ha;Ac=d.Ia;Bc=d.Ja;Cc=d.Ka;Dc=d.La;Ec=d.Ma;Fc=d.Na;Gc=d.Oa;Hc=d.Pa;Ic=d.Da;la=e;return Pa}var b=Wa();if(h.instantiateWasm)return new Promise(d=>{h.instantiateWasm(b,(e,f)=>{d(a(e,f))})});if(m){var c=new WebAssembly.Instance(la,Wa());return a(c,la)}Sa??=h.locateFile?h.locateFile?h.locateFile("BlinkCardModule.wasm",fa):fa+"BlinkCardModule.wasm":(new URL("BlinkCardModule.wasm", -import.meta.url)).href;return function(d){return a(d.instance,d.module)}(await Va(b))}class Jc{name="ExitStatus";constructor(a){this.message=`Program terminated with exit(${a})`;this.status=a}} -var Kc=a=>{a.terminate();a.onmessage=()=>{}},Lc=a=>{for(;0{Nc--;h.monitorRunDependencies?.(Nc);if(0==Nc&&Oc){var a=Oc;Oc=null;a()}},Qc=()=>{Nc++;h.monitorRunDependencies?.(Nc)},Wc=a=>{0==Rc.length&&(Sc(),Tc(Rc[0]));var b=Rc.pop();if(!b)return 6;Uc.push(b);Vc[a.mb]=b;b.mb=a.mb;b.postMessage({qb:"run",dd:a.cd,Vb:a.Vb,mb:a.mb},a.uc);return 0},L=0,N=(a,b,...c)=>{for(var d=2*c.length,e=Hc(),f=Gc(8*d),g=f>>3,k=0;k{na=a;if(m)throw Yc(a),"unwind";qc(a)},Rc=[],Uc=[],sc=[],Vc={}; -function Zc(){for(var a=navigator.hardwareConcurrency;a--;)Sc();Mc.push(async()=>{var b=$c();Qc("loading-workers");await b;Pc("loading-workers")})}var ad=a=>{var b=a.mb;delete Vc[b];Rc.push(a);Uc.splice(Uc.indexOf(a),1);a.mb=0;zc(b)};function ya(){sc.forEach(a=>a())} -var Tc=a=>new Promise(b=>{a.onmessage=f=>{var g=f.data;f=g.qb;if(g.Sb&&g.Sb!=uc()){var k=Vc[g.Sb];k?k.postMessage(g,g.uc):r(`Internal error! Worker sent a message "${f}" to target pthread ${g.Sb}, but that thread no longer exists!`)}else if("checkMailbox"===f)Ca();else if("spawnThread"===f)Wc(g);else if("cleanupThread"===f)bd(()=>{ad(Vc[g.ed])});else if("loaded"===f)a.loaded=!0,b(a);else if("setimmediate"===g.target)a.postMessage(g);else if("callHandler"===f)h[g.Hc](...g.vc);else f&&r(`worker sent an unknown command ${f}`)}; -a.onerror=f=>{r(`${"worker sent an error!"} ${f.filename}:${f.lineno}: ${f.message}`);throw f;};var c=[],d=["onExit","onAbort","print","printErr"],e;for(e of d)h.propertyIsEnumerable(e)&&c.push(e);a.postMessage({qb:"load",Ic:c,gd:oa,hd:la})});async function $c(){if(!m)return Promise.all(Rc.map(Tc))} -function Sc(){if(h.mainScriptUrlOrBlob){var a=h.mainScriptUrlOrBlob;"string"!=typeof a&&(a=URL.createObjectURL(a));a=new Worker(a,{type:"module",name:"em-pthread"})}else a=new Worker(new URL("BlinkCardModule.js",import.meta.url),{type:"module",name:"em-pthread"});Rc.push(a)}var cd=[];function wa(a){var b=(t(),H)[a+52>>2];a=(t(),H)[a+56>>2];Ec(b,b-a);Fc(b)}var dd=[],O=a=>{var b=dd[a];b||(dd[a]=b=Ic.get(a));return b},Ba=(a,b)=>{Xc=L=0;a=O(a)(b);Xc||0O(a)(b); -function ed(a,b,c,d){return m?N(2,1,a,b,c,d):$a(a,b,c,d)} -var ac=()=>!!globalThis.SharedArrayBuffer,$a=(a,b,c,d)=>{if(!globalThis.SharedArrayBuffer)return 6;var e=[];if(m&&0===e.length)return ed(a,b,c,d);a={cd:c,mb:a,Vb:d,uc:e};return m?(a.qb="spawnThread",postMessage(a,e),0):Wc(a)},gd=()=>{var a=(t(),E)[+fd>>2];fd+=4;return a},hd=(a,b)=>{for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a},jd=a=>{var b="/"===a.charAt(0),c="/"===a.slice(-1);(a=hd(a.split("/").filter(d=> -!!d),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a},kd=a=>{var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&=b.slice(0,-1);return a+b},ld=()=>a=>a.set(crypto.getRandomValues(new Uint8Array(a.byteLength))),md=a=>{(md=ld())(a)},nd=(...a)=>{for(var b="",c=!1,d=a.length-1;-1<=d&&!c;d--){c=0<=d?a[d]:"/";if("string"!=typeof c)throw new TypeError("Arguments to path.resolve must be strings");if(!c)return"";b=c+"/"+b; -c="/"===c.charAt(0)}b=hd(b.split("/").filter(e=>!!e),!c).join("/");return(c?"/":"")+b||"."},od=globalThis.TextDecoder&&new TextDecoder,pd=(a,b,c,d)=>{c=b+c;if(d)return c;for(;a[b]&&!(b>=c);)++b;return b},qd=(a,b=0,c,d)=>{c=pd(a,b,c,d);if(16e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d},rd=[],sd=a=>{for(var b=0,c=0;c=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},td=(a,b,c,d)=>{if(!(0=g){if(c>=d)break;b[c++]=g}else if(2047>=g){if(c+1>=d)break;b[c++]=192|g>>6;b[c++]=128|g&63}else if(65535>= -g){if(c+2>=d)break;b[c++]=224|g>>12;b[c++]=128|g>>6&63;b[c++]=128|g&63}else{if(c+3>=d)break;b[c++]=240|g>>18;b[c++]=128|g>>12&63;b[c++]=128|g>>6&63;b[c++]=128|g&63;f++}}b[c]=0;return c-e},ud=a=>{var b=Array(sd(a)+1);a=td(a,b,0,b.length);b.length=a;return b},vd=[];function wd(a,b){vd[a]={input:[],output:[],sb:b};xd(a,yd)} -var yd={open(a){var b=vd[a.node.Fb];if(!b)throw new P(43);a.Va=b;a.seekable=!1},close(a){a.Va.sb.Kb(a.Va)},Kb(a){a.Va.sb.Kb(a.Va)},read(a,b,c,d){if(!a.Va||!a.Va.sb.oc)throw new P(60);for(var e=0,f=0;f{a=65536*Math.ceil(a/65536);var b=xc(65536,a);b&&(t(),B).fill(0,b,b+a);return b},Q={lb:null,rb(){return Q.createNode(null,"/",16895,0)},createNode(a,b,c,d){if(24576===(c&61440)||4096===(c&61440))throw new P(63);Q.lb||(Q.lb={dir:{node:{jb:Q.Ta.jb,pb:Q.Ta.pb,Bb:Q.Ta.Bb,Nb:Q.Ta.Nb,sc:Q.Ta.sc,Tb:Q.Ta.Tb,tc:Q.Ta.tc,cc:Q.Ta.cc,Rb:Q.Ta.Rb},stream:{kb:Q.Ra.kb}}, -file:{node:{jb:Q.Ta.jb,pb:Q.Ta.pb},stream:{kb:Q.Ra.kb,read:Q.Ra.read,write:Q.Ra.write,Cb:Q.Ra.Cb,Ob:Q.Ra.Ob}},link:{node:{jb:Q.Ta.jb,pb:Q.Ta.pb,Gb:Q.Ta.Gb},stream:{}},ic:{node:{jb:Q.Ta.jb,pb:Q.Ta.pb},stream:Cd}});c=Dd(a,b,c,d);R(c.mode)?(c.Ta=Q.lb.dir.node,c.Ra=Q.lb.dir.stream,c.Sa={}):32768===(c.mode&61440)?(c.Ta=Q.lb.file.node,c.Ra=Q.lb.file.stream,c.Ya=0,c.Sa=null):40960===(c.mode&61440)?(c.Ta=Q.lb.link.node,c.Ra=Q.lb.link.stream):8192===(c.mode&61440)&&(c.Ta=Q.lb.ic.node,c.Ra=Q.lb.ic.stream); -c.ub=c.gb=c.fb=Date.now();a&&(a.Sa[b]=c,a.ub=a.gb=a.fb=c.ub);return c},rd(a){return a.Sa?a.Sa.subarray?a.Sa.subarray(0,a.Ya):new Uint8Array(a.Sa):new Uint8Array(0)},Ta:{jb(a){var b={};b.zc=8192===(a.mode&61440)?a.id:1;b.Kc=a.id;b.mode=a.mode;b.Tc=1;b.uid=0;b.Gc=0;b.Fb=a.Fb;b.size=R(a.mode)?4096:32768===(a.mode&61440)?a.Ya:40960===(a.mode&61440)?a.link.length:0;b.ub=new Date(a.ub);b.gb=new Date(a.gb);b.fb=new Date(a.fb);b.wc=4096;b.xc=Math.ceil(b.size/b.wc);return b},pb(a,b){for(var c of["mode","atime", -"mtime","ctime"])null!=b[c]&&(a[c]=b[c]);void 0!==b.size&&(b=b.size,a.Ya!=b&&(0==b?(a.Sa=null,a.Ya=0):(c=a.Sa,a.Sa=new Uint8Array(b),c&&a.Sa.set(c.subarray(0,Math.min(b,a.Ya))),a.Ya=b)))},Bb(){Q.Wb||(Q.Wb=new P(44),Q.Wb.stack="");throw Q.Wb;},Nb(a,b,c,d){return Q.createNode(a,b,c,d)},sc(a,b,c){try{var d=Ed(b,c)}catch(f){}if(d){if(R(a.mode))for(var e in d.Sa)throw new P(55);Fd(d)}delete a.parent.Sa[a.name];b.Sa[c]=a;a.name=c;b.fb=b.gb=a.parent.fb=a.parent.gb=Date.now()},Tb(a, -b){delete a.Sa[b];a.fb=a.gb=Date.now()},tc(a,b){var c=Ed(a,b),d;for(d in c.Sa)throw new P(55);delete a.Sa[b];a.fb=a.gb=Date.now()},cc(a){return[".","..",...Object.keys(a.Sa)]},Rb(a,b,c){a=Q.createNode(a,b,41471,0);a.link=c;return a},Gb(a){if(40960!==(a.mode&61440))throw new P(28);return a.link}},Ra:{read(a,b,c,d,e){var f=a.node.Sa;if(e>=a.node.Ya)return 0;a=Math.min(a.node.Ya-e,d);if(8=f||(f=Math.max(f,g*(1048576>g?2:1.125)>>>0),0!=g&&(f=Math.max(f,256)),g=a.Sa,a.Sa=new Uint8Array(f),0b)throw new P(28);return b},Cb(a,b,c,d,e){if(32768!==(a.node.mode&61440))throw new P(43);a=a.node.Sa;if(e&2||!a||a.buffer!==(t(),A).buffer){d=!0;e=Bd(b);if(!e)throw new P(48);if(a){if(0{var c=0;a&&(c|=365);b&&(c|=146);return c},Hd=async a=>{a=await ha(a);return new Uint8Array(a)},Id=[],Jd=async(a,b)=>{"undefined"!=typeof Browser&&Browser.sd();for(var c of Id)if(c.canHandle(b))return c.handle(a,b);return a},Kd=null,Ld={},Md=[],Nd=1,Od=null,La=!1,Qa=!0,Pd={},P=class{name="ErrnoError";constructor(a){this.Za=a}},Qd=class{Qb={};node=null;get object(){return this.node}set object(a){this.node=a}get flags(){return this.Qb.flags}set flags(a){this.Qb.flags= -a}get position(){return this.Qb.position}set position(a){this.Qb.position=a}},Rd=class{Ta={};Ra={};Pb=365;Ub=146;Db=null;constructor(a,b,c,d){a||=this;this.parent=a;this.rb=a.rb;this.id=Nd++;this.name=b;this.mode=c;this.Fb=d;this.ub=this.gb=this.fb=Date.now()}get read(){return(this.mode&this.Pb)===this.Pb}set read(a){a?this.mode|=this.Pb:this.mode&=~this.Pb}get write(){return(this.mode&this.Ub)===this.Ub}set write(a){a?this.mode|=this.Ub:this.mode&=~this.Ub}get Qc(){return R(this.mode)}get Pc(){return 8192=== +function Wa(){Ya={J:Za,R:$a,w:ab,fa:bb,ga:cb,da:db,ca:eb,x:fb,ea:gb,ja:hb,e:ib,B:jb,C:kb,ra:lb,m:mb,sa:nb,A:ob,h:pb,k:qb,g:rb,l:sb,ta:tb,q:ub,f:vb,b:wb,D:xb,$:yb,P:zb,S:Ab,L:Bb,s:Cb,_:za,ia:Db,I:Eb,d:Fb,ma:Gb,qa:Hb,j:Ib,Q:Jb,c:Kb,pa:Lb,oa:Mb,H:Nb,V:Ob,W:Pb,T:Qb,U:Rb,M:Sb,X:Tb,n:Ub,Y:Vb,o:Wb,t:Xb,ha:Yb,ka:Zb,i:$b,y:ac,O:bc,la:cc,aa:dc,ba:ec,z:fc,p:gc,v:hc,Z:ic,u:jc,na:kc,E:lc,r:mc,F:nc,G:oc,a:oa,K:pc,N:qc};return{a:Ya}} +async function ua(){function a(d,e){Pa=d.exports;rc.push(Pa.Aa);d=Pa;sc=d.va;Aa=d.wa;tc=d.xa;uc=d.ya;vc=d.za;wc=d.Ba;xa=d.Da;Ea=d.Ea;xc=d.Fa;yc=d.Ga;zc=d.Ha;Ac=d.Ia;Bc=d.Ja;Cc=d.Ka;Dc=d.La;Ec=d.Ma;Fc=d.Na;Gc=d.Oa;Hc=d.Ca;la=e;return Pa}var b=Wa();if(h.instantiateWasm)return new Promise(d=>{h.instantiateWasm(b,(e,f)=>{d(a(e,f))})});if(m){var c=new WebAssembly.Instance(la,Wa());return a(c,la)}Sa??=h.locateFile?h.locateFile?h.locateFile("BlinkCardModule.wasm",fa):fa+"BlinkCardModule.wasm":(new URL("BlinkCardModule.wasm", +import.meta.url)).href;return function(d){return a(d.instance,d.module)}(await Va(b))}class Ic{name="ExitStatus";constructor(a){this.message=`Program terminated with exit(${a})`;this.status=a}} +var Jc=a=>{a.terminate();a.onmessage=()=>{}},Kc=a=>{for(;0{Mc--;h.monitorRunDependencies?.(Mc);if(0==Mc&&Nc){var a=Nc;Nc=null;a()}},Pc=()=>{Mc++;h.monitorRunDependencies?.(Mc)},Vc=a=>{0==Qc.length&&(Rc(),Sc(Qc[0]));var b=Qc.pop();if(!b)return 6;Tc.push(b);Uc[a.lb]=b;b.lb=a.lb;b.postMessage({pb:"run",cd:a.bd,Ub:a.Ub,lb:a.lb},a.tc);return 0},L=0,N=(a,b,...c)=>{for(var d=2*c.length,e=Gc(),f=Fc(8*d),g=f>>3,k=0;k{na=a;if(m)throw Xc(a),"unwind";pc(a)},Qc=[],Tc=[],rc=[],Uc={}; +function Yc(){for(var a=navigator.hardwareConcurrency;a--;)Rc();Lc.push(async()=>{var b=Zc();Pc("loading-workers");await b;Oc("loading-workers")})}var $c=a=>{var b=a.lb;delete Uc[b];Qc.push(a);Tc.splice(Tc.indexOf(a),1);a.lb=0;yc(b)};function ya(){rc.forEach(a=>a())} +var Sc=a=>new Promise(b=>{a.onmessage=f=>{var g=f.data;f=g.pb;if(g.Rb&&g.Rb!=tc()){var k=Uc[g.Rb];k?k.postMessage(g,g.tc):r(`Internal error! Worker sent a message "${f}" to target pthread ${g.Rb}, but that thread no longer exists!`)}else if("checkMailbox"===f)Da();else if("spawnThread"===f)Vc(g);else if("cleanupThread"===f)ad(()=>{$c(Uc[g.dd])});else if("loaded"===f)a.loaded=!0,b(a);else if("setimmediate"===g.target)a.postMessage(g);else if("callHandler"===f)h[g.Gc](...g.uc);else f&&r(`worker sent an unknown command ${f}`)}; +a.onerror=f=>{r(`${"worker sent an error!"} ${f.filename}:${f.lineno}: ${f.message}`);throw f;};var c=[],d=["onExit","onAbort","print","printErr"],e;for(e of d)h.propertyIsEnumerable(e)&&c.push(e);a.postMessage({pb:"load",Hc:c,fd:oa,gd:la})});async function Zc(){if(!m)return Promise.all(Qc.map(Sc))} +function Rc(){if(h.mainScriptUrlOrBlob){var a=h.mainScriptUrlOrBlob;"string"!=typeof a&&(a=URL.createObjectURL(a));a=new Worker(a,{type:"module",name:"em-pthread"})}else a=new Worker(new URL("BlinkCardModule.js",import.meta.url),{type:"module",name:"em-pthread"});Qc.push(a)}var bd=[];function wa(a){var b=(t(),H)[a+52>>2];a=(t(),H)[a+56>>2];Dc(b,b-a);Ec(b)}var cd=[],O=a=>{var b=cd[a];b||(cd[a]=b=Hc.get(a));return b},Ba=(a,b)=>{Wc=L=0;a=O(a)(b);Wc||0O(a)(b); +function dd(a,b,c,d){return m?N(2,1,a,b,c,d):$a(a,b,c,d)} +var ac=()=>!!globalThis.SharedArrayBuffer,$a=(a,b,c,d)=>{if(!globalThis.SharedArrayBuffer)return 6;var e=[];if(m&&0===e.length)return dd(a,b,c,d);a={bd:c,lb:a,Ub:d,tc:e};return m?(a.pb="spawnThread",postMessage(a,e),0):Vc(a)},fd=()=>{var a=(t(),E)[+ed>>2];ed+=4;return a},gd=(a,b)=>{for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a},hd=a=>{var b="/"===a.charAt(0),c="/"===a.slice(-1);(a=gd(a.split("/").filter(d=> +!!d),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a},jd=a=>{var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&=b.slice(0,-1);return a+b},kd=()=>a=>a.set(crypto.getRandomValues(new Uint8Array(a.byteLength))),ld=a=>{(ld=kd())(a)},md=(...a)=>{for(var b="",c=!1,d=a.length-1;-1<=d&&!c;d--){c=0<=d?a[d]:"/";if("string"!=typeof c)throw new TypeError("Arguments to path.resolve must be strings");if(!c)return"";b=c+"/"+b; +c="/"===c.charAt(0)}b=gd(b.split("/").filter(e=>!!e),!c).join("/");return(c?"/":"")+b||"."},nd=globalThis.TextDecoder&&new TextDecoder,od=(a,b,c,d)=>{c=b+c;if(d)return c;for(;a[b]&&!(b>=c);)++b;return b},pd=(a,b=0,c,d)=>{c=od(a,b,c,d);if(16e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d},qd=[],rd=a=>{for(var b=0,c=0;c=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},sd=(a,b,c,d)=>{if(!(0=g){if(c>=d)break;b[c++]=g}else if(2047>=g){if(c+1>=d)break;b[c++]=192|g>>6;b[c++]=128|g&63}else if(65535>= +g){if(c+2>=d)break;b[c++]=224|g>>12;b[c++]=128|g>>6&63;b[c++]=128|g&63}else{if(c+3>=d)break;b[c++]=240|g>>18;b[c++]=128|g>>12&63;b[c++]=128|g>>6&63;b[c++]=128|g&63;f++}}b[c]=0;return c-e},td=a=>{var b=Array(rd(a)+1);a=sd(a,b,0,b.length);b.length=a;return b},ud=[];function vd(a,b){ud[a]={input:[],output:[],rb:b};wd(a,xd)} +var xd={open(a){var b=ud[a.node.Eb];if(!b)throw new P(43);a.Ua=b;a.seekable=!1},close(a){a.Ua.rb.Jb(a.Ua)},Jb(a){a.Ua.rb.Jb(a.Ua)},read(a,b,c,d){if(!a.Ua||!a.Ua.rb.nc)throw new P(60);for(var e=0,f=0;f{a=65536*Math.ceil(a/65536);var b=wc(65536,a);b&&(t(),B).fill(0,b,b+a);return b},Q={kb:null,qb(){return Q.createNode(null,"/",16895,0)},createNode(a,b,c,d){if(24576===(c&61440)||4096===(c&61440))throw new P(63);Q.kb||(Q.kb={dir:{node:{ib:Q.Sa.ib,ob:Q.Sa.ob,Ab:Q.Sa.Ab,Mb:Q.Sa.Mb,rc:Q.Sa.rc,Sb:Q.Sa.Sb,sc:Q.Sa.sc,bc:Q.Sa.bc,Qb:Q.Sa.Qb},stream:{jb:Q.Qa.jb}}, +file:{node:{ib:Q.Sa.ib,ob:Q.Sa.ob},stream:{jb:Q.Qa.jb,read:Q.Qa.read,write:Q.Qa.write,Bb:Q.Qa.Bb,Nb:Q.Qa.Nb}},link:{node:{ib:Q.Sa.ib,ob:Q.Sa.ob,Fb:Q.Sa.Fb},stream:{}},hc:{node:{ib:Q.Sa.ib,ob:Q.Sa.ob},stream:Bd}});c=Cd(a,b,c,d);R(c.mode)?(c.Sa=Q.kb.dir.node,c.Qa=Q.kb.dir.stream,c.Ra={}):32768===(c.mode&61440)?(c.Sa=Q.kb.file.node,c.Qa=Q.kb.file.stream,c.Xa=0,c.Ra=null):40960===(c.mode&61440)?(c.Sa=Q.kb.link.node,c.Qa=Q.kb.link.stream):8192===(c.mode&61440)&&(c.Sa=Q.kb.hc.node,c.Qa=Q.kb.hc.stream); +c.tb=c.fb=c.eb=Date.now();a&&(a.Ra[b]=c,a.tb=a.fb=a.eb=c.tb);return c},qd(a){return a.Ra?a.Ra.subarray?a.Ra.subarray(0,a.Xa):new Uint8Array(a.Ra):new Uint8Array(0)},Sa:{ib(a){var b={};b.yc=8192===(a.mode&61440)?a.id:1;b.Jc=a.id;b.mode=a.mode;b.Sc=1;b.uid=0;b.Fc=0;b.Eb=a.Eb;b.size=R(a.mode)?4096:32768===(a.mode&61440)?a.Xa:40960===(a.mode&61440)?a.link.length:0;b.tb=new Date(a.tb);b.fb=new Date(a.fb);b.eb=new Date(a.eb);b.vc=4096;b.wc=Math.ceil(b.size/b.vc);return b},ob(a,b){for(var c of["mode","atime", +"mtime","ctime"])null!=b[c]&&(a[c]=b[c]);void 0!==b.size&&(b=b.size,a.Xa!=b&&(0==b?(a.Ra=null,a.Xa=0):(c=a.Ra,a.Ra=new Uint8Array(b),c&&a.Ra.set(c.subarray(0,Math.min(b,a.Xa))),a.Xa=b)))},Ab(){Q.Vb||(Q.Vb=new P(44),Q.Vb.stack="");throw Q.Vb;},Mb(a,b,c,d){return Q.createNode(a,b,c,d)},rc(a,b,c){try{var d=Dd(b,c)}catch(f){}if(d){if(R(a.mode))for(var e in d.Ra)throw new P(55);Ed(d)}delete a.parent.Ra[a.name];b.Ra[c]=a;a.name=c;b.eb=b.fb=a.parent.eb=a.parent.fb=Date.now()},Sb(a, +b){delete a.Ra[b];a.eb=a.fb=Date.now()},sc(a,b){var c=Dd(a,b),d;for(d in c.Ra)throw new P(55);delete a.Ra[b];a.eb=a.fb=Date.now()},bc(a){return[".","..",...Object.keys(a.Ra)]},Qb(a,b,c){a=Q.createNode(a,b,41471,0);a.link=c;return a},Fb(a){if(40960!==(a.mode&61440))throw new P(28);return a.link}},Qa:{read(a,b,c,d,e){var f=a.node.Ra;if(e>=a.node.Xa)return 0;a=Math.min(a.node.Xa-e,d);if(8=f||(f=Math.max(f,g*(1048576>g?2:1.125)>>>0),0!=g&&(f=Math.max(f,256)),g=a.Ra,a.Ra=new Uint8Array(f),0b)throw new P(28);return b},Bb(a,b,c,d,e){if(32768!==(a.node.mode&61440))throw new P(43);a=a.node.Ra;if(e&2||!a||a.buffer!==(t(),A).buffer){d=!0;e=Ad(b);if(!e)throw new P(48);if(a){if(0{var c=0;a&&(c|=365);b&&(c|=146);return c},Gd=async a=>{a=await ha(a);return new Uint8Array(a)},Hd=[],Id=async(a,b)=>{"undefined"!=typeof Browser&&Browser.rd();for(var c of Hd)if(c.canHandle(b))return c.handle(a,b);return a},Jd=null,Kd={},Ld=[],Md=1,Nd=null,La=!1,Qa=!0,Od={},P=class{name="ErrnoError";constructor(a){this.Ya=a}},Pd=class{Pb={};node=null;get object(){return this.node}set object(a){this.node=a}get flags(){return this.Pb.flags}set flags(a){this.Pb.flags= +a}get position(){return this.Pb.position}set position(a){this.Pb.position=a}},Qd=class{Sa={};Qa={};Ob=365;Tb=146;Cb=null;constructor(a,b,c,d){a||=this;this.parent=a;this.qb=a.qb;this.id=Md++;this.name=b;this.mode=c;this.Eb=d;this.tb=this.fb=this.eb=Date.now()}get read(){return(this.mode&this.Ob)===this.Ob}set read(a){a?this.mode|=this.Ob:this.mode&=~this.Ob}get write(){return(this.mode&this.Tb)===this.Tb}set write(a){a?this.mode|=this.Tb:this.mode&=~this.Tb}get Pc(){return R(this.mode)}get Oc(){return 8192=== (this.mode&61440)}}; -function Sd(a,b={}){if(!a)throw new P(44);b.Xb??(b.Xb=!0);"/"===a.charAt(0)||(a="//"+a);var c=0;a:for(;40>c;c++){a=a.split("/").filter(k=>!!k);for(var d=Kd,e="/",f=0;f>>0)%Od.length} -function Fd(a){var b=Ud(a.parent.id,a.name);if(Od[b]===a)Od[b]=a.xb;else for(b=Od[b];b;){if(b.xb===a){b.xb=a.xb;break}b=b.xb}}function Ed(a,b){var c=R(a.mode)?(c=Vd(a,"x"))?c:a.Ta.Bb?0:2:54;if(c)throw new P(c);for(c=Od[Ud(a.id,b)];c;c=c.xb){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.Ta.Bb(a,b)}function Dd(a,b,c,d){a=new Rd(a,b,c,d);b=Ud(a.parent.id,a.name);a.xb=Od[b];return Od[b]=a}function R(a){return 16384===(a&61440)} -function Wd(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function Vd(a,b){if(Qa)return 0;if(!b.includes("r")||a.mode&292){if(b.includes("w")&&!(a.mode&146)||b.includes("x")&&!(a.mode&73))return 2}else return 2;return 0}function Xd(a,b){if(!R(a.mode))return 54;try{return Ed(a,b),20}catch(c){}return Vd(a,"wx")}function Yd(a){if(!a)throw new P(63);return a}function S(a){a=Md[a];if(!a)throw new P(8);return a} -function Zd(a,b=-1){a=Object.assign(new Qd,a);if(-1==b)a:{for(b=0;4096>=b;b++)if(!Md[b])break a;throw new P(33);}a.vb=b;return Md[b]=a}function $d(a,b=-1){a=Zd(a,b);a.Ra?.pd?.(a);return a}function ae(a,b){var c=null?.Ra.pb,d=c?null:a;c??=a.Ta.pb;Yd(c);c(d,b)}var Cd={open(a){a.Ra=Ld[a.node.Fb].Ra;a.Ra.open?.(a)},kb(){throw new P(70);}};function xd(a,b){Ld[a]={Ra:b}} -function be(a,b){var c="/"===b;if(c&&Kd)throw new P(10);if(!c&&b){var d=Sd(b,{Xb:!1});b=d.path;d=d.node;if(d.Db)throw new P(10);if(!R(d.mode))throw new P(54);}b={type:a,td:{},qc:b,Sc:[]};a=a.rb(b);a.rb=b;b.root=a;c?Kd=a:d&&(d.Db=b,d.rb&&d.rb.Sc.push(b))}function ce(a,b,c){var d=Sd(a,{parent:!0}).node;a=a&&a.match(/([^\/]+|\/)\/*$/)[1];if(!a)throw new P(28);if("."===a||".."===a)throw new P(20);var e=Xd(d,a);if(e)throw new P(e);if(!d.Ta.Nb)throw new P(63);return d.Ta.Nb(d,a,b,c)} -function de(a,b=438){return ce(a,b&4095|32768,0)}function ee(a){return ce(a,16895,0)}function fe(a,b,c){"undefined"==typeof c&&(c=b,b=438);return ce(a,b|8192,c)}function Na(a,b){if(!nd(a))throw new P(44);var c=Sd(b,{parent:!0}).node;if(!c)throw new P(44);b=b&&b.match(/([^\/]+|\/)\/*$/)[1];var d=Xd(c,b);if(d)throw new P(d);if(!c.Ta.Rb)throw new P(63);c.Ta.Rb(c,b,a)} -function ge(a){var b=Sd(a,{parent:!0}).node;if(!b)throw new P(44);a=a&&a.match(/([^\/]+|\/)\/*$/)[1];var c=Ed(b,a);a:{try{var d=Ed(b,a)}catch(f){d=f.Za;break a}var e=Vd(b,"wx");d=e?e:R(d.mode)?31:0}if(d)throw new P(d);if(!b.Ta.Tb)throw new P(63);if(c.Db)throw new P(10);b.Ta.Tb(b,a);Fd(c)}function he(a,b){a=Sd(a,{Jb:!b}).node;return Yd(a.Ta.jb)(a)}function ie(a,b){a="string"==typeof a?Sd(a,{Jb:!0}).node:a;ae(a,{mode:b&4095|a.mode&-4096,fb:Date.now(),od:void 0})} -function Oa(a,b,c=438){if(""===a)throw new P(44);if("string"==typeof b){var d={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[b];if("undefined"==typeof d)throw Error(`Unknown file open mode: ${b}`);b=d}c=b&64?c&4095|32768:0;if("object"==typeof a)d=a;else{var e=a.endsWith("/");a=Sd(a,{Jb:!(b&131072),Uc:!0});d=a.node;a=a.path}var f=!1;if(b&64)if(d){if(b&128)throw new P(20);}else{if(e)throw new P(31);d=ce(a,c|511,0);f=!0}if(!d)throw new P(44);8192===(d.mode&61440)&&(b&=-513);if(b&65536&&!R(d.mode))throw new P(54); -if(!f&&(e=d?40960===(d.mode&61440)?32:R(d.mode)&&("r"!==Wd(b)||b&576)?31:Vd(d,Wd(b)):44))throw new P(e);if(b&512&&!f){e=d;e="string"==typeof e?Sd(e,{Jb:!0}).node:e;if(R(e.mode))throw new P(31);if(32768!==(e.mode&61440))throw new P(28);var g=Vd(e,"w");if(g)throw new P(g);ae(e,{size:0,timestamp:Date.now()})}b&=-131713;e=Zd({node:d,path:Td(d),flags:b,seekable:!0,position:0,Ra:d.Ra,fd:[],error:!1});e.Ra.open&&e.Ra.open(e);f&&ie(d,c&511);!h.logReadFiles||b&1||a in Pd||(Pd[a]=1);return e} -function je(a){if(null===a.vb)throw new P(8);a.Yb&&(a.Yb=null);try{a.Ra.close&&a.Ra.close(a)}catch(b){throw b;}finally{Md[a.vb]=null}a.vb=null}function ke(a,b,c){if(null===a.vb)throw new P(8);if(!a.seekable||!a.Ra.kb)throw new P(70);if(0!=c&&1!=c&&2!=c)throw new P(28);a.position=a.Ra.kb(a,b,c);a.fd=[]} -function le(a,b,c,d,e,f){if(0>d||0>e)throw new P(28);if(null===a.vb)throw new P(8);if(0===(a.flags&2097155))throw new P(8);if(R(a.node.mode))throw new P(31);if(!a.Ra.write)throw new P(28);a.seekable&&a.flags&1024&&ke(a,0,2);var g="undefined"!=typeof e;if(!g)e=a.position;else if(!a.seekable)throw new P(70);b=a.Ra.write(a,b,c,d,e,f);g||(a.position+=b);return b} -function me(a,b){a="string"==typeof a?a:Td(a);for(b=b.split("/").reverse();b.length;){var c=b.pop();if(c){var d=jd(a+"/"+c);try{ee(d)}catch(e){if(20!=e.Za)throw e;}a=d}}return d}function ne(a,b,c,d){a=jd(("string"==typeof a?a:Td(a))+"/"+b);return de(a,Gd(c,d))} -function oe(a,b,c,d,e,f){var g=b;a&&(a="string"==typeof a?a:Td(a),g=b?jd(a+"/"+b):a);a=Gd(d,e);g=de(g,a);if(c){if("string"==typeof c){b=Array(c.length);d=0;for(e=c.length;d=p.length)return 0;v=Math.min(p.length-w,v);if(p.slice)for(var x=0;xthis.length-1||0>p)){var u=p%this.jc;return this.Ab(p/this.jc|0)[u]}}Yc(p){this.Ab=p}hc(){var p=new XMLHttpRequest;p.open("HEAD",c,!1);p.send(null);200<=p.status&&300>p.status||304===p.status||Ra("Couldn't load "+c+". Status: "+p.status);var u=Number(p.getResponseHeader("Content-length")), -z,v=(z=p.getResponseHeader("Accept-Ranges"))&&"bytes"===z;p=(z=p.getResponseHeader("Content-Encoding"))&&"gzip"===z;var w=1048576;v||(w=u);var x=this;x.Yc(F=>{var G=F*w,M=(F+1)*w-1;M=Math.min(M,u-1);if("undefined"==typeof x.Ib[F]){var y=x.Ib;G>M&&Ra("invalid range ("+G+", "+M+") or no bytes requested!");M>u-1&&Ra("only "+u+" bytes available! programmer error!");var J=new XMLHttpRequest;J.open("GET",c,!1);u!==w&&J.setRequestHeader("Range","bytes="+G+"-"+M);J.responseType="arraybuffer";J.overrideMimeType&& -J.overrideMimeType("text/plain; charset=x-user-defined");J.send(null);200<=J.status&&300>J.status||304===J.status||Ra("Couldn't load "+c+". Status: "+J.status);G=void 0!==J.response?new Uint8Array(J.response||[]):ud(J.responseText||"");y[F]=G}"undefined"==typeof x.Ib[F]&&Ra("doXHR failed!");return x.Ib[F]});if(p||!u)w=u=1,w=u=this.Ab(0).length,ja("LazyFiles on gzip forces download of the whole file when length is accessed");this.fc=u;this.ec=w;this.$b=!0}get length(){this.$b||this.hc();return this.fc}get jc(){this.$b|| -this.hc();return this.ec}}if(globalThis.XMLHttpRequest){ba||Ra("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var k=new g;var l=void 0}else l=c,k=void 0;var n=ne(a,b,d,e);k?n.Sa=k:l&&(n.Sa=null,n.url=l);Object.defineProperties(n,{Ya:{get:function(){return this.Sa.length}}});var q={};Object.keys(n.Ra).forEach(p=>{var u=n.Ra[p];q[p]=(...z)=>{pe(n);return u(...z)}});q.read=(p,u,z,v,w)=>{pe(n);return f(p,u,z,v,w)};q.Cb=(p,u,z)=>{pe(n); -var v=Bd(u);if(!v)throw new P(48);f(p,(t(),A),v,u,z);return{Ua:v,tb:!0}};n.Ra=q;return n}var T={},U=(a,b,c)=>a?qd((t(),B),a,b,c):"";function re(a,b,c){if("/"===b.charAt(0))return b;a=-100===a?"/":S(a).path;if(0==b.length){if(!c)throw new P(44);return a}return a+"/"+b} -function se(a,b){(t(),H)[a>>2]=b.zc;(t(),H)[a+4>>2]=b.mode;(t(),H)[a+8>>2]=b.Tc;(t(),H)[a+12>>2]=b.uid;(t(),H)[a+16>>2]=b.Gc;(t(),H)[a+20>>2]=b.Fb;(t(),K)[a+24>>3]=BigInt(b.size);(t(),E)[a+32>>2]=4096;(t(),E)[a+36>>2]=b.xc;var c=b.ub.getTime(),d=b.gb.getTime(),e=b.fb.getTime();(t(),K)[a+40>>3]=BigInt(Math.floor(c/1E3));(t(),H)[a+48>>2]=c%1E3*1E6;(t(),K)[a+56>>3]=BigInt(Math.floor(d/1E3));(t(),H)[a+64>>2]=d%1E3*1E6;(t(),K)[a+72>>3]=BigInt(Math.floor(e/1E3));(t(),H)[a+80>>2]=e%1E3*1E6;(t(),K)[a+88>> -3]=BigInt(b.Kc);return 0}var fd=void 0;function ab(a,b,c){if(m)return N(3,1,a,b,c);fd=c;try{var d=S(a);switch(b){case 0:var e=gd();if(0>e)break;for(;Md[e];)e++;return $d(d,e).vb;case 1:case 2:return 0;case 3:return d.flags;case 4:return e=gd(),d.flags|=e,0;case 12:return e=gd(),(t(),C)[e+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Za}} -function bb(a,b){if(m)return N(4,1,a,b);try{var c=S(a),d=c.node,e=c.Ra.jb;a=e?c:d;e??=d.Ta.jb;Yd(e);var f=e(a);return se(b,f)}catch(g){if("undefined"==typeof T||"ErrnoError"!==g.name)throw g;return-g.Za}} -function cb(a,b,c){if(m)return N(5,1,a,b,c);fd=c;try{var d=S(a);switch(b){case 21509:return d.Va?0:-59;case 21505:if(!d.Va)return-59;if(d.Va.sb.Mc){a=[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var e=gd();(t(),E)[e>>2]=25856;(t(),E)[e+4>>2]=5;(t(),E)[e+8>>2]=191;(t(),E)[e+12>>2]=35387;for(var f=0;32>f;f++)(t(),A)[e+f+17]=a[f]||0}return 0;case 21510:case 21511:case 21512:return d.Va?0:-59;case 21506:case 21507:case 21508:if(!d.Va)return-59;if(d.Va.sb.Nc)for(e=gd(), -t(),t(),t(),t(),a=[],f=0;32>f;f++)a.push((t(),A)[e+f+17]);return 0;case 21519:if(!d.Va)return-59;e=gd();return(t(),E)[e>>2]=0;case 21520:return d.Va?-28:-59;case 21537:case 21531:e=gd();if(!d.Ra.Lc)throw new P(59);return d.Ra.Lc(d,b,e);case 21523:if(!d.Va)return-59;d.Va.sb.Oc&&(f=[24,80],e=gd(),(t(),C)[e>>1]=f[0],(t(),C)[e+2>>1]=f[1]);return 0;case 21524:return d.Va?0:-59;case 21515:return d.Va?0:-59;default:return-28}}catch(g){if("undefined"==typeof T||"ErrnoError"!==g.name)throw g;return-g.Za}} -function db(a,b){if(m)return N(6,1,a,b);try{return a=U(a),se(b,he(a,!0))}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return-c.Za}}function eb(a,b,c,d){if(m)return N(7,1,a,b,c,d);try{b=U(b);var e=d&256;b=re(a,b,d&4096);return se(c,e?he(b,!0):he(b))}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Za}} -function fb(a,b,c,d){if(m)return N(8,1,a,b,c,d);fd=d;try{b=U(b);b=re(a,b);var e=d?gd():0;return Oa(b,c,e).vb}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Za}}function gb(a,b){if(m)return N(9,1,a,b);try{return a=U(a),se(b,he(a))}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return-c.Za}}var hb=()=>Ra(""),te={},ue=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}};function ve(a){return this.$a((t(),H)[a>>2])} -var we={},xe={},ye={},ze=class extends Error{constructor(a){super(a);this.name="InternalError"}},Ae=(a,b,c)=>{function d(k){k=c(k);if(k.length!==a.length)throw new ze("Mismatched type converter count");for(var l=0;lye[k]=b);var e=Array(b.length),f=[],g=0;b.forEach((k,l)=>{xe.hasOwnProperty(k)?e[l]=xe[k]:(f.push(k),we.hasOwnProperty(k)||(we[k]=[]),we[k].push(()=>{e[l]=xe[k];++g;g===f.length&&d(e)}))});0===f.length&&d(e)},ib=a=>{var b=te[a];delete te[a];var c= -b.bc,d=b.nb,e=b.mc,f=e.map(g=>g.Fc).concat(e.map(g=>g.$c));Ae([a],f,g=>{var k={};e.forEach((l,n)=>{var q=g[n],p=l.Ab,u=l.Ec,z=g[n+e.length],v=l.Zc,w=l.ad;k[l.Bc]={read:x=>q.$a(p(u,x)),write:(x,F)=>{var G=[];v(w,x,z.cb(G,F));ue(G)},optional:g[n].optional}});return[{name:b.name,$a:l=>{var n={},q;for(q in k)n[q]=k[q].read(l);d(l);return n},cb:(l,n)=>{for(var q in k)if(!(q in n||k[q].optional))throw new TypeError(`Missing field: "${q}"`);var p=c();for(q in k)k[q].write(p,n[q]);null!==l&&l.push(d,p);return p}, -ob:ve,ib:d}]})},W=a=>{for(var b="";;){var c=(t(),B)[a++];if(!c)return b;b+=String.fromCharCode(c)}},X=class extends Error{constructor(a){super(a);this.name="BindingError"}};function Be(a,b,c={}){var d=b.name;if(!a)throw new X(`type "${d}" must have a positive integer typeid pointer`);if(xe.hasOwnProperty(a)){if(c.Jc)return;throw new X(`Cannot register type '${d}' twice`);}xe[a]=b;delete ye[a];we.hasOwnProperty(a)&&(b=we[a],delete we[a],b.forEach(e=>e()))}function V(a,b,c={}){return Be(a,b,c)} -var Ce=(a,b,c)=>{switch(b){case 1:return c?d=>(t(),A)[d]:d=>(t(),B)[d];case 2:return c?d=>(t(),C)[d>>1]:d=>(t(),Fa)[d>>1];case 4:return c?d=>(t(),E)[d>>2]:d=>(t(),H)[d>>2];case 8:return c?d=>(t(),K)[d>>3]:d=>(t(),Ia)[d>>3];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},jb=(a,b,c,d,e)=>{b=W(b);d=0n===d;let f=g=>g;if(d){const g=8*c;f=k=>BigInt.asUintN(g,k);e=f(e)}V(a,{name:b,$a:f,cb:(g,k)=>{"number"==typeof k&&(k=BigInt(k));return k},ob:Ce(b,c,!d),ib:null})},kb=(a,b,c,d)=>{b=W(b); -V(a,{name:b,$a:function(e){return!!e},cb:function(e,f){return f?c:d},ob:function(e){return this.$a((t(),B)[e])},ib:null})},De=a=>{throw new X(a.Qa.Xa.Wa.name+" instance already deleted");},Ee=!1,Fe=()=>{},Ge=a=>{if(!globalThis.FinalizationRegistry)return Ge=b=>b,a;Ee=new FinalizationRegistry(b=>{b=b.Qa;--b.count.value;0===b.count.value&&(b.bb?b.hb.nb(b.bb):b.Xa.Wa.nb(b.Ua))});Ge=b=>{var c=b.Qa;c.bb&&Ee.register(b,{Qa:c},b);return b};Fe=b=>{Ee.unregister(b)};return Ge(a)},He=[];function Ie(){} -var Je=(a,b)=>Object.defineProperty(b,"name",{value:a}),Ke={},Le=(a,b,c)=>{if(void 0===a[b].ab){var d=a[b];a[b]=function(...e){if(!a[b].ab.hasOwnProperty(e.length))throw new X(`Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].ab})!`);return a[b].ab[e.length].apply(this,e)};a[b].ab=[];a[b].ab[d.yb]=d}},Me=(a,b,c)=>{if(h.hasOwnProperty(a)){if(void 0===c||void 0!==h[a].ab&&void 0!==h[a].ab[c])throw new X(`Cannot register public name '${a}' twice`);Le(h, -a,a);if(h[a].ab.hasOwnProperty(c))throw new X(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);h[a].ab[c]=b}else h[a]=b,h[a].yb=c},Ne=a=>{a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a};function Oe(a,b,c,d,e,f,g,k){this.name=a;this.constructor=b;this.wb=c;this.nb=d;this.eb=e;this.Cc=f;this.Hb=g;this.Ac=k;this.Wc=[]} -var Pe=(a,b,c)=>{for(;b!==c;){if(!b.Hb)throw new X(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.Hb(a);b=b.eb}return a},Qe=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a}; -function Re(a,b){if(null===b){if(this.Zb)throw new X(`null is not a valid ${this.name}`);return 0}if(!b.Qa)throw new X(`Cannot pass "${Qe(b)}" as a ${this.name}`);if(!b.Qa.Ua)throw new X(`Cannot pass deleted object as a pointer of type ${this.name}`);return Pe(b.Qa.Ua,b.Qa.Xa.Wa,this.Wa)} -function Se(a,b){if(null===b){if(this.Zb)throw new X(`null is not a valid ${this.name}`);if(this.Mb){var c=this.bc();null!==a&&a.push(this.nb,c);return c}return 0}if(!b||!b.Qa)throw new X(`Cannot pass "${Qe(b)}" as a ${this.name}`);if(!b.Qa.Ua)throw new X(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.Lb&&b.Qa.Xa.Lb)throw new X(`Cannot convert argument of type ${b.Qa.hb?b.Qa.hb.name:b.Qa.Xa.name} to parameter type ${this.name}`);c=Pe(b.Qa.Ua,b.Qa.Xa.Wa,this.Wa);if(this.Mb){if(void 0=== -b.Qa.bb)throw new X("Passing raw pointer to smart pointer is illegal");switch(this.bd){case 0:if(b.Qa.hb===this)c=b.Qa.bb;else throw new X(`Cannot convert argument of type ${b.Qa.hb?b.Qa.hb.name:b.Qa.Xa.name} to parameter type ${this.name}`);break;case 1:c=b.Qa.bb;break;case 2:if(b.Qa.hb===this)c=b.Qa.bb;else{var d=b.clone();c=this.Xc(c,Te(()=>d["delete"]()));null!==a&&a.push(this.nb,c)}break;default:throw new X("Unsupporting sharing policy");}}return c} -function Ue(a,b){if(null===b){if(this.Zb)throw new X(`null is not a valid ${this.name}`);return 0}if(!b.Qa)throw new X(`Cannot pass "${Qe(b)}" as a ${this.name}`);if(!b.Qa.Ua)throw new X(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.Qa.Xa.Lb)throw new X(`Cannot convert argument of type ${b.Qa.Xa.name} to parameter type ${this.name}`);return Pe(b.Qa.Ua,b.Qa.Xa.Wa,this.Wa)} -var Ve=(a,b,c)=>{if(b===c)return a;if(void 0===c.eb)return null;a=Ve(a,b,c.eb);return null===a?null:c.Ac(a)},We={},Xe=(a,b)=>{if(void 0===b)throw new X("ptr should not be undefined");for(;a.eb;)b=a.Hb(b),a=a.eb;return We[b]},Ye=(a,b)=>{if(!b.Xa||!b.Ua)throw new ze("makeClassHandle requires ptr and ptrType");if(!!b.hb!==!!b.bb)throw new ze("Both smartPtrType and smartPtr must be specified");b.count={value:1};return Ge(Object.create(a,{Qa:{value:b,writable:!0}}))}; -function Ze(a,b,c,d,e,f,g,k,l,n,q){this.name=a;this.Wa=b;this.Zb=c;this.Lb=d;this.Mb=e;this.Vc=f;this.bd=g;this.rc=k;this.bc=l;this.Xc=n;this.nb=q;e||void 0!==b.eb?this.cb=Se:(this.cb=d?Re:Ue,this.ib=null)}var $e=(a,b,c)=>{if(!h.hasOwnProperty(a))throw new ze("Replacing nonexistent public symbol");void 0!==h[a].ab&&void 0!==c?h[a].ab[c]=b:(h[a]=b,h[a].yb=c)},af=(a,b)=>{a=W(a);var c=O(b);if("function"!=typeof c)throw new X(`unknown function pointer with signature ${a}: ${b}`);return c}; -class bf extends Error{} -var cf=a=>{a=tc(a);var b=W(a);wc(a);return b},df=(a,b)=>{function c(f){e[f]||xe[f]||(ye[f]?ye[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new bf(`${a}: `+d.map(cf).join([", "]));},lb=(a,b,c,d,e,f,g,k,l,n,q,p,u)=>{q=W(q);f=af(e,f);k&&=af(g,k);n&&=af(l,n);u=af(p,u);var z=Ne(q);Me(z,function(){df(`Cannot construct ${q} due to unbound types`,[d])});Ae([a,b,c],d?[d]:[],v=>{v=v[0];if(d){var w=v.Wa;var x=w.wb}else x=Ie.prototype;v=Je(q,function(...y){if(Object.getPrototypeOf(this)!==F)throw new X(`Use 'new' to construct ${q}`); -if(void 0===G.kc)throw new X(`${q} has no accessible constructor`);var J=G.kc[y.length];if(void 0===J)throw new X(`Tried to invoke ctor of ${q} with invalid number of parameters (${y.length}) - expected (${Object.keys(G.kc).toString()}) parameters instead!`);return J.apply(this,y)});var F=Object.create(x,{constructor:{value:v}});v.prototype=F;var G=new Oe(q,v,F,u,w,f,k,n);if(G.eb){var M;(M=G.eb).dc??(M.dc=[]);G.eb.dc.push(G)}w=new Ze(q,G,!0,!1,!1);M=new Ze(q+"*",G,!1,!1,!1);x=new Ze(q+" const*",G, -!1,!0,!1);Ke[a]={pointerType:M,yc:x};$e(z,v);return[w,M,x]})};function ef(a){for(var b=1;bf)throw new X("argTypes array size mismatch! Must at least get return value and 'this' types!");var g=null!==b[1]&&null!==c,k=ef(b),l=!b[0].Rc,n=f-2,q=Array(n),p=[],u=[];return Je(a,function(...z){u.length=0;p.length=g?2:1;p[0]=e;if(g){var v=b[1].cb(u,this);p[1]=v}for(var w=0;w{for(var c=[],d=0;d>2]);return c},hf=a=>{a=a.trim();const b=a.indexOf("(");return-1===b?a:a.slice(0,b)},mb=(a,b,c,d,e,f,g,k)=>{var l=gf(c,d);b=W(b);b=hf(b);f=af(e,f);Ae([],[a],n=>{function q(){df(`Cannot call ${p} due to unbound types`,l)}n=n[0];var p=`${n.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);k&&n.Wa.Wc.push(b);var u=n.Wa.wb,z=u[b];void 0===z||void 0===z.ab&&z.className!==n.name&&z.yb===c-2?(q.yb=c-2,q.className=n.name,u[b]=q):(Le(u, -b,p),u[b].ab[c-2]=q);Ae([],l,v=>{v=ff(p,v,n,f,g);void 0===u[b].ab?(v.yb=c-2,u[b]=v):u[b].ab[c-2]=v;return[]});return[]})},jf=[],kf=[0,1,,1,null,1,!0,1,!1,1],Gb=a=>{9{if(!a)throw new X(`Cannot use deleted val. handle = ${a}`);return kf[a]},Te=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=jf.pop()||kf.length;kf[b]=a;kf[b+1]=1;return b}},mf={name:"emscripten::val",$a:a=>{var b=lf(a);Gb(a);return b}, -cb:(a,b)=>Te(b),ob:ve,ib:null},nb=a=>V(a,mf),nf=(a,b)=>{switch(b){case 4:return function(c){return this.$a((t(),Ga)[c>>2])};case 8:return function(c){return this.$a((t(),Ha)[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},ob=(a,b,c)=>{b=W(b);V(a,{name:b,$a:d=>d,cb:(d,e)=>e,ob:nf(b,c),ib:null})},pb=(a,b,c,d,e,f)=>{var g=gf(b,c);a=W(a);a=hf(a);e=af(d,e);Me(a,function(){df(`Cannot call ${a} due to unbound types`,g)},b-1);Ae([],g,k=>{$e(a,ff(a,[k[0],null].concat(k.slice(1)), -null,e,f),b-1);return[]})},qb=(a,b,c,d,e)=>{b=W(b);let f=k=>k;if(0===d){var g=32-8*c;f=k=>k<>>g;e=f(e)}V(a,{name:b,$a:f,cb:(k,l)=>l,ob:Ce(b,c,0!==d),ib:null})},rb=(a,b,c)=>{function d(f){var g=(t(),H)[f>>2];f=(t(),H)[f+4>>2];return new e((t(),A).buffer,f,g)}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][b];c=W(c);V(a,{name:c,$a:d,ob:d},{Jc:!0})},of=Object.assign({optional:!0},mf),sb=a=>{V(a,of)},Y=(a,b,c)=>td(a, -(t(),B),b,c),tb=(a,b)=>{b=W(b);V(a,{name:b,$a(c){var d=(t(),H)[c>>2];d=U(c+4,d,!0);wc(c);return d},cb(c,d){d instanceof ArrayBuffer&&(d=new Uint8Array(d));var e="string"==typeof d;if(!(e||ArrayBuffer.isView(d)&&1==d.BYTES_PER_ELEMENT))throw new X("Cannot pass non-string to std::string");var f=e?sd(d):d.length;var g=vc(4+f+1),k=g+4;(t(),H)[g>>2]=f;e?Y(d,k,f+1):(t(),B).set(d,k);null!==c&&c.push(wc,g);return g},ob:ve,ib(c){wc(c)}})},pf=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,qf=(a, -b,c)=>{a>>=1;b=pd((t(),Fa),a,b/2,c);if(16{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>1]=f;b+=2}(t(),C)[b>>1]=0;return b-d},sf=a=>2*a.length,tf=(a,b,c)=>{var d="";a>>=2;for(var e=0;!(e>=b/4);e++){var f=(t(),H)[a+e];if(!f&&!c)break; -d+=String.fromCodePoint(f)}return d},uf=(a,b,c)=>{c??=2147483647;if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e>2]=f;b+=4;if(b+4>c)break}(t(),E)[b>>2]=0;return b-d},vf=a=>{for(var b=0,c=0;c{c=W(c);if(2===b){var d=qf;var e=rf;var f=sf}else d=tf,e=uf,f=vf;V(a,{name:c,$a:g=>{var k=(t(),H)[g>>2];k=d(g+4,k*b,!0);wc(g);return k},cb:(g,k)=>{if("string"!=typeof k)throw new X(`Cannot pass non-string to C++ string type ${c}`); -var l=f(k),n=vc(4+l+b);(t(),H)[n>>2]=l/b;e(k,n+4,l+b);null!==g&&g.push(wc,n);return n},ob:ve,ib(g){wc(g)}})},vb=(a,b,c,d,e,f)=>{te[a]={name:W(b),bc:af(c,d),nb:af(e,f),mc:[]}},wb=(a,b,c,d,e,f,g,k,l,n)=>{te[a].mc.push({Bc:W(b),Fc:c,Ab:af(d,e),Ec:f,$c:g,Zc:af(k,l),ad:n})},xb=(a,b)=>{b=W(b);V(a,{Rc:!0,name:b,$a:()=>{},cb:()=>{}})},yb=a=>{xa(a,!ba,1,!aa,5242880,!1);ya()},wf=a=>{if(!(a instanceof Jc||"unwind"==a))throw a;},bd=a=>{if(!ma)try{if(a(),!(Xc||0{Atomics.waitAsync&&(Atomics.waitAsync((t(),E),a>>2,a).value.then(Ca),a+=128,Atomics.store((t(),E),a>>2,1))},Ca=()=>bd(()=>{var a=uc();a&&(za(a),Cc())}),zb=(a,b)=>{a==b?setTimeout(Ca):m?postMessage({Sb:a,qb:"checkMailbox"}):(a=Vc[a])&&a.postMessage({qb:"checkMailbox"})},xf=[],Ab=(a,b,c,d,e)=>{d/=2;xf.length=d;c=e>>3;for(e=0;e{Xc=!1;L=0},Cb=a=>{m?postMessage({qb:"cleanupThread",ed:a}):ad(Vc[a])}, -Db=()=>{},Eb=()=>{throw Infinity;},Af=[],Bf=a=>{var b=Af.length;Af.push(a);return b},Cf=(a,b)=>{for(var c=Array(a),d=0;d>2],g=xe[f];if(void 0===g)throw a=`${`parameter ${d}`} has unknown type ${cf(f)}`,new X(a);c[e]=g}return c},Df={},Ef=a=>{var b=Df[a];return void 0===b?W(a):b},Fb=(a,b,c)=>{var [d,...e]=Cf(a,b),f=d.cb.bind(d),g=e.map(l=>l.ob.bind(l));a--;var k=Array(a);b=`methodCaller<(${e.map(l=>l.name)}) => ${d.name}>`;return Bf(Je(b,(l,n,q,p)=>{for(var u=0,z=0;z< -a;++z)k[z]=g[z](p+u),u+=8;switch(c){case 0:var v=lf(l).apply(null,k);break;case 2:v=Reflect.construct(lf(l),k);break;case 3:v=k[0];break;case 1:v=lf(l)[Ef(n)](...k)}l=[];v=f(l,v);l.length&&((t(),H)[q>>2]=Te(l));return v}))},Hb=a=>{if(!a)return Te(globalThis);a=Ef(a);return Te(globalThis[a])},Ib=(a,b)=>{a=lf(a);b=lf(b);return Te(a[b])},Jb=a=>{9Af[a](b,c,d,e),Lb=()=>Te([]),Mb=a=>Te(Ef(a)),Nb=a=>{var b=lf(a);ue(b);Gb(a)},Ff=a=>0===a%4&&(0!==a%100||0===a%400),Gf=[0,31, -60,91,121,152,182,213,244,274,305,335],Hf=[0,31,59,90,120,151,181,212,243,273,304,334]; -function Ob(a,b){a=-9007199254740992>a||9007199254740992>2]=a.getSeconds();(t(),E)[b+4>>2]=a.getMinutes();(t(),E)[b+8>>2]=a.getHours();(t(),E)[b+12>>2]=a.getDate();(t(),E)[b+16>>2]=a.getMonth();(t(),E)[b+20>>2]=a.getFullYear()-1900;(t(),E)[b+24>>2]=a.getDay();var c=(Ff(a.getFullYear())?Gf:Hf)[a.getMonth()]+a.getDate()-1|0;(t(),E)[b+28>>2]=c;(t(),E)[b+36>>2]=-(60*a.getTimezoneOffset());c=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();var d=(new Date(a.getFullYear(), +function Rd(a,b={}){if(!a)throw new P(44);b.Wb??(b.Wb=!0);"/"===a.charAt(0)||(a="//"+a);var c=0;a:for(;40>c;c++){a=a.split("/").filter(k=>!!k);for(var d=Jd,e="/",f=0;f>>0)%Nd.length} +function Ed(a){var b=Td(a.parent.id,a.name);if(Nd[b]===a)Nd[b]=a.wb;else for(b=Nd[b];b;){if(b.wb===a){b.wb=a.wb;break}b=b.wb}}function Dd(a,b){var c=R(a.mode)?(c=Ud(a,"x"))?c:a.Sa.Ab?0:2:54;if(c)throw new P(c);for(c=Nd[Td(a.id,b)];c;c=c.wb){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.Sa.Ab(a,b)}function Cd(a,b,c,d){a=new Qd(a,b,c,d);b=Td(a.parent.id,a.name);a.wb=Nd[b];return Nd[b]=a}function R(a){return 16384===(a&61440)} +function Vd(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function Ud(a,b){if(Qa)return 0;if(!b.includes("r")||a.mode&292){if(b.includes("w")&&!(a.mode&146)||b.includes("x")&&!(a.mode&73))return 2}else return 2;return 0}function Wd(a,b){if(!R(a.mode))return 54;try{return Dd(a,b),20}catch(c){}return Ud(a,"wx")}function Xd(a){if(!a)throw new P(63);return a}function S(a){a=Ld[a];if(!a)throw new P(8);return a} +function Yd(a,b=-1){a=Object.assign(new Pd,a);if(-1==b)a:{for(b=0;4096>=b;b++)if(!Ld[b])break a;throw new P(33);}a.ub=b;return Ld[b]=a}function Zd(a,b=-1){a=Yd(a,b);a.Qa?.od?.(a);return a}function $d(a,b){var c=null?.Qa.ob,d=c?null:a;c??=a.Sa.ob;Xd(c);c(d,b)}var Bd={open(a){a.Qa=Kd[a.node.Eb].Qa;a.Qa.open?.(a)},jb(){throw new P(70);}};function wd(a,b){Kd[a]={Qa:b}} +function ae(a,b){var c="/"===b;if(c&&Jd)throw new P(10);if(!c&&b){var d=Rd(b,{Wb:!1});b=d.path;d=d.node;if(d.Cb)throw new P(10);if(!R(d.mode))throw new P(54);}b={type:a,sd:{},pc:b,Rc:[]};a=a.qb(b);a.qb=b;b.root=a;c?Jd=a:d&&(d.Cb=b,d.qb&&d.qb.Rc.push(b))}function be(a,b,c){var d=Rd(a,{parent:!0}).node;a=a&&a.match(/([^\/]+|\/)\/*$/)[1];if(!a)throw new P(28);if("."===a||".."===a)throw new P(20);var e=Wd(d,a);if(e)throw new P(e);if(!d.Sa.Mb)throw new P(63);return d.Sa.Mb(d,a,b,c)} +function ce(a,b=438){return be(a,b&4095|32768,0)}function de(a){return be(a,16895,0)}function ee(a,b,c){"undefined"==typeof c&&(c=b,b=438);return be(a,b|8192,c)}function Na(a,b){if(!md(a))throw new P(44);var c=Rd(b,{parent:!0}).node;if(!c)throw new P(44);b=b&&b.match(/([^\/]+|\/)\/*$/)[1];var d=Wd(c,b);if(d)throw new P(d);if(!c.Sa.Qb)throw new P(63);c.Sa.Qb(c,b,a)} +function fe(a){var b=Rd(a,{parent:!0}).node;if(!b)throw new P(44);a=a&&a.match(/([^\/]+|\/)\/*$/)[1];var c=Dd(b,a);a:{try{var d=Dd(b,a)}catch(f){d=f.Ya;break a}var e=Ud(b,"wx");d=e?e:R(d.mode)?31:0}if(d)throw new P(d);if(!b.Sa.Sb)throw new P(63);if(c.Cb)throw new P(10);b.Sa.Sb(b,a);Ed(c)}function ge(a,b){a=Rd(a,{Ib:!b}).node;return Xd(a.Sa.ib)(a)}function he(a,b){a="string"==typeof a?Rd(a,{Ib:!0}).node:a;$d(a,{mode:b&4095|a.mode&-4096,eb:Date.now(),nd:void 0})} +function Oa(a,b,c=438){if(""===a)throw new P(44);if("string"==typeof b){var d={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[b];if("undefined"==typeof d)throw Error(`Unknown file open mode: ${b}`);b=d}c=b&64?c&4095|32768:0;if("object"==typeof a)d=a;else{var e=a.endsWith("/");a=Rd(a,{Ib:!(b&131072),Tc:!0});d=a.node;a=a.path}var f=!1;if(b&64)if(d){if(b&128)throw new P(20);}else{if(e)throw new P(31);d=be(a,c|511,0);f=!0}if(!d)throw new P(44);8192===(d.mode&61440)&&(b&=-513);if(b&65536&&!R(d.mode))throw new P(54); +if(!f&&(e=d?40960===(d.mode&61440)?32:R(d.mode)&&("r"!==Vd(b)||b&576)?31:Ud(d,Vd(b)):44))throw new P(e);if(b&512&&!f){e=d;e="string"==typeof e?Rd(e,{Ib:!0}).node:e;if(R(e.mode))throw new P(31);if(32768!==(e.mode&61440))throw new P(28);var g=Ud(e,"w");if(g)throw new P(g);$d(e,{size:0,timestamp:Date.now()})}b&=-131713;e=Yd({node:d,path:Sd(d),flags:b,seekable:!0,position:0,Qa:d.Qa,ed:[],error:!1});e.Qa.open&&e.Qa.open(e);f&&he(d,c&511);!h.logReadFiles||b&1||a in Od||(Od[a]=1);return e} +function ie(a){if(null===a.ub)throw new P(8);a.Xb&&(a.Xb=null);try{a.Qa.close&&a.Qa.close(a)}catch(b){throw b;}finally{Ld[a.ub]=null}a.ub=null}function je(a,b,c){if(null===a.ub)throw new P(8);if(!a.seekable||!a.Qa.jb)throw new P(70);if(0!=c&&1!=c&&2!=c)throw new P(28);a.position=a.Qa.jb(a,b,c);a.ed=[]} +function ke(a,b,c,d,e,f){if(0>d||0>e)throw new P(28);if(null===a.ub)throw new P(8);if(0===(a.flags&2097155))throw new P(8);if(R(a.node.mode))throw new P(31);if(!a.Qa.write)throw new P(28);a.seekable&&a.flags&1024&&je(a,0,2);var g="undefined"!=typeof e;if(!g)e=a.position;else if(!a.seekable)throw new P(70);b=a.Qa.write(a,b,c,d,e,f);g||(a.position+=b);return b} +function le(a,b){a="string"==typeof a?a:Sd(a);for(b=b.split("/").reverse();b.length;){var c=b.pop();if(c){var d=hd(a+"/"+c);try{de(d)}catch(e){if(20!=e.Ya)throw e;}a=d}}return d}function me(a,b,c,d){a=hd(("string"==typeof a?a:Sd(a))+"/"+b);return ce(a,Fd(c,d))} +function ne(a,b,c,d,e,f){var g=b;a&&(a="string"==typeof a?a:Sd(a),g=b?hd(a+"/"+b):a);a=Fd(d,e);g=ce(g,a);if(c){if("string"==typeof c){b=Array(c.length);d=0;for(e=c.length;d=p.length)return 0;v=Math.min(p.length-w,v);if(p.slice)for(var x=0;xthis.length-1||0>p)){var u=p%this.ic;return this.zb(p/this.ic|0)[u]}}Xc(p){this.zb=p}fc(){var p=new XMLHttpRequest;p.open("HEAD",c,!1);p.send(null);200<=p.status&&300>p.status||304===p.status||Ra("Couldn't load "+c+". Status: "+p.status);var u=Number(p.getResponseHeader("Content-length")), +z,v=(z=p.getResponseHeader("Accept-Ranges"))&&"bytes"===z;p=(z=p.getResponseHeader("Content-Encoding"))&&"gzip"===z;var w=1048576;v||(w=u);var x=this;x.Xc(F=>{var G=F*w,M=(F+1)*w-1;M=Math.min(M,u-1);if("undefined"==typeof x.Hb[F]){var y=x.Hb;G>M&&Ra("invalid range ("+G+", "+M+") or no bytes requested!");M>u-1&&Ra("only "+u+" bytes available! programmer error!");var J=new XMLHttpRequest;J.open("GET",c,!1);u!==w&&J.setRequestHeader("Range","bytes="+G+"-"+M);J.responseType="arraybuffer";J.overrideMimeType&& +J.overrideMimeType("text/plain; charset=x-user-defined");J.send(null);200<=J.status&&300>J.status||304===J.status||Ra("Couldn't load "+c+". Status: "+J.status);G=void 0!==J.response?new Uint8Array(J.response||[]):td(J.responseText||"");y[F]=G}"undefined"==typeof x.Hb[F]&&Ra("doXHR failed!");return x.Hb[F]});if(p||!u)w=u=1,w=u=this.zb(0).length,ja("LazyFiles on gzip forces download of the whole file when length is accessed");this.ec=u;this.dc=w;this.Zb=!0}get length(){this.Zb||this.fc();return this.ec}get ic(){this.Zb|| +this.fc();return this.dc}}if(globalThis.XMLHttpRequest){ba||Ra("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var k=new g;var l=void 0}else l=c,k=void 0;var n=me(a,b,d,e);k?n.Ra=k:l&&(n.Ra=null,n.url=l);Object.defineProperties(n,{Xa:{get:function(){return this.Ra.length}}});var q={};Object.keys(n.Qa).forEach(p=>{var u=n.Qa[p];q[p]=(...z)=>{oe(n);return u(...z)}});q.read=(p,u,z,v,w)=>{oe(n);return f(p,u,z,v,w)};q.Bb=(p,u,z)=>{oe(n); +var v=Ad(u);if(!v)throw new P(48);f(p,(t(),A),v,u,z);return{Ta:v,sb:!0}};n.Qa=q;return n}var T={},U=(a,b,c)=>a?pd((t(),B),a,b,c):"";function qe(a,b,c){if("/"===b.charAt(0))return b;a=-100===a?"/":S(a).path;if(0==b.length){if(!c)throw new P(44);return a}return a+"/"+b} +function re(a,b){(t(),H)[a>>2]=b.yc;(t(),H)[a+4>>2]=b.mode;(t(),H)[a+8>>2]=b.Sc;(t(),H)[a+12>>2]=b.uid;(t(),H)[a+16>>2]=b.Fc;(t(),H)[a+20>>2]=b.Eb;(t(),K)[a+24>>3]=BigInt(b.size);(t(),E)[a+32>>2]=4096;(t(),E)[a+36>>2]=b.wc;var c=b.tb.getTime(),d=b.fb.getTime(),e=b.eb.getTime();(t(),K)[a+40>>3]=BigInt(Math.floor(c/1E3));(t(),H)[a+48>>2]=c%1E3*1E6;(t(),K)[a+56>>3]=BigInt(Math.floor(d/1E3));(t(),H)[a+64>>2]=d%1E3*1E6;(t(),K)[a+72>>3]=BigInt(Math.floor(e/1E3));(t(),H)[a+80>>2]=e%1E3*1E6;(t(),K)[a+88>> +3]=BigInt(b.Jc);return 0}var ed=void 0;function ab(a,b,c){if(m)return N(3,1,a,b,c);ed=c;try{var d=S(a);switch(b){case 0:var e=fd();if(0>e)break;for(;Ld[e];)e++;return Zd(d,e).ub;case 1:case 2:return 0;case 3:return d.flags;case 4:return e=fd(),d.flags|=e,0;case 12:return e=fd(),(t(),C)[e+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Ya}} +function bb(a,b){if(m)return N(4,1,a,b);try{var c=S(a),d=c.node,e=c.Qa.ib;a=e?c:d;e??=d.Sa.ib;Xd(e);var f=e(a);return re(b,f)}catch(g){if("undefined"==typeof T||"ErrnoError"!==g.name)throw g;return-g.Ya}} +function cb(a,b,c){if(m)return N(5,1,a,b,c);ed=c;try{var d=S(a);switch(b){case 21509:return d.Ua?0:-59;case 21505:if(!d.Ua)return-59;if(d.Ua.rb.Lc){a=[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var e=fd();(t(),E)[e>>2]=25856;(t(),E)[e+4>>2]=5;(t(),E)[e+8>>2]=191;(t(),E)[e+12>>2]=35387;for(var f=0;32>f;f++)(t(),A)[e+f+17]=a[f]||0}return 0;case 21510:case 21511:case 21512:return d.Ua?0:-59;case 21506:case 21507:case 21508:if(!d.Ua)return-59;if(d.Ua.rb.Mc)for(e=fd(), +t(),t(),t(),t(),a=[],f=0;32>f;f++)a.push((t(),A)[e+f+17]);return 0;case 21519:if(!d.Ua)return-59;e=fd();return(t(),E)[e>>2]=0;case 21520:return d.Ua?-28:-59;case 21537:case 21531:e=fd();if(!d.Qa.Kc)throw new P(59);return d.Qa.Kc(d,b,e);case 21523:if(!d.Ua)return-59;d.Ua.rb.Nc&&(f=[24,80],e=fd(),(t(),C)[e>>1]=f[0],(t(),C)[e+2>>1]=f[1]);return 0;case 21524:return d.Ua?0:-59;case 21515:return d.Ua?0:-59;default:return-28}}catch(g){if("undefined"==typeof T||"ErrnoError"!==g.name)throw g;return-g.Ya}} +function db(a,b){if(m)return N(6,1,a,b);try{return a=U(a),re(b,ge(a,!0))}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return-c.Ya}}function eb(a,b,c,d){if(m)return N(7,1,a,b,c,d);try{b=U(b);var e=d&256;b=qe(a,b,d&4096);return re(c,e?ge(b,!0):ge(b))}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Ya}} +function fb(a,b,c,d){if(m)return N(8,1,a,b,c,d);ed=d;try{b=U(b);b=qe(a,b);var e=d?fd():0;return Oa(b,c,e).ub}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Ya}}function gb(a,b){if(m)return N(9,1,a,b);try{return a=U(a),re(b,ge(a))}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return-c.Ya}}var hb=()=>Ra(""),se={},te=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}};function ue(a){return this.Za((t(),H)[a>>2])} +var ve={},we={},xe={},ye=class extends Error{constructor(a){super(a);this.name="InternalError"}},ze=(a,b,c)=>{function d(k){k=c(k);if(k.length!==a.length)throw new ye("Mismatched type converter count");for(var l=0;lxe[k]=b);var e=Array(b.length),f=[],g=0;b.forEach((k,l)=>{we.hasOwnProperty(k)?e[l]=we[k]:(f.push(k),ve.hasOwnProperty(k)||(ve[k]=[]),ve[k].push(()=>{e[l]=we[k];++g;g===f.length&&d(e)}))});0===f.length&&d(e)},ib=a=>{var b=se[a];delete se[a];var c= +b.ac,d=b.mb,e=b.lc,f=e.map(g=>g.Ec).concat(e.map(g=>g.Zc));ze([a],f,g=>{var k={};e.forEach((l,n)=>{var q=g[n],p=l.zb,u=l.Dc,z=g[n+e.length],v=l.Yc,w=l.$c;k[l.Ac]={read:x=>q.Za(p(u,x)),write:(x,F)=>{var G=[];v(w,x,z.bb(G,F));te(G)},optional:g[n].optional}});return[{name:b.name,Za:l=>{var n={},q;for(q in k)n[q]=k[q].read(l);d(l);return n},bb:(l,n)=>{for(var q in k)if(!(q in n||k[q].optional))throw new TypeError(`Missing field: "${q}"`);var p=c();for(q in k)k[q].write(p,n[q]);null!==l&&l.push(d,p);return p}, +nb:ue,hb:d}]})},W=a=>{for(var b="";;){var c=(t(),B)[a++];if(!c)return b;b+=String.fromCharCode(c)}},X=class extends Error{constructor(a){super(a);this.name="BindingError"}};function Ae(a,b,c={}){var d=b.name;if(!a)throw new X(`type "${d}" must have a positive integer typeid pointer`);if(we.hasOwnProperty(a)){if(c.Ic)return;throw new X(`Cannot register type '${d}' twice`);}we[a]=b;delete xe[a];ve.hasOwnProperty(a)&&(b=ve[a],delete ve[a],b.forEach(e=>e()))}function V(a,b,c={}){return Ae(a,b,c)} +var Be=(a,b,c)=>{switch(b){case 1:return c?d=>(t(),A)[d]:d=>(t(),B)[d];case 2:return c?d=>(t(),C)[d>>1]:d=>(t(),Fa)[d>>1];case 4:return c?d=>(t(),E)[d>>2]:d=>(t(),H)[d>>2];case 8:return c?d=>(t(),K)[d>>3]:d=>(t(),Ia)[d>>3];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},jb=(a,b,c,d,e)=>{b=W(b);d=0n===d;let f=g=>g;if(d){const g=8*c;f=k=>BigInt.asUintN(g,k);e=f(e)}V(a,{name:b,Za:f,bb:(g,k)=>{"number"==typeof k&&(k=BigInt(k));return k},nb:Be(b,c,!d),hb:null})},kb=(a,b,c,d)=>{b=W(b); +V(a,{name:b,Za:function(e){return!!e},bb:function(e,f){return f?c:d},nb:function(e){return this.Za((t(),B)[e])},hb:null})},Ce=a=>{throw new X(a.Pa.Wa.Va.name+" instance already deleted");},De=!1,Ee=()=>{},Fe=a=>{if(!globalThis.FinalizationRegistry)return Fe=b=>b,a;De=new FinalizationRegistry(b=>{b=b.Pa;--b.count.value;0===b.count.value&&(b.ab?b.gb.mb(b.ab):b.Wa.Va.mb(b.Ta))});Fe=b=>{var c=b.Pa;c.ab&&De.register(b,{Pa:c},b);return b};Ee=b=>{De.unregister(b)};return Fe(a)},Ge=[];function He(){} +var Ie=(a,b)=>Object.defineProperty(b,"name",{value:a}),Je={},Ke=(a,b,c)=>{if(void 0===a[b].$a){var d=a[b];a[b]=function(...e){if(!a[b].$a.hasOwnProperty(e.length))throw new X(`Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].$a})!`);return a[b].$a[e.length].apply(this,e)};a[b].$a=[];a[b].$a[d.xb]=d}},Le=(a,b,c)=>{if(h.hasOwnProperty(a)){if(void 0===c||void 0!==h[a].$a&&void 0!==h[a].$a[c])throw new X(`Cannot register public name '${a}' twice`);Ke(h, +a,a);if(h[a].$a.hasOwnProperty(c))throw new X(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);h[a].$a[c]=b}else h[a]=b,h[a].xb=c},Me=a=>{a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a};function Ne(a,b,c,d,e,f,g,k){this.name=a;this.constructor=b;this.vb=c;this.mb=d;this.cb=e;this.Bc=f;this.Gb=g;this.zc=k;this.Vc=[]} +var Oe=(a,b,c)=>{for(;b!==c;){if(!b.Gb)throw new X(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.Gb(a);b=b.cb}return a},Pe=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a}; +function Qe(a,b){if(null===b){if(this.Yb)throw new X(`null is not a valid ${this.name}`);return 0}if(!b.Pa)throw new X(`Cannot pass "${Pe(b)}" as a ${this.name}`);if(!b.Pa.Ta)throw new X(`Cannot pass deleted object as a pointer of type ${this.name}`);return Oe(b.Pa.Ta,b.Pa.Wa.Va,this.Va)} +function Re(a,b){if(null===b){if(this.Yb)throw new X(`null is not a valid ${this.name}`);if(this.Lb){var c=this.ac();null!==a&&a.push(this.mb,c);return c}return 0}if(!b||!b.Pa)throw new X(`Cannot pass "${Pe(b)}" as a ${this.name}`);if(!b.Pa.Ta)throw new X(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.Kb&&b.Pa.Wa.Kb)throw new X(`Cannot convert argument of type ${b.Pa.gb?b.Pa.gb.name:b.Pa.Wa.name} to parameter type ${this.name}`);c=Oe(b.Pa.Ta,b.Pa.Wa.Va,this.Va);if(this.Lb){if(void 0=== +b.Pa.ab)throw new X("Passing raw pointer to smart pointer is illegal");switch(this.ad){case 0:if(b.Pa.gb===this)c=b.Pa.ab;else throw new X(`Cannot convert argument of type ${b.Pa.gb?b.Pa.gb.name:b.Pa.Wa.name} to parameter type ${this.name}`);break;case 1:c=b.Pa.ab;break;case 2:if(b.Pa.gb===this)c=b.Pa.ab;else{var d=b.clone();c=this.Wc(c,Se(()=>d["delete"]()));null!==a&&a.push(this.mb,c)}break;default:throw new X("Unsupporting sharing policy");}}return c} +function Te(a,b){if(null===b){if(this.Yb)throw new X(`null is not a valid ${this.name}`);return 0}if(!b.Pa)throw new X(`Cannot pass "${Pe(b)}" as a ${this.name}`);if(!b.Pa.Ta)throw new X(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.Pa.Wa.Kb)throw new X(`Cannot convert argument of type ${b.Pa.Wa.name} to parameter type ${this.name}`);return Oe(b.Pa.Ta,b.Pa.Wa.Va,this.Va)} +var Ue=(a,b,c)=>{if(b===c)return a;if(void 0===c.cb)return null;a=Ue(a,b,c.cb);return null===a?null:c.zc(a)},Ve={},We=(a,b)=>{if(void 0===b)throw new X("ptr should not be undefined");for(;a.cb;)b=a.Gb(b),a=a.cb;return Ve[b]},Xe=(a,b)=>{if(!b.Wa||!b.Ta)throw new ye("makeClassHandle requires ptr and ptrType");if(!!b.gb!==!!b.ab)throw new ye("Both smartPtrType and smartPtr must be specified");b.count={value:1};return Fe(Object.create(a,{Pa:{value:b,writable:!0}}))}; +function Ye(a,b,c,d,e,f,g,k,l,n,q){this.name=a;this.Va=b;this.Yb=c;this.Kb=d;this.Lb=e;this.Uc=f;this.ad=g;this.qc=k;this.ac=l;this.Wc=n;this.mb=q;e||void 0!==b.cb?this.bb=Re:(this.bb=d?Qe:Te,this.hb=null)}var Ze=(a,b,c)=>{if(!h.hasOwnProperty(a))throw new ye("Replacing nonexistent public symbol");void 0!==h[a].$a&&void 0!==c?h[a].$a[c]=b:(h[a]=b,h[a].xb=c)},$e=(a,b)=>{a=W(a);var c=O(b);if("function"!=typeof c)throw new X(`unknown function pointer with signature ${a}: ${b}`);return c}; +class af extends Error{} +var bf=a=>{a=sc(a);var b=W(a);vc(a);return b},cf=(a,b)=>{function c(f){e[f]||we[f]||(xe[f]?xe[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new af(`${a}: `+d.map(bf).join([", "]));},lb=(a,b,c,d,e,f,g,k,l,n,q,p,u)=>{q=W(q);f=$e(e,f);k&&=$e(g,k);n&&=$e(l,n);u=$e(p,u);var z=Me(q);Le(z,function(){cf(`Cannot construct ${q} due to unbound types`,[d])});ze([a,b,c],d?[d]:[],v=>{v=v[0];if(d){var w=v.Va;var x=w.vb}else x=He.prototype;v=Ie(q,function(...y){if(Object.getPrototypeOf(this)!==F)throw new X(`Use 'new' to construct ${q}`); +if(void 0===G.jc)throw new X(`${q} has no accessible constructor`);var J=G.jc[y.length];if(void 0===J)throw new X(`Tried to invoke ctor of ${q} with invalid number of parameters (${y.length}) - expected (${Object.keys(G.jc).toString()}) parameters instead!`);return J.apply(this,y)});var F=Object.create(x,{constructor:{value:v}});v.prototype=F;var G=new Ne(q,v,F,u,w,f,k,n);if(G.cb){var M;(M=G.cb).cc??(M.cc=[]);G.cb.cc.push(G)}w=new Ye(q,G,!0,!1,!1);M=new Ye(q+"*",G,!1,!1,!1);x=new Ye(q+" const*",G, +!1,!0,!1);Je[a]={pointerType:M,xc:x};Ze(z,v);return[w,M,x]})};function df(a){for(var b=1;bf)throw new X("argTypes array size mismatch! Must at least get return value and 'this' types!");var g=null!==b[1]&&null!==c,k=df(b),l=!b[0].Qc,n=f-2,q=Array(n),p=[],u=[];return Ie(a,function(...z){u.length=0;p.length=g?2:1;p[0]=e;if(g){var v=b[1].bb(u,this);p[1]=v}for(var w=0;w{for(var c=[],d=0;d>2]);return c},gf=a=>{a=a.trim();const b=a.indexOf("(");return-1===b?a:a.slice(0,b)},mb=(a,b,c,d,e,f,g,k)=>{var l=ff(c,d);b=W(b);b=gf(b);f=$e(e,f);ze([],[a],n=>{function q(){cf(`Cannot call ${p} due to unbound types`,l)}n=n[0];var p=`${n.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);k&&n.Va.Vc.push(b);var u=n.Va.vb,z=u[b];void 0===z||void 0===z.$a&&z.className!==n.name&&z.xb===c-2?(q.xb=c-2,q.className=n.name,u[b]=q):(Ke(u, +b,p),u[b].$a[c-2]=q);ze([],l,v=>{v=ef(p,v,n,f,g);void 0===u[b].$a?(v.xb=c-2,u[b]=v):u[b].$a[c-2]=v;return[]});return[]})},hf=[],jf=[0,1,,1,null,1,!0,1,!1,1],Gb=a=>{9{if(!a)throw new X(`Cannot use deleted val. handle = ${a}`);return jf[a]},Se=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=hf.pop()||jf.length;jf[b]=a;jf[b+1]=1;return b}},lf={name:"emscripten::val",Za:a=>{var b=kf(a);Gb(a);return b}, +bb:(a,b)=>Se(b),nb:ue,hb:null},nb=a=>V(a,lf),mf=(a,b)=>{switch(b){case 4:return function(c){return this.Za((t(),Ga)[c>>2])};case 8:return function(c){return this.Za((t(),Ha)[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},ob=(a,b,c)=>{b=W(b);V(a,{name:b,Za:d=>d,bb:(d,e)=>e,nb:mf(b,c),hb:null})},pb=(a,b,c,d,e,f)=>{var g=ff(b,c);a=W(a);a=gf(a);e=$e(d,e);Le(a,function(){cf(`Cannot call ${a} due to unbound types`,g)},b-1);ze([],g,k=>{Ze(a,ef(a,[k[0],null].concat(k.slice(1)), +null,e,f),b-1);return[]})},qb=(a,b,c,d,e)=>{b=W(b);let f=k=>k;if(0===d){var g=32-8*c;f=k=>k<>>g;e=f(e)}V(a,{name:b,Za:f,bb:(k,l)=>l,nb:Be(b,c,0!==d),hb:null})},rb=(a,b,c)=>{function d(f){var g=(t(),H)[f>>2];f=(t(),H)[f+4>>2];return new e((t(),A).buffer,f,g)}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][b];c=W(c);V(a,{name:c,Za:d,nb:d},{Ic:!0})},nf=Object.assign({optional:!0},lf),sb=a=>{V(a,nf)},Y=(a,b,c)=>sd(a, +(t(),B),b,c),tb=(a,b)=>{b=W(b);V(a,{name:b,Za(c){var d=(t(),H)[c>>2];d=U(c+4,d,!0);vc(c);return d},bb(c,d){d instanceof ArrayBuffer&&(d=new Uint8Array(d));var e="string"==typeof d;if(!(e||ArrayBuffer.isView(d)&&1==d.BYTES_PER_ELEMENT))throw new X("Cannot pass non-string to std::string");var f=e?rd(d):d.length;var g=uc(4+f+1),k=g+4;(t(),H)[g>>2]=f;e?Y(d,k,f+1):(t(),B).set(d,k);null!==c&&c.push(vc,g);return g},nb:ue,hb(c){vc(c)}})},of=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,pf=(a, +b,c)=>{a>>=1;b=od((t(),Fa),a,b/2,c);if(16{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>1]=f;b+=2}(t(),C)[b>>1]=0;return b-d},rf=a=>2*a.length,sf=(a,b,c)=>{var d="";a>>=2;for(var e=0;!(e>=b/4);e++){var f=(t(),H)[a+e];if(!f&&!c)break; +d+=String.fromCodePoint(f)}return d},tf=(a,b,c)=>{c??=2147483647;if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e>2]=f;b+=4;if(b+4>c)break}(t(),E)[b>>2]=0;return b-d},uf=a=>{for(var b=0,c=0;c{c=W(c);if(2===b){var d=pf;var e=qf;var f=rf}else d=sf,e=tf,f=uf;V(a,{name:c,Za:g=>{var k=(t(),H)[g>>2];k=d(g+4,k*b,!0);vc(g);return k},bb:(g,k)=>{if("string"!=typeof k)throw new X(`Cannot pass non-string to C++ string type ${c}`); +var l=f(k),n=uc(4+l+b);(t(),H)[n>>2]=l/b;e(k,n+4,l+b);null!==g&&g.push(vc,n);return n},nb:ue,hb(g){vc(g)}})},vb=(a,b,c,d,e,f)=>{se[a]={name:W(b),ac:$e(c,d),mb:$e(e,f),lc:[]}},wb=(a,b,c,d,e,f,g,k,l,n)=>{se[a].lc.push({Ac:W(b),Ec:c,zb:$e(d,e),Dc:f,Zc:g,Yc:$e(k,l),$c:n})},xb=(a,b)=>{b=W(b);V(a,{Qc:!0,name:b,Za:()=>{},bb:()=>{}})},yb=a=>{xa(a,!ba,1,!aa,5242880,!1);ya()},vf=a=>{if(!(a instanceof Ic||"unwind"==a))throw a;},ad=a=>{if(!ma)try{if(a(),!(Wc||0{Atomics.waitAsync&&(Atomics.waitAsync((t(),E),a>>2,a).value.then(Da),a+=128,Atomics.store((t(),E),a>>2,1))},Da=()=>ad(()=>{var a=tc();a&&(za(a),Bc())}),zb=(a,b)=>{a==b?setTimeout(Da):m?postMessage({Rb:a,pb:"checkMailbox"}):(a=Uc[a])&&a.postMessage({pb:"checkMailbox"})},wf=[],Ab=(a,b,c,d,e)=>{d/=2;wf.length=d;c=e>>3;for(e=0;e{Wc=!1;L=0},Cb=a=>{m?postMessage({pb:"cleanupThread",dd:a}):$c(Uc[a])}, +Db=()=>{},Eb=()=>{throw Infinity;},zf=[],Af=a=>{var b=zf.length;zf.push(a);return b},Bf=(a,b)=>{for(var c=Array(a),d=0;d>2],g=we[f];if(void 0===g)throw a=`${`parameter ${d}`} has unknown type ${bf(f)}`,new X(a);c[e]=g}return c},Cf={},Df=a=>{var b=Cf[a];return void 0===b?W(a):b},Fb=(a,b,c)=>{var [d,...e]=Bf(a,b),f=d.bb.bind(d),g=e.map(l=>l.nb.bind(l));a--;var k=Array(a);b=`methodCaller<(${e.map(l=>l.name)}) => ${d.name}>`;return Af(Ie(b,(l,n,q,p)=>{for(var u=0,z=0;z< +a;++z)k[z]=g[z](p+u),u+=8;switch(c){case 0:var v=kf(l).apply(null,k);break;case 2:v=Reflect.construct(kf(l),k);break;case 3:v=k[0];break;case 1:v=kf(l)[Df(n)](...k)}l=[];v=f(l,v);l.length&&((t(),H)[q>>2]=Se(l));return v}))},Hb=a=>{if(!a)return Se(globalThis);a=Df(a);return Se(globalThis[a])},Ib=(a,b)=>{a=kf(a);b=kf(b);return Se(a[b])},Jb=a=>{9zf[a](b,c,d,e),Lb=()=>Se([]),Mb=a=>Se(Df(a)),Nb=a=>{var b=kf(a);te(b);Gb(a)},Ef=a=>0===a%4&&(0!==a%100||0===a%400),Ff=[0,31, +60,91,121,152,182,213,244,274,305,335],Gf=[0,31,59,90,120,151,181,212,243,273,304,334]; +function Ob(a,b){a=-9007199254740992>a||9007199254740992>2]=a.getSeconds();(t(),E)[b+4>>2]=a.getMinutes();(t(),E)[b+8>>2]=a.getHours();(t(),E)[b+12>>2]=a.getDate();(t(),E)[b+16>>2]=a.getMonth();(t(),E)[b+20>>2]=a.getFullYear()-1900;(t(),E)[b+24>>2]=a.getDay();var c=(Ef(a.getFullYear())?Ff:Gf)[a.getMonth()]+a.getDate()-1|0;(t(),E)[b+28>>2]=c;(t(),E)[b+36>>2]=-(60*a.getTimezoneOffset());c=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();var d=(new Date(a.getFullYear(), 0,1)).getTimezoneOffset();a=(c!=d&&a.getTimezoneOffset()==Math.min(d,c))|0;(t(),E)[b+32>>2]=a} -function Pb(a){var b=new Date((t(),E)[a+20>>2]+1900,(t(),E)[a+16>>2],(t(),E)[a+12>>2],(t(),E)[a+8>>2],(t(),E)[a+4>>2],(t(),E)[a>>2],0),c=(t(),E)[a+32>>2],d=b.getTimezoneOffset(),e=(new Date(b.getFullYear(),6,1)).getTimezoneOffset(),f=(new Date(b.getFullYear(),0,1)).getTimezoneOffset(),g=Math.min(f,e);0>c?(t(),E)[a+32>>2]=Number(e!=f&&g==d):0>2]=b.getDay();c=(Ff(b.getFullYear())?Gf:Hf)[b.getMonth()]+b.getDate()-1|0; +function Pb(a){var b=new Date((t(),E)[a+20>>2]+1900,(t(),E)[a+16>>2],(t(),E)[a+12>>2],(t(),E)[a+8>>2],(t(),E)[a+4>>2],(t(),E)[a>>2],0),c=(t(),E)[a+32>>2],d=b.getTimezoneOffset(),e=(new Date(b.getFullYear(),6,1)).getTimezoneOffset(),f=(new Date(b.getFullYear(),0,1)).getTimezoneOffset(),g=Math.min(f,e);0>c?(t(),E)[a+32>>2]=Number(e!=f&&g==d):0>2]=b.getDay();c=(Ef(b.getFullYear())?Ff:Gf)[b.getMonth()]+b.getDate()-1|0; (t(),E)[a+28>>2]=c;(t(),E)[a>>2]=b.getSeconds();(t(),E)[a+4>>2]=b.getMinutes();(t(),E)[a+8>>2]=b.getHours();(t(),E)[a+12>>2]=b.getDate();(t(),E)[a+16>>2]=b.getMonth();(t(),E)[a+20>>2]=b.getYear();a=b.getTime();return BigInt(isNaN(a)?-1:a/1E3)} -function Qb(a,b,c,d,e,f,g){if(m)return N(10,1,a,b,c,d,e,f,g);e=-9007199254740992>e||9007199254740992>2]=l.tb;(t(),H)[g>>2]=n;return 0}catch(q){if("undefined"==typeof T||"ErrnoError"!==q.name)throw q;return-q.Za}} -function Rb(a,b,c,d,e,f){if(m)return N(11,1,a,b,c,d,e,f);f=-9007199254740992>f||9007199254740992performance.timeOrigin+performance.now(); -function Sb(a,b){if(m)return N(12,1,a,b);If[a]&&(clearTimeout(If[a].id),delete If[a]);if(!b)return 0;var c=setTimeout(()=>{delete If[a];bd(()=>Bc(a,performance.timeOrigin+performance.now()))},b);If[a]={id:c,ud:b};return 0} -var Tb=(a,b,c,d)=>{var e=(new Date).getFullYear(),f=(new Date(e,0,1)).getTimezoneOffset();e=(new Date(e,6,1)).getTimezoneOffset();var g=Math.max(f,e);(t(),H)[a>>2]=60*g;(t(),E)[b>>2]=Number(f!=e);b=k=>{var l=Math.abs(k);return`UTC${0<=k?"-":"+"}${String(Math.floor(l/60)).padStart(2,"0")}${String(l%60).padStart(2,"0")}`};a=b(f);b=b(e);e=a))return 28;if(0===a)a=Date.now();else if(Jf)a=performance.timeOrigin+performance.now();else return 52;a=Math.round(1E6*a);(t(),K)[c>>3]=BigInt(a);return 0}var Kf=[],Wb=(a,b,c)=>{Kf.length=0;for(var d;d=(t(),B)[b++];){var e=105!=d;e&=112!=d;c+=e&&c%8?4:0;Kf.push(112==d?(t(),H)[c>>2]:106==d?(t(),K)[c>>3]:105==d?(t(),E)[c>>2]:(t(),Ha)[c>>3]);c+=e?8:4}return yf[a](...Kf)},Xb=()=>{},Yb=()=>{L+=1;throw"unwind";}; -function Zb(a){if(Lf.has(a)){var b=Lf.get(a),c=Lf;c.tb[a]=void 0;c.nc.push(a);0b.readyState&&b.abort()}}var bc=a=>{var b=(t(),B).length;a>>>=0;if(a<=b||2147483648=c;c*=2){a:{var d=(Math.min(2147483648,65536*Math.ceil(Math.max(a,b+2097152/c)/65536))-oa.buffer.byteLength+65535)/65536|0;try{oa.grow(d);pa();var e=1;break a}catch(f){}e=void 0}if(e)return!0}return!1};function Mf(a){var b=Lf,c=b.nc.pop()||b.tb.length;b.tb[c]=a;return c} -class Nf{tb=[void 0];nc=[];get(a){return this.tb[a]}has(a){return void 0!==this.tb[a]}}async function Of(){return new Promise((a,b)=>{try{var c=indexedDB.open("emscripten_filesystem",1)}catch(d){return b(d)}c.onupgradeneeded=d=>{d=d.target.result;d.objectStoreNames.contains("FILES")&&d.deleteObjectStore("FILES");d.createObjectStore("FILES")};c.onsuccess=d=>a(d.target.result);c.onerror=b})}var Lf,Pf; -function Qf(a,b,c,d,e){function f(){var I=0,D=0;y.response&&F&&0===(t(),H)[a+12>>2]&&(D=y.response.byteLength);0>2]=I;Z(a+16,D);Z(a+24,0);(I=y.response?y.response.byteLength:0)&&Z(a+32,I);(t(),C)[a+40>>1]=y.readyState;(t(),C)[a+42>>1]=y.status;y.statusText&&Y(y.statusText,a+44,64);M&&(I=Rf(y.responseURL),(t(),H)[a+200>>2]=I)}var g=(t(),H)[a+8>>2];if(g){var k=U(g),l=a+108,n=U(l+0);n||="GET";var q=(t(),H)[l+56>>2],p=(t(),H)[l+68>> -2],u=(t(),H)[l+72>>2];g=(t(),H)[l+76>>2];var z=(t(),H)[l+80>>2],v=(t(),H)[l+84>>2],w=(t(),H)[l+88>>2],x=(t(),H)[l+52>>2],F=!!(x&1),G=!!(x&2),M=!!(x&64);p=p?U(p):void 0;u=u?U(u):void 0;var y=new XMLHttpRequest;y.withCredentials=!!(t(),B)[l+60];y.open(n,k,!M,p,u);M||(y.timeout=q);y.vd=k;y.responseType="arraybuffer";z&&(k=U(z),y.overrideMimeType(k));if(g)for(;;){l=(t(),H)[g>>2];if(!l)break;k=(t(),H)[g+4>>2];if(!k)break;g+=8;l=U(l);k=U(k);y.setRequestHeader(l,k)}var J=Mf(y);(t(),H)[a>>2]=J;g=v&&w?(t(), -B).slice(v,v+w):null;y.onload=I=>{Lf.has(J)&&(f(),200<=y.status&&300>y.status?b(a,y,I):c(a,I))};y.onerror=I=>{Lf.has(J)&&(f(),c(a,I))};y.ontimeout=I=>{Lf.has(J)&&c(a,I)};y.onprogress=I=>{if(Lf.has(J)){var D=F&&G&&y.response?y.response.byteLength:0,Da=0;0>2]=Da;Z(a+16,D);Z(a+24,I.loaded-D);Z(a+32,I.total);(t(),C)[a+40>>1]=y.readyState;D=y.status;3<=y.readyState&&0===y.status&&0>1]=D;y.statusText&& -Y(y.statusText,a+44,64);d(a,I);wc(Da)}};y.onreadystatechange=I=>{if(Lf.has(J)){(t(),C)[a+40>>1]=y.readyState;2<=y.readyState&&((t(),C)[a+42>>1]=y.status);if(!M&&2===y.readyState&&0>2]=D}e(a,I)}else--L};try{y.send(g)}catch(I){c(a,I)}}else c(a,"no url specified!")}var Z=(a,b)=>{(t(),H)[a>>2]=b;var c=(t(),H)[a>>2];(t(),H)[a+4>>2]=(b-c)/4294967296},Rf=a=>{var b=sd(a)+1,c=vc(b);c&&Y(a,c,b);return c}; -function Sf(a,b,c,d){var e=Pf;if(e){var f=a+108;(f=(t(),H)[f+64>>2])||(f=(t(),H)[a+8>>2]);var g=U(f);try{var k=e.transaction(["FILES"],"readwrite").objectStore("FILES").put(b,g);k.onsuccess=()=>{(t(),C)[a+40>>1]=4;(t(),C)[a+42>>1]=200;Y("OK",a+44,64);c(a,0,g)};k.onerror=l=>{(t(),C)[a+40>>1]=4;(t(),C)[a+42>>1]=413;Y("Payload Too Large",a+44,64);d(a,0,l)}}catch(l){d(a,0,l)}}else d(a,0,"IndexedDB not available!")} -function Tf(a,b,c){var d=Pf;if(d){var e=a+108;(e=(t(),H)[e+64>>2])||(e=(t(),H)[a+8>>2]);e=U(e);try{var f=d.transaction(["FILES"],"readonly").objectStore("FILES").get(e);f.onsuccess=g=>{if(g.target.result){g=g.target.result;var k=g.byteLength||g.length,l=vc(k);(t(),B).set(new Uint8Array(g),l);(t(),H)[a+12>>2]=l;Z(a+16,k);Z(a+24,0);Z(a+32,k);(t(),C)[a+40>>1]=4;(t(),C)[a+42>>1]=200;Y("OK",a+44,64);b(a,0,g)}else(t(),C)[a+40>>1]=4,(t(),C)[a+42>>1]=404,Y("Not Found",a+44,64),c(a,0,"no data")};f.onerror= +function Qb(a,b,c,d,e,f,g){if(m)return N(10,1,a,b,c,d,e,f,g);e=-9007199254740992>e||9007199254740992>2]=l.sb;(t(),H)[g>>2]=n;return 0}catch(q){if("undefined"==typeof T||"ErrnoError"!==q.name)throw q;return-q.Ya}} +function Rb(a,b,c,d,e,f){if(m)return N(11,1,a,b,c,d,e,f);f=-9007199254740992>f||9007199254740992performance.timeOrigin+performance.now(); +function Sb(a,b){if(m)return N(12,1,a,b);Hf[a]&&(clearTimeout(Hf[a].id),delete Hf[a]);if(!b)return 0;var c=setTimeout(()=>{delete Hf[a];ad(()=>Ac(a,performance.timeOrigin+performance.now()))},b);Hf[a]={id:c,td:b};return 0} +var Tb=(a,b,c,d)=>{var e=(new Date).getFullYear(),f=(new Date(e,0,1)).getTimezoneOffset();e=(new Date(e,6,1)).getTimezoneOffset();var g=Math.max(f,e);(t(),H)[a>>2]=60*g;(t(),E)[b>>2]=Number(f!=e);b=k=>{var l=Math.abs(k);return`UTC${0<=k?"-":"+"}${String(Math.floor(l/60)).padStart(2,"0")}${String(l%60).padStart(2,"0")}`};a=b(f);b=b(e);e=a))return 28;if(0===a)a=Date.now();else if(If)a=performance.timeOrigin+performance.now();else return 52;a=Math.round(1E6*a);(t(),K)[c>>3]=BigInt(a);return 0}var Jf=[],Wb=(a,b,c)=>{Jf.length=0;for(var d;d=(t(),B)[b++];){var e=105!=d;e&=112!=d;c+=e&&c%8?4:0;Jf.push(112==d?(t(),H)[c>>2]:106==d?(t(),K)[c>>3]:105==d?(t(),E)[c>>2]:(t(),Ha)[c>>3]);c+=e?8:4}return xf[a](...Jf)},Xb=()=>{},Yb=()=>{L+=1;throw"unwind";}; +function Zb(a){if(Kf.has(a)){var b=Kf.get(a),c=Kf;c.sb[a]=void 0;c.mc.push(a);0b.readyState&&b.abort()}}var bc=a=>{var b=(t(),B).length;a>>>=0;if(a<=b||2147483648=c;c*=2){a:{var d=(Math.min(2147483648,65536*Math.ceil(Math.max(a,b+2097152/c)/65536))-oa.buffer.byteLength+65535)/65536|0;try{oa.grow(d);pa();var e=1;break a}catch(f){}e=void 0}if(e)return!0}return!1};function Lf(a){var b=Kf,c=b.mc.pop()||b.sb.length;b.sb[c]=a;return c} +class Mf{sb=[void 0];mc=[];get(a){return this.sb[a]}has(a){return void 0!==this.sb[a]}}async function Nf(){return new Promise((a,b)=>{try{var c=indexedDB.open("emscripten_filesystem",1)}catch(d){return b(d)}c.onupgradeneeded=d=>{d=d.target.result;d.objectStoreNames.contains("FILES")&&d.deleteObjectStore("FILES");d.createObjectStore("FILES")};c.onsuccess=d=>a(d.target.result);c.onerror=b})}var Kf,Of; +function Pf(a,b,c,d,e){function f(){var I=0,D=0;y.response&&F&&0===(t(),H)[a+12>>2]&&(D=y.response.byteLength);0>2]=I;Z(a+16,D);Z(a+24,0);(I=y.response?y.response.byteLength:0)&&Z(a+32,I);(t(),C)[a+40>>1]=y.readyState;(t(),C)[a+42>>1]=y.status;y.statusText&&Y(y.statusText,a+44,64);M&&(I=Qf(y.responseURL),(t(),H)[a+200>>2]=I)}var g=(t(),H)[a+8>>2];if(g){var k=U(g),l=a+108,n=U(l+0);n||="GET";var q=(t(),H)[l+56>>2],p=(t(),H)[l+68>> +2],u=(t(),H)[l+72>>2];g=(t(),H)[l+76>>2];var z=(t(),H)[l+80>>2],v=(t(),H)[l+84>>2],w=(t(),H)[l+88>>2],x=(t(),H)[l+52>>2],F=!!(x&1),G=!!(x&2),M=!!(x&64);p=p?U(p):void 0;u=u?U(u):void 0;var y=new XMLHttpRequest;y.withCredentials=!!(t(),B)[l+60];y.open(n,k,!M,p,u);M||(y.timeout=q);y.ud=k;y.responseType="arraybuffer";z&&(k=U(z),y.overrideMimeType(k));if(g)for(;;){l=(t(),H)[g>>2];if(!l)break;k=(t(),H)[g+4>>2];if(!k)break;g+=8;l=U(l);k=U(k);y.setRequestHeader(l,k)}var J=Lf(y);(t(),H)[a>>2]=J;g=v&&w?(t(), +B).slice(v,v+w):null;y.onload=I=>{Kf.has(J)&&(f(),200<=y.status&&300>y.status?b(a,y,I):c(a,I))};y.onerror=I=>{Kf.has(J)&&(f(),c(a,I))};y.ontimeout=I=>{Kf.has(J)&&c(a,I)};y.onprogress=I=>{if(Kf.has(J)){var D=F&&G&&y.response?y.response.byteLength:0,Ca=0;0>2]=Ca;Z(a+16,D);Z(a+24,I.loaded-D);Z(a+32,I.total);(t(),C)[a+40>>1]=y.readyState;D=y.status;3<=y.readyState&&0===y.status&&0>1]=D;y.statusText&& +Y(y.statusText,a+44,64);d(a,I);vc(Ca)}};y.onreadystatechange=I=>{if(Kf.has(J)){(t(),C)[a+40>>1]=y.readyState;2<=y.readyState&&((t(),C)[a+42>>1]=y.status);if(!M&&2===y.readyState&&0>2]=D}e(a,I)}else--L};try{y.send(g)}catch(I){c(a,I)}}else c(a,"no url specified!")}var Z=(a,b)=>{(t(),H)[a>>2]=b;var c=(t(),H)[a>>2];(t(),H)[a+4>>2]=(b-c)/4294967296},Qf=a=>{var b=rd(a)+1,c=uc(b);c&&Y(a,c,b);return c}; +function Rf(a,b,c,d){var e=Of;if(e){var f=a+108;(f=(t(),H)[f+64>>2])||(f=(t(),H)[a+8>>2]);var g=U(f);try{var k=e.transaction(["FILES"],"readwrite").objectStore("FILES").put(b,g);k.onsuccess=()=>{(t(),C)[a+40>>1]=4;(t(),C)[a+42>>1]=200;Y("OK",a+44,64);c(a,0,g)};k.onerror=l=>{(t(),C)[a+40>>1]=4;(t(),C)[a+42>>1]=413;Y("Payload Too Large",a+44,64);d(a,0,l)}}catch(l){d(a,0,l)}}else d(a,0,"IndexedDB not available!")} +function Sf(a,b,c){var d=Of;if(d){var e=a+108;(e=(t(),H)[e+64>>2])||(e=(t(),H)[a+8>>2]);e=U(e);try{var f=d.transaction(["FILES"],"readonly").objectStore("FILES").get(e);f.onsuccess=g=>{if(g.target.result){g=g.target.result;var k=g.byteLength||g.length,l=uc(k);(t(),B).set(new Uint8Array(g),l);(t(),H)[a+12>>2]=l;Z(a+16,k);Z(a+24,0);Z(a+32,k);(t(),C)[a+40>>1]=4;(t(),C)[a+42>>1]=200;Y("OK",a+44,64);b(a,0,g)}else(t(),C)[a+40>>1]=4,(t(),C)[a+42>>1]=404,Y("Not Found",a+44,64),c(a,0,"no data")};f.onerror= g=>{(t(),C)[a+40>>1]=4;(t(),C)[a+42>>1]=404;Y("Not Found",a+44,64);c(a,0,g)}}catch(g){c(a,0,g)}}else c(a,0,"IndexedDB not available!")} -function Uf(a,b,c){var d=Pf;if(d){var e=a+108;(e=(t(),H)[e+64>>2])||(e=(t(),H)[a+8>>2]);e=U(e);try{var f=d.transaction(["FILES"],"readwrite").objectStore("FILES").delete(e);f.onsuccess=g=>{g=g.target.result;(t(),H)[a+12>>2]=0;Z(a+16,0);Z(a+24,0);Z(a+32,0);(t(),C)[a+40>>1]=4;(t(),C)[a+42>>1]=200;Y("OK",a+44,64);b(a,0,g)};f.onerror=g=>{(t(),C)[a+40>>1]=4;(t(),C)[a+42>>1]=404;Y("Not Found",a+44,64);c(a,0,g)}}catch(g){c(a,0,g)}}else c(a,0,"IndexedDB not available!")} -function cc(a,b,c,d,e){function f(D){u?D():bd(D)}L+=1;var g=a+108,k=(t(),H)[g+36>>2],l=(t(),H)[g+40>>2],n=(t(),H)[g+44>>2],q=(t(),H)[g+48>>2],p=(t(),H)[g+52>>2],u=!!(p&64),z=D=>{--L;f(()=>{k?O(k)(D):b?.(D)})},v=D=>{f(()=>{n?O(n)(D):d?.(D)})},w=D=>{--L;f(()=>{l?O(l)(D):c?.(D)})},x=D=>{f(()=>{q?O(q)(D):e?.(D)})},F=D=>{Qf(D,z,w,v,x)},G=(D,Da)=>{Sf(D,Da.response,Xa=>{--L;f(()=>{k?O(k)(Xa):b?.(Xa)})},Xa=>{--L;f(()=>{k?O(k)(Xa):b?.(Xa)})})},M=D=>{Qf(D,G,w,v,x)},y=U(g+0),J=!!(p&16),I=!!(p&4);p=!!(p&32); -if("EM_IDB_STORE"===y)F=(t(),H)[g+84>>2],g=(t(),H)[g+88>>2],Sf(a,(t(),B).slice(F,F+g),z,w);else if("EM_IDB_DELETE"===y)Uf(a,z,w);else if(J){if(p)return 0;Qf(a,I?G:z,w,v,x)}else Tf(a,z,p?w:I?M:F);return a} -var Vf={},Xf=()=>{if(!Wf){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.language||"C").replace("-","_")+".UTF-8",_:da||"./this.program"},b;for(b in Vf)void 0===Vf[b]?delete a[b]:a[b]=Vf[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);Wf=c}return Wf},Wf;function dc(a,b){if(m)return N(13,1,a,b);var c=0,d=0,e;for(e of Xf()){var f=b+c;(t(),H)[a+d>>2]=f;c+=Y(e,f,Infinity)+1;d+=4}return 0} -function ec(a,b){if(m)return N(14,1,a,b);var c=Xf();(t(),H)[a>>2]=c.length;a=0;for(var d of c)a+=sd(d)+1;(t(),H)[b>>2]=a;return 0}function gc(a){if(m)return N(15,1,a);try{var b=S(a);je(b);return 0}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return c.Za}} -function hc(a,b,c,d){if(m)return N(16,1,a,b,c,d);try{a:{var e=S(a);a=b;for(var f,g=b=0;g>2],l=(t(),H)[a+4>>2];a+=8;var n=e,q=(t(),A),p=k,u=l,z=f;if(0>u||0>z)throw new P(28);if(null===n.vb)throw new P(8);if(1===(n.flags&2097155))throw new P(8);if(R(n.node.mode))throw new P(31);if(!n.Ra.read)throw new P(28);var v="undefined"!=typeof z;if(!v)z=n.position;else if(!n.seekable)throw new P(70);var w=n.Ra.read(n,q,p,u,z);v||(n.position+=w);var x=w;if(0>x){var F=-1;break a}b+=x;if(x< -l)break;"undefined"!=typeof f&&(f+=x)}F=b}(t(),H)[d>>2]=F;return 0}catch(G){if("undefined"==typeof T||"ErrnoError"!==G.name)throw G;return G.Za}}function ic(a,b,c,d){if(m)return N(17,1,a,b,c,d);b=-9007199254740992>b||9007199254740992>3]=BigInt(e.position);e.Yb&&0===b&&0===c&&(e.Yb=null);return 0}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return f.Za}} -function jc(a,b,c,d){if(m)return N(18,1,a,b,c,d);try{a:{var e=S(a);a=b;for(var f,g=b=0;g>2],l=(t(),H)[a+4>>2];a+=8;var n=le(e,(t(),A),k,l,f);if(0>n){var q=-1;break a}b+=n;if(n>2]=q;return 0}catch(p){if("undefined"==typeof T||"ErrnoError"!==p.name)throw p;return p.Za}}function rc(a,b){try{return md((t(),B).subarray(a,a+b)),0}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return c.Za}}m||Zc();Od=Array(4096); -be(Q,"/");ee("/tmp");ee("/home");ee("/home/web_user");(function(){ee("/dev");xd(259,{read:()=>0,write:(d,e,f,g)=>g,kb:()=>0});fe("/dev/null",259);wd(1280,zd);wd(1536,Ad);fe("/dev/tty",1280);fe("/dev/tty1",1536);var a=new Uint8Array(1024),b=0,c=()=>{0===b&&(md(a),b=a.byteLength);return a[--b]};Ma("/dev","random",c);Ma("/dev","urandom",c);ee("/dev/shm");ee("/dev/shm/tmp")})(); -(function(){ee("/proc");var a=ee("/proc/self");ee("/proc/self/fd");be({rb(){var b=Dd(a,"fd",16895,73);b.Ra={kb:Q.Ra.kb};b.Ta={Bb(c,d){c=+d;var e=S(c);c={parent:null,rb:{qc:"fake"},Ta:{Gb:()=>e.path},id:c+1};return c.parent=c},cc(){return Array.from(Md.entries()).filter(([,c])=>c).map(([c])=>c.toString())}};return b}},"/proc/self/fd")})(); -(()=>{let a=Ie.prototype;Object.assign(a,{isAliasOf:function(c){if(!(this instanceof Ie&&c instanceof Ie))return!1;var d=this.Qa.Xa.Wa,e=this.Qa.Ua;c.Qa=c.Qa;var f=c.Qa.Xa.Wa;for(c=c.Qa.Ua;d.eb;)e=d.Hb(e),d=d.eb;for(;f.eb;)c=f.Hb(c),f=f.eb;return d===f&&e===c},clone:function(){this.Qa.Ua||De(this);if(this.Qa.Eb)return this.Qa.count.value+=1,this;var c=Ge,d=Object,e=d.create,f=Object.getPrototypeOf(this),g=this.Qa;c=c(e.call(d,f,{Qa:{value:{count:g.count,zb:g.zb,Eb:g.Eb,Ua:g.Ua,Xa:g.Xa,bb:g.bb,hb:g.hb}}})); -c.Qa.count.value+=1;c.Qa.zb=!1;return c},["delete"](){this.Qa.Ua||De(this);if(this.Qa.zb&&!this.Qa.Eb)throw new X("Object already scheduled for deletion");Fe(this);var c=this.Qa;--c.count.value;0===c.count.value&&(c.bb?c.hb.nb(c.bb):c.Xa.Wa.nb(c.Ua));this.Qa.Eb||(this.Qa.bb=void 0,this.Qa.Ua=void 0)},isDeleted:function(){return!this.Qa.Ua},deleteLater:function(){this.Qa.Ua||De(this);if(this.Qa.zb&&!this.Qa.Eb)throw new X("Object already scheduled for deletion");He.push(this);this.Qa.zb=!0;return this}}); +function Tf(a,b,c){var d=Of;if(d){var e=a+108;(e=(t(),H)[e+64>>2])||(e=(t(),H)[a+8>>2]);e=U(e);try{var f=d.transaction(["FILES"],"readwrite").objectStore("FILES").delete(e);f.onsuccess=g=>{g=g.target.result;(t(),H)[a+12>>2]=0;Z(a+16,0);Z(a+24,0);Z(a+32,0);(t(),C)[a+40>>1]=4;(t(),C)[a+42>>1]=200;Y("OK",a+44,64);b(a,0,g)};f.onerror=g=>{(t(),C)[a+40>>1]=4;(t(),C)[a+42>>1]=404;Y("Not Found",a+44,64);c(a,0,g)}}catch(g){c(a,0,g)}}else c(a,0,"IndexedDB not available!")} +function cc(a,b,c,d,e){function f(D){u?D():ad(D)}L+=1;var g=a+108,k=(t(),H)[g+36>>2],l=(t(),H)[g+40>>2],n=(t(),H)[g+44>>2],q=(t(),H)[g+48>>2],p=(t(),H)[g+52>>2],u=!!(p&64),z=D=>{--L;f(()=>{k?O(k)(D):b?.(D)})},v=D=>{f(()=>{n?O(n)(D):d?.(D)})},w=D=>{--L;f(()=>{l?O(l)(D):c?.(D)})},x=D=>{f(()=>{q?O(q)(D):e?.(D)})},F=D=>{Pf(D,z,w,v,x)},G=(D,Ca)=>{Rf(D,Ca.response,Xa=>{--L;f(()=>{k?O(k)(Xa):b?.(Xa)})},Xa=>{--L;f(()=>{k?O(k)(Xa):b?.(Xa)})})},M=D=>{Pf(D,G,w,v,x)},y=U(g+0),J=!!(p&16),I=!!(p&4);p=!!(p&32); +if("EM_IDB_STORE"===y)F=(t(),H)[g+84>>2],g=(t(),H)[g+88>>2],Rf(a,(t(),B).slice(F,F+g),z,w);else if("EM_IDB_DELETE"===y)Tf(a,z,w);else if(J){if(p)return 0;Pf(a,I?G:z,w,v,x)}else Sf(a,z,p?w:I?M:F);return a} +var Uf={},Wf=()=>{if(!Vf){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.language||"C").replace("-","_")+".UTF-8",_:da||"./this.program"},b;for(b in Uf)void 0===Uf[b]?delete a[b]:a[b]=Uf[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);Vf=c}return Vf},Vf;function dc(a,b){if(m)return N(13,1,a,b);var c=0,d=0,e;for(e of Wf()){var f=b+c;(t(),H)[a+d>>2]=f;c+=Y(e,f,Infinity)+1;d+=4}return 0} +function ec(a,b){if(m)return N(14,1,a,b);var c=Wf();(t(),H)[a>>2]=c.length;a=0;for(var d of c)a+=rd(d)+1;(t(),H)[b>>2]=a;return 0}function gc(a){if(m)return N(15,1,a);try{var b=S(a);ie(b);return 0}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return c.Ya}} +function hc(a,b,c,d){if(m)return N(16,1,a,b,c,d);try{a:{var e=S(a);a=b;for(var f,g=b=0;g>2],l=(t(),H)[a+4>>2];a+=8;var n=e,q=(t(),A),p=k,u=l,z=f;if(0>u||0>z)throw new P(28);if(null===n.ub)throw new P(8);if(1===(n.flags&2097155))throw new P(8);if(R(n.node.mode))throw new P(31);if(!n.Qa.read)throw new P(28);var v="undefined"!=typeof z;if(!v)z=n.position;else if(!n.seekable)throw new P(70);var w=n.Qa.read(n,q,p,u,z);v||(n.position+=w);var x=w;if(0>x){var F=-1;break a}b+=x;if(x< +l)break;"undefined"!=typeof f&&(f+=x)}F=b}(t(),H)[d>>2]=F;return 0}catch(G){if("undefined"==typeof T||"ErrnoError"!==G.name)throw G;return G.Ya}}function ic(a,b,c,d){if(m)return N(17,1,a,b,c,d);b=-9007199254740992>b||9007199254740992>3]=BigInt(e.position);e.Xb&&0===b&&0===c&&(e.Xb=null);return 0}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return f.Ya}} +function jc(a,b,c,d){if(m)return N(18,1,a,b,c,d);try{a:{var e=S(a);a=b;for(var f,g=b=0;g>2],l=(t(),H)[a+4>>2];a+=8;var n=ke(e,(t(),A),k,l,f);if(0>n){var q=-1;break a}b+=n;if(n>2]=q;return 0}catch(p){if("undefined"==typeof T||"ErrnoError"!==p.name)throw p;return p.Ya}}function qc(a,b){try{return ld((t(),B).subarray(a,a+b)),0}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return c.Ya}}m||Yc();Nd=Array(4096); +ae(Q,"/");de("/tmp");de("/home");de("/home/web_user");(function(){de("/dev");wd(259,{read:()=>0,write:(d,e,f,g)=>g,jb:()=>0});ee("/dev/null",259);vd(1280,yd);vd(1536,zd);ee("/dev/tty",1280);ee("/dev/tty1",1536);var a=new Uint8Array(1024),b=0,c=()=>{0===b&&(ld(a),b=a.byteLength);return a[--b]};Ma("/dev","random",c);Ma("/dev","urandom",c);de("/dev/shm");de("/dev/shm/tmp")})(); +(function(){de("/proc");var a=de("/proc/self");de("/proc/self/fd");ae({qb(){var b=Cd(a,"fd",16895,73);b.Qa={jb:Q.Qa.jb};b.Sa={Ab(c,d){c=+d;var e=S(c);c={parent:null,qb:{pc:"fake"},Sa:{Fb:()=>e.path},id:c+1};return c.parent=c},bc(){return Array.from(Ld.entries()).filter(([,c])=>c).map(([c])=>c.toString())}};return b}},"/proc/self/fd")})(); +(()=>{let a=He.prototype;Object.assign(a,{isAliasOf:function(c){if(!(this instanceof He&&c instanceof He))return!1;var d=this.Pa.Wa.Va,e=this.Pa.Ta;c.Pa=c.Pa;var f=c.Pa.Wa.Va;for(c=c.Pa.Ta;d.cb;)e=d.Gb(e),d=d.cb;for(;f.cb;)c=f.Gb(c),f=f.cb;return d===f&&e===c},clone:function(){this.Pa.Ta||Ce(this);if(this.Pa.Db)return this.Pa.count.value+=1,this;var c=Fe,d=Object,e=d.create,f=Object.getPrototypeOf(this),g=this.Pa;c=c(e.call(d,f,{Pa:{value:{count:g.count,yb:g.yb,Db:g.Db,Ta:g.Ta,Wa:g.Wa,ab:g.ab,gb:g.gb}}})); +c.Pa.count.value+=1;c.Pa.yb=!1;return c},["delete"](){this.Pa.Ta||Ce(this);if(this.Pa.yb&&!this.Pa.Db)throw new X("Object already scheduled for deletion");Ee(this);var c=this.Pa;--c.count.value;0===c.count.value&&(c.ab?c.gb.mb(c.ab):c.Wa.Va.mb(c.Ta));this.Pa.Db||(this.Pa.ab=void 0,this.Pa.Ta=void 0)},isDeleted:function(){return!this.Pa.Ta},deleteLater:function(){this.Pa.Ta||Ce(this);if(this.Pa.yb&&!this.Pa.Db)throw new X("Object already scheduled for deletion");Ge.push(this);this.Pa.yb=!0;return this}}); const b=Symbol.dispose;b&&(a[b]=a["delete"])})(); -Object.assign(Ze.prototype,{Dc(a){this.rc&&(a=this.rc(a));return a},lc(a){this.nb?.(a)},ob:ve,$a:function(a){function b(){return this.Mb?Ye(this.Wa.wb,{Xa:this.Vc,Ua:c,hb:this,bb:a}):Ye(this.Wa.wb,{Xa:this,Ua:a})}var c=this.Dc(a);if(!c)return this.lc(a),null;var d=Xe(this.Wa,c);if(void 0!==d){if(0===d.Qa.count.value)return d.Qa.Ua=c,d.Qa.bb=a,d.clone();d=d.clone();this.lc(a);return d}d=this.Wa.Cc(c);d=Ke[d];if(!d)return b.call(this);d=this.Lb?d.yc:d.pointerType;var e=Ve(c,this.Wa,d.Wa);return null=== -e?b.call(this):this.Mb?Ye(d.Wa.wb,{Xa:d,Ua:e,hb:this,bb:a}):Ye(d.Wa.wb,{Xa:d,Ua:e})}});(async function(){Lf=new Nf;if(!m){Qc("library_fetch_init");try{Pf=await Of()}catch(a){Pf=!1}finally{Pc("library_fetch_init")}}})();m||(oa=h.wasmMemory?h.wasmMemory:new WebAssembly.Memory({initial:(h.INITIAL_MEMORY||209715200)/65536,maximum:32768,shared:!0}),pa());h.noExitRuntime&&(Xc=h.noExitRuntime);h.preloadPlugins&&(Id=h.preloadPlugins);h.print&&(ja=h.print);h.printErr&&(r=h.printErr);h.wasmBinary&&(ka=h.wasmBinary); -h.thisProgram&&(da=h.thisProgram);if(h.preInit)for("function"==typeof h.preInit&&(h.preInit=[h.preInit]);0{var l=b?nd(jd(a+"/"+b)):a,n=`cp ${l}`;Qc(n);try{var q=c;"string"==typeof c&&(q=await Hd(c));q=await Jd(q,l);k?.();f||oe(a,b,q,d,e,g)}finally{Pc(n)}};h.FS_unlink=(...a)=>ge(...a);h.FS_createPath=(...a)=>me(...a);h.FS_createDevice=(...a)=>Ma(...a); -h.FS_createDataFile=(...a)=>oe(...a);h.FS_createLazyFile=(...a)=>qe(...a);var zf=[qc,Yc,ed,ab,bb,cb,db,eb,fb,gb,Qb,Rb,Sb,dc,ec,gc,hc,ic,jc],yf={205306:(a,b,c,d)=>{a=U(a);b=U(b);c=U(c);d=U(d);throw Error(a+b+c+d);},205522:(a,b)=>{a=U(a);b=U(b);throw Error(a+b);},205632:a=>{a=U(a);throw Error(a);},205700:a=>{a=U(a);throw Error(a);}};function lc(){var a=self.navigator.userAgent,b=sd(a)+1,c=vc(b);Y(a,c,b);return c}function Ub(){var a=h.allowedThreads;return a?a:navigator.hardwareConcurrency} -function kc(){var a=stackTrace(),b=sd(a)+1,c=vc(b);Y(a,c,b);return c}var tc,Aa,uc,vc,wc,xc,xa,Ea,yc,zc,Ac,Bc,Cc,Dc,Ec,Fc,Gc,Hc,Ic;h.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE=44384;var Ya;function nc(a,b){var c=Hc();try{O(a)(b)}catch(d){Fc(c);if(d!==d+0)throw d;Dc(1,0)}}function pc(a,b,c,d){var e=Hc();try{O(a)(b,c,d)}catch(f){Fc(e);if(f!==f+0)throw f;Dc(1,0)}}function oc(a,b,c){var d=Hc();try{O(a)(b,c)}catch(e){Fc(d);if(e!==e+0)throw e;Dc(1,0)}} -function mc(a,b,c,d){var e=Hc();try{return O(a)(b,c,d)}catch(f){Fc(e);if(f!==f+0)throw f;Dc(1,0)}} -function va(){function a(){h.calledRun=!0;if(!ma&&(Ka(),qa?.(h),h.onRuntimeInitialized?.(),!m)){if(h.postRun)for("function"==typeof h.postRun&&(h.postRun=[h.postRun]);h.postRun.length;){var b=h.postRun.shift();cd.push(b)}Lc(cd)}}if(0{setTimeout(()=>h.setStatus(""),1);a()},1)):a()}} +Object.assign(Ye.prototype,{Cc(a){this.qc&&(a=this.qc(a));return a},kc(a){this.mb?.(a)},nb:ue,Za:function(a){function b(){return this.Lb?Xe(this.Va.vb,{Wa:this.Uc,Ta:c,gb:this,ab:a}):Xe(this.Va.vb,{Wa:this,Ta:a})}var c=this.Cc(a);if(!c)return this.kc(a),null;var d=We(this.Va,c);if(void 0!==d){if(0===d.Pa.count.value)return d.Pa.Ta=c,d.Pa.ab=a,d.clone();d=d.clone();this.kc(a);return d}d=this.Va.Bc(c);d=Je[d];if(!d)return b.call(this);d=this.Kb?d.xc:d.pointerType;var e=Ue(c,this.Va,d.Va);return null=== +e?b.call(this):this.Lb?Xe(d.Va.vb,{Wa:d,Ta:e,gb:this,ab:a}):Xe(d.Va.vb,{Wa:d,Ta:e})}});(async function(){Kf=new Mf;if(!m){Pc("library_fetch_init");try{Of=await Nf()}catch(a){Of=!1}finally{Oc("library_fetch_init")}}})();m||(oa=h.wasmMemory?h.wasmMemory:new WebAssembly.Memory({initial:(h.INITIAL_MEMORY||209715200)/65536,maximum:32768,shared:!0}),pa());h.noExitRuntime&&(Wc=h.noExitRuntime);h.preloadPlugins&&(Hd=h.preloadPlugins);h.print&&(ja=h.print);h.printErr&&(r=h.printErr);h.wasmBinary&&(ka=h.wasmBinary); +h.thisProgram&&(da=h.thisProgram);if(h.preInit)for("function"==typeof h.preInit&&(h.preInit=[h.preInit]);0{var l=b?md(hd(a+"/"+b)):a,n=`cp ${l}`;Pc(n);try{var q=c;"string"==typeof c&&(q=await Gd(c));q=await Id(q,l);k?.();f||ne(a,b,q,d,e,g)}finally{Oc(n)}};h.FS_unlink=(...a)=>fe(...a);h.FS_createPath=(...a)=>le(...a);h.FS_createDevice=(...a)=>Ma(...a); +h.FS_createDataFile=(...a)=>ne(...a);h.FS_createLazyFile=(...a)=>pe(...a);var yf=[pc,Xc,dd,ab,bb,cb,db,eb,fb,gb,Qb,Rb,Sb,dc,ec,gc,hc,ic,jc],xf={204453:(a,b,c,d)=>{a=U(a);b=U(b);c=U(c);d=U(d);throw Error(a+b+c+d);},204669:(a,b)=>{a=U(a);b=U(b);throw Error(a+b);},204779:a=>{a=U(a);throw Error(a);},204847:a=>{a=U(a);throw Error(a);}};function Ub(){var a=h.allowedThreads;return a?a:navigator.hardwareConcurrency}function kc(){var a=stackTrace(),b=rd(a)+1,c=uc(b);Y(a,c,b);return c} +var sc,Aa,tc,uc,vc,wc,xa,Ea,xc,yc,zc,Ac,Bc,Cc,Dc,Ec,Fc,Gc,Hc;h.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE=44352;var Ya;function mc(a,b){var c=Gc();try{O(a)(b)}catch(d){Ec(c);if(d!==d+0)throw d;Cc(1,0)}}function oc(a,b,c,d){var e=Gc();try{O(a)(b,c,d)}catch(f){Ec(e);if(f!==f+0)throw f;Cc(1,0)}}function nc(a,b,c){var d=Gc();try{O(a)(b,c)}catch(e){Ec(d);if(e!==e+0)throw e;Cc(1,0)}}function lc(a,b,c,d){var e=Gc();try{return O(a)(b,c,d)}catch(f){Ec(e);if(f!==f+0)throw f;Cc(1,0)}} +function va(){function a(){h.calledRun=!0;if(!ma&&(Ka(),qa?.(h),h.onRuntimeInitialized?.(),!m)){if(h.postRun)for("function"==typeof h.postRun&&(h.postRun=[h.postRun]);h.postRun.length;){var b=h.postRun.shift();bd.push(b)}Kc(bd)}}if(0{setTimeout(()=>h.setStatus(""),1);a()},1)):a()}} var Pa;m||(Pa=await (ua()),va());moduleRtn=Ja?h:new Promise((a,b)=>{qa=a;ra=b}); ;return moduleRtn}export default createModule;var isPthread=globalThis.self?.name?.startsWith("em-pthread");isPthread&&createModule(); diff --git a/packages/blinkcard-wasm/dist/advanced-threads/BlinkCardModule.wasm b/packages/blinkcard-wasm/dist/advanced-threads/BlinkCardModule.wasm index a35a170..cb9eb78 100755 Binary files a/packages/blinkcard-wasm/dist/advanced-threads/BlinkCardModule.wasm and b/packages/blinkcard-wasm/dist/advanced-threads/BlinkCardModule.wasm differ diff --git a/packages/blinkcard-wasm/dist/advanced/BlinkCardModule.js b/packages/blinkcard-wasm/dist/advanced/BlinkCardModule.js index 061a063..e2a7cff 100644 --- a/packages/blinkcard-wasm/dist/advanced/BlinkCardModule.js +++ b/packages/blinkcard-wasm/dist/advanced/BlinkCardModule.js @@ -1,122 +1,122 @@ async function createModule(moduleArg={}){var moduleRtn;var l=moduleArg,aa=!!globalThis.window,ba=!!globalThis.WorkerGlobalScope;let ca;(ca=l).expectedDataFileDownloads??(ca.expectedDataFileDownloads=0);l.expectedDataFileDownloads++; (()=>{var a="undefined"!=typeof ENVIRONMENT_IS_WASM_WORKER&&ENVIRONMENT_IS_WASM_WORKER;"undefined"!=typeof ENVIRONMENT_IS_PTHREAD&&ENVIRONMENT_IS_PTHREAD||a||async function(b){async function c(k,m){var p;(p=l).dataFileDownloads??(p.dataFileDownloads={});try{var n=await fetch(k)}catch(x){throw Error(`Network Error: ${k}`,{e:x});}if(!n.ok)throw Error(`${n.status}: ${n.url}`);p=[];m=Number(n.headers.get("Content-Length")??m);let t=0;l.setStatus?.("Downloading data...");for(n=n.body.getReader();;){var {done:z, value:u}=await n.read();if(z)break;p.push(u);t+=u.length;l.dataFileDownloads[k]={loaded:t,total:m};let x=0,E=0;for(var w of Object.values(l.dataFileDownloads))x+=w.loaded,E+=w.total;l.setStatus?.(`Downloading data... (${x}/${E})`)}k=new Uint8Array(p.map(x=>x.length).reduce((x,E)=>x+E,0));w=0;for(const x of p)k.set(x,w),w+=x.length;return k.buffer}async function d(k){k.FS_createPath("/","microblink",!0,!0);k.FS_createPath("/microblink","blinkcard",!0,!0);for(var m of b.files)k.addRunDependency(`fp ${m.filename}`); -k.addRunDependency("datafile_/opt/jenkins/root/E0/b/packages/blinkcard-wasm/dist/advanced/BlinkCardModule.data");k.preloadResults??(k.preloadResults={});k.preloadResults["/opt/jenkins/root/E0/b/packages/blinkcard-wasm/dist/advanced/BlinkCardModule.data"]={Jc:!1};h||=await g;(async function(p){if(!p)throw Error("Loading data file failed.");if(p.constructor.name!==ArrayBuffer.name)throw Error("bad input to processPackageData");p=new Uint8Array(p);for(var n of b.files){var t=n.filename;k.FS_createDataFile(t, -null,p.subarray(n.start,n.end),!0,!0,!0);k.removeRunDependency(`fp ${t}`)}k.removeRunDependency("datafile_/opt/jenkins/root/E0/b/packages/blinkcard-wasm/dist/advanced/BlinkCardModule.data")})(h)}"object"===typeof window?window.encodeURIComponent(window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/"):"undefined"===typeof process&&"undefined"!==typeof location&&encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf("/"))+"/");var e=l.locateFile?.("BlinkCardModule.data", -"")??"BlinkCardModule.data",f=b.remote_package_size,g,h=l.getPreloadedPackage?.(e,f);h||(g=c(e,f));if(l.calledRun)d(l);else{let k;((k=l).preRun??(k.preRun=[])).push(d)}}({files:[{filename:"/microblink/blinkcard/Model_1118d9d674e23996f70c6416b2bf5a6ce6ef24a6ad2c92f0ddd1e198e5f05305.strop",start:0,end:19102},{filename:"/microblink/blinkcard/Model_349432d66ef2b216155673b634f7d5c47795bed35719b954f726b5f0856740f3.strop",start:19102,end:67419},{filename:"/microblink/blinkcard/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop", +k.addRunDependency("datafile_/opt/jenkins/android-arm64-oneplus7t/root/E0/b/packages/blinkcard-wasm/dist/advanced/BlinkCardModule.data");k.preloadResults??(k.preloadResults={});k.preloadResults["/opt/jenkins/android-arm64-oneplus7t/root/E0/b/packages/blinkcard-wasm/dist/advanced/BlinkCardModule.data"]={Ic:!1};h||=await g;(async function(p){if(!p)throw Error("Loading data file failed.");if(p.constructor.name!==ArrayBuffer.name)throw Error("bad input to processPackageData");p=new Uint8Array(p);for(var n of b.files){var t= +n.filename;k.FS_createDataFile(t,null,p.subarray(n.start,n.end),!0,!0,!0);k.removeRunDependency(`fp ${t}`)}k.removeRunDependency("datafile_/opt/jenkins/android-arm64-oneplus7t/root/E0/b/packages/blinkcard-wasm/dist/advanced/BlinkCardModule.data")})(h)}"object"===typeof window?window.encodeURIComponent(window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/"):"undefined"===typeof process&&"undefined"!==typeof location&&encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf("/"))+ +"/");var e=l.locateFile?.("BlinkCardModule.data","")??"BlinkCardModule.data",f=b.remote_package_size,g,h=l.getPreloadedPackage?.(e,f);h||(g=c(e,f));if(l.calledRun)d(l);else{let k;((k=l).preRun??(k.preRun=[])).push(d)}}({files:[{filename:"/microblink/blinkcard/Model_1118d9d674e23996f70c6416b2bf5a6ce6ef24a6ad2c92f0ddd1e198e5f05305.strop",start:0,end:19102},{filename:"/microblink/blinkcard/Model_349432d66ef2b216155673b634f7d5c47795bed35719b954f726b5f0856740f3.strop",start:19102,end:67419},{filename:"/microblink/blinkcard/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop", start:67419,end:336140},{filename:"/microblink/blinkcard/Model_5065f3a3bc1c2fece482ee66e9275fc198b9be239547e08b6086c59f347ca72f.strop",start:336140,end:2591295},{filename:"/microblink/blinkcard/Model_830c13896f96c1cb6d5cad725f44e6aae470f8672d640d20b3272ed4bb839699.strop",start:2591295,end:2848318},{filename:"/microblink/blinkcard/Model_9f6734be0f5c1e4f3c6c621f4a72db8241feaf7c8705dc68a9cc07a7b634ee85.strop",start:2848318,end:2931954},{filename:"/microblink/blinkcard/Model_abb3e9795585a24a9bbd1dd41ec97daa2e1d7d42087aacd981411fd8b26bf493.strop", start:2931954,end:3264110},{filename:"/microblink/blinkcard/Model_b9263312a9b623d1a3b75b643ccdcbc36aae52c278d721443468147c50e44583.strop",start:3264110,end:3532384},{filename:"/microblink/blinkcard/Model_c99d9c4b96e424a1b5a17758060a8116912f78d14318e471e0606709227b9497.strop",start:3532384,end:6369917},{filename:"/microblink/blinkcard/Model_cc1fab8df49d9a21de6c7b76ccf0dac40b17fcfb7073cc520eca073cbf8e33e9.strop",start:6369917,end:6373648},{filename:"/microblink/blinkcard/Model_f132d1bd7614b1274fafb8a41ec6c047b84b2a43654ae2da5ddd78a2765601c6.strop", start:6373648,end:7208473},{filename:"/microblink/blinkcard/bin-database_1.0.zzip",start:7208473,end:8578325}],remote_package_size:8578325})})();l.onAbort=function(a){q("Aborted with message: "+a);try{throw new WebAssembly.RuntimeError(a);}catch(b){q("Stacktrace: "+b.stack)}};l="undefined"!==typeof l?l:{}; (function(){var a="",b=!1;try{if("undefined"!==typeof self&&self.location&&self.location.href){var c=self.location.href;0===c.indexOf("blob:")&&(a=c,b=!0)}}catch(d){}b&&!l.locateFile&&(l.locateFile=function(d,e){return"BlinkCardModule.wasm"===d?a:e+d})})();var da="./this.program",ea=import.meta.url,fa="",ha,ia; -if(aa||ba){try{fa=(new URL(".",ea)).href}catch{}ba&&(ia=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)});ha=async a=>{a=await fetch(a,{credentials:"same-origin"});if(a.ok)return a.arrayBuffer();throw Error(a.status+" : "+a.url);}}var ja=console.log.bind(console),q=console.error.bind(console),ka,la=!1,ma,na,oa,r,v,A,pa,B,D,qa,sa,G,ta,ua=!1; -function va(){var a=wa.buffer;r=new Int8Array(a);A=new Int16Array(a);v=new Uint8Array(a);pa=new Uint16Array(a);B=new Int32Array(a);D=new Uint32Array(a);qa=new Float32Array(a);sa=new Float64Array(a);G=new BigInt64Array(a);ta=new BigUint64Array(a)}var wa;function H(a){l.onAbort?.(a);a="Aborted("+a+")";q(a);la=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");oa?.(a);throw a;}var xa; +if(aa||ba){try{fa=(new URL(".",ea)).href}catch{}ba&&(ia=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)});ha=async a=>{a=await fetch(a,{credentials:"same-origin"});if(a.ok)return a.arrayBuffer();throw Error(a.status+" : "+a.url);}}var ja=console.log.bind(console),q=console.error.bind(console),ka,la=!1,ma,na,oa,r,v,A,pa,B,D,ra,sa,G,ta,ua=!1; +function va(){var a=wa.buffer;r=new Int8Array(a);A=new Int16Array(a);v=new Uint8Array(a);pa=new Uint16Array(a);B=new Int32Array(a);D=new Uint32Array(a);ra=new Float32Array(a);sa=new Float64Array(a);G=new BigInt64Array(a);ta=new BigUint64Array(a)}var wa;function H(a){l.onAbort?.(a);a="Aborted("+a+")";q(a);la=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");oa?.(a);throw a;}var xa; async function ya(a){if(!ka)try{var b=await ha(a);return new Uint8Array(b)}catch{}if(a==xa&&ka)a=new Uint8Array(ka);else if(ia)a=ia(a);else throw"both async and sync fetching of the wasm failed";return a}async function za(a,b){try{var c=await ya(a);return await WebAssembly.instantiate(c,b)}catch(d){q(`failed to asynchronously prepare wasm: ${d}`),H(d)}} async function Aa(a){var b=xa;if(!ka)try{var c=fetch(b,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(c,a)}catch(d){q(`wasm streaming compile failed: ${d}`),q("falling back to ArrayBuffer instantiation")}return za(b,a)}class Ba{name="ExitStatus";constructor(a){this.message=`Program terminated with exit(${a})`;this.status=a}} -var Ca=a=>{for(;0{var a=l.preRun.shift();Ea.push(a)},Ga=!0,Ha=[],K=a=>{var b=Ha[a];b||(Ha[a]=b=Ja.get(a));return b},La=()=>{var a=B[+Ka>>2];Ka+=4;return a},Ma=(a,b)=>{for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a},Na=a=>{var b="/"===a.charAt(0),c="/"===a.slice(-1);(a=Ma(a.split("/").filter(d=>!!d),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b? +var Ca=a=>{for(;0{var a=l.preRun.shift();Ea.push(a)},Ga=!0,Ha=[],L=a=>{var b=Ha[a];b||(Ha[a]=b=Ja.get(a));return b},La=()=>{var a=B[+Ka>>2];Ka+=4;return a},Ma=(a,b)=>{for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a},Na=a=>{var b="/"===a.charAt(0),c="/"===a.slice(-1);(a=Ma(a.split("/").filter(d=>!!d),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b? "/":"")+a},Oa=a=>{var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&=b.slice(0,-1);return a+b},Pa=()=>a=>crypto.getRandomValues(a),Qa=a=>{(Qa=Pa())(a)},Ra=(...a)=>{for(var b="",c=!1,d=a.length-1;-1<=d&&!c;d--){c=0<=d?a[d]:"/";if("string"!=typeof c)throw new TypeError("Arguments to path.resolve must be strings");if(!c)return"";b=c+"/"+b;c="/"===c.charAt(0)}b=Ma(b.split("/").filter(e=>!!e),!c).join("/");return(c?"/":"")+b||"."}, Sa=globalThis.TextDecoder&&new TextDecoder,Ta=(a,b,c,d)=>{c=b+c;if(d)return c;for(;a[b]&&!(b>=c);)++b;return b},M=(a,b=0,c,d)=>{c=Ta(a,b,c,d);if(16e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}, Ua=[],Va=a=>{for(var b=0,c=0;c=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},N=(a,b,c,d)=>{if(!(0=g){if(c>=d)break;b[c++]=g}else if(2047>=g){if(c+1>=d)break;b[c++]=192|g>>6;b[c++]=128|g&63}else if(65535>=g){if(c+2>=d)break;b[c++]=224|g>>12;b[c++]=128|g>>6&63;b[c++]=128|g&63}else{if(c+3>=d)break;b[c++]=240|g>>18;b[c++]=128|g>>12&63;b[c++]=128|g>>6&63;b[c++]= -128|g&63;f++}}b[c]=0;return c-e},Wa=a=>{var b=Array(Va(a)+1);a=N(a,b,0,b.length);b.length=a;return b},Xa=[];function Ya(a,b){Xa[a]={input:[],output:[],Wa:b};Za(a,$a)} -var $a={open(a){var b=Xa[a.node.jb];if(!b)throw new O(43);a.Ba=b;a.seekable=!1},close(a){a.Ba.Wa.ob(a.Ba)},ob(a){a.Ba.Wa.ob(a.Ba)},read(a,b,c,d){if(!a.Ba||!a.Ba.Wa.Qb)throw new O(60);for(var e=0,f=0;f{a=65536*Math.ceil(a/65536);var b=cb(65536,a);b&&v.fill(0,b,b+a);return b},P={Ra:null,Va(){return P.createNode(null,"/",16895,0)},createNode(a,b,c,d){if(24576===(c&61440)||4096===(c&61440))throw new O(63);P.Ra||(P.Ra={dir:{node:{Pa:P.za.Pa,Ua:P.za.Ua,fb:P.za.fb,rb:P.za.rb,Ub:P.za.Ub,wb:P.za.wb,Vb:P.za.Vb,Fb:P.za.Fb,vb:P.za.vb},stream:{Qa:P.xa.Qa}}, -file:{node:{Pa:P.za.Pa,Ua:P.za.Ua},stream:{Qa:P.xa.Qa,read:P.xa.read,write:P.xa.write,gb:P.xa.gb,sb:P.xa.sb}},link:{node:{Pa:P.za.Pa,Ua:P.za.Ua,kb:P.za.kb},stream:{}},Kb:{node:{Pa:P.za.Pa,Ua:P.za.Ua},stream:eb}});c=fb(a,b,c,d);Q(c.mode)?(c.za=P.Ra.dir.node,c.xa=P.Ra.dir.stream,c.ya={}):32768===(c.mode&61440)?(c.za=P.Ra.file.node,c.xa=P.Ra.file.stream,c.Ea=0,c.ya=null):40960===(c.mode&61440)?(c.za=P.Ra.link.node,c.xa=P.Ra.link.stream):8192===(c.mode&61440)&&(c.za=P.Ra.Kb.node,c.xa=P.Ra.Kb.stream); -c.Ya=c.Ma=c.La=Date.now();a&&(a.ya[b]=c,a.Ya=a.Ma=a.La=c.Ya);return c},Kc(a){return a.ya?a.ya.subarray?a.ya.subarray(0,a.Ea):new Uint8Array(a.ya):new Uint8Array(0)},za:{Pa(a){var b={};b.Zb=8192===(a.mode&61440)?a.id:1;b.ic=a.id;b.mode=a.mode;b.rc=1;b.uid=0;b.fc=0;b.jb=a.jb;b.size=Q(a.mode)?4096:32768===(a.mode&61440)?a.Ea:40960===(a.mode&61440)?a.link.length:0;b.Ya=new Date(a.Ya);b.Ma=new Date(a.Ma);b.La=new Date(a.La);b.Wb=4096;b.Xb=Math.ceil(b.size/b.Wb);return b},Ua(a,b){for(var c of["mode","atime", -"mtime","ctime"])null!=b[c]&&(a[c]=b[c]);void 0!==b.size&&(b=b.size,a.Ea!=b&&(0==b?(a.ya=null,a.Ea=0):(c=a.ya,a.ya=new Uint8Array(b),c&&a.ya.set(c.subarray(0,Math.min(b,a.Ea))),a.Ea=b)))},fb(){P.yb||(P.yb=new O(44),P.yb.stack="");throw P.yb;},rb(a,b,c,d){return P.createNode(a,b,c,d)},Ub(a,b,c){try{var d=gb(b,c)}catch(f){}if(d){if(Q(a.mode))for(var e in d.ya)throw new O(55);hb(d)}delete a.parent.ya[a.name];b.ya[c]=a;a.name=c;b.La=b.Ma=a.parent.La=a.parent.Ma=Date.now()},wb(a, -b){delete a.ya[b];a.La=a.Ma=Date.now()},Vb(a,b){var c=gb(a,b),d;for(d in c.ya)throw new O(55);delete a.ya[b];a.La=a.Ma=Date.now()},Fb(a){return[".","..",...Object.keys(a.ya)]},vb(a,b,c){a=P.createNode(a,b,41471,0);a.link=c;return a},kb(a){if(40960!==(a.mode&61440))throw new O(28);return a.link}},xa:{read(a,b,c,d,e){var f=a.node.ya;if(e>=a.node.Ea)return 0;a=Math.min(a.node.Ea-e,d);if(8=f||(f=Math.max(f,g*(1048576>g?2:1.125)>>>0),0!=g&&(f=Math.max(f,256)),g=a.ya,a.ya=new Uint8Array(f),0b)throw new O(28);return b},gb(a,b,c,d,e){if(32768!==(a.node.mode&61440))throw new O(43);a=a.node.ya;if(e&2||!a||a.buffer!==r.buffer){d=!0;e=db(b);if(!e)throw new O(48);if(a){if(0{var c=0;a&&(c|=365);b&&(c|=146);return c},jb=async a=>{a=await ha(a);return new Uint8Array(a)},kb=0,lb=null,mb=()=>{kb--;l.monitorRunDependencies?.(kb);if(0==kb&&lb){var a=lb;lb=null;a()}},nb=()=>{kb++;l.monitorRunDependencies?.(kb)},ob=[],pb=async(a,b)=>{"undefined"!=typeof Browser&&Browser.Lc();for(var c of ob)if(c.canHandle(b))return c.handle(a,b);return a},qb=null,rb={},sb=[],tb=1,ub=null,vb=!1,wb=!0,xb={},O=class{name="ErrnoError";constructor(a){this.Fa=a}},yb=class{ub={};node=null;get object(){return this.node}set object(a){this.node= -a}get flags(){return this.ub.flags}set flags(a){this.ub.flags=a}get position(){return this.ub.position}set position(a){this.ub.position=a}},zb=class{za={};xa={};tb=365;xb=146;hb=null;constructor(a,b,c,d){a||=this;this.parent=a;this.Va=a.Va;this.id=tb++;this.name=b;this.mode=c;this.jb=d;this.Ya=this.Ma=this.La=Date.now()}get read(){return(this.mode&this.tb)===this.tb}set read(a){a?this.mode|=this.tb:this.mode&=~this.tb}get write(){return(this.mode&this.xb)===this.xb}set write(a){a?this.mode|=this.xb: -this.mode&=~this.xb}get oc(){return Q(this.mode)}get nc(){return 8192===(this.mode&61440)}}; -function Ab(a,b={}){if(!a)throw new O(44);b.zb??(b.zb=!0);"/"===a.charAt(0)||(a="//"+a);var c=0;a:for(;40>c;c++){a=a.split("/").filter(h=>!!h);for(var d=qb,e="/",f=0;f>>0)%ub.length} -function hb(a){var b=Cb(a.parent.id,a.name);if(ub[b]===a)ub[b]=a.ab;else for(b=ub[b];b;){if(b.ab===a){b.ab=a.ab;break}b=b.ab}}function gb(a,b){var c=Q(a.mode)?(c=Db(a,"x"))?c:a.za.fb?0:2:54;if(c)throw new O(c);for(c=ub[Cb(a.id,b)];c;c=c.ab){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.za.fb(a,b)}function fb(a,b,c,d){a=new zb(a,b,c,d);b=Cb(a.parent.id,a.name);a.ab=ub[b];return ub[b]=a}function Q(a){return 16384===(a&61440)} +128|g&63;f++}}b[c]=0;return c-e},Wa=a=>{var b=Array(Va(a)+1);a=N(a,b,0,b.length);b.length=a;return b},Xa=[];function Ya(a,b){Xa[a]={input:[],output:[],Va:b};Za(a,$a)} +var $a={open(a){var b=Xa[a.node.ib];if(!b)throw new O(43);a.Aa=b;a.seekable=!1},close(a){a.Aa.Va.nb(a.Aa)},nb(a){a.Aa.Va.nb(a.Aa)},read(a,b,c,d){if(!a.Aa||!a.Aa.Va.Pb)throw new O(60);for(var e=0,f=0;f{a=65536*Math.ceil(a/65536);var b=cb(65536,a);b&&v.fill(0,b,b+a);return b},P={Qa:null,Ua(){return P.createNode(null,"/",16895,0)},createNode(a,b,c,d){if(24576===(c&61440)||4096===(c&61440))throw new O(63);P.Qa||(P.Qa={dir:{node:{Oa:P.ya.Oa,Ta:P.ya.Ta,eb:P.ya.eb,qb:P.ya.qb,Tb:P.ya.Tb,vb:P.ya.vb,Ub:P.ya.Ub,Eb:P.ya.Eb,ub:P.ya.ub},stream:{Pa:P.wa.Pa}}, +file:{node:{Oa:P.ya.Oa,Ta:P.ya.Ta},stream:{Pa:P.wa.Pa,read:P.wa.read,write:P.wa.write,fb:P.wa.fb,rb:P.wa.rb}},link:{node:{Oa:P.ya.Oa,Ta:P.ya.Ta,jb:P.ya.jb},stream:{}},Jb:{node:{Oa:P.ya.Oa,Ta:P.ya.Ta},stream:eb}});c=fb(a,b,c,d);Q(c.mode)?(c.ya=P.Qa.dir.node,c.wa=P.Qa.dir.stream,c.xa={}):32768===(c.mode&61440)?(c.ya=P.Qa.file.node,c.wa=P.Qa.file.stream,c.Da=0,c.xa=null):40960===(c.mode&61440)?(c.ya=P.Qa.link.node,c.wa=P.Qa.link.stream):8192===(c.mode&61440)&&(c.ya=P.Qa.Jb.node,c.wa=P.Qa.Jb.stream); +c.Xa=c.La=c.Ka=Date.now();a&&(a.xa[b]=c,a.Xa=a.La=a.Ka=c.Xa);return c},Jc(a){return a.xa?a.xa.subarray?a.xa.subarray(0,a.Da):new Uint8Array(a.xa):new Uint8Array(0)},ya:{Oa(a){var b={};b.Yb=8192===(a.mode&61440)?a.id:1;b.hc=a.id;b.mode=a.mode;b.qc=1;b.uid=0;b.ec=0;b.ib=a.ib;b.size=Q(a.mode)?4096:32768===(a.mode&61440)?a.Da:40960===(a.mode&61440)?a.link.length:0;b.Xa=new Date(a.Xa);b.La=new Date(a.La);b.Ka=new Date(a.Ka);b.Vb=4096;b.Wb=Math.ceil(b.size/b.Vb);return b},Ta(a,b){for(var c of["mode","atime", +"mtime","ctime"])null!=b[c]&&(a[c]=b[c]);void 0!==b.size&&(b=b.size,a.Da!=b&&(0==b?(a.xa=null,a.Da=0):(c=a.xa,a.xa=new Uint8Array(b),c&&a.xa.set(c.subarray(0,Math.min(b,a.Da))),a.Da=b)))},eb(){P.xb||(P.xb=new O(44),P.xb.stack="");throw P.xb;},qb(a,b,c,d){return P.createNode(a,b,c,d)},Tb(a,b,c){try{var d=gb(b,c)}catch(f){}if(d){if(Q(a.mode))for(var e in d.xa)throw new O(55);hb(d)}delete a.parent.xa[a.name];b.xa[c]=a;a.name=c;b.Ka=b.La=a.parent.Ka=a.parent.La=Date.now()},vb(a, +b){delete a.xa[b];a.Ka=a.La=Date.now()},Ub(a,b){var c=gb(a,b),d;for(d in c.xa)throw new O(55);delete a.xa[b];a.Ka=a.La=Date.now()},Eb(a){return[".","..",...Object.keys(a.xa)]},ub(a,b,c){a=P.createNode(a,b,41471,0);a.link=c;return a},jb(a){if(40960!==(a.mode&61440))throw new O(28);return a.link}},wa:{read(a,b,c,d,e){var f=a.node.xa;if(e>=a.node.Da)return 0;a=Math.min(a.node.Da-e,d);if(8=f||(f=Math.max(f,g*(1048576>g?2:1.125)>>>0),0!=g&&(f=Math.max(f,256)),g=a.xa,a.xa=new Uint8Array(f),0b)throw new O(28);return b},fb(a,b,c,d,e){if(32768!==(a.node.mode&61440))throw new O(43);a=a.node.xa;if(e&2||!a||a.buffer!==r.buffer){d=!0;e=db(b);if(!e)throw new O(48);if(a){if(0{var c=0;a&&(c|=365);b&&(c|=146);return c},jb=async a=>{a=await ha(a);return new Uint8Array(a)},kb=0,lb=null,mb=()=>{kb--;l.monitorRunDependencies?.(kb);if(0==kb&&lb){var a=lb;lb=null;a()}},nb=()=>{kb++;l.monitorRunDependencies?.(kb)},ob=[],pb=async(a,b)=>{"undefined"!=typeof Browser&&Browser.Kc();for(var c of ob)if(c.canHandle(b))return c.handle(a,b);return a},qb=null,rb={},sb=[],tb=1,ub=null,vb=!1,wb=!0,xb={},O=class{name="ErrnoError";constructor(a){this.Ea=a}},yb=class{tb={};node=null;get object(){return this.node}set object(a){this.node= +a}get flags(){return this.tb.flags}set flags(a){this.tb.flags=a}get position(){return this.tb.position}set position(a){this.tb.position=a}},zb=class{ya={};wa={};sb=365;wb=146;gb=null;constructor(a,b,c,d){a||=this;this.parent=a;this.Ua=a.Ua;this.id=tb++;this.name=b;this.mode=c;this.ib=d;this.Xa=this.La=this.Ka=Date.now()}get read(){return(this.mode&this.sb)===this.sb}set read(a){a?this.mode|=this.sb:this.mode&=~this.sb}get write(){return(this.mode&this.wb)===this.wb}set write(a){a?this.mode|=this.wb: +this.mode&=~this.wb}get nc(){return Q(this.mode)}get mc(){return 8192===(this.mode&61440)}}; +function Ab(a,b={}){if(!a)throw new O(44);b.yb??(b.yb=!0);"/"===a.charAt(0)||(a="//"+a);var c=0;a:for(;40>c;c++){a=a.split("/").filter(h=>!!h);for(var d=qb,e="/",f=0;f>>0)%ub.length} +function hb(a){var b=Cb(a.parent.id,a.name);if(ub[b]===a)ub[b]=a.$a;else for(b=ub[b];b;){if(b.$a===a){b.$a=a.$a;break}b=b.$a}}function gb(a,b){var c=Q(a.mode)?(c=Db(a,"x"))?c:a.ya.eb?0:2:54;if(c)throw new O(c);for(c=ub[Cb(a.id,b)];c;c=c.$a){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.ya.eb(a,b)}function fb(a,b,c,d){a=new zb(a,b,c,d);b=Cb(a.parent.id,a.name);a.$a=ub[b];return ub[b]=a}function Q(a){return 16384===(a&61440)} function Eb(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function Db(a,b){if(wb)return 0;if(!b.includes("r")||a.mode&292){if(b.includes("w")&&!(a.mode&146)||b.includes("x")&&!(a.mode&73))return 2}else return 2;return 0}function Fb(a,b){if(!Q(a.mode))return 54;try{return gb(a,b),20}catch(c){}return Db(a,"wx")}function Gb(a){if(!a)throw new O(63);return a}function R(a){a=sb[a];if(!a)throw new O(8);return a} -function Hb(a,b=-1){a=Object.assign(new yb,a);if(-1==b)a:{for(b=0;4096>=b;b++)if(!sb[b])break a;throw new O(33);}a.Za=b;return sb[b]=a}function Ib(a,b=-1){a=Hb(a,b);a.xa?.Ic?.(a);return a}function Jb(a,b){var c=null?.xa.Ua,d=c?null:a;c??=a.za.Ua;Gb(c);c(d,b)}var eb={open(a){a.xa=rb[a.node.jb].xa;a.xa.open?.(a)},Qa(){throw new O(70);}};function Za(a,b){rb[a]={xa:b}} -function Kb(a,b){var c="/"===b;if(c&&qb)throw new O(10);if(!c&&b){var d=Ab(b,{zb:!1});b=d.path;d=d.node;if(d.hb)throw new O(10);if(!Q(d.mode))throw new O(54);}b={type:a,Mc:{},Sb:b,qc:[]};a=a.Va(b);a.Va=b;b.root=a;c?qb=a:d&&(d.hb=b,d.Va&&d.Va.qc.push(b))}function Lb(a,b,c){var d=Ab(a,{parent:!0}).node;a=a&&a.match(/([^\/]+|\/)\/*$/)[1];if(!a)throw new O(28);if("."===a||".."===a)throw new O(20);var e=Fb(d,a);if(e)throw new O(e);if(!d.za.rb)throw new O(63);return d.za.rb(d,a,b,c)} -function Mb(a,b=438){return Lb(a,b&4095|32768,0)}function S(a){return Lb(a,16895,0)}function Nb(a,b,c){"undefined"==typeof c&&(c=b,b=438);return Lb(a,b|8192,c)}function Ob(a,b){if(!Ra(a))throw new O(44);var c=Ab(b,{parent:!0}).node;if(!c)throw new O(44);b=b&&b.match(/([^\/]+|\/)\/*$/)[1];var d=Fb(c,b);if(d)throw new O(d);if(!c.za.vb)throw new O(63);c.za.vb(c,b,a)} -function Pb(a){var b=Ab(a,{parent:!0}).node;if(!b)throw new O(44);a=a&&a.match(/([^\/]+|\/)\/*$/)[1];var c=gb(b,a);a:{try{var d=gb(b,a)}catch(f){d=f.Fa;break a}var e=Db(b,"wx");d=e?e:Q(d.mode)?31:0}if(d)throw new O(d);if(!b.za.wb)throw new O(63);if(c.hb)throw new O(10);b.za.wb(b,a);hb(c)}function Qb(a,b){a=Ab(a,{nb:!b}).node;return Gb(a.za.Pa)(a)}function Rb(a,b){a="string"==typeof a?Ab(a,{nb:!0}).node:a;Jb(a,{mode:b&4095|a.mode&-4096,La:Date.now(),Hc:void 0})} -function Sb(a,b,c=438){if(""===a)throw new O(44);if("string"==typeof b){var d={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[b];if("undefined"==typeof d)throw Error(`Unknown file open mode: ${b}`);b=d}c=b&64?c&4095|32768:0;if("object"==typeof a)d=a;else{var e=a.endsWith("/");a=Ab(a,{nb:!(b&131072),sc:!0});d=a.node;a=a.path}var f=!1;if(b&64)if(d){if(b&128)throw new O(20);}else{if(e)throw new O(31);d=Lb(a,c|511,0);f=!0}if(!d)throw new O(44);8192===(d.mode&61440)&&(b&=-513);if(b&65536&&!Q(d.mode))throw new O(54); -if(!f&&(e=d?40960===(d.mode&61440)?32:Q(d.mode)&&("r"!==Eb(b)||b&576)?31:Db(d,Eb(b)):44))throw new O(e);if(b&512&&!f){e=d;e="string"==typeof e?Ab(e,{nb:!0}).node:e;if(Q(e.mode))throw new O(31);if(32768!==(e.mode&61440))throw new O(28);var g=Db(e,"w");if(g)throw new O(g);Jb(e,{size:0,timestamp:Date.now()})}b&=-131713;e=Hb({node:d,path:Bb(d),flags:b,seekable:!0,position:0,xa:d.xa,Bc:[],error:!1});e.xa.open&&e.xa.open(e);f&&Rb(d,c&511);!l.logReadFiles||b&1||a in xb||(xb[a]=1);return e} -function Tb(a){if(null===a.Za)throw new O(8);a.Ab&&(a.Ab=null);try{a.xa.close&&a.xa.close(a)}catch(b){throw b;}finally{sb[a.Za]=null}a.Za=null}function Ub(a,b,c){if(null===a.Za)throw new O(8);if(!a.seekable||!a.xa.Qa)throw new O(70);if(0!=c&&1!=c&&2!=c)throw new O(28);a.position=a.xa.Qa(a,b,c);a.Bc=[]} -function Vb(a,b,c,d,e,f){if(0>d||0>e)throw new O(28);if(null===a.Za)throw new O(8);if(0===(a.flags&2097155))throw new O(8);if(Q(a.node.mode))throw new O(31);if(!a.xa.write)throw new O(28);a.seekable&&a.flags&1024&&Ub(a,0,2);var g="undefined"!=typeof e;if(!g)e=a.position;else if(!a.seekable)throw new O(70);b=a.xa.write(a,b,c,d,e,f);g||(a.position+=b);return b} -function Wb(a,b){a="string"==typeof a?a:Bb(a);for(b=b.split("/").reverse();b.length;){var c=b.pop();if(c){var d=Na(a+"/"+c);try{S(d)}catch(e){if(20!=e.Fa)throw e;}a=d}}return d}function Xb(a,b,c,d){a=Na(("string"==typeof a?a:Bb(a))+"/"+b);return Mb(a,ib(c,d))} +function Hb(a,b=-1){a=Object.assign(new yb,a);if(-1==b)a:{for(b=0;4096>=b;b++)if(!sb[b])break a;throw new O(33);}a.Ya=b;return sb[b]=a}function Ib(a,b=-1){a=Hb(a,b);a.wa?.Hc?.(a);return a}function Jb(a,b){var c=null?.wa.Ta,d=c?null:a;c??=a.ya.Ta;Gb(c);c(d,b)}var eb={open(a){a.wa=rb[a.node.ib].wa;a.wa.open?.(a)},Pa(){throw new O(70);}};function Za(a,b){rb[a]={wa:b}} +function Kb(a,b){var c="/"===b;if(c&&qb)throw new O(10);if(!c&&b){var d=Ab(b,{yb:!1});b=d.path;d=d.node;if(d.gb)throw new O(10);if(!Q(d.mode))throw new O(54);}b={type:a,Lc:{},Rb:b,pc:[]};a=a.Ua(b);a.Ua=b;b.root=a;c?qb=a:d&&(d.gb=b,d.Ua&&d.Ua.pc.push(b))}function Lb(a,b,c){var d=Ab(a,{parent:!0}).node;a=a&&a.match(/([^\/]+|\/)\/*$/)[1];if(!a)throw new O(28);if("."===a||".."===a)throw new O(20);var e=Fb(d,a);if(e)throw new O(e);if(!d.ya.qb)throw new O(63);return d.ya.qb(d,a,b,c)} +function Mb(a,b=438){return Lb(a,b&4095|32768,0)}function S(a){return Lb(a,16895,0)}function Nb(a,b,c){"undefined"==typeof c&&(c=b,b=438);return Lb(a,b|8192,c)}function Ob(a,b){if(!Ra(a))throw new O(44);var c=Ab(b,{parent:!0}).node;if(!c)throw new O(44);b=b&&b.match(/([^\/]+|\/)\/*$/)[1];var d=Fb(c,b);if(d)throw new O(d);if(!c.ya.ub)throw new O(63);c.ya.ub(c,b,a)} +function Pb(a){var b=Ab(a,{parent:!0}).node;if(!b)throw new O(44);a=a&&a.match(/([^\/]+|\/)\/*$/)[1];var c=gb(b,a);a:{try{var d=gb(b,a)}catch(f){d=f.Ea;break a}var e=Db(b,"wx");d=e?e:Q(d.mode)?31:0}if(d)throw new O(d);if(!b.ya.vb)throw new O(63);if(c.gb)throw new O(10);b.ya.vb(b,a);hb(c)}function Qb(a,b){a=Ab(a,{mb:!b}).node;return Gb(a.ya.Oa)(a)}function Rb(a,b){a="string"==typeof a?Ab(a,{mb:!0}).node:a;Jb(a,{mode:b&4095|a.mode&-4096,Ka:Date.now(),Gc:void 0})} +function Sb(a,b,c=438){if(""===a)throw new O(44);if("string"==typeof b){var d={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[b];if("undefined"==typeof d)throw Error(`Unknown file open mode: ${b}`);b=d}c=b&64?c&4095|32768:0;if("object"==typeof a)d=a;else{var e=a.endsWith("/");a=Ab(a,{mb:!(b&131072),rc:!0});d=a.node;a=a.path}var f=!1;if(b&64)if(d){if(b&128)throw new O(20);}else{if(e)throw new O(31);d=Lb(a,c|511,0);f=!0}if(!d)throw new O(44);8192===(d.mode&61440)&&(b&=-513);if(b&65536&&!Q(d.mode))throw new O(54); +if(!f&&(e=d?40960===(d.mode&61440)?32:Q(d.mode)&&("r"!==Eb(b)||b&576)?31:Db(d,Eb(b)):44))throw new O(e);if(b&512&&!f){e=d;e="string"==typeof e?Ab(e,{mb:!0}).node:e;if(Q(e.mode))throw new O(31);if(32768!==(e.mode&61440))throw new O(28);var g=Db(e,"w");if(g)throw new O(g);Jb(e,{size:0,timestamp:Date.now()})}b&=-131713;e=Hb({node:d,path:Bb(d),flags:b,seekable:!0,position:0,wa:d.wa,Ac:[],error:!1});e.wa.open&&e.wa.open(e);f&&Rb(d,c&511);!l.logReadFiles||b&1||a in xb||(xb[a]=1);return e} +function Tb(a){if(null===a.Ya)throw new O(8);a.zb&&(a.zb=null);try{a.wa.close&&a.wa.close(a)}catch(b){throw b;}finally{sb[a.Ya]=null}a.Ya=null}function Ub(a,b,c){if(null===a.Ya)throw new O(8);if(!a.seekable||!a.wa.Pa)throw new O(70);if(0!=c&&1!=c&&2!=c)throw new O(28);a.position=a.wa.Pa(a,b,c);a.Ac=[]} +function Vb(a,b,c,d,e,f){if(0>d||0>e)throw new O(28);if(null===a.Ya)throw new O(8);if(0===(a.flags&2097155))throw new O(8);if(Q(a.node.mode))throw new O(31);if(!a.wa.write)throw new O(28);a.seekable&&a.flags&1024&&Ub(a,0,2);var g="undefined"!=typeof e;if(!g)e=a.position;else if(!a.seekable)throw new O(70);b=a.wa.write(a,b,c,d,e,f);g||(a.position+=b);return b} +function Wb(a,b){a="string"==typeof a?a:Bb(a);for(b=b.split("/").reverse();b.length;){var c=b.pop();if(c){var d=Na(a+"/"+c);try{S(d)}catch(e){if(20!=e.Ea)throw e;}a=d}}return d}function Xb(a,b,c,d){a=Na(("string"==typeof a?a:Bb(a))+"/"+b);return Mb(a,ib(c,d))} function Yb(a,b,c,d,e,f){var g=b;a&&(a="string"==typeof a?a:Bb(a),g=b?Na(a+"/"+b):a);a=ib(d,e);g=Mb(g,a);if(c){if("string"==typeof c){b=Array(c.length);d=0;for(e=c.length;d=n.length)return 0;u=Math.min(n.length-w,u);if(n.slice)for(var x=0;xthis.length-1||0>n)){var t=n%this.Lb;return this.eb(n/this.Lb|0)[t]}}wc(n){this.eb=n}Jb(){var n=new XMLHttpRequest;n.open("HEAD",c,!1);n.send(null);200<=n.status&&300>n.status||304===n.status||H("Couldn't load "+c+". Status: "+n.status);var t=Number(n.getResponseHeader("Content-length")), -z,u=(z=n.getResponseHeader("Accept-Ranges"))&&"bytes"===z;n=(z=n.getResponseHeader("Content-Encoding"))&&"gzip"===z;var w=1048576;u||(w=t);var x=this;x.wc(E=>{var F=E*w,L=(E+1)*w-1;L=Math.min(L,t-1);if("undefined"==typeof x.mb[E]){var y=x.mb;F>L&&H("invalid range ("+F+", "+L+") or no bytes requested!");L>t-1&&H("only "+t+" bytes available! programmer error!");var J=new XMLHttpRequest;J.open("GET",c,!1);t!==w&&J.setRequestHeader("Range","bytes="+F+"-"+L);J.responseType="arraybuffer";J.overrideMimeType&& -J.overrideMimeType("text/plain; charset=x-user-defined");J.send(null);200<=J.status&&300>J.status||304===J.status||H("Couldn't load "+c+". Status: "+J.status);F=void 0!==J.response?new Uint8Array(J.response||[]):Wa(J.responseText||"");y[E]=F}"undefined"==typeof x.mb[E]&&H("doXHR failed!");return x.mb[E]});if(n||!t)w=t=1,w=t=this.eb(0).length,ja("LazyFiles on gzip forces download of the whole file when length is accessed");this.Ib=t;this.Hb=w;this.Cb=!0}get length(){this.Cb||this.Jb();return this.Ib}get Lb(){this.Cb|| -this.Jb();return this.Hb}}if(globalThis.XMLHttpRequest){ba||H("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var h=new g;var k=void 0}else k=c,h=void 0;var m=Xb(a,b,d,e);h?m.ya=h:k&&(m.ya=null,m.url=k);Object.defineProperties(m,{Ea:{get:function(){return this.ya.length}}});var p={};Object.keys(m.xa).forEach(n=>{var t=m.xa[n];p[n]=(...z)=>{$b(m);return t(...z)}});p.read=(n,t,z,u,w)=>{$b(m);return f(n,t,z,u,w)};p.gb=(n,t,z)=>{$b(m); -var u=db(t);if(!u)throw new O(48);f(n,r,u,t,z);return{Aa:u,Xa:!0}};m.xa=p;return m}var T={},bc=(a,b,c)=>a?M(v,a,b,c):"";function cc(a,b,c){if("/"===b.charAt(0))return b;a=-100===a?"/":R(a).path;if(0==b.length){if(!c)throw new O(44);return a}return a+"/"+b} -function dc(a,b){D[a>>2]=b.Zb;D[a+4>>2]=b.mode;D[a+8>>2]=b.rc;D[a+12>>2]=b.uid;D[a+16>>2]=b.fc;D[a+20>>2]=b.jb;G[a+24>>3]=BigInt(b.size);B[a+32>>2]=4096;B[a+36>>2]=b.Xb;var c=b.Ya.getTime(),d=b.Ma.getTime(),e=b.La.getTime();G[a+40>>3]=BigInt(Math.floor(c/1E3));D[a+48>>2]=c%1E3*1E6;G[a+56>>3]=BigInt(Math.floor(d/1E3));D[a+64>>2]=d%1E3*1E6;G[a+72>>3]=BigInt(Math.floor(e/1E3));D[a+80>>2]=e%1E3*1E6;G[a+88>>3]=BigInt(b.ic);return 0}var Ka=void 0,ec={},fc=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}}; -function gc(a){return this.Ga(D[a>>2])} +function Zb(a,b,c,d){a=Na(("string"==typeof a?a:Bb(a))+"/"+b);b=ib(!!c,!!d);Zb.Qb??(Zb.Qb=64);var e=Zb.Qb++<<8|0;Za(e,{open(f){f.seekable=!1},close(){d?.buffer?.length&&d(10)},read(f,g,h,k){for(var m=0,p=0;p=n.length)return 0;u=Math.min(n.length-w,u);if(n.slice)for(var x=0;xthis.length-1||0>n)){var t=n%this.Kb;return this.cb(n/this.Kb|0)[t]}}vc(n){this.cb=n}Ib(){var n=new XMLHttpRequest;n.open("HEAD",c,!1);n.send(null);200<=n.status&&300>n.status||304===n.status||H("Couldn't load "+c+". Status: "+n.status);var t=Number(n.getResponseHeader("Content-length")), +z,u=(z=n.getResponseHeader("Accept-Ranges"))&&"bytes"===z;n=(z=n.getResponseHeader("Content-Encoding"))&&"gzip"===z;var w=1048576;u||(w=t);var x=this;x.vc(E=>{var F=E*w,K=(E+1)*w-1;K=Math.min(K,t-1);if("undefined"==typeof x.lb[E]){var y=x.lb;F>K&&H("invalid range ("+F+", "+K+") or no bytes requested!");K>t-1&&H("only "+t+" bytes available! programmer error!");var J=new XMLHttpRequest;J.open("GET",c,!1);t!==w&&J.setRequestHeader("Range","bytes="+F+"-"+K);J.responseType="arraybuffer";J.overrideMimeType&& +J.overrideMimeType("text/plain; charset=x-user-defined");J.send(null);200<=J.status&&300>J.status||304===J.status||H("Couldn't load "+c+". Status: "+J.status);F=void 0!==J.response?new Uint8Array(J.response||[]):Wa(J.responseText||"");y[E]=F}"undefined"==typeof x.lb[E]&&H("doXHR failed!");return x.lb[E]});if(n||!t)w=t=1,w=t=this.cb(0).length,ja("LazyFiles on gzip forces download of the whole file when length is accessed");this.Hb=t;this.Gb=w;this.Bb=!0}get length(){this.Bb||this.Ib();return this.Hb}get Kb(){this.Bb|| +this.Ib();return this.Gb}}if(globalThis.XMLHttpRequest){ba||H("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var h=new g;var k=void 0}else k=c,h=void 0;var m=Xb(a,b,d,e);h?m.xa=h:k&&(m.xa=null,m.url=k);Object.defineProperties(m,{Da:{get:function(){return this.xa.length}}});var p={};Object.keys(m.wa).forEach(n=>{var t=m.wa[n];p[n]=(...z)=>{$b(m);return t(...z)}});p.read=(n,t,z,u,w)=>{$b(m);return f(n,t,z,u,w)};p.fb=(n,t,z)=>{$b(m); +var u=db(t);if(!u)throw new O(48);f(n,r,u,t,z);return{za:u,Wa:!0}};m.wa=p;return m}var T={},bc=(a,b,c)=>a?M(v,a,b,c):"";function cc(a,b,c){if("/"===b.charAt(0))return b;a=-100===a?"/":R(a).path;if(0==b.length){if(!c)throw new O(44);return a}return a+"/"+b} +function dc(a,b){D[a>>2]=b.Yb;D[a+4>>2]=b.mode;D[a+8>>2]=b.qc;D[a+12>>2]=b.uid;D[a+16>>2]=b.ec;D[a+20>>2]=b.ib;G[a+24>>3]=BigInt(b.size);B[a+32>>2]=4096;B[a+36>>2]=b.Wb;var c=b.Xa.getTime(),d=b.La.getTime(),e=b.Ka.getTime();G[a+40>>3]=BigInt(Math.floor(c/1E3));D[a+48>>2]=c%1E3*1E6;G[a+56>>3]=BigInt(Math.floor(d/1E3));D[a+64>>2]=d%1E3*1E6;G[a+72>>3]=BigInt(Math.floor(e/1E3));D[a+80>>2]=e%1E3*1E6;G[a+88>>3]=BigInt(b.hc);return 0}var Ka=void 0,ec={},fc=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}}; +function gc(a){return this.Fa(D[a>>2])} var hc={},ic={},jc={},kc=class extends Error{constructor(a){super(a);this.name="InternalError"}},lc=(a,b,c)=>{function d(h){h=c(h);if(h.length!==a.length)throw new kc("Mismatched type converter count");for(var k=0;kjc[h]=b);var e=Array(b.length),f=[],g=0;b.forEach((h,k)=>{ic.hasOwnProperty(h)?e[k]=ic[h]:(f.push(h),hc.hasOwnProperty(h)||(hc[h]=[]),hc[h].push(()=>{e[k]=ic[h];++g;g===f.length&&d(e)}))});0===f.length&&d(e)},V=a=>{for(var b="";;){var c=v[a++];if(!c)return b; -b+=String.fromCharCode(c)}},W=class extends Error{constructor(a){super(a);this.name="BindingError"}};function mc(a,b,c={}){var d=b.name;if(!a)throw new W(`type "${d}" must have a positive integer typeid pointer`);if(ic.hasOwnProperty(a)){if(c.hc)return;throw new W(`Cannot register type '${d}' twice`);}ic[a]=b;delete jc[a];hc.hasOwnProperty(a)&&(b=hc[a],delete hc[a],b.forEach(e=>e()))}function U(a,b,c={}){return mc(a,b,c)} -var nc=(a,b,c)=>{switch(b){case 1:return c?d=>r[d]:d=>v[d];case 2:return c?d=>A[d>>1]:d=>pa[d>>1];case 4:return c?d=>B[d>>2]:d=>D[d>>2];case 8:return c?d=>G[d>>3]:d=>ta[d>>3];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},oc=a=>{throw new W(a.wa.Da.Ca.name+" instance already deleted");},pc=!1,qc=()=>{},rc=a=>{if(!globalThis.FinalizationRegistry)return rc=b=>b,a;pc=new FinalizationRegistry(b=>{b=b.wa;--b.count.value;0===b.count.value&&(b.Ia?b.Na.Sa(b.Ia):b.Da.Ca.Sa(b.Aa))});rc= -b=>{var c=b.wa;c.Ia&&pc.register(b,{wa:c},b);return b};qc=b=>{pc.unregister(b)};return rc(a)},sc=[];function tc(){} -var uc=(a,b)=>Object.defineProperty(b,"name",{value:a}),vc={},wc=(a,b,c)=>{if(void 0===a[b].Ha){var d=a[b];a[b]=function(...e){if(!a[b].Ha.hasOwnProperty(e.length))throw new W(`Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].Ha})!`);return a[b].Ha[e.length].apply(this,e)};a[b].Ha=[];a[b].Ha[d.bb]=d}},xc=(a,b,c)=>{if(l.hasOwnProperty(a)){if(void 0===c||void 0!==l[a].Ha&&void 0!==l[a].Ha[c])throw new W(`Cannot register public name '${a}' twice`);wc(l, -a,a);if(l[a].Ha.hasOwnProperty(c))throw new W(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);l[a].Ha[c]=b}else l[a]=b,l[a].bb=c},yc=a=>{a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a};function zc(a,b,c,d,e,f,g,h){this.name=a;this.constructor=b;this.$a=c;this.Sa=d;this.Ka=e;this.bc=f;this.lb=g;this.$b=h;this.uc=[]} -var Ac=(a,b,c)=>{for(;b!==c;){if(!b.lb)throw new W(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.lb(a);b=b.Ka}return a},Bc=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a}; -function Cc(a,b){if(null===b){if(this.Bb)throw new W(`null is not a valid ${this.name}`);return 0}if(!b.wa)throw new W(`Cannot pass "${Bc(b)}" as a ${this.name}`);if(!b.wa.Aa)throw new W(`Cannot pass deleted object as a pointer of type ${this.name}`);return Ac(b.wa.Aa,b.wa.Da.Ca,this.Ca)} -function Dc(a,b){if(null===b){if(this.Bb)throw new W(`null is not a valid ${this.name}`);if(this.qb){var c=this.Eb();null!==a&&a.push(this.Sa,c);return c}return 0}if(!b||!b.wa)throw new W(`Cannot pass "${Bc(b)}" as a ${this.name}`);if(!b.wa.Aa)throw new W(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.pb&&b.wa.Da.pb)throw new W(`Cannot convert argument of type ${b.wa.Na?b.wa.Na.name:b.wa.Da.name} to parameter type ${this.name}`);c=Ac(b.wa.Aa,b.wa.Da.Ca,this.Ca);if(this.qb){if(void 0=== -b.wa.Ia)throw new W("Passing raw pointer to smart pointer is illegal");switch(this.Ac){case 0:if(b.wa.Na===this)c=b.wa.Ia;else throw new W(`Cannot convert argument of type ${b.wa.Na?b.wa.Na.name:b.wa.Da.name} to parameter type ${this.name}`);break;case 1:c=b.wa.Ia;break;case 2:if(b.wa.Na===this)c=b.wa.Ia;else{var d=b.clone();c=this.vc(c,Ec(()=>d["delete"]()));null!==a&&a.push(this.Sa,c)}break;default:throw new W("Unsupporting sharing policy");}}return c} -function Fc(a,b){if(null===b){if(this.Bb)throw new W(`null is not a valid ${this.name}`);return 0}if(!b.wa)throw new W(`Cannot pass "${Bc(b)}" as a ${this.name}`);if(!b.wa.Aa)throw new W(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.wa.Da.pb)throw new W(`Cannot convert argument of type ${b.wa.Da.name} to parameter type ${this.name}`);return Ac(b.wa.Aa,b.wa.Da.Ca,this.Ca)} -var Gc=(a,b,c)=>{if(b===c)return a;if(void 0===c.Ka)return null;a=Gc(a,b,c.Ka);return null===a?null:c.$b(a)},Hc={},Ic=(a,b)=>{if(void 0===b)throw new W("ptr should not be undefined");for(;a.Ka;)b=a.lb(b),a=a.Ka;return Hc[b]},Jc=(a,b)=>{if(!b.Da||!b.Aa)throw new kc("makeClassHandle requires ptr and ptrType");if(!!b.Na!==!!b.Ia)throw new kc("Both smartPtrType and smartPtr must be specified");b.count={value:1};return rc(Object.create(a,{wa:{value:b,writable:!0}}))}; -function Kc(a,b,c,d,e,f,g,h,k,m,p){this.name=a;this.Ca=b;this.Bb=c;this.pb=d;this.qb=e;this.tc=f;this.Ac=g;this.Tb=h;this.Eb=k;this.vc=m;this.Sa=p;e||void 0!==b.Ka?this.Ja=Dc:(this.Ja=d?Cc:Fc,this.Oa=null)}var Lc=(a,b,c)=>{if(!l.hasOwnProperty(a))throw new kc("Replacing nonexistent public symbol");void 0!==l[a].Ha&&void 0!==c?l[a].Ha[c]=b:(l[a]=b,l[a].bb=c)},X=(a,b)=>{a=V(a);var c=K(b);if("function"!=typeof c)throw new W(`unknown function pointer with signature ${a}: ${b}`);return c}; -class Mc extends Error{}var Pc=a=>{a=Nc(a);var b=V(a);Oc(a);return b},Qc=(a,b)=>{function c(f){e[f]||ic[f]||(jc[f]?jc[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new Mc(`${a}: `+d.map(Pc).join([", "]));};function Rc(a){for(var b=1;bf)throw new W("argTypes array size mismatch! Must at least get return value and 'this' types!");var g=null!==b[1]&&null!==c,h=Rc(b),k=!b[0].pc,m=f-2,p=Array(m),n=[],t=[];return uc(a,function(...z){t.length=0;n.length=g?2:1;n[0]=e;if(g){var u=b[1].Ja(t,this);n[1]=u}for(var w=0;w{for(var c=[],d=0;d>2]);return c},Uc=a=>{a=a.trim();const b=a.indexOf("(");return-1===b?a:a.slice(0,b)},Vc=[],Wc=[0,1,,1,null,1,!0,1,!1,1],Xc=a=>{9{if(!a)throw new W(`Cannot use deleted val. handle = ${a}`);return Wc[a]},Ec=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=Vc.pop()||Wc.length;Wc[b]=a;Wc[b+1]=1;return b}},Zc={name:"emscripten::val",Ga:a=>{var b= -Yc(a);Xc(a);return b},Ja:(a,b)=>Ec(b),Ta:gc,Oa:null},$c=(a,b)=>{switch(b){case 4:return function(c){return this.Ga(qa[c>>2])};case 8:return function(c){return this.Ga(sa[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},ad=Object.assign({optional:!0},Zc),bd=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,cd=(a,b,c)=>{a>>=1;b=Ta(pa,a,b/2,c);if(16{c??=2147483647; +b+=String.fromCharCode(c)}},W=class extends Error{constructor(a){super(a);this.name="BindingError"}};function mc(a,b,c={}){var d=b.name;if(!a)throw new W(`type "${d}" must have a positive integer typeid pointer`);if(ic.hasOwnProperty(a)){if(c.fc)return;throw new W(`Cannot register type '${d}' twice`);}ic[a]=b;delete jc[a];hc.hasOwnProperty(a)&&(b=hc[a],delete hc[a],b.forEach(e=>e()))}function U(a,b,c={}){return mc(a,b,c)} +var nc=(a,b,c)=>{switch(b){case 1:return c?d=>r[d]:d=>v[d];case 2:return c?d=>A[d>>1]:d=>pa[d>>1];case 4:return c?d=>B[d>>2]:d=>D[d>>2];case 8:return c?d=>G[d>>3]:d=>ta[d>>3];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},oc=a=>{throw new W(a.va.Ca.Ba.name+" instance already deleted");},pc=!1,qc=()=>{},rc=a=>{if(!globalThis.FinalizationRegistry)return rc=b=>b,a;pc=new FinalizationRegistry(b=>{b=b.va;--b.count.value;0===b.count.value&&(b.Ha?b.Ma.Ra(b.Ha):b.Ca.Ba.Ra(b.za))});rc= +b=>{var c=b.va;c.Ha&&pc.register(b,{va:c},b);return b};qc=b=>{pc.unregister(b)};return rc(a)},sc=[];function tc(){} +var uc=(a,b)=>Object.defineProperty(b,"name",{value:a}),vc={},wc=(a,b,c)=>{if(void 0===a[b].Ga){var d=a[b];a[b]=function(...e){if(!a[b].Ga.hasOwnProperty(e.length))throw new W(`Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].Ga})!`);return a[b].Ga[e.length].apply(this,e)};a[b].Ga=[];a[b].Ga[d.ab]=d}},xc=(a,b,c)=>{if(l.hasOwnProperty(a)){if(void 0===c||void 0!==l[a].Ga&&void 0!==l[a].Ga[c])throw new W(`Cannot register public name '${a}' twice`);wc(l, +a,a);if(l[a].Ga.hasOwnProperty(c))throw new W(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);l[a].Ga[c]=b}else l[a]=b,l[a].ab=c},yc=a=>{a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a};function zc(a,b,c,d,e,f,g,h){this.name=a;this.constructor=b;this.Za=c;this.Ra=d;this.Ja=e;this.ac=f;this.kb=g;this.Zb=h;this.tc=[]} +var Ac=(a,b,c)=>{for(;b!==c;){if(!b.kb)throw new W(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.kb(a);b=b.Ja}return a},Bc=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a}; +function Cc(a,b){if(null===b){if(this.Ab)throw new W(`null is not a valid ${this.name}`);return 0}if(!b.va)throw new W(`Cannot pass "${Bc(b)}" as a ${this.name}`);if(!b.va.za)throw new W(`Cannot pass deleted object as a pointer of type ${this.name}`);return Ac(b.va.za,b.va.Ca.Ba,this.Ba)} +function Dc(a,b){if(null===b){if(this.Ab)throw new W(`null is not a valid ${this.name}`);if(this.pb){var c=this.Db();null!==a&&a.push(this.Ra,c);return c}return 0}if(!b||!b.va)throw new W(`Cannot pass "${Bc(b)}" as a ${this.name}`);if(!b.va.za)throw new W(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.ob&&b.va.Ca.ob)throw new W(`Cannot convert argument of type ${b.va.Ma?b.va.Ma.name:b.va.Ca.name} to parameter type ${this.name}`);c=Ac(b.va.za,b.va.Ca.Ba,this.Ba);if(this.pb){if(void 0=== +b.va.Ha)throw new W("Passing raw pointer to smart pointer is illegal");switch(this.zc){case 0:if(b.va.Ma===this)c=b.va.Ha;else throw new W(`Cannot convert argument of type ${b.va.Ma?b.va.Ma.name:b.va.Ca.name} to parameter type ${this.name}`);break;case 1:c=b.va.Ha;break;case 2:if(b.va.Ma===this)c=b.va.Ha;else{var d=b.clone();c=this.uc(c,Ec(()=>d["delete"]()));null!==a&&a.push(this.Ra,c)}break;default:throw new W("Unsupporting sharing policy");}}return c} +function Fc(a,b){if(null===b){if(this.Ab)throw new W(`null is not a valid ${this.name}`);return 0}if(!b.va)throw new W(`Cannot pass "${Bc(b)}" as a ${this.name}`);if(!b.va.za)throw new W(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.va.Ca.ob)throw new W(`Cannot convert argument of type ${b.va.Ca.name} to parameter type ${this.name}`);return Ac(b.va.za,b.va.Ca.Ba,this.Ba)} +var Gc=(a,b,c)=>{if(b===c)return a;if(void 0===c.Ja)return null;a=Gc(a,b,c.Ja);return null===a?null:c.Zb(a)},Hc={},Ic=(a,b)=>{if(void 0===b)throw new W("ptr should not be undefined");for(;a.Ja;)b=a.kb(b),a=a.Ja;return Hc[b]},Jc=(a,b)=>{if(!b.Ca||!b.za)throw new kc("makeClassHandle requires ptr and ptrType");if(!!b.Ma!==!!b.Ha)throw new kc("Both smartPtrType and smartPtr must be specified");b.count={value:1};return rc(Object.create(a,{va:{value:b,writable:!0}}))}; +function Kc(a,b,c,d,e,f,g,h,k,m,p){this.name=a;this.Ba=b;this.Ab=c;this.ob=d;this.pb=e;this.sc=f;this.zc=g;this.Sb=h;this.Db=k;this.uc=m;this.Ra=p;e||void 0!==b.Ja?this.Ia=Dc:(this.Ia=d?Cc:Fc,this.Na=null)}var Lc=(a,b,c)=>{if(!l.hasOwnProperty(a))throw new kc("Replacing nonexistent public symbol");void 0!==l[a].Ga&&void 0!==c?l[a].Ga[c]=b:(l[a]=b,l[a].ab=c)},X=(a,b)=>{a=V(a);var c=L(b);if("function"!=typeof c)throw new W(`unknown function pointer with signature ${a}: ${b}`);return c}; +class Mc extends Error{}var Pc=a=>{a=Nc(a);var b=V(a);Oc(a);return b},Qc=(a,b)=>{function c(f){e[f]||ic[f]||(jc[f]?jc[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new Mc(`${a}: `+d.map(Pc).join([", "]));};function Rc(a){for(var b=1;bf)throw new W("argTypes array size mismatch! Must at least get return value and 'this' types!");var g=null!==b[1]&&null!==c,h=Rc(b),k=!b[0].oc,m=f-2,p=Array(m),n=[],t=[];return uc(a,function(...z){t.length=0;n.length=g?2:1;n[0]=e;if(g){var u=b[1].Ia(t,this);n[1]=u}for(var w=0;w{for(var c=[],d=0;d>2]);return c},Uc=a=>{a=a.trim();const b=a.indexOf("(");return-1===b?a:a.slice(0,b)},Vc=[],Wc=[0,1,,1,null,1,!0,1,!1,1],Xc=a=>{9{if(!a)throw new W(`Cannot use deleted val. handle = ${a}`);return Wc[a]},Ec=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=Vc.pop()||Wc.length;Wc[b]=a;Wc[b+1]=1;return b}},Zc={name:"emscripten::val",Fa:a=>{var b= +Yc(a);Xc(a);return b},Ia:(a,b)=>Ec(b),Sa:gc,Na:null},$c=(a,b)=>{switch(b){case 4:return function(c){return this.Fa(ra[c>>2])};case 8:return function(c){return this.Fa(sa[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},ad=Object.assign({optional:!0},Zc),bd=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,cd=(a,b,c)=>{a>>=1;b=Ta(pa,a,b/2,c);if(16{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>1]=a.charCodeAt(e),b+=2;A[b>>1]=0;return b-d},ed=a=>2*a.length,fd=(a,b,c)=>{var d="";a>>=2;for(var e=0;!(e>=b/4);e++){var f=D[a+e];if(!f&&!c)break;d+=String.fromCodePoint(f)}return d},gd=(a,b,c)=>{c??=2147483647;if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e>2]=f;b+=4;if(b+4>c)break}B[b>>2]=0;return b-d},hd=a=>{for(var b=0,c=0;c{var b=kd.length;kd.push(a);return b},md=(a,b)=>{for(var c=Array(a),d=0;d>2],g=ic[f];if(void 0===g)throw a=`${`parameter ${d}`} has unknown type ${Pc(f)}`,new W(a);c[e]=g}return c},nd={},od=a=>{var b=nd[a];return void 0===b?V(a):b},pd=a=>0===a%4&&(0!==a%100||0===a%400),qd=[0,31,60,91,121,152,182,213,244,274,305,335],rd=[0,31,59,90,120,151,181,212,243,273,304,334],sd={},td=a=>{if(!(a instanceof Ba||"unwind"==a))throw a;},ud=a=>{ma=a;Ga|| -0{if(!la)try{if(a(),!(Ga||0{if(!la)try{if(a(),!(Ga||0{try{var c=indexedDB.open("emscripten_filesystem",1)}catch(d){return b(d)}c.onupgradeneeded=d=>{d=d.target.result;d.objectStoreNames.contains("FILES")&&d.deleteObjectStore("FILES");d.createObjectStore("FILES")};c.onsuccess=d=>a(d.target.result);c.onerror=b})}var Y,Ad; -function Bd(a,b,c,d,e){function f(){var I=0,C=0;y.response&&E&&0===D[a+12>>2]&&(C=y.response.byteLength);0>2]=I;Z(a+16,C);Z(a+24,0);(I=y.response?y.response.byteLength:0)&&Z(a+32,I);A[a+40>>1]=y.readyState;A[a+42>>1]=y.status;y.statusText&&N(y.statusText,v,a+44,64);L&&(I=Dd(y.responseURL),D[a+200>>2]=I)}var g=D[a+8>>2];if(g){var h=g?M(v,g):"",k=a+108,m=bc(k+0);m||="GET";var p=D[k+56>>2],n=D[k+68>>2],t=D[k+72>>2];g=D[k+76>>2];var z=D[k+80>>2], -u=D[k+84>>2],w=D[k+88>>2],x=D[k+52>>2],E=!!(x&1),F=!!(x&2),L=!!(x&64);n=n?n?M(v,n):"":void 0;t=t?t?M(v,t):"":void 0;var y=new XMLHttpRequest;y.withCredentials=!!v[k+60];y.open(m,h,!L,n,t);L||(y.timeout=p);y.Oc=h;y.responseType="arraybuffer";z&&(h=z?M(v,z):"",y.overrideMimeType(h));if(g)for(;;){k=D[g>>2];if(!k)break;h=D[g+4>>2];if(!h)break;g+=8;k=k?M(v,k):"";h=h?M(v,h):"";y.setRequestHeader(k,h)}var J=xd(y);D[a>>2]=J;g=u&&w?v.slice(u,u+w):null;y.onload=I=>{Y.has(J)&&(f(),200<=y.status&&300>y.status? -b(a,y,I):c(a,I))};y.onerror=I=>{Y.has(J)&&(f(),c(a,I))};y.ontimeout=I=>{Y.has(J)&&c(a,I)};y.onprogress=I=>{if(Y.has(J)){var C=E&&F&&y.response?y.response.byteLength:0,ra=0;0>2]=ra;Z(a+16,C);Z(a+24,I.loaded-C);Z(a+32,I.total);A[a+40>>1]=y.readyState;C=y.status;3<=y.readyState&&0===y.status&&0>1]=C;y.statusText&&N(y.statusText,v,a+44,64);d(a,I);Oc(ra)}};y.onreadystatechange=I=>{if(Y.has(J)){A[a+40>>1]=y.readyState; -2<=y.readyState&&(A[a+42>>1]=y.status);if(!L&&2===y.readyState&&0>2]=C}e(a,I)}};try{y.send(g)}catch(I){c(a,I)}}else c(a,"no url specified!")}var Z=(a,b)=>{D[a>>2]=b;D[a+4>>2]=(b-D[a>>2])/4294967296},Dd=a=>{var b=Va(a)+1,c=Cd(b);c&&N(a,v,c,b);return c}; +function Bd(a,b,c,d,e){function f(){var I=0,C=0;y.response&&E&&0===D[a+12>>2]&&(C=y.response.byteLength);0>2]=I;Z(a+16,C);Z(a+24,0);(I=y.response?y.response.byteLength:0)&&Z(a+32,I);A[a+40>>1]=y.readyState;A[a+42>>1]=y.status;y.statusText&&N(y.statusText,v,a+44,64);K&&(I=Dd(y.responseURL),D[a+200>>2]=I)}var g=D[a+8>>2];if(g){var h=g?M(v,g):"",k=a+108,m=bc(k+0);m||="GET";var p=D[k+56>>2],n=D[k+68>>2],t=D[k+72>>2];g=D[k+76>>2];var z=D[k+80>>2], +u=D[k+84>>2],w=D[k+88>>2],x=D[k+52>>2],E=!!(x&1),F=!!(x&2),K=!!(x&64);n=n?n?M(v,n):"":void 0;t=t?t?M(v,t):"":void 0;var y=new XMLHttpRequest;y.withCredentials=!!v[k+60];y.open(m,h,!K,n,t);K||(y.timeout=p);y.Nc=h;y.responseType="arraybuffer";z&&(h=z?M(v,z):"",y.overrideMimeType(h));if(g)for(;;){k=D[g>>2];if(!k)break;h=D[g+4>>2];if(!h)break;g+=8;k=k?M(v,k):"";h=h?M(v,h):"";y.setRequestHeader(k,h)}var J=xd(y);D[a>>2]=J;g=u&&w?v.slice(u,u+w):null;y.onload=I=>{Y.has(J)&&(f(),200<=y.status&&300>y.status? +b(a,y,I):c(a,I))};y.onerror=I=>{Y.has(J)&&(f(),c(a,I))};y.ontimeout=I=>{Y.has(J)&&c(a,I)};y.onprogress=I=>{if(Y.has(J)){var C=E&&F&&y.response?y.response.byteLength:0,qa=0;0>2]=qa;Z(a+16,C);Z(a+24,I.loaded-C);Z(a+32,I.total);A[a+40>>1]=y.readyState;C=y.status;3<=y.readyState&&0===y.status&&0>1]=C;y.statusText&&N(y.statusText,v,a+44,64);d(a,I);Oc(qa)}};y.onreadystatechange=I=>{if(Y.has(J)){A[a+40>>1]=y.readyState; +2<=y.readyState&&(A[a+42>>1]=y.status);if(!K&&2===y.readyState&&0>2]=C}e(a,I)}};try{y.send(g)}catch(I){c(a,I)}}else c(a,"no url specified!")}var Z=(a,b)=>{D[a>>2]=b;D[a+4>>2]=(b-D[a>>2])/4294967296},Dd=a=>{var b=Va(a)+1,c=Cd(b);c&&N(a,v,c,b);return c}; function Ed(a,b,c,d){var e=Ad;if(e){var f=D[a+108+64>>2];f||=D[a+8>>2];var g=f?M(v,f):"";try{var h=e.transaction(["FILES"],"readwrite").objectStore("FILES").put(b,g);h.onsuccess=()=>{A[a+40>>1]=4;A[a+42>>1]=200;N("OK",v,a+44,64);c(a,0,g)};h.onerror=k=>{A[a+40>>1]=4;A[a+42>>1]=413;N("Payload Too Large",v,a+44,64);d(a,0,k)}}catch(k){d(a,0,k)}}else d(a,0,"IndexedDB not available!")} function Fd(a,b,c){var d=Ad;if(d){var e=D[a+108+64>>2];e||=D[a+8>>2];e=e?M(v,e):"";try{var f=d.transaction(["FILES"],"readonly").objectStore("FILES").get(e);f.onsuccess=g=>{if(g.target.result){g=g.target.result;var h=g.byteLength||g.length,k=Cd(h);v.set(new Uint8Array(g),k);D[a+12>>2]=k;Z(a+16,h);Z(a+24,0);Z(a+32,h);A[a+40>>1]=4;A[a+42>>1]=200;N("OK",v,a+44,64);b(a,0,g)}else A[a+40>>1]=4,A[a+42>>1]=404,N("Not Found",v,a+44,64),c(a,0,"no data")};f.onerror=g=>{A[a+40>>1]=4;A[a+42>>1]=404;N("Not Found", v,a+44,64);c(a,0,g)}}catch(g){c(a,0,g)}}else c(a,0,"IndexedDB not available!")} function Gd(a,b,c){var d=Ad;if(d){var e=D[a+108+64>>2];e||=D[a+8>>2];e=e?M(v,e):"";try{var f=d.transaction(["FILES"],"readwrite").objectStore("FILES").delete(e);f.onsuccess=g=>{g=g.target.result;D[a+12>>2]=0;Z(a+16,0);Z(a+24,0);Z(a+32,0);A[a+40>>1]=4;A[a+42>>1]=200;N("OK",v,a+44,64);b(a,0,g)};f.onerror=g=>{A[a+40>>1]=4;A[a+42>>1]=404;N("Not Found",v,a+44,64);c(a,0,g)}}catch(g){c(a,0,g)}}else c(a,0,"IndexedDB not available!")} var Hd={},Jd=()=>{if(!Id){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.language||"C").replace("-","_")+".UTF-8",_:da||"./this.program"},b;for(b in Hd)void 0===Hd[b]?delete a[b]:a[b]=Hd[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);Id=c}return Id},Id;ub=Array(4096);Kb(P,"/");S("/tmp");S("/home");S("/home/web_user"); -(function(){S("/dev");Za(259,{read:()=>0,write:(d,e,f,g)=>g,Qa:()=>0});Nb("/dev/null",259);Ya(1280,ab);Ya(1536,bb);Nb("/dev/tty",1280);Nb("/dev/tty1",1536);var a=new Uint8Array(1024),b=0,c=()=>{0===b&&(Qa(a),b=a.byteLength);return a[--b]};Zb("/dev","random",c);Zb("/dev","urandom",c);S("/dev/shm");S("/dev/shm/tmp")})(); -(function(){S("/proc");var a=S("/proc/self");S("/proc/self/fd");Kb({Va(){var b=fb(a,"fd",16895,73);b.xa={Qa:P.xa.Qa};b.za={fb(c,d){c=+d;var e=R(c);c={parent:null,Va:{Sb:"fake"},za:{kb:()=>e.path},id:c+1};return c.parent=c},Fb(){return Array.from(sb.entries()).filter(([,c])=>c).map(([c])=>c.toString())}};return b}},"/proc/self/fd")})(); -(()=>{let a=tc.prototype;Object.assign(a,{isAliasOf:function(c){if(!(this instanceof tc&&c instanceof tc))return!1;var d=this.wa.Da.Ca,e=this.wa.Aa;c.wa=c.wa;var f=c.wa.Da.Ca;for(c=c.wa.Aa;d.Ka;)e=d.lb(e),d=d.Ka;for(;f.Ka;)c=f.lb(c),f=f.Ka;return d===f&&e===c},clone:function(){this.wa.Aa||oc(this);if(this.wa.ib)return this.wa.count.value+=1,this;var c=rc,d=Object,e=d.create,f=Object.getPrototypeOf(this),g=this.wa;c=c(e.call(d,f,{wa:{value:{count:g.count,cb:g.cb,ib:g.ib,Aa:g.Aa,Da:g.Da,Ia:g.Ia,Na:g.Na}}})); -c.wa.count.value+=1;c.wa.cb=!1;return c},["delete"](){this.wa.Aa||oc(this);if(this.wa.cb&&!this.wa.ib)throw new W("Object already scheduled for deletion");qc(this);var c=this.wa;--c.count.value;0===c.count.value&&(c.Ia?c.Na.Sa(c.Ia):c.Da.Ca.Sa(c.Aa));this.wa.ib||(this.wa.Ia=void 0,this.wa.Aa=void 0)},isDeleted:function(){return!this.wa.Aa},deleteLater:function(){this.wa.Aa||oc(this);if(this.wa.cb&&!this.wa.ib)throw new W("Object already scheduled for deletion");sc.push(this);this.wa.cb=!0;return this}}); +(function(){S("/dev");Za(259,{read:()=>0,write:(d,e,f,g)=>g,Pa:()=>0});Nb("/dev/null",259);Ya(1280,ab);Ya(1536,bb);Nb("/dev/tty",1280);Nb("/dev/tty1",1536);var a=new Uint8Array(1024),b=0,c=()=>{0===b&&(Qa(a),b=a.byteLength);return a[--b]};Zb("/dev","random",c);Zb("/dev","urandom",c);S("/dev/shm");S("/dev/shm/tmp")})(); +(function(){S("/proc");var a=S("/proc/self");S("/proc/self/fd");Kb({Ua(){var b=fb(a,"fd",16895,73);b.wa={Pa:P.wa.Pa};b.ya={eb(c,d){c=+d;var e=R(c);c={parent:null,Ua:{Rb:"fake"},ya:{jb:()=>e.path},id:c+1};return c.parent=c},Eb(){return Array.from(sb.entries()).filter(([,c])=>c).map(([c])=>c.toString())}};return b}},"/proc/self/fd")})(); +(()=>{let a=tc.prototype;Object.assign(a,{isAliasOf:function(c){if(!(this instanceof tc&&c instanceof tc))return!1;var d=this.va.Ca.Ba,e=this.va.za;c.va=c.va;var f=c.va.Ca.Ba;for(c=c.va.za;d.Ja;)e=d.kb(e),d=d.Ja;for(;f.Ja;)c=f.kb(c),f=f.Ja;return d===f&&e===c},clone:function(){this.va.za||oc(this);if(this.va.hb)return this.va.count.value+=1,this;var c=rc,d=Object,e=d.create,f=Object.getPrototypeOf(this),g=this.va;c=c(e.call(d,f,{va:{value:{count:g.count,bb:g.bb,hb:g.hb,za:g.za,Ca:g.Ca,Ha:g.Ha,Ma:g.Ma}}})); +c.va.count.value+=1;c.va.bb=!1;return c},["delete"](){this.va.za||oc(this);if(this.va.bb&&!this.va.hb)throw new W("Object already scheduled for deletion");qc(this);var c=this.va;--c.count.value;0===c.count.value&&(c.Ha?c.Ma.Ra(c.Ha):c.Ca.Ba.Ra(c.za));this.va.hb||(this.va.Ha=void 0,this.va.za=void 0)},isDeleted:function(){return!this.va.za},deleteLater:function(){this.va.za||oc(this);if(this.va.bb&&!this.va.hb)throw new W("Object already scheduled for deletion");sc.push(this);this.va.bb=!0;return this}}); const b=Symbol.dispose;b&&(a[b]=a["delete"])})(); -Object.assign(Kc.prototype,{cc(a){this.Tb&&(a=this.Tb(a));return a},Nb(a){this.Sa?.(a)},Ta:gc,Ga:function(a){function b(){return this.qb?Jc(this.Ca.$a,{Da:this.tc,Aa:c,Na:this,Ia:a}):Jc(this.Ca.$a,{Da:this,Aa:a})}var c=this.cc(a);if(!c)return this.Nb(a),null;var d=Ic(this.Ca,c);if(void 0!==d){if(0===d.wa.count.value)return d.wa.Aa=c,d.wa.Ia=a,d.clone();d=d.clone();this.Nb(a);return d}d=this.Ca.bc(c);d=vc[d];if(!d)return b.call(this);d=this.pb?d.Yb:d.pointerType;var e=Gc(c,this.Ca,d.Ca);return null=== -e?b.call(this):this.qb?Jc(d.Ca.$a,{Da:d,Aa:e,Na:this,Ia:a}):Jc(d.Ca.$a,{Da:d,Aa:e})}});(async function(){Y=new yd;nb("library_fetch_init");try{Ad=await zd()}catch(a){Ad=!1}finally{mb("library_fetch_init")}})();wa=l.wasmMemory?l.wasmMemory:new WebAssembly.Memory({initial:(l.INITIAL_MEMORY||209715200)/65536,maximum:32768});va();l.noExitRuntime&&(Ga=l.noExitRuntime);l.preloadPlugins&&(ob=l.preloadPlugins);l.print&&(ja=l.print);l.printErr&&(q=l.printErr);l.wasmBinary&&(ka=l.wasmBinary); +Object.assign(Kc.prototype,{bc(a){this.Sb&&(a=this.Sb(a));return a},Mb(a){this.Ra?.(a)},Sa:gc,Fa:function(a){function b(){return this.pb?Jc(this.Ba.Za,{Ca:this.sc,za:c,Ma:this,Ha:a}):Jc(this.Ba.Za,{Ca:this,za:a})}var c=this.bc(a);if(!c)return this.Mb(a),null;var d=Ic(this.Ba,c);if(void 0!==d){if(0===d.va.count.value)return d.va.za=c,d.va.Ha=a,d.clone();d=d.clone();this.Mb(a);return d}d=this.Ba.ac(c);d=vc[d];if(!d)return b.call(this);d=this.ob?d.Xb:d.pointerType;var e=Gc(c,this.Ba,d.Ba);return null=== +e?b.call(this):this.pb?Jc(d.Ba.Za,{Ca:d,za:e,Ma:this,Ha:a}):Jc(d.Ba.Za,{Ca:d,za:e})}});(async function(){Y=new yd;nb("library_fetch_init");try{Ad=await zd()}catch(a){Ad=!1}finally{mb("library_fetch_init")}})();wa=l.wasmMemory?l.wasmMemory:new WebAssembly.Memory({initial:(l.INITIAL_MEMORY||209715200)/65536,maximum:32768});va();l.noExitRuntime&&(Ga=l.noExitRuntime);l.preloadPlugins&&(ob=l.preloadPlugins);l.print&&(ja=l.print);l.printErr&&(q=l.printErr);l.wasmBinary&&(ka=l.wasmBinary); l.thisProgram&&(da=l.thisProgram);if(l.preInit)for("function"==typeof l.preInit&&(l.preInit=[l.preInit]);0{var k=b?Ra(Na(a+"/"+b)):a,m=`cp ${k}`;nb(m);try{var p=c;"string"==typeof c&&(p=await jb(c));p=await pb(p,k);h?.();f||Yb(a,b,p,d,e,g)}finally{mb(m)}};l.FS_unlink=(...a)=>Pb(...a);l.FS_createPath=(...a)=>Wb(...a);l.FS_createDevice=(...a)=>Zb(...a); -l.FS_createDataFile=(...a)=>Yb(...a);l.FS_createLazyFile=(...a)=>ac(...a);var Kd={203586:(a,b,c,d)=>{a=a?M(v,a):"";b=b?M(v,b):"";c=c?M(v,c):"";d=d?M(v,d):"";throw Error(a+b+c+d);},203802:(a,b)=>{a=a?M(v,a):"";b=b?M(v,b):"";throw Error(a+b);},203912:a=>{a=a?M(v,a):"";throw Error(a);},203980:a=>{a=a?M(v,a):"";throw Error(a);}},Nc,Cd,Oc,cb,Ld,Md,Nd,Od,Ja;l.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE=1024; -var Td={F:(a,b)=>K(a)(b),t:function(a,b,c){Ka=c;try{var d=R(a);switch(b){case 0:var e=La();if(0>e)break;for(;sb[e];)e++;return Ib(d,e).Za;case 1:case 2:return 0;case 3:return d.flags;case 4:return e=La(),d.flags|=e,0;case 12:return e=La(),A[e+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Fa}},Z:function(a,b){try{var c=R(a),d=c.node,e=c.xa.Pa;a=e?c:d;e??=d.za.Pa;Gb(e);var f=e(a);return dc(b,f)}catch(g){if("undefined"==typeof T|| -"ErrnoError"!==g.name)throw g;return-g.Fa}},_:function(a,b,c){Ka=c;try{var d=R(a);switch(b){case 21509:return d.Ba?0:-59;case 21505:if(!d.Ba)return-59;if(d.Ba.Wa.kc){a=[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var e=La();B[e>>2]=25856;B[e+4>>2]=5;B[e+8>>2]=191;B[e+12>>2]=35387;for(var f=0;32>f;f++)r[e+f+17]=a[f]||0}return 0;case 21510:case 21511:case 21512:return d.Ba?0:-59;case 21506:case 21507:case 21508:if(!d.Ba)return-59;if(d.Ba.Wa.lc)for(e=La(),a=[],f=0;32> -f;f++)a.push(r[e+f+17]);return 0;case 21519:if(!d.Ba)return-59;e=La();return B[e>>2]=0;case 21520:return d.Ba?-28:-59;case 21537:case 21531:e=La();if(!d.xa.jc)throw new O(59);return d.xa.jc(d,b,e);case 21523:if(!d.Ba)return-59;d.Ba.Wa.mc&&(f=[24,80],e=La(),A[e>>1]=f[0],A[e+2>>1]=f[1]);return 0;case 21524:return d.Ba?0:-59;case 21515:return d.Ba?0:-59;default:return-28}}catch(g){if("undefined"==typeof T||"ErrnoError"!==g.name)throw g;return-g.Fa}},X:function(a,b){try{return a=a?M(v,a):"",dc(b,Qb(a, -!0))}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return-c.Fa}},W:function(a,b,c,d){try{b=b?M(v,b):"";var e=d&256;b=cc(a,b,d&4096);return dc(c,e?Qb(b,!0):Qb(b))}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Fa}},u:function(a,b,c,d){Ka=d;try{b=b?M(v,b):"";b=cc(a,b);var e=d?La():0;return Sb(b,c,e).Za}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Fa}},Y:function(a,b){try{return a=a?M(v,a):"",dc(b,Qb(a))}catch(c){if("undefined"== -typeof T||"ErrnoError"!==c.name)throw c;return-c.Fa}},$:()=>H(""),e:a=>{var b=ec[a];delete ec[a];var c=b.Eb,d=b.Sa,e=b.Ob,f=e.map(g=>g.ec).concat(e.map(g=>g.yc));lc([a],f,g=>{var h={};e.forEach((k,m)=>{var p=g[m],n=k.eb,t=k.dc,z=g[m+e.length],u=k.xc,w=k.zc;h[k.ac]={read:x=>p.Ga(n(t,x)),write:(x,E)=>{var F=[];u(w,x,z.Ja(F,E));fc(F)},optional:g[m].optional}});return[{name:b.name,Ga:k=>{var m={},p;for(p in h)m[p]=h[p].read(k);d(k);return m},Ja:(k,m)=>{for(var p in h)if(!(p in m||h[p].optional))throw new TypeError(`Missing field: "${p}"`); -var n=c();for(p in h)h[p].write(n,m[p]);null!==k&&k.push(d,n);return n},Ta:gc,Oa:d}]})},w:(a,b,c,d,e)=>{b=V(b);d=0n===d;let f=g=>g;if(d){const g=8*c;f=h=>BigInt.asUintN(g,h);e=f(e)}U(a,{name:b,Ga:f,Ja:(g,h)=>{"number"==typeof h&&(h=BigInt(h));return h},Ta:nc(b,c,!d),Oa:null})},y:(a,b,c,d)=>{b=V(b);U(a,{name:b,Ga:function(e){return!!e},Ja:function(e,f){return f?c:d},Ta:function(e){return this.Ga(v[e])},Oa:null})},ga:(a,b,c,d,e,f,g,h,k,m,p,n,t)=>{p=V(p);f=X(e,f);h&&=X(g,h);m&&=X(k,m);t=X(n,t);var z= -yc(p);xc(z,function(){Qc(`Cannot construct ${p} due to unbound types`,[d])});lc([a,b,c],d?[d]:[],u=>{u=u[0];if(d){var w=u.Ca;var x=w.$a}else x=tc.prototype;u=uc(p,function(...y){if(Object.getPrototypeOf(this)!==E)throw new W(`Use 'new' to construct ${p}`);if(void 0===F.Mb)throw new W(`${p} has no accessible constructor`);var J=F.Mb[y.length];if(void 0===J)throw new W(`Tried to invoke ctor of ${p} with invalid number of parameters (${y.length}) - expected (${Object.keys(F.Mb).toString()}) parameters instead!`); -return J.apply(this,y)});var E=Object.create(x,{constructor:{value:u}});u.prototype=E;var F=new zc(p,u,E,t,w,f,h,m);if(F.Ka){var L;(L=F.Ka).Gb??(L.Gb=[]);F.Ka.Gb.push(F)}w=new Kc(p,F,!0,!1,!1);L=new Kc(p+"*",F,!1,!1,!1);x=new Kc(p+" const*",F,!1,!0,!1);vc[a]={pointerType:L,Yb:x};Lc(z,u);return[w,L,x]})},o:(a,b,c,d,e,f,g,h)=>{var k=Tc(c,d);b=V(b);b=Uc(b);f=X(e,f);lc([],[a],m=>{function p(){Qc(`Cannot call ${n} due to unbound types`,k)}m=m[0];var n=`${m.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]); -h&&m.Ca.uc.push(b);var t=m.Ca.$a,z=t[b];void 0===z||void 0===z.Ha&&z.className!==m.name&&z.bb===c-2?(p.bb=c-2,p.className=m.name,t[b]=p):(wc(t,b,n),t[b].Ha[c-2]=p);lc([],k,u=>{u=Sc(n,u,m,f,g);void 0===t[b].Ha?(u.bb=c-2,t[b]=u):t[b].Ha[c-2]=u;return[]});return[]})},ka:a=>U(a,Zc),v:(a,b,c)=>{b=V(b);U(a,{name:b,Ga:d=>d,Ja:(d,e)=>e,Ta:$c(b,c),Oa:null})},h:(a,b,c,d,e,f)=>{var g=Tc(b,c);a=V(a);a=Uc(a);e=X(d,e);xc(a,function(){Qc(`Cannot call ${a} due to unbound types`,g)},b-1);lc([],g,h=>{Lc(a,Sc(a,[h[0], -null].concat(h.slice(1)),null,e,f),b-1);return[]})},j:(a,b,c,d,e)=>{b=V(b);let f=h=>h;if(0===d){var g=32-8*c;f=h=>h<>>g;e=f(e)}U(a,{name:b,Ga:f,Ja:(h,k)=>k,Ta:nc(b,c,0!==d),Oa:null})},g:(a,b,c)=>{function d(f){return new e(r.buffer,D[f+4>>2],D[f>>2])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][b];c=V(c);U(a,{name:c,Ga:d,Ta:d},{hc:!0})},k:a=>{U(a,ad)},x:(a,b)=>{b=V(b);U(a,{name:b,Ga(c){var d=bc(c+4,D[c>>2],!0); -Oc(c);return d},Ja(c,d){d instanceof ArrayBuffer&&(d=new Uint8Array(d));var e="string"==typeof d;if(!(e||ArrayBuffer.isView(d)&&1==d.BYTES_PER_ELEMENT))throw new W("Cannot pass non-string to std::string");var f=e?Va(d):d.length;var g=Cd(4+f+1),h=g+4;D[g>>2]=f;e?N(d,v,h,f+1):v.set(d,h);null!==c&&c.push(Oc,g);return g},Ta:gc,Oa(c){Oc(c)}})},p:(a,b,c)=>{c=V(c);if(2===b){var d=cd;var e=dd;var f=ed}else d=fd,e=gd,f=hd;U(a,{name:c,Ga:g=>{var h=d(g+4,D[g>>2]*b,!0);Oc(g);return h},Ja:(g,h)=>{if("string"!= -typeof h)throw new W(`Cannot pass non-string to C++ string type ${c}`);var k=f(h),m=Cd(4+k+b);D[m>>2]=k/b;e(h,m+4,k+b);null!==g&&g.push(Oc,m);return m},Ta:gc,Oa(g){Oc(g)}})},f:(a,b,c,d,e,f)=>{ec[a]={name:V(b),Eb:X(c,d),Sa:X(e,f),Ob:[]}},b:(a,b,c,d,e,f,g,h,k,m)=>{ec[a].Ob.push({ac:V(b),ec:c,eb:X(d,e),dc:f,yc:g,xc:X(h,k),zc:m})},z:(a,b)=>{b=V(b);U(a,{pc:!0,name:b,Ga:()=>{},Ja:()=>{}})},H:()=>{Ga=!1;jd=0},D:()=>{throw Infinity;},d:(a,b,c)=>{var [d,...e]=md(a,b),f=d.Ja.bind(d),g=e.map(k=>k.Ta.bind(k)); -a--;var h=Array(a);b=`methodCaller<(${e.map(k=>k.name)}) => ${d.name}>`;return ld(uc(b,(k,m,p,n)=>{for(var t=0,z=0;z>2]=Ec(k));return u}))},ia:Xc,fa:a=>{if(!a)return Ec(globalThis);a=od(a);return Ec(globalThis[a])},i:(a,b)=>{a=Yc(a);b=Yc(b);return Ec(a[b])},P:a=>{9kd[a](b, -c,d,e),ha:()=>Ec([]),ja:a=>Ec(od(a)),E:a=>{var b=Yc(a);fc(b);Xc(a)},O:function(a,b){a=-9007199254740992>a||9007199254740992>2]=a.getSeconds();B[b+4>>2]=a.getMinutes();B[b+8>>2]=a.getHours();B[b+12>>2]=a.getDate();B[b+16>>2]=a.getMonth();B[b+20>>2]=a.getFullYear()-1900;B[b+24>>2]=a.getDay();B[b+28>>2]=(pd(a.getFullYear())?qd:rd)[a.getMonth()]+a.getDate()-1|0;B[b+36>>2]=-(60*a.getTimezoneOffset());var c=(new Date(a.getFullYear(),6,1)).getTimezoneOffset(),d=(new Date(a.getFullYear(), +l.FS_createDataFile=(...a)=>Yb(...a);l.FS_createLazyFile=(...a)=>ac(...a);var Kd={202921:(a,b,c,d)=>{a=a?M(v,a):"";b=b?M(v,b):"";c=c?M(v,c):"";d=d?M(v,d):"";throw Error(a+b+c+d);},203137:(a,b)=>{a=a?M(v,a):"";b=b?M(v,b):"";throw Error(a+b);},203247:a=>{a=a?M(v,a):"";throw Error(a);},203315:a=>{a=a?M(v,a):"";throw Error(a);}},Nc,Cd,Oc,cb,Ld,Md,Nd,Od,Ja;l.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE=1024; +var Td={F:(a,b)=>L(a)(b),t:function(a,b,c){Ka=c;try{var d=R(a);switch(b){case 0:var e=La();if(0>e)break;for(;sb[e];)e++;return Ib(d,e).Ya;case 1:case 2:return 0;case 3:return d.flags;case 4:return e=La(),d.flags|=e,0;case 12:return e=La(),A[e+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Ea}},Z:function(a,b){try{var c=R(a),d=c.node,e=c.wa.Oa;a=e?c:d;e??=d.ya.Oa;Gb(e);var f=e(a);return dc(b,f)}catch(g){if("undefined"==typeof T|| +"ErrnoError"!==g.name)throw g;return-g.Ea}},_:function(a,b,c){Ka=c;try{var d=R(a);switch(b){case 21509:return d.Aa?0:-59;case 21505:if(!d.Aa)return-59;if(d.Aa.Va.jc){a=[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var e=La();B[e>>2]=25856;B[e+4>>2]=5;B[e+8>>2]=191;B[e+12>>2]=35387;for(var f=0;32>f;f++)r[e+f+17]=a[f]||0}return 0;case 21510:case 21511:case 21512:return d.Aa?0:-59;case 21506:case 21507:case 21508:if(!d.Aa)return-59;if(d.Aa.Va.kc)for(e=La(),a=[],f=0;32> +f;f++)a.push(r[e+f+17]);return 0;case 21519:if(!d.Aa)return-59;e=La();return B[e>>2]=0;case 21520:return d.Aa?-28:-59;case 21537:case 21531:e=La();if(!d.wa.ic)throw new O(59);return d.wa.ic(d,b,e);case 21523:if(!d.Aa)return-59;d.Aa.Va.lc&&(f=[24,80],e=La(),A[e>>1]=f[0],A[e+2>>1]=f[1]);return 0;case 21524:return d.Aa?0:-59;case 21515:return d.Aa?0:-59;default:return-28}}catch(g){if("undefined"==typeof T||"ErrnoError"!==g.name)throw g;return-g.Ea}},X:function(a,b){try{return a=a?M(v,a):"",dc(b,Qb(a, +!0))}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return-c.Ea}},W:function(a,b,c,d){try{b=b?M(v,b):"";var e=d&256;b=cc(a,b,d&4096);return dc(c,e?Qb(b,!0):Qb(b))}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Ea}},u:function(a,b,c,d){Ka=d;try{b=b?M(v,b):"";b=cc(a,b);var e=d?La():0;return Sb(b,c,e).Ya}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Ea}},Y:function(a,b){try{return a=a?M(v,a):"",dc(b,Qb(a))}catch(c){if("undefined"== +typeof T||"ErrnoError"!==c.name)throw c;return-c.Ea}},$:()=>H(""),e:a=>{var b=ec[a];delete ec[a];var c=b.Db,d=b.Ra,e=b.Nb,f=e.map(g=>g.dc).concat(e.map(g=>g.xc));lc([a],f,g=>{var h={};e.forEach((k,m)=>{var p=g[m],n=k.cb,t=k.cc,z=g[m+e.length],u=k.wc,w=k.yc;h[k.$b]={read:x=>p.Fa(n(t,x)),write:(x,E)=>{var F=[];u(w,x,z.Ia(F,E));fc(F)},optional:g[m].optional}});return[{name:b.name,Fa:k=>{var m={},p;for(p in h)m[p]=h[p].read(k);d(k);return m},Ia:(k,m)=>{for(var p in h)if(!(p in m||h[p].optional))throw new TypeError(`Missing field: "${p}"`); +var n=c();for(p in h)h[p].write(n,m[p]);null!==k&&k.push(d,n);return n},Sa:gc,Na:d}]})},w:(a,b,c,d,e)=>{b=V(b);d=0n===d;let f=g=>g;if(d){const g=8*c;f=h=>BigInt.asUintN(g,h);e=f(e)}U(a,{name:b,Fa:f,Ia:(g,h)=>{"number"==typeof h&&(h=BigInt(h));return h},Sa:nc(b,c,!d),Na:null})},y:(a,b,c,d)=>{b=V(b);U(a,{name:b,Fa:function(e){return!!e},Ia:function(e,f){return f?c:d},Sa:function(e){return this.Fa(v[e])},Na:null})},ja:(a,b,c,d,e,f,g,h,k,m,p,n,t)=>{p=V(p);f=X(e,f);h&&=X(g,h);m&&=X(k,m);t=X(n,t);var z= +yc(p);xc(z,function(){Qc(`Cannot construct ${p} due to unbound types`,[d])});lc([a,b,c],d?[d]:[],u=>{u=u[0];if(d){var w=u.Ba;var x=w.Za}else x=tc.prototype;u=uc(p,function(...y){if(Object.getPrototypeOf(this)!==E)throw new W(`Use 'new' to construct ${p}`);if(void 0===F.Lb)throw new W(`${p} has no accessible constructor`);var J=F.Lb[y.length];if(void 0===J)throw new W(`Tried to invoke ctor of ${p} with invalid number of parameters (${y.length}) - expected (${Object.keys(F.Lb).toString()}) parameters instead!`); +return J.apply(this,y)});var E=Object.create(x,{constructor:{value:u}});u.prototype=E;var F=new zc(p,u,E,t,w,f,h,m);if(F.Ja){var K;(K=F.Ja).Fb??(K.Fb=[]);F.Ja.Fb.push(F)}w=new Kc(p,F,!0,!1,!1);K=new Kc(p+"*",F,!1,!1,!1);x=new Kc(p+" const*",F,!1,!0,!1);vc[a]={pointerType:K,Xb:x};Lc(z,u);return[w,K,x]})},l:(a,b,c,d,e,f,g,h)=>{var k=Tc(c,d);b=V(b);b=Uc(b);f=X(e,f);lc([],[a],m=>{function p(){Qc(`Cannot call ${n} due to unbound types`,k)}m=m[0];var n=`${m.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]); +h&&m.Ba.tc.push(b);var t=m.Ba.Za,z=t[b];void 0===z||void 0===z.Ga&&z.className!==m.name&&z.ab===c-2?(p.ab=c-2,p.className=m.name,t[b]=p):(wc(t,b,n),t[b].Ga[c-2]=p);lc([],k,u=>{u=Sc(n,u,m,f,g);void 0===t[b].Ga?(u.ab=c-2,t[b]=u):t[b].Ga[c-2]=u;return[]});return[]})},ka:a=>U(a,Zc),v:(a,b,c)=>{b=V(b);U(a,{name:b,Fa:d=>d,Ia:(d,e)=>e,Sa:$c(b,c),Na:null})},h:(a,b,c,d,e,f)=>{var g=Tc(b,c);a=V(a);a=Uc(a);e=X(d,e);xc(a,function(){Qc(`Cannot call ${a} due to unbound types`,g)},b-1);lc([],g,h=>{Lc(a,Sc(a,[h[0], +null].concat(h.slice(1)),null,e,f),b-1);return[]})},j:(a,b,c,d,e)=>{b=V(b);let f=h=>h;if(0===d){var g=32-8*c;f=h=>h<>>g;e=f(e)}U(a,{name:b,Fa:f,Ia:(h,k)=>k,Sa:nc(b,c,0!==d),Na:null})},g:(a,b,c)=>{function d(f){return new e(r.buffer,D[f+4>>2],D[f>>2])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][b];c=V(c);U(a,{name:c,Fa:d,Sa:d},{fc:!0})},k:a=>{U(a,ad)},x:(a,b)=>{b=V(b);U(a,{name:b,Fa(c){var d=bc(c+4,D[c>>2],!0); +Oc(c);return d},Ia(c,d){d instanceof ArrayBuffer&&(d=new Uint8Array(d));var e="string"==typeof d;if(!(e||ArrayBuffer.isView(d)&&1==d.BYTES_PER_ELEMENT))throw new W("Cannot pass non-string to std::string");var f=e?Va(d):d.length;var g=Cd(4+f+1),h=g+4;D[g>>2]=f;e?N(d,v,h,f+1):v.set(d,h);null!==c&&c.push(Oc,g);return g},Sa:gc,Na(c){Oc(c)}})},p:(a,b,c)=>{c=V(c);if(2===b){var d=cd;var e=dd;var f=ed}else d=fd,e=gd,f=hd;U(a,{name:c,Fa:g=>{var h=d(g+4,D[g>>2]*b,!0);Oc(g);return h},Ia:(g,h)=>{if("string"!= +typeof h)throw new W(`Cannot pass non-string to C++ string type ${c}`);var k=f(h),m=Cd(4+k+b);D[m>>2]=k/b;e(h,m+4,k+b);null!==g&&g.push(Oc,m);return m},Sa:gc,Na(g){Oc(g)}})},f:(a,b,c,d,e,f)=>{ec[a]={name:V(b),Db:X(c,d),Ra:X(e,f),Nb:[]}},b:(a,b,c,d,e,f,g,h,k,m)=>{ec[a].Nb.push({$b:V(b),dc:c,cb:X(d,e),cc:f,xc:g,wc:X(h,k),yc:m})},z:(a,b)=>{b=V(b);U(a,{oc:!0,name:b,Fa:()=>{},Ia:()=>{}})},H:()=>{Ga=!1;jd=0},E:()=>{throw Infinity;},d:(a,b,c)=>{var [d,...e]=md(a,b),f=d.Ia.bind(d),g=e.map(k=>k.Sa.bind(k)); +a--;var h=Array(a);b=`methodCaller<(${e.map(k=>k.name)}) => ${d.name}>`;return ld(uc(b,(k,m,p,n)=>{for(var t=0,z=0;z>2]=Ec(k));return u}))},ia:Xc,ha:a=>{if(!a)return Ec(globalThis);a=od(a);return Ec(globalThis[a])},i:(a,b)=>{a=Yc(a);b=Yc(b);return Ec(a[b])},O:a=>{9kd[a](b, +c,d,e),ga:()=>Ec([]),fa:a=>Ec(od(a)),D:a=>{var b=Yc(a);fc(b);Xc(a)},P:function(a,b){a=-9007199254740992>a||9007199254740992>2]=a.getSeconds();B[b+4>>2]=a.getMinutes();B[b+8>>2]=a.getHours();B[b+12>>2]=a.getDate();B[b+16>>2]=a.getMonth();B[b+20>>2]=a.getFullYear()-1900;B[b+24>>2]=a.getDay();B[b+28>>2]=(pd(a.getFullYear())?qd:rd)[a.getMonth()]+a.getDate()-1|0;B[b+36>>2]=-(60*a.getTimezoneOffset());var c=(new Date(a.getFullYear(),6,1)).getTimezoneOffset(),d=(new Date(a.getFullYear(), 0,1)).getTimezoneOffset();B[b+32>>2]=(c!=d&&a.getTimezoneOffset()==Math.min(d,c))|0},Q:function(a){var b=new Date(B[a+20>>2]+1900,B[a+16>>2],B[a+12>>2],B[a+8>>2],B[a+4>>2],B[a>>2],0),c=B[a+32>>2],d=b.getTimezoneOffset(),e=(new Date(b.getFullYear(),6,1)).getTimezoneOffset(),f=(new Date(b.getFullYear(),0,1)).getTimezoneOffset(),g=Math.min(f,e);0>c?B[a+32>>2]=Number(e!=f&&g==d):0>2]=b.getDay();B[a+28>>2]=(pd(b.getFullYear())? -qd:rd)[b.getMonth()]+b.getDate()-1|0;B[a>>2]=b.getSeconds();B[a+4>>2]=b.getMinutes();B[a+8>>2]=b.getHours();B[a+12>>2]=b.getDate();B[a+16>>2]=b.getMonth();B[a+20>>2]=b.getYear();a=b.getTime();return BigInt(isNaN(a)?-1:a/1E3)},M:function(a,b,c,d,e,f,g){e=-9007199254740992>e||9007199254740992>2]=k.Xa;D[g>>2]=m;return 0}catch(p){if("undefined"==typeof T||"ErrnoError"!==p.name)throw p;return-p.Fa}},N:function(a,b,c,d,e,f){f=-9007199254740992>f||9007199254740992{sd[a]&&(clearTimeout(sd[a].id),delete sd[a]);if(!b)return 0;var c=setTimeout(()=>{delete sd[a];vd(()=> -Ld(a,performance.now()))},b);sd[a]={id:c,Nc:b};return 0},R:(a,b,c,d)=>{var e=(new Date).getFullYear(),f=(new Date(e,0,1)).getTimezoneOffset();e=(new Date(e,6,1)).getTimezoneOffset();D[a>>2]=60*Math.max(f,e);B[b>>2]=Number(f!=e);b=g=>{var h=Math.abs(g);return`UTC${0<=g?"-":"+"}${String(Math.floor(h/60)).padStart(2,"0")}${String(h%60).padStart(2,"0")}`};a=b(f);b=b(e);e=a))return 28;G[c>>3]=BigInt(Math.round(1E6*(0=== -a?Date.now():performance.now())));return 0},l:(a,b,c)=>{wd.length=0;for(var d;d=v[b++];){var e=105!=d;e&=112!=d;c+=e&&c%8?4:0;wd.push(112==d?D[c>>2]:106==d?G[c>>3]:105==d?B[c>>2]:sa[c>>3]);c+=e?8:4}return Kd[a](...wd)},aa:function(a){if(Y.has(a)){var b=Y.get(a),c=Y;c.Xa[a]=void 0;c.Pb.push(a);0b.readyState&&b.abort()}},L:()=>2147483648,m:()=>performance.now(),ca:()=>!ba,K:a=>{var b=v.length;a>>>=0;if(2147483648=c;c*=2){a:{var d=(Math.min(2147483648,65536* -Math.ceil(Math.max(a,b+2097152/c)/65536))-wa.buffer.byteLength+65535)/65536|0;try{wa.grow(d);va();var e=1;break a}catch(f){}e=void 0}if(e)return!0}return!1},ba:function(a,b,c,d,e){function f(C){t?C():vd(C)}var g=a+108,h=D[g+36>>2],k=D[g+40>>2],m=D[g+44>>2],p=D[g+48>>2],n=D[g+52>>2],t=!!(n&64),z=C=>{f(()=>{h?K(h)(C):b?.(C)})},u=C=>{f(()=>{m?K(m)(C):d?.(C)})},w=C=>{f(()=>{k?K(k)(C):c?.(C)})},x=C=>{f(()=>{p?K(p)(C):e?.(C)})},E=C=>{Bd(C,z,w,u,x)},F=(C,ra)=>{Ed(C,ra.response,Ia=>{f(()=>{h?K(h)(Ia):b?.(Ia)})}, -Ia=>{f(()=>{h?K(h)(Ia):b?.(Ia)})})},L=C=>{Bd(C,F,w,u,x)},y=bc(g+0),J=!!(n&16),I=!!(n&4);n=!!(n&32);if("EM_IDB_STORE"===y)E=D[g+84>>2],Ed(a,v.slice(E,E+D[g+88>>2]),z,w);else if("EM_IDB_DELETE"===y)Gd(a,z,w);else if(J){if(n)return 0;Bd(a,I?F:z,w,u,x)}else Fd(a,z,n?w:I?L:E);return a},U:(a,b)=>{var c=0,d=0,e;for(e of Jd()){var f=b+c;D[a+d>>2]=f;c+=N(e,v,f,Infinity)+1;d+=4}return 0},V:(a,b)=>{var c=Jd();D[a>>2]=c.length;a=0;for(var d of c)a+=Va(d)+1;D[b>>2]=a;return 0},ea:a=>{ma=a;ud(a)},n:function(a){try{var b= -R(a);Tb(b);return 0}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return c.Fa}},s:function(a,b,c,d){try{a:{var e=R(a);a=b;for(var f,g=b=0;g>2],k=D[a+4>>2];a+=8;var m=e,p=h,n=k,t=f,z=r;if(0>n||0>t)throw new O(28);if(null===m.Za)throw new O(8);if(1===(m.flags&2097155))throw new O(8);if(Q(m.node.mode))throw new O(31);if(!m.xa.read)throw new O(28);var u="undefined"!=typeof t;if(!u)t=m.position;else if(!m.seekable)throw new O(70);var w=m.xa.read(m,z,p,n,t);u||(m.position+= -w);var x=w;if(0>x){var E=-1;break a}b+=x;if(x>2]=E;return 0}catch(F){if("undefined"==typeof T||"ErrnoError"!==F.name)throw F;return F.Fa}},T:function(a,b,c,d){b=-9007199254740992>b||9007199254740992>3]=BigInt(e.position);e.Ab&&0===b&&0===c&&(e.Ab=null);return 0}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return f.Fa}},r:function(a,b,c,d){try{a:{var e=R(a);a=b;for(var f, -g=b=0;g>2],k=D[a+4>>2];a+=8;var m=Vb(e,r,h,k,f);if(0>m){var p=-1;break a}b+=m;if(m>2]=p;return 0}catch(n){if("undefined"==typeof T||"ErrnoError"!==n.name)throw n;return n.Fa}},da:function(){var a=stackTrace(),b=Va(a)+1,c=Cd(b);N(a,v,c,b);return c},la:function(){var a=self.navigator.userAgent,b=Va(a)+1,c=Cd(b);N(a,v,c,b);return c},A:Pd,q:Qd,B:Rd,C:Sd,a:wa,G:ud,J:function(a,b){try{return Qa(v.subarray(a,a+b)),0}catch(c){if("undefined"== -typeof T||"ErrnoError"!==c.name)throw c;return c.Fa}}};function Qd(a,b){var c=Od();try{K(a)(b)}catch(d){Nd(c);if(d!==d+0)throw d;Md(1,0)}}function Sd(a,b,c,d){var e=Od();try{K(a)(b,c,d)}catch(f){Nd(e);if(f!==f+0)throw f;Md(1,0)}}function Rd(a,b,c){var d=Od();try{K(a)(b,c)}catch(e){Nd(d);if(e!==e+0)throw e;Md(1,0)}}function Pd(a,b,c,d){var e=Od();try{return K(a)(b,c,d)}catch(f){Nd(e);if(f!==f+0)throw f;Md(1,0)}} -function Ud(){function a(){l.calledRun=!0;if(!la){ua=!0;if(!l.noFSInit&&!vb){var b,c;vb=!0;b??=l.stdin;c??=l.stdout;d??=l.stderr;b?Zb("/dev","stdin",b):Ob("/dev/tty","/dev/stdin");c?Zb("/dev","stdout",null,c):Ob("/dev/tty","/dev/stdout");d?Zb("/dev","stderr",null,d):Ob("/dev/tty1","/dev/stderr");Sb("/dev/stdin",0);Sb("/dev/stdout",1);Sb("/dev/stderr",1)}Vd.ma();wb=!1;na?.(l);l.onRuntimeInitialized?.();if(l.postRun)for("function"==typeof l.postRun&&(l.postRun=[l.postRun]);l.postRun.length;){var d= +qd:rd)[b.getMonth()]+b.getDate()-1|0;B[a>>2]=b.getSeconds();B[a+4>>2]=b.getMinutes();B[a+8>>2]=b.getHours();B[a+12>>2]=b.getDate();B[a+16>>2]=b.getMonth();B[a+20>>2]=b.getYear();a=b.getTime();return BigInt(isNaN(a)?-1:a/1E3)},M:function(a,b,c,d,e,f,g){e=-9007199254740992>e||9007199254740992>2]=k.Wa;D[g>>2]=m;return 0}catch(p){if("undefined"==typeof T||"ErrnoError"!==p.name)throw p;return-p.Ea}},N:function(a,b,c,d,e,f){f=-9007199254740992>f||9007199254740992{sd[a]&&(clearTimeout(sd[a].id),delete sd[a]);if(!b)return 0;var c=setTimeout(()=>{delete sd[a];vd(()=> +Ld(a,performance.now()))},b);sd[a]={id:c,Mc:b};return 0},R:(a,b,c,d)=>{var e=(new Date).getFullYear(),f=(new Date(e,0,1)).getTimezoneOffset();e=(new Date(e,6,1)).getTimezoneOffset();D[a>>2]=60*Math.max(f,e);B[b>>2]=Number(f!=e);b=g=>{var h=Math.abs(g);return`UTC${0<=g?"-":"+"}${String(Math.floor(h/60)).padStart(2,"0")}${String(h%60).padStart(2,"0")}`};a=b(f);b=b(e);e=a))return 28;G[c>>3]=BigInt(Math.round(1E6*(0=== +a?Date.now():performance.now())));return 0},m:(a,b,c)=>{wd.length=0;for(var d;d=v[b++];){var e=105!=d;e&=112!=d;c+=e&&c%8?4:0;wd.push(112==d?D[c>>2]:106==d?G[c>>3]:105==d?B[c>>2]:sa[c>>3]);c+=e?8:4}return Kd[a](...wd)},aa:function(a){if(Y.has(a)){var b=Y.get(a),c=Y;c.Wa[a]=void 0;c.Ob.push(a);0b.readyState&&b.abort()}},L:()=>2147483648,n:()=>performance.now(),ca:()=>!ba,K:a=>{var b=v.length;a>>>=0;if(2147483648=c;c*=2){a:{var d=(Math.min(2147483648,65536* +Math.ceil(Math.max(a,b+2097152/c)/65536))-wa.buffer.byteLength+65535)/65536|0;try{wa.grow(d);va();var e=1;break a}catch(f){}e=void 0}if(e)return!0}return!1},ba:function(a,b,c,d,e){function f(C){t?C():vd(C)}var g=a+108,h=D[g+36>>2],k=D[g+40>>2],m=D[g+44>>2],p=D[g+48>>2],n=D[g+52>>2],t=!!(n&64),z=C=>{f(()=>{h?L(h)(C):b?.(C)})},u=C=>{f(()=>{m?L(m)(C):d?.(C)})},w=C=>{f(()=>{k?L(k)(C):c?.(C)})},x=C=>{f(()=>{p?L(p)(C):e?.(C)})},E=C=>{Bd(C,z,w,u,x)},F=(C,qa)=>{Ed(C,qa.response,Ia=>{f(()=>{h?L(h)(Ia):b?.(Ia)})}, +Ia=>{f(()=>{h?L(h)(Ia):b?.(Ia)})})},K=C=>{Bd(C,F,w,u,x)},y=bc(g+0),J=!!(n&16),I=!!(n&4);n=!!(n&32);if("EM_IDB_STORE"===y)E=D[g+84>>2],Ed(a,v.slice(E,E+D[g+88>>2]),z,w);else if("EM_IDB_DELETE"===y)Gd(a,z,w);else if(J){if(n)return 0;Bd(a,I?F:z,w,u,x)}else Fd(a,z,n?w:I?K:E);return a},U:(a,b)=>{var c=0,d=0,e;for(e of Jd()){var f=b+c;D[a+d>>2]=f;c+=N(e,v,f,Infinity)+1;d+=4}return 0},V:(a,b)=>{var c=Jd();D[a>>2]=c.length;a=0;for(var d of c)a+=Va(d)+1;D[b>>2]=a;return 0},ea:a=>{ma=a;ud(a)},o:function(a){try{var b= +R(a);Tb(b);return 0}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return c.Ea}},s:function(a,b,c,d){try{a:{var e=R(a);a=b;for(var f,g=b=0;g>2],k=D[a+4>>2];a+=8;var m=e,p=h,n=k,t=f,z=r;if(0>n||0>t)throw new O(28);if(null===m.Ya)throw new O(8);if(1===(m.flags&2097155))throw new O(8);if(Q(m.node.mode))throw new O(31);if(!m.wa.read)throw new O(28);var u="undefined"!=typeof t;if(!u)t=m.position;else if(!m.seekable)throw new O(70);var w=m.wa.read(m,z,p,n,t);u||(m.position+= +w);var x=w;if(0>x){var E=-1;break a}b+=x;if(x>2]=E;return 0}catch(F){if("undefined"==typeof T||"ErrnoError"!==F.name)throw F;return F.Ea}},T:function(a,b,c,d){b=-9007199254740992>b||9007199254740992>3]=BigInt(e.position);e.zb&&0===b&&0===c&&(e.zb=null);return 0}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return f.Ea}},r:function(a,b,c,d){try{a:{var e=R(a);a=b;for(var f, +g=b=0;g>2],k=D[a+4>>2];a+=8;var m=Vb(e,r,h,k,f);if(0>m){var p=-1;break a}b+=m;if(m>2]=p;return 0}catch(n){if("undefined"==typeof T||"ErrnoError"!==n.name)throw n;return n.Ea}},da:function(){var a=stackTrace(),b=Va(a)+1,c=Cd(b);N(a,v,c,b);return c},A:Pd,q:Qd,B:Rd,C:Sd,a:wa,G:ud,J:function(a,b){try{return Qa(v.subarray(a,a+b)),0}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return c.Ea}}}; +function Qd(a,b){var c=Od();try{L(a)(b)}catch(d){Nd(c);if(d!==d+0)throw d;Md(1,0)}}function Sd(a,b,c,d){var e=Od();try{L(a)(b,c,d)}catch(f){Nd(e);if(f!==f+0)throw f;Md(1,0)}}function Rd(a,b,c){var d=Od();try{L(a)(b,c)}catch(e){Nd(d);if(e!==e+0)throw e;Md(1,0)}}function Pd(a,b,c,d){var e=Od();try{return L(a)(b,c,d)}catch(f){Nd(e);if(f!==f+0)throw f;Md(1,0)}} +function Ud(){function a(){l.calledRun=!0;if(!la){ua=!0;if(!l.noFSInit&&!vb){var b,c;vb=!0;b??=l.stdin;c??=l.stdout;d??=l.stderr;b?Zb("/dev","stdin",b):Ob("/dev/tty","/dev/stdin");c?Zb("/dev","stdout",null,c):Ob("/dev/tty","/dev/stdout");d?Zb("/dev","stderr",null,d):Ob("/dev/tty1","/dev/stderr");Sb("/dev/stdin",0);Sb("/dev/stdout",1);Sb("/dev/stderr",1)}Vd.la();wb=!1;na?.(l);l.onRuntimeInitialized?.();if(l.postRun)for("function"==typeof l.postRun&&(l.postRun=[l.postRun]);l.postRun.length;){var d= l.postRun.shift();Da.push(d)}Ca(Da)}}if(0{setTimeout(()=>l.setStatus(""),1);a()},1)):a()}}var Vd; -Vd=await (async function(){function a(c){c=Vd=c.exports;Nc=c.na;Cd=c.oa;Oc=c.pa;cb=c.ra;Ld=c.sa;Md=c.ta;Nd=c.ua;Od=c.va;Ja=c.qa;return Vd}var b={a:Td};if(l.instantiateWasm)return new Promise(c=>{l.instantiateWasm(b,(d,e)=>{c(a(d,e))})});xa??=l.locateFile?l.locateFile?l.locateFile("BlinkCardModule.wasm",fa):fa+"BlinkCardModule.wasm":(new URL("BlinkCardModule.wasm",import.meta.url)).href;return a((await Aa(b)).instance)}());Ud();moduleRtn=ua?l:new Promise((a,b)=>{na=a;oa=b}); +Vd=await (async function(){function a(c){c=Vd=c.exports;Nc=c.ma;Cd=c.na;Oc=c.oa;cb=c.qa;Ld=c.ra;Md=c.sa;Nd=c.ta;Od=c.ua;Ja=c.pa;return Vd}var b={a:Td};if(l.instantiateWasm)return new Promise(c=>{l.instantiateWasm(b,(d,e)=>{c(a(d,e))})});xa??=l.locateFile?l.locateFile?l.locateFile("BlinkCardModule.wasm",fa):fa+"BlinkCardModule.wasm":(new URL("BlinkCardModule.wasm",import.meta.url)).href;return a((await Aa(b)).instance)}());Ud();moduleRtn=ua?l:new Promise((a,b)=>{na=a;oa=b}); ;return moduleRtn}export default createModule; diff --git a/packages/blinkcard-wasm/dist/advanced/BlinkCardModule.wasm b/packages/blinkcard-wasm/dist/advanced/BlinkCardModule.wasm index f4d6810..c932579 100755 Binary files a/packages/blinkcard-wasm/dist/advanced/BlinkCardModule.wasm and b/packages/blinkcard-wasm/dist/advanced/BlinkCardModule.wasm differ diff --git a/packages/blinkcard-wasm/dist/basic/BlinkCardModule.js b/packages/blinkcard-wasm/dist/basic/BlinkCardModule.js index 017becc..ace8b7b 100644 --- a/packages/blinkcard-wasm/dist/basic/BlinkCardModule.js +++ b/packages/blinkcard-wasm/dist/basic/BlinkCardModule.js @@ -1,122 +1,122 @@ async function createModule(moduleArg={}){var moduleRtn;var l=moduleArg,aa=!!globalThis.window,ba=!!globalThis.WorkerGlobalScope;let ca;(ca=l).expectedDataFileDownloads??(ca.expectedDataFileDownloads=0);l.expectedDataFileDownloads++; (()=>{var a="undefined"!=typeof ENVIRONMENT_IS_WASM_WORKER&&ENVIRONMENT_IS_WASM_WORKER;"undefined"!=typeof ENVIRONMENT_IS_PTHREAD&&ENVIRONMENT_IS_PTHREAD||a||async function(b){async function c(k,m){var p;(p=l).dataFileDownloads??(p.dataFileDownloads={});try{var n=await fetch(k)}catch(x){throw Error(`Network Error: ${k}`,{e:x});}if(!n.ok)throw Error(`${n.status}: ${n.url}`);p=[];m=Number(n.headers.get("Content-Length")??m);let t=0;l.setStatus?.("Downloading data...");for(n=n.body.getReader();;){var {done:z, value:u}=await n.read();if(z)break;p.push(u);t+=u.length;l.dataFileDownloads[k]={loaded:t,total:m};let x=0,E=0;for(var w of Object.values(l.dataFileDownloads))x+=w.loaded,E+=w.total;l.setStatus?.(`Downloading data... (${x}/${E})`)}k=new Uint8Array(p.map(x=>x.length).reduce((x,E)=>x+E,0));w=0;for(const x of p)k.set(x,w),w+=x.length;return k.buffer}async function d(k){k.FS_createPath("/","microblink",!0,!0);k.FS_createPath("/microblink","blinkcard",!0,!0);for(var m of b.files)k.addRunDependency(`fp ${m.filename}`); -k.addRunDependency("datafile_/opt/jenkins/root/E0/b/packages/blinkcard-wasm/dist/basic/BlinkCardModule.data");k.preloadResults??(k.preloadResults={});k.preloadResults["/opt/jenkins/root/E0/b/packages/blinkcard-wasm/dist/basic/BlinkCardModule.data"]={Jc:!1};h||=await g;(async function(p){if(!p)throw Error("Loading data file failed.");if(p.constructor.name!==ArrayBuffer.name)throw Error("bad input to processPackageData");p=new Uint8Array(p);for(var n of b.files){var t=n.filename;k.FS_createDataFile(t, -null,p.subarray(n.start,n.end),!0,!0,!0);k.removeRunDependency(`fp ${t}`)}k.removeRunDependency("datafile_/opt/jenkins/root/E0/b/packages/blinkcard-wasm/dist/basic/BlinkCardModule.data")})(h)}"object"===typeof window?window.encodeURIComponent(window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/"):"undefined"===typeof process&&"undefined"!==typeof location&&encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf("/"))+"/");var e=l.locateFile?.("BlinkCardModule.data", -"")??"BlinkCardModule.data",f=b.remote_package_size,g,h=l.getPreloadedPackage?.(e,f);h||(g=c(e,f));if(l.calledRun)d(l);else{let k;((k=l).preRun??(k.preRun=[])).push(d)}}({files:[{filename:"/microblink/blinkcard/Model_1118d9d674e23996f70c6416b2bf5a6ce6ef24a6ad2c92f0ddd1e198e5f05305.strop",start:0,end:19102},{filename:"/microblink/blinkcard/Model_349432d66ef2b216155673b634f7d5c47795bed35719b954f726b5f0856740f3.strop",start:19102,end:67419},{filename:"/microblink/blinkcard/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop", +k.addRunDependency("datafile_/opt/jenkins/android-arm64-oneplus7t/root/E0/b/packages/blinkcard-wasm/dist/basic/BlinkCardModule.data");k.preloadResults??(k.preloadResults={});k.preloadResults["/opt/jenkins/android-arm64-oneplus7t/root/E0/b/packages/blinkcard-wasm/dist/basic/BlinkCardModule.data"]={Ic:!1};h||=await g;(async function(p){if(!p)throw Error("Loading data file failed.");if(p.constructor.name!==ArrayBuffer.name)throw Error("bad input to processPackageData");p=new Uint8Array(p);for(var n of b.files){var t= +n.filename;k.FS_createDataFile(t,null,p.subarray(n.start,n.end),!0,!0,!0);k.removeRunDependency(`fp ${t}`)}k.removeRunDependency("datafile_/opt/jenkins/android-arm64-oneplus7t/root/E0/b/packages/blinkcard-wasm/dist/basic/BlinkCardModule.data")})(h)}"object"===typeof window?window.encodeURIComponent(window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/"):"undefined"===typeof process&&"undefined"!==typeof location&&encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf("/"))+ +"/");var e=l.locateFile?.("BlinkCardModule.data","")??"BlinkCardModule.data",f=b.remote_package_size,g,h=l.getPreloadedPackage?.(e,f);h||(g=c(e,f));if(l.calledRun)d(l);else{let k;((k=l).preRun??(k.preRun=[])).push(d)}}({files:[{filename:"/microblink/blinkcard/Model_1118d9d674e23996f70c6416b2bf5a6ce6ef24a6ad2c92f0ddd1e198e5f05305.strop",start:0,end:19102},{filename:"/microblink/blinkcard/Model_349432d66ef2b216155673b634f7d5c47795bed35719b954f726b5f0856740f3.strop",start:19102,end:67419},{filename:"/microblink/blinkcard/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop", start:67419,end:336140},{filename:"/microblink/blinkcard/Model_5065f3a3bc1c2fece482ee66e9275fc198b9be239547e08b6086c59f347ca72f.strop",start:336140,end:2591295},{filename:"/microblink/blinkcard/Model_830c13896f96c1cb6d5cad725f44e6aae470f8672d640d20b3272ed4bb839699.strop",start:2591295,end:2848318},{filename:"/microblink/blinkcard/Model_9f6734be0f5c1e4f3c6c621f4a72db8241feaf7c8705dc68a9cc07a7b634ee85.strop",start:2848318,end:2931954},{filename:"/microblink/blinkcard/Model_abb3e9795585a24a9bbd1dd41ec97daa2e1d7d42087aacd981411fd8b26bf493.strop", start:2931954,end:3264110},{filename:"/microblink/blinkcard/Model_b9263312a9b623d1a3b75b643ccdcbc36aae52c278d721443468147c50e44583.strop",start:3264110,end:3532384},{filename:"/microblink/blinkcard/Model_c99d9c4b96e424a1b5a17758060a8116912f78d14318e471e0606709227b9497.strop",start:3532384,end:6369917},{filename:"/microblink/blinkcard/Model_cc1fab8df49d9a21de6c7b76ccf0dac40b17fcfb7073cc520eca073cbf8e33e9.strop",start:6369917,end:6373648},{filename:"/microblink/blinkcard/Model_f132d1bd7614b1274fafb8a41ec6c047b84b2a43654ae2da5ddd78a2765601c6.strop", start:6373648,end:7208473},{filename:"/microblink/blinkcard/bin-database_1.0.zzip",start:7208473,end:8578325}],remote_package_size:8578325})})();l.onAbort=function(a){q("Aborted with message: "+a);try{throw new WebAssembly.RuntimeError(a);}catch(b){q("Stacktrace: "+b.stack)}};l="undefined"!==typeof l?l:{}; (function(){var a="",b=!1;try{if("undefined"!==typeof self&&self.location&&self.location.href){var c=self.location.href;0===c.indexOf("blob:")&&(a=c,b=!0)}}catch(d){}b&&!l.locateFile&&(l.locateFile=function(d,e){return"BlinkCardModule.wasm"===d?a:e+d})})();var da="./this.program",ea=import.meta.url,fa="",ha,ia; -if(aa||ba){try{fa=(new URL(".",ea)).href}catch{}ba&&(ia=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)});ha=async a=>{a=await fetch(a,{credentials:"same-origin"});if(a.ok)return a.arrayBuffer();throw Error(a.status+" : "+a.url);}}var ja=console.log.bind(console),q=console.error.bind(console),ka,la=!1,ma,na,oa,r,v,A,pa,B,D,qa,sa,G,ta,ua=!1; -function va(){var a=wa.buffer;r=new Int8Array(a);A=new Int16Array(a);v=new Uint8Array(a);pa=new Uint16Array(a);B=new Int32Array(a);D=new Uint32Array(a);qa=new Float32Array(a);sa=new Float64Array(a);G=new BigInt64Array(a);ta=new BigUint64Array(a)}var wa;function H(a){l.onAbort?.(a);a="Aborted("+a+")";q(a);la=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");oa?.(a);throw a;}var xa; +if(aa||ba){try{fa=(new URL(".",ea)).href}catch{}ba&&(ia=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)});ha=async a=>{a=await fetch(a,{credentials:"same-origin"});if(a.ok)return a.arrayBuffer();throw Error(a.status+" : "+a.url);}}var ja=console.log.bind(console),q=console.error.bind(console),ka,la=!1,ma,na,oa,r,v,A,pa,B,D,ra,sa,G,ta,ua=!1; +function va(){var a=wa.buffer;r=new Int8Array(a);A=new Int16Array(a);v=new Uint8Array(a);pa=new Uint16Array(a);B=new Int32Array(a);D=new Uint32Array(a);ra=new Float32Array(a);sa=new Float64Array(a);G=new BigInt64Array(a);ta=new BigUint64Array(a)}var wa;function H(a){l.onAbort?.(a);a="Aborted("+a+")";q(a);la=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");oa?.(a);throw a;}var xa; async function ya(a){if(!ka)try{var b=await ha(a);return new Uint8Array(b)}catch{}if(a==xa&&ka)a=new Uint8Array(ka);else if(ia)a=ia(a);else throw"both async and sync fetching of the wasm failed";return a}async function za(a,b){try{var c=await ya(a);return await WebAssembly.instantiate(c,b)}catch(d){q(`failed to asynchronously prepare wasm: ${d}`),H(d)}} async function Aa(a){var b=xa;if(!ka)try{var c=fetch(b,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(c,a)}catch(d){q(`wasm streaming compile failed: ${d}`),q("falling back to ArrayBuffer instantiation")}return za(b,a)}class Ba{name="ExitStatus";constructor(a){this.message=`Program terminated with exit(${a})`;this.status=a}} -var Ca=a=>{for(;0{var a=l.preRun.shift();Ea.push(a)},Ga=!0,Ha=[],K=a=>{var b=Ha[a];b||(Ha[a]=b=Ja.get(a));return b},La=()=>{var a=B[+Ka>>2];Ka+=4;return a},Ma=(a,b)=>{for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a},Na=a=>{var b="/"===a.charAt(0),c="/"===a.slice(-1);(a=Ma(a.split("/").filter(d=>!!d),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b? +var Ca=a=>{for(;0{var a=l.preRun.shift();Ea.push(a)},Ga=!0,Ha=[],L=a=>{var b=Ha[a];b||(Ha[a]=b=Ja.get(a));return b},La=()=>{var a=B[+Ka>>2];Ka+=4;return a},Ma=(a,b)=>{for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a},Na=a=>{var b="/"===a.charAt(0),c="/"===a.slice(-1);(a=Ma(a.split("/").filter(d=>!!d),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b? "/":"")+a},Oa=a=>{var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&=b.slice(0,-1);return a+b},Pa=()=>a=>crypto.getRandomValues(a),Qa=a=>{(Qa=Pa())(a)},Ra=(...a)=>{for(var b="",c=!1,d=a.length-1;-1<=d&&!c;d--){c=0<=d?a[d]:"/";if("string"!=typeof c)throw new TypeError("Arguments to path.resolve must be strings");if(!c)return"";b=c+"/"+b;c="/"===c.charAt(0)}b=Ma(b.split("/").filter(e=>!!e),!c).join("/");return(c?"/":"")+b||"."}, Sa=globalThis.TextDecoder&&new TextDecoder,Ta=(a,b,c,d)=>{c=b+c;if(d)return c;for(;a[b]&&!(b>=c);)++b;return b},M=(a,b=0,c,d)=>{c=Ta(a,b,c,d);if(16e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}, Ua=[],Va=a=>{for(var b=0,c=0;c=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},N=(a,b,c,d)=>{if(!(0=g){if(c>=d)break;b[c++]=g}else if(2047>=g){if(c+1>=d)break;b[c++]=192|g>>6;b[c++]=128|g&63}else if(65535>=g){if(c+2>=d)break;b[c++]=224|g>>12;b[c++]=128|g>>6&63;b[c++]=128|g&63}else{if(c+3>=d)break;b[c++]=240|g>>18;b[c++]=128|g>>12&63;b[c++]=128|g>>6&63;b[c++]= -128|g&63;f++}}b[c]=0;return c-e},Wa=a=>{var b=Array(Va(a)+1);a=N(a,b,0,b.length);b.length=a;return b},Xa=[];function Ya(a,b){Xa[a]={input:[],output:[],Wa:b};Za(a,$a)} -var $a={open(a){var b=Xa[a.node.jb];if(!b)throw new O(43);a.Ba=b;a.seekable=!1},close(a){a.Ba.Wa.ob(a.Ba)},ob(a){a.Ba.Wa.ob(a.Ba)},read(a,b,c,d){if(!a.Ba||!a.Ba.Wa.Qb)throw new O(60);for(var e=0,f=0;f{a=65536*Math.ceil(a/65536);var b=cb(65536,a);b&&v.fill(0,b,b+a);return b},P={Ra:null,Va(){return P.createNode(null,"/",16895,0)},createNode(a,b,c,d){if(24576===(c&61440)||4096===(c&61440))throw new O(63);P.Ra||(P.Ra={dir:{node:{Pa:P.za.Pa,Ua:P.za.Ua,fb:P.za.fb,rb:P.za.rb,Ub:P.za.Ub,wb:P.za.wb,Vb:P.za.Vb,Fb:P.za.Fb,vb:P.za.vb},stream:{Qa:P.xa.Qa}}, -file:{node:{Pa:P.za.Pa,Ua:P.za.Ua},stream:{Qa:P.xa.Qa,read:P.xa.read,write:P.xa.write,gb:P.xa.gb,sb:P.xa.sb}},link:{node:{Pa:P.za.Pa,Ua:P.za.Ua,kb:P.za.kb},stream:{}},Kb:{node:{Pa:P.za.Pa,Ua:P.za.Ua},stream:eb}});c=fb(a,b,c,d);Q(c.mode)?(c.za=P.Ra.dir.node,c.xa=P.Ra.dir.stream,c.ya={}):32768===(c.mode&61440)?(c.za=P.Ra.file.node,c.xa=P.Ra.file.stream,c.Ea=0,c.ya=null):40960===(c.mode&61440)?(c.za=P.Ra.link.node,c.xa=P.Ra.link.stream):8192===(c.mode&61440)&&(c.za=P.Ra.Kb.node,c.xa=P.Ra.Kb.stream); -c.Ya=c.Ma=c.La=Date.now();a&&(a.ya[b]=c,a.Ya=a.Ma=a.La=c.Ya);return c},Kc(a){return a.ya?a.ya.subarray?a.ya.subarray(0,a.Ea):new Uint8Array(a.ya):new Uint8Array(0)},za:{Pa(a){var b={};b.Zb=8192===(a.mode&61440)?a.id:1;b.ic=a.id;b.mode=a.mode;b.rc=1;b.uid=0;b.fc=0;b.jb=a.jb;b.size=Q(a.mode)?4096:32768===(a.mode&61440)?a.Ea:40960===(a.mode&61440)?a.link.length:0;b.Ya=new Date(a.Ya);b.Ma=new Date(a.Ma);b.La=new Date(a.La);b.Wb=4096;b.Xb=Math.ceil(b.size/b.Wb);return b},Ua(a,b){for(var c of["mode","atime", -"mtime","ctime"])null!=b[c]&&(a[c]=b[c]);void 0!==b.size&&(b=b.size,a.Ea!=b&&(0==b?(a.ya=null,a.Ea=0):(c=a.ya,a.ya=new Uint8Array(b),c&&a.ya.set(c.subarray(0,Math.min(b,a.Ea))),a.Ea=b)))},fb(){P.yb||(P.yb=new O(44),P.yb.stack="");throw P.yb;},rb(a,b,c,d){return P.createNode(a,b,c,d)},Ub(a,b,c){try{var d=gb(b,c)}catch(f){}if(d){if(Q(a.mode))for(var e in d.ya)throw new O(55);hb(d)}delete a.parent.ya[a.name];b.ya[c]=a;a.name=c;b.La=b.Ma=a.parent.La=a.parent.Ma=Date.now()},wb(a, -b){delete a.ya[b];a.La=a.Ma=Date.now()},Vb(a,b){var c=gb(a,b),d;for(d in c.ya)throw new O(55);delete a.ya[b];a.La=a.Ma=Date.now()},Fb(a){return[".","..",...Object.keys(a.ya)]},vb(a,b,c){a=P.createNode(a,b,41471,0);a.link=c;return a},kb(a){if(40960!==(a.mode&61440))throw new O(28);return a.link}},xa:{read(a,b,c,d,e){var f=a.node.ya;if(e>=a.node.Ea)return 0;a=Math.min(a.node.Ea-e,d);if(8=f||(f=Math.max(f,g*(1048576>g?2:1.125)>>>0),0!=g&&(f=Math.max(f,256)),g=a.ya,a.ya=new Uint8Array(f),0b)throw new O(28);return b},gb(a,b,c,d,e){if(32768!==(a.node.mode&61440))throw new O(43);a=a.node.ya;if(e&2||!a||a.buffer!==r.buffer){d=!0;e=db(b);if(!e)throw new O(48);if(a){if(0{var c=0;a&&(c|=365);b&&(c|=146);return c},jb=async a=>{a=await ha(a);return new Uint8Array(a)},kb=0,lb=null,mb=()=>{kb--;l.monitorRunDependencies?.(kb);if(0==kb&&lb){var a=lb;lb=null;a()}},nb=()=>{kb++;l.monitorRunDependencies?.(kb)},ob=[],pb=async(a,b)=>{"undefined"!=typeof Browser&&Browser.Lc();for(var c of ob)if(c.canHandle(b))return c.handle(a,b);return a},qb=null,rb={},sb=[],tb=1,ub=null,vb=!1,wb=!0,xb={},O=class{name="ErrnoError";constructor(a){this.Fa=a}},yb=class{ub={};node=null;get object(){return this.node}set object(a){this.node= -a}get flags(){return this.ub.flags}set flags(a){this.ub.flags=a}get position(){return this.ub.position}set position(a){this.ub.position=a}},zb=class{za={};xa={};tb=365;xb=146;hb=null;constructor(a,b,c,d){a||=this;this.parent=a;this.Va=a.Va;this.id=tb++;this.name=b;this.mode=c;this.jb=d;this.Ya=this.Ma=this.La=Date.now()}get read(){return(this.mode&this.tb)===this.tb}set read(a){a?this.mode|=this.tb:this.mode&=~this.tb}get write(){return(this.mode&this.xb)===this.xb}set write(a){a?this.mode|=this.xb: -this.mode&=~this.xb}get oc(){return Q(this.mode)}get nc(){return 8192===(this.mode&61440)}}; -function Ab(a,b={}){if(!a)throw new O(44);b.zb??(b.zb=!0);"/"===a.charAt(0)||(a="//"+a);var c=0;a:for(;40>c;c++){a=a.split("/").filter(h=>!!h);for(var d=qb,e="/",f=0;f>>0)%ub.length} -function hb(a){var b=Cb(a.parent.id,a.name);if(ub[b]===a)ub[b]=a.ab;else for(b=ub[b];b;){if(b.ab===a){b.ab=a.ab;break}b=b.ab}}function gb(a,b){var c=Q(a.mode)?(c=Db(a,"x"))?c:a.za.fb?0:2:54;if(c)throw new O(c);for(c=ub[Cb(a.id,b)];c;c=c.ab){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.za.fb(a,b)}function fb(a,b,c,d){a=new zb(a,b,c,d);b=Cb(a.parent.id,a.name);a.ab=ub[b];return ub[b]=a}function Q(a){return 16384===(a&61440)} +128|g&63;f++}}b[c]=0;return c-e},Wa=a=>{var b=Array(Va(a)+1);a=N(a,b,0,b.length);b.length=a;return b},Xa=[];function Ya(a,b){Xa[a]={input:[],output:[],Va:b};Za(a,$a)} +var $a={open(a){var b=Xa[a.node.ib];if(!b)throw new O(43);a.Aa=b;a.seekable=!1},close(a){a.Aa.Va.nb(a.Aa)},nb(a){a.Aa.Va.nb(a.Aa)},read(a,b,c,d){if(!a.Aa||!a.Aa.Va.Pb)throw new O(60);for(var e=0,f=0;f{a=65536*Math.ceil(a/65536);var b=cb(65536,a);b&&v.fill(0,b,b+a);return b},P={Qa:null,Ua(){return P.createNode(null,"/",16895,0)},createNode(a,b,c,d){if(24576===(c&61440)||4096===(c&61440))throw new O(63);P.Qa||(P.Qa={dir:{node:{Oa:P.ya.Oa,Ta:P.ya.Ta,eb:P.ya.eb,qb:P.ya.qb,Tb:P.ya.Tb,vb:P.ya.vb,Ub:P.ya.Ub,Eb:P.ya.Eb,ub:P.ya.ub},stream:{Pa:P.wa.Pa}}, +file:{node:{Oa:P.ya.Oa,Ta:P.ya.Ta},stream:{Pa:P.wa.Pa,read:P.wa.read,write:P.wa.write,fb:P.wa.fb,rb:P.wa.rb}},link:{node:{Oa:P.ya.Oa,Ta:P.ya.Ta,jb:P.ya.jb},stream:{}},Jb:{node:{Oa:P.ya.Oa,Ta:P.ya.Ta},stream:eb}});c=fb(a,b,c,d);Q(c.mode)?(c.ya=P.Qa.dir.node,c.wa=P.Qa.dir.stream,c.xa={}):32768===(c.mode&61440)?(c.ya=P.Qa.file.node,c.wa=P.Qa.file.stream,c.Da=0,c.xa=null):40960===(c.mode&61440)?(c.ya=P.Qa.link.node,c.wa=P.Qa.link.stream):8192===(c.mode&61440)&&(c.ya=P.Qa.Jb.node,c.wa=P.Qa.Jb.stream); +c.Xa=c.La=c.Ka=Date.now();a&&(a.xa[b]=c,a.Xa=a.La=a.Ka=c.Xa);return c},Jc(a){return a.xa?a.xa.subarray?a.xa.subarray(0,a.Da):new Uint8Array(a.xa):new Uint8Array(0)},ya:{Oa(a){var b={};b.Yb=8192===(a.mode&61440)?a.id:1;b.hc=a.id;b.mode=a.mode;b.qc=1;b.uid=0;b.ec=0;b.ib=a.ib;b.size=Q(a.mode)?4096:32768===(a.mode&61440)?a.Da:40960===(a.mode&61440)?a.link.length:0;b.Xa=new Date(a.Xa);b.La=new Date(a.La);b.Ka=new Date(a.Ka);b.Vb=4096;b.Wb=Math.ceil(b.size/b.Vb);return b},Ta(a,b){for(var c of["mode","atime", +"mtime","ctime"])null!=b[c]&&(a[c]=b[c]);void 0!==b.size&&(b=b.size,a.Da!=b&&(0==b?(a.xa=null,a.Da=0):(c=a.xa,a.xa=new Uint8Array(b),c&&a.xa.set(c.subarray(0,Math.min(b,a.Da))),a.Da=b)))},eb(){P.xb||(P.xb=new O(44),P.xb.stack="");throw P.xb;},qb(a,b,c,d){return P.createNode(a,b,c,d)},Tb(a,b,c){try{var d=gb(b,c)}catch(f){}if(d){if(Q(a.mode))for(var e in d.xa)throw new O(55);hb(d)}delete a.parent.xa[a.name];b.xa[c]=a;a.name=c;b.Ka=b.La=a.parent.Ka=a.parent.La=Date.now()},vb(a, +b){delete a.xa[b];a.Ka=a.La=Date.now()},Ub(a,b){var c=gb(a,b),d;for(d in c.xa)throw new O(55);delete a.xa[b];a.Ka=a.La=Date.now()},Eb(a){return[".","..",...Object.keys(a.xa)]},ub(a,b,c){a=P.createNode(a,b,41471,0);a.link=c;return a},jb(a){if(40960!==(a.mode&61440))throw new O(28);return a.link}},wa:{read(a,b,c,d,e){var f=a.node.xa;if(e>=a.node.Da)return 0;a=Math.min(a.node.Da-e,d);if(8=f||(f=Math.max(f,g*(1048576>g?2:1.125)>>>0),0!=g&&(f=Math.max(f,256)),g=a.xa,a.xa=new Uint8Array(f),0b)throw new O(28);return b},fb(a,b,c,d,e){if(32768!==(a.node.mode&61440))throw new O(43);a=a.node.xa;if(e&2||!a||a.buffer!==r.buffer){d=!0;e=db(b);if(!e)throw new O(48);if(a){if(0{var c=0;a&&(c|=365);b&&(c|=146);return c},jb=async a=>{a=await ha(a);return new Uint8Array(a)},kb=0,lb=null,mb=()=>{kb--;l.monitorRunDependencies?.(kb);if(0==kb&&lb){var a=lb;lb=null;a()}},nb=()=>{kb++;l.monitorRunDependencies?.(kb)},ob=[],pb=async(a,b)=>{"undefined"!=typeof Browser&&Browser.Kc();for(var c of ob)if(c.canHandle(b))return c.handle(a,b);return a},qb=null,rb={},sb=[],tb=1,ub=null,vb=!1,wb=!0,xb={},O=class{name="ErrnoError";constructor(a){this.Ea=a}},yb=class{tb={};node=null;get object(){return this.node}set object(a){this.node= +a}get flags(){return this.tb.flags}set flags(a){this.tb.flags=a}get position(){return this.tb.position}set position(a){this.tb.position=a}},zb=class{ya={};wa={};sb=365;wb=146;gb=null;constructor(a,b,c,d){a||=this;this.parent=a;this.Ua=a.Ua;this.id=tb++;this.name=b;this.mode=c;this.ib=d;this.Xa=this.La=this.Ka=Date.now()}get read(){return(this.mode&this.sb)===this.sb}set read(a){a?this.mode|=this.sb:this.mode&=~this.sb}get write(){return(this.mode&this.wb)===this.wb}set write(a){a?this.mode|=this.wb: +this.mode&=~this.wb}get nc(){return Q(this.mode)}get mc(){return 8192===(this.mode&61440)}}; +function Ab(a,b={}){if(!a)throw new O(44);b.yb??(b.yb=!0);"/"===a.charAt(0)||(a="//"+a);var c=0;a:for(;40>c;c++){a=a.split("/").filter(h=>!!h);for(var d=qb,e="/",f=0;f>>0)%ub.length} +function hb(a){var b=Cb(a.parent.id,a.name);if(ub[b]===a)ub[b]=a.$a;else for(b=ub[b];b;){if(b.$a===a){b.$a=a.$a;break}b=b.$a}}function gb(a,b){var c=Q(a.mode)?(c=Db(a,"x"))?c:a.ya.eb?0:2:54;if(c)throw new O(c);for(c=ub[Cb(a.id,b)];c;c=c.$a){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.ya.eb(a,b)}function fb(a,b,c,d){a=new zb(a,b,c,d);b=Cb(a.parent.id,a.name);a.$a=ub[b];return ub[b]=a}function Q(a){return 16384===(a&61440)} function Eb(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function Db(a,b){if(wb)return 0;if(!b.includes("r")||a.mode&292){if(b.includes("w")&&!(a.mode&146)||b.includes("x")&&!(a.mode&73))return 2}else return 2;return 0}function Fb(a,b){if(!Q(a.mode))return 54;try{return gb(a,b),20}catch(c){}return Db(a,"wx")}function Gb(a){if(!a)throw new O(63);return a}function R(a){a=sb[a];if(!a)throw new O(8);return a} -function Hb(a,b=-1){a=Object.assign(new yb,a);if(-1==b)a:{for(b=0;4096>=b;b++)if(!sb[b])break a;throw new O(33);}a.Za=b;return sb[b]=a}function Ib(a,b=-1){a=Hb(a,b);a.xa?.Ic?.(a);return a}function Jb(a,b){var c=null?.xa.Ua,d=c?null:a;c??=a.za.Ua;Gb(c);c(d,b)}var eb={open(a){a.xa=rb[a.node.jb].xa;a.xa.open?.(a)},Qa(){throw new O(70);}};function Za(a,b){rb[a]={xa:b}} -function Kb(a,b){var c="/"===b;if(c&&qb)throw new O(10);if(!c&&b){var d=Ab(b,{zb:!1});b=d.path;d=d.node;if(d.hb)throw new O(10);if(!Q(d.mode))throw new O(54);}b={type:a,Mc:{},Sb:b,qc:[]};a=a.Va(b);a.Va=b;b.root=a;c?qb=a:d&&(d.hb=b,d.Va&&d.Va.qc.push(b))}function Lb(a,b,c){var d=Ab(a,{parent:!0}).node;a=a&&a.match(/([^\/]+|\/)\/*$/)[1];if(!a)throw new O(28);if("."===a||".."===a)throw new O(20);var e=Fb(d,a);if(e)throw new O(e);if(!d.za.rb)throw new O(63);return d.za.rb(d,a,b,c)} -function Mb(a,b=438){return Lb(a,b&4095|32768,0)}function S(a){return Lb(a,16895,0)}function Nb(a,b,c){"undefined"==typeof c&&(c=b,b=438);return Lb(a,b|8192,c)}function Ob(a,b){if(!Ra(a))throw new O(44);var c=Ab(b,{parent:!0}).node;if(!c)throw new O(44);b=b&&b.match(/([^\/]+|\/)\/*$/)[1];var d=Fb(c,b);if(d)throw new O(d);if(!c.za.vb)throw new O(63);c.za.vb(c,b,a)} -function Pb(a){var b=Ab(a,{parent:!0}).node;if(!b)throw new O(44);a=a&&a.match(/([^\/]+|\/)\/*$/)[1];var c=gb(b,a);a:{try{var d=gb(b,a)}catch(f){d=f.Fa;break a}var e=Db(b,"wx");d=e?e:Q(d.mode)?31:0}if(d)throw new O(d);if(!b.za.wb)throw new O(63);if(c.hb)throw new O(10);b.za.wb(b,a);hb(c)}function Qb(a,b){a=Ab(a,{nb:!b}).node;return Gb(a.za.Pa)(a)}function Rb(a,b){a="string"==typeof a?Ab(a,{nb:!0}).node:a;Jb(a,{mode:b&4095|a.mode&-4096,La:Date.now(),Hc:void 0})} -function Sb(a,b,c=438){if(""===a)throw new O(44);if("string"==typeof b){var d={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[b];if("undefined"==typeof d)throw Error(`Unknown file open mode: ${b}`);b=d}c=b&64?c&4095|32768:0;if("object"==typeof a)d=a;else{var e=a.endsWith("/");a=Ab(a,{nb:!(b&131072),sc:!0});d=a.node;a=a.path}var f=!1;if(b&64)if(d){if(b&128)throw new O(20);}else{if(e)throw new O(31);d=Lb(a,c|511,0);f=!0}if(!d)throw new O(44);8192===(d.mode&61440)&&(b&=-513);if(b&65536&&!Q(d.mode))throw new O(54); -if(!f&&(e=d?40960===(d.mode&61440)?32:Q(d.mode)&&("r"!==Eb(b)||b&576)?31:Db(d,Eb(b)):44))throw new O(e);if(b&512&&!f){e=d;e="string"==typeof e?Ab(e,{nb:!0}).node:e;if(Q(e.mode))throw new O(31);if(32768!==(e.mode&61440))throw new O(28);var g=Db(e,"w");if(g)throw new O(g);Jb(e,{size:0,timestamp:Date.now()})}b&=-131713;e=Hb({node:d,path:Bb(d),flags:b,seekable:!0,position:0,xa:d.xa,Bc:[],error:!1});e.xa.open&&e.xa.open(e);f&&Rb(d,c&511);!l.logReadFiles||b&1||a in xb||(xb[a]=1);return e} -function Tb(a){if(null===a.Za)throw new O(8);a.Ab&&(a.Ab=null);try{a.xa.close&&a.xa.close(a)}catch(b){throw b;}finally{sb[a.Za]=null}a.Za=null}function Ub(a,b,c){if(null===a.Za)throw new O(8);if(!a.seekable||!a.xa.Qa)throw new O(70);if(0!=c&&1!=c&&2!=c)throw new O(28);a.position=a.xa.Qa(a,b,c);a.Bc=[]} -function Vb(a,b,c,d,e,f){if(0>d||0>e)throw new O(28);if(null===a.Za)throw new O(8);if(0===(a.flags&2097155))throw new O(8);if(Q(a.node.mode))throw new O(31);if(!a.xa.write)throw new O(28);a.seekable&&a.flags&1024&&Ub(a,0,2);var g="undefined"!=typeof e;if(!g)e=a.position;else if(!a.seekable)throw new O(70);b=a.xa.write(a,b,c,d,e,f);g||(a.position+=b);return b} -function Wb(a,b){a="string"==typeof a?a:Bb(a);for(b=b.split("/").reverse();b.length;){var c=b.pop();if(c){var d=Na(a+"/"+c);try{S(d)}catch(e){if(20!=e.Fa)throw e;}a=d}}return d}function Xb(a,b,c,d){a=Na(("string"==typeof a?a:Bb(a))+"/"+b);return Mb(a,ib(c,d))} +function Hb(a,b=-1){a=Object.assign(new yb,a);if(-1==b)a:{for(b=0;4096>=b;b++)if(!sb[b])break a;throw new O(33);}a.Ya=b;return sb[b]=a}function Ib(a,b=-1){a=Hb(a,b);a.wa?.Hc?.(a);return a}function Jb(a,b){var c=null?.wa.Ta,d=c?null:a;c??=a.ya.Ta;Gb(c);c(d,b)}var eb={open(a){a.wa=rb[a.node.ib].wa;a.wa.open?.(a)},Pa(){throw new O(70);}};function Za(a,b){rb[a]={wa:b}} +function Kb(a,b){var c="/"===b;if(c&&qb)throw new O(10);if(!c&&b){var d=Ab(b,{yb:!1});b=d.path;d=d.node;if(d.gb)throw new O(10);if(!Q(d.mode))throw new O(54);}b={type:a,Lc:{},Rb:b,pc:[]};a=a.Ua(b);a.Ua=b;b.root=a;c?qb=a:d&&(d.gb=b,d.Ua&&d.Ua.pc.push(b))}function Lb(a,b,c){var d=Ab(a,{parent:!0}).node;a=a&&a.match(/([^\/]+|\/)\/*$/)[1];if(!a)throw new O(28);if("."===a||".."===a)throw new O(20);var e=Fb(d,a);if(e)throw new O(e);if(!d.ya.qb)throw new O(63);return d.ya.qb(d,a,b,c)} +function Mb(a,b=438){return Lb(a,b&4095|32768,0)}function S(a){return Lb(a,16895,0)}function Nb(a,b,c){"undefined"==typeof c&&(c=b,b=438);return Lb(a,b|8192,c)}function Ob(a,b){if(!Ra(a))throw new O(44);var c=Ab(b,{parent:!0}).node;if(!c)throw new O(44);b=b&&b.match(/([^\/]+|\/)\/*$/)[1];var d=Fb(c,b);if(d)throw new O(d);if(!c.ya.ub)throw new O(63);c.ya.ub(c,b,a)} +function Pb(a){var b=Ab(a,{parent:!0}).node;if(!b)throw new O(44);a=a&&a.match(/([^\/]+|\/)\/*$/)[1];var c=gb(b,a);a:{try{var d=gb(b,a)}catch(f){d=f.Ea;break a}var e=Db(b,"wx");d=e?e:Q(d.mode)?31:0}if(d)throw new O(d);if(!b.ya.vb)throw new O(63);if(c.gb)throw new O(10);b.ya.vb(b,a);hb(c)}function Qb(a,b){a=Ab(a,{mb:!b}).node;return Gb(a.ya.Oa)(a)}function Rb(a,b){a="string"==typeof a?Ab(a,{mb:!0}).node:a;Jb(a,{mode:b&4095|a.mode&-4096,Ka:Date.now(),Gc:void 0})} +function Sb(a,b,c=438){if(""===a)throw new O(44);if("string"==typeof b){var d={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[b];if("undefined"==typeof d)throw Error(`Unknown file open mode: ${b}`);b=d}c=b&64?c&4095|32768:0;if("object"==typeof a)d=a;else{var e=a.endsWith("/");a=Ab(a,{mb:!(b&131072),rc:!0});d=a.node;a=a.path}var f=!1;if(b&64)if(d){if(b&128)throw new O(20);}else{if(e)throw new O(31);d=Lb(a,c|511,0);f=!0}if(!d)throw new O(44);8192===(d.mode&61440)&&(b&=-513);if(b&65536&&!Q(d.mode))throw new O(54); +if(!f&&(e=d?40960===(d.mode&61440)?32:Q(d.mode)&&("r"!==Eb(b)||b&576)?31:Db(d,Eb(b)):44))throw new O(e);if(b&512&&!f){e=d;e="string"==typeof e?Ab(e,{mb:!0}).node:e;if(Q(e.mode))throw new O(31);if(32768!==(e.mode&61440))throw new O(28);var g=Db(e,"w");if(g)throw new O(g);Jb(e,{size:0,timestamp:Date.now()})}b&=-131713;e=Hb({node:d,path:Bb(d),flags:b,seekable:!0,position:0,wa:d.wa,Ac:[],error:!1});e.wa.open&&e.wa.open(e);f&&Rb(d,c&511);!l.logReadFiles||b&1||a in xb||(xb[a]=1);return e} +function Tb(a){if(null===a.Ya)throw new O(8);a.zb&&(a.zb=null);try{a.wa.close&&a.wa.close(a)}catch(b){throw b;}finally{sb[a.Ya]=null}a.Ya=null}function Ub(a,b,c){if(null===a.Ya)throw new O(8);if(!a.seekable||!a.wa.Pa)throw new O(70);if(0!=c&&1!=c&&2!=c)throw new O(28);a.position=a.wa.Pa(a,b,c);a.Ac=[]} +function Vb(a,b,c,d,e,f){if(0>d||0>e)throw new O(28);if(null===a.Ya)throw new O(8);if(0===(a.flags&2097155))throw new O(8);if(Q(a.node.mode))throw new O(31);if(!a.wa.write)throw new O(28);a.seekable&&a.flags&1024&&Ub(a,0,2);var g="undefined"!=typeof e;if(!g)e=a.position;else if(!a.seekable)throw new O(70);b=a.wa.write(a,b,c,d,e,f);g||(a.position+=b);return b} +function Wb(a,b){a="string"==typeof a?a:Bb(a);for(b=b.split("/").reverse();b.length;){var c=b.pop();if(c){var d=Na(a+"/"+c);try{S(d)}catch(e){if(20!=e.Ea)throw e;}a=d}}return d}function Xb(a,b,c,d){a=Na(("string"==typeof a?a:Bb(a))+"/"+b);return Mb(a,ib(c,d))} function Yb(a,b,c,d,e,f){var g=b;a&&(a="string"==typeof a?a:Bb(a),g=b?Na(a+"/"+b):a);a=ib(d,e);g=Mb(g,a);if(c){if("string"==typeof c){b=Array(c.length);d=0;for(e=c.length;d=n.length)return 0;u=Math.min(n.length-w,u);if(n.slice)for(var x=0;xthis.length-1||0>n)){var t=n%this.Lb;return this.eb(n/this.Lb|0)[t]}}wc(n){this.eb=n}Jb(){var n=new XMLHttpRequest;n.open("HEAD",c,!1);n.send(null);200<=n.status&&300>n.status||304===n.status||H("Couldn't load "+c+". Status: "+n.status);var t=Number(n.getResponseHeader("Content-length")), -z,u=(z=n.getResponseHeader("Accept-Ranges"))&&"bytes"===z;n=(z=n.getResponseHeader("Content-Encoding"))&&"gzip"===z;var w=1048576;u||(w=t);var x=this;x.wc(E=>{var F=E*w,L=(E+1)*w-1;L=Math.min(L,t-1);if("undefined"==typeof x.mb[E]){var y=x.mb;F>L&&H("invalid range ("+F+", "+L+") or no bytes requested!");L>t-1&&H("only "+t+" bytes available! programmer error!");var J=new XMLHttpRequest;J.open("GET",c,!1);t!==w&&J.setRequestHeader("Range","bytes="+F+"-"+L);J.responseType="arraybuffer";J.overrideMimeType&& -J.overrideMimeType("text/plain; charset=x-user-defined");J.send(null);200<=J.status&&300>J.status||304===J.status||H("Couldn't load "+c+". Status: "+J.status);F=void 0!==J.response?new Uint8Array(J.response||[]):Wa(J.responseText||"");y[E]=F}"undefined"==typeof x.mb[E]&&H("doXHR failed!");return x.mb[E]});if(n||!t)w=t=1,w=t=this.eb(0).length,ja("LazyFiles on gzip forces download of the whole file when length is accessed");this.Ib=t;this.Hb=w;this.Cb=!0}get length(){this.Cb||this.Jb();return this.Ib}get Lb(){this.Cb|| -this.Jb();return this.Hb}}if(globalThis.XMLHttpRequest){ba||H("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var h=new g;var k=void 0}else k=c,h=void 0;var m=Xb(a,b,d,e);h?m.ya=h:k&&(m.ya=null,m.url=k);Object.defineProperties(m,{Ea:{get:function(){return this.ya.length}}});var p={};Object.keys(m.xa).forEach(n=>{var t=m.xa[n];p[n]=(...z)=>{$b(m);return t(...z)}});p.read=(n,t,z,u,w)=>{$b(m);return f(n,t,z,u,w)};p.gb=(n,t,z)=>{$b(m); -var u=db(t);if(!u)throw new O(48);f(n,r,u,t,z);return{Aa:u,Xa:!0}};m.xa=p;return m}var T={},bc=(a,b,c)=>a?M(v,a,b,c):"";function cc(a,b,c){if("/"===b.charAt(0))return b;a=-100===a?"/":R(a).path;if(0==b.length){if(!c)throw new O(44);return a}return a+"/"+b} -function dc(a,b){D[a>>2]=b.Zb;D[a+4>>2]=b.mode;D[a+8>>2]=b.rc;D[a+12>>2]=b.uid;D[a+16>>2]=b.fc;D[a+20>>2]=b.jb;G[a+24>>3]=BigInt(b.size);B[a+32>>2]=4096;B[a+36>>2]=b.Xb;var c=b.Ya.getTime(),d=b.Ma.getTime(),e=b.La.getTime();G[a+40>>3]=BigInt(Math.floor(c/1E3));D[a+48>>2]=c%1E3*1E6;G[a+56>>3]=BigInt(Math.floor(d/1E3));D[a+64>>2]=d%1E3*1E6;G[a+72>>3]=BigInt(Math.floor(e/1E3));D[a+80>>2]=e%1E3*1E6;G[a+88>>3]=BigInt(b.ic);return 0}var Ka=void 0,ec={},fc=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}}; -function gc(a){return this.Ga(D[a>>2])} +function Zb(a,b,c,d){a=Na(("string"==typeof a?a:Bb(a))+"/"+b);b=ib(!!c,!!d);Zb.Qb??(Zb.Qb=64);var e=Zb.Qb++<<8|0;Za(e,{open(f){f.seekable=!1},close(){d?.buffer?.length&&d(10)},read(f,g,h,k){for(var m=0,p=0;p=n.length)return 0;u=Math.min(n.length-w,u);if(n.slice)for(var x=0;xthis.length-1||0>n)){var t=n%this.Kb;return this.cb(n/this.Kb|0)[t]}}vc(n){this.cb=n}Ib(){var n=new XMLHttpRequest;n.open("HEAD",c,!1);n.send(null);200<=n.status&&300>n.status||304===n.status||H("Couldn't load "+c+". Status: "+n.status);var t=Number(n.getResponseHeader("Content-length")), +z,u=(z=n.getResponseHeader("Accept-Ranges"))&&"bytes"===z;n=(z=n.getResponseHeader("Content-Encoding"))&&"gzip"===z;var w=1048576;u||(w=t);var x=this;x.vc(E=>{var F=E*w,K=(E+1)*w-1;K=Math.min(K,t-1);if("undefined"==typeof x.lb[E]){var y=x.lb;F>K&&H("invalid range ("+F+", "+K+") or no bytes requested!");K>t-1&&H("only "+t+" bytes available! programmer error!");var J=new XMLHttpRequest;J.open("GET",c,!1);t!==w&&J.setRequestHeader("Range","bytes="+F+"-"+K);J.responseType="arraybuffer";J.overrideMimeType&& +J.overrideMimeType("text/plain; charset=x-user-defined");J.send(null);200<=J.status&&300>J.status||304===J.status||H("Couldn't load "+c+". Status: "+J.status);F=void 0!==J.response?new Uint8Array(J.response||[]):Wa(J.responseText||"");y[E]=F}"undefined"==typeof x.lb[E]&&H("doXHR failed!");return x.lb[E]});if(n||!t)w=t=1,w=t=this.cb(0).length,ja("LazyFiles on gzip forces download of the whole file when length is accessed");this.Hb=t;this.Gb=w;this.Bb=!0}get length(){this.Bb||this.Ib();return this.Hb}get Kb(){this.Bb|| +this.Ib();return this.Gb}}if(globalThis.XMLHttpRequest){ba||H("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var h=new g;var k=void 0}else k=c,h=void 0;var m=Xb(a,b,d,e);h?m.xa=h:k&&(m.xa=null,m.url=k);Object.defineProperties(m,{Da:{get:function(){return this.xa.length}}});var p={};Object.keys(m.wa).forEach(n=>{var t=m.wa[n];p[n]=(...z)=>{$b(m);return t(...z)}});p.read=(n,t,z,u,w)=>{$b(m);return f(n,t,z,u,w)};p.fb=(n,t,z)=>{$b(m); +var u=db(t);if(!u)throw new O(48);f(n,r,u,t,z);return{za:u,Wa:!0}};m.wa=p;return m}var T={},bc=(a,b,c)=>a?M(v,a,b,c):"";function cc(a,b,c){if("/"===b.charAt(0))return b;a=-100===a?"/":R(a).path;if(0==b.length){if(!c)throw new O(44);return a}return a+"/"+b} +function dc(a,b){D[a>>2]=b.Yb;D[a+4>>2]=b.mode;D[a+8>>2]=b.qc;D[a+12>>2]=b.uid;D[a+16>>2]=b.ec;D[a+20>>2]=b.ib;G[a+24>>3]=BigInt(b.size);B[a+32>>2]=4096;B[a+36>>2]=b.Wb;var c=b.Xa.getTime(),d=b.La.getTime(),e=b.Ka.getTime();G[a+40>>3]=BigInt(Math.floor(c/1E3));D[a+48>>2]=c%1E3*1E6;G[a+56>>3]=BigInt(Math.floor(d/1E3));D[a+64>>2]=d%1E3*1E6;G[a+72>>3]=BigInt(Math.floor(e/1E3));D[a+80>>2]=e%1E3*1E6;G[a+88>>3]=BigInt(b.hc);return 0}var Ka=void 0,ec={},fc=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}}; +function gc(a){return this.Fa(D[a>>2])} var hc={},ic={},jc={},kc=class extends Error{constructor(a){super(a);this.name="InternalError"}},lc=(a,b,c)=>{function d(h){h=c(h);if(h.length!==a.length)throw new kc("Mismatched type converter count");for(var k=0;kjc[h]=b);var e=Array(b.length),f=[],g=0;b.forEach((h,k)=>{ic.hasOwnProperty(h)?e[k]=ic[h]:(f.push(h),hc.hasOwnProperty(h)||(hc[h]=[]),hc[h].push(()=>{e[k]=ic[h];++g;g===f.length&&d(e)}))});0===f.length&&d(e)},V=a=>{for(var b="";;){var c=v[a++];if(!c)return b; -b+=String.fromCharCode(c)}},W=class extends Error{constructor(a){super(a);this.name="BindingError"}};function mc(a,b,c={}){var d=b.name;if(!a)throw new W(`type "${d}" must have a positive integer typeid pointer`);if(ic.hasOwnProperty(a)){if(c.hc)return;throw new W(`Cannot register type '${d}' twice`);}ic[a]=b;delete jc[a];hc.hasOwnProperty(a)&&(b=hc[a],delete hc[a],b.forEach(e=>e()))}function U(a,b,c={}){return mc(a,b,c)} -var nc=(a,b,c)=>{switch(b){case 1:return c?d=>r[d]:d=>v[d];case 2:return c?d=>A[d>>1]:d=>pa[d>>1];case 4:return c?d=>B[d>>2]:d=>D[d>>2];case 8:return c?d=>G[d>>3]:d=>ta[d>>3];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},oc=a=>{throw new W(a.wa.Da.Ca.name+" instance already deleted");},pc=!1,qc=()=>{},rc=a=>{if(!globalThis.FinalizationRegistry)return rc=b=>b,a;pc=new FinalizationRegistry(b=>{b=b.wa;--b.count.value;0===b.count.value&&(b.Ia?b.Na.Sa(b.Ia):b.Da.Ca.Sa(b.Aa))});rc= -b=>{var c=b.wa;c.Ia&&pc.register(b,{wa:c},b);return b};qc=b=>{pc.unregister(b)};return rc(a)},sc=[];function tc(){} -var uc=(a,b)=>Object.defineProperty(b,"name",{value:a}),vc={},wc=(a,b,c)=>{if(void 0===a[b].Ha){var d=a[b];a[b]=function(...e){if(!a[b].Ha.hasOwnProperty(e.length))throw new W(`Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].Ha})!`);return a[b].Ha[e.length].apply(this,e)};a[b].Ha=[];a[b].Ha[d.bb]=d}},xc=(a,b,c)=>{if(l.hasOwnProperty(a)){if(void 0===c||void 0!==l[a].Ha&&void 0!==l[a].Ha[c])throw new W(`Cannot register public name '${a}' twice`);wc(l, -a,a);if(l[a].Ha.hasOwnProperty(c))throw new W(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);l[a].Ha[c]=b}else l[a]=b,l[a].bb=c},yc=a=>{a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a};function zc(a,b,c,d,e,f,g,h){this.name=a;this.constructor=b;this.$a=c;this.Sa=d;this.Ka=e;this.bc=f;this.lb=g;this.$b=h;this.uc=[]} -var Ac=(a,b,c)=>{for(;b!==c;){if(!b.lb)throw new W(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.lb(a);b=b.Ka}return a},Bc=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a}; -function Cc(a,b){if(null===b){if(this.Bb)throw new W(`null is not a valid ${this.name}`);return 0}if(!b.wa)throw new W(`Cannot pass "${Bc(b)}" as a ${this.name}`);if(!b.wa.Aa)throw new W(`Cannot pass deleted object as a pointer of type ${this.name}`);return Ac(b.wa.Aa,b.wa.Da.Ca,this.Ca)} -function Dc(a,b){if(null===b){if(this.Bb)throw new W(`null is not a valid ${this.name}`);if(this.qb){var c=this.Eb();null!==a&&a.push(this.Sa,c);return c}return 0}if(!b||!b.wa)throw new W(`Cannot pass "${Bc(b)}" as a ${this.name}`);if(!b.wa.Aa)throw new W(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.pb&&b.wa.Da.pb)throw new W(`Cannot convert argument of type ${b.wa.Na?b.wa.Na.name:b.wa.Da.name} to parameter type ${this.name}`);c=Ac(b.wa.Aa,b.wa.Da.Ca,this.Ca);if(this.qb){if(void 0=== -b.wa.Ia)throw new W("Passing raw pointer to smart pointer is illegal");switch(this.Ac){case 0:if(b.wa.Na===this)c=b.wa.Ia;else throw new W(`Cannot convert argument of type ${b.wa.Na?b.wa.Na.name:b.wa.Da.name} to parameter type ${this.name}`);break;case 1:c=b.wa.Ia;break;case 2:if(b.wa.Na===this)c=b.wa.Ia;else{var d=b.clone();c=this.vc(c,Ec(()=>d["delete"]()));null!==a&&a.push(this.Sa,c)}break;default:throw new W("Unsupporting sharing policy");}}return c} -function Fc(a,b){if(null===b){if(this.Bb)throw new W(`null is not a valid ${this.name}`);return 0}if(!b.wa)throw new W(`Cannot pass "${Bc(b)}" as a ${this.name}`);if(!b.wa.Aa)throw new W(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.wa.Da.pb)throw new W(`Cannot convert argument of type ${b.wa.Da.name} to parameter type ${this.name}`);return Ac(b.wa.Aa,b.wa.Da.Ca,this.Ca)} -var Gc=(a,b,c)=>{if(b===c)return a;if(void 0===c.Ka)return null;a=Gc(a,b,c.Ka);return null===a?null:c.$b(a)},Hc={},Ic=(a,b)=>{if(void 0===b)throw new W("ptr should not be undefined");for(;a.Ka;)b=a.lb(b),a=a.Ka;return Hc[b]},Jc=(a,b)=>{if(!b.Da||!b.Aa)throw new kc("makeClassHandle requires ptr and ptrType");if(!!b.Na!==!!b.Ia)throw new kc("Both smartPtrType and smartPtr must be specified");b.count={value:1};return rc(Object.create(a,{wa:{value:b,writable:!0}}))}; -function Kc(a,b,c,d,e,f,g,h,k,m,p){this.name=a;this.Ca=b;this.Bb=c;this.pb=d;this.qb=e;this.tc=f;this.Ac=g;this.Tb=h;this.Eb=k;this.vc=m;this.Sa=p;e||void 0!==b.Ka?this.Ja=Dc:(this.Ja=d?Cc:Fc,this.Oa=null)}var Lc=(a,b,c)=>{if(!l.hasOwnProperty(a))throw new kc("Replacing nonexistent public symbol");void 0!==l[a].Ha&&void 0!==c?l[a].Ha[c]=b:(l[a]=b,l[a].bb=c)},X=(a,b)=>{a=V(a);var c=K(b);if("function"!=typeof c)throw new W(`unknown function pointer with signature ${a}: ${b}`);return c}; -class Mc extends Error{}var Pc=a=>{a=Nc(a);var b=V(a);Oc(a);return b},Qc=(a,b)=>{function c(f){e[f]||ic[f]||(jc[f]?jc[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new Mc(`${a}: `+d.map(Pc).join([", "]));};function Rc(a){for(var b=1;bf)throw new W("argTypes array size mismatch! Must at least get return value and 'this' types!");var g=null!==b[1]&&null!==c,h=Rc(b),k=!b[0].pc,m=f-2,p=Array(m),n=[],t=[];return uc(a,function(...z){t.length=0;n.length=g?2:1;n[0]=e;if(g){var u=b[1].Ja(t,this);n[1]=u}for(var w=0;w{for(var c=[],d=0;d>2]);return c},Uc=a=>{a=a.trim();const b=a.indexOf("(");return-1===b?a:a.slice(0,b)},Vc=[],Wc=[0,1,,1,null,1,!0,1,!1,1],Xc=a=>{9{if(!a)throw new W(`Cannot use deleted val. handle = ${a}`);return Wc[a]},Ec=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=Vc.pop()||Wc.length;Wc[b]=a;Wc[b+1]=1;return b}},Zc={name:"emscripten::val",Ga:a=>{var b= -Yc(a);Xc(a);return b},Ja:(a,b)=>Ec(b),Ta:gc,Oa:null},$c=(a,b)=>{switch(b){case 4:return function(c){return this.Ga(qa[c>>2])};case 8:return function(c){return this.Ga(sa[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},ad=Object.assign({optional:!0},Zc),bd=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,cd=(a,b,c)=>{a>>=1;b=Ta(pa,a,b/2,c);if(16{c??=2147483647; +b+=String.fromCharCode(c)}},W=class extends Error{constructor(a){super(a);this.name="BindingError"}};function mc(a,b,c={}){var d=b.name;if(!a)throw new W(`type "${d}" must have a positive integer typeid pointer`);if(ic.hasOwnProperty(a)){if(c.fc)return;throw new W(`Cannot register type '${d}' twice`);}ic[a]=b;delete jc[a];hc.hasOwnProperty(a)&&(b=hc[a],delete hc[a],b.forEach(e=>e()))}function U(a,b,c={}){return mc(a,b,c)} +var nc=(a,b,c)=>{switch(b){case 1:return c?d=>r[d]:d=>v[d];case 2:return c?d=>A[d>>1]:d=>pa[d>>1];case 4:return c?d=>B[d>>2]:d=>D[d>>2];case 8:return c?d=>G[d>>3]:d=>ta[d>>3];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},oc=a=>{throw new W(a.va.Ca.Ba.name+" instance already deleted");},pc=!1,qc=()=>{},rc=a=>{if(!globalThis.FinalizationRegistry)return rc=b=>b,a;pc=new FinalizationRegistry(b=>{b=b.va;--b.count.value;0===b.count.value&&(b.Ha?b.Ma.Ra(b.Ha):b.Ca.Ba.Ra(b.za))});rc= +b=>{var c=b.va;c.Ha&&pc.register(b,{va:c},b);return b};qc=b=>{pc.unregister(b)};return rc(a)},sc=[];function tc(){} +var uc=(a,b)=>Object.defineProperty(b,"name",{value:a}),vc={},wc=(a,b,c)=>{if(void 0===a[b].Ga){var d=a[b];a[b]=function(...e){if(!a[b].Ga.hasOwnProperty(e.length))throw new W(`Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].Ga})!`);return a[b].Ga[e.length].apply(this,e)};a[b].Ga=[];a[b].Ga[d.ab]=d}},xc=(a,b,c)=>{if(l.hasOwnProperty(a)){if(void 0===c||void 0!==l[a].Ga&&void 0!==l[a].Ga[c])throw new W(`Cannot register public name '${a}' twice`);wc(l, +a,a);if(l[a].Ga.hasOwnProperty(c))throw new W(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);l[a].Ga[c]=b}else l[a]=b,l[a].ab=c},yc=a=>{a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a};function zc(a,b,c,d,e,f,g,h){this.name=a;this.constructor=b;this.Za=c;this.Ra=d;this.Ja=e;this.ac=f;this.kb=g;this.Zb=h;this.tc=[]} +var Ac=(a,b,c)=>{for(;b!==c;){if(!b.kb)throw new W(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.kb(a);b=b.Ja}return a},Bc=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a}; +function Cc(a,b){if(null===b){if(this.Ab)throw new W(`null is not a valid ${this.name}`);return 0}if(!b.va)throw new W(`Cannot pass "${Bc(b)}" as a ${this.name}`);if(!b.va.za)throw new W(`Cannot pass deleted object as a pointer of type ${this.name}`);return Ac(b.va.za,b.va.Ca.Ba,this.Ba)} +function Dc(a,b){if(null===b){if(this.Ab)throw new W(`null is not a valid ${this.name}`);if(this.pb){var c=this.Db();null!==a&&a.push(this.Ra,c);return c}return 0}if(!b||!b.va)throw new W(`Cannot pass "${Bc(b)}" as a ${this.name}`);if(!b.va.za)throw new W(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.ob&&b.va.Ca.ob)throw new W(`Cannot convert argument of type ${b.va.Ma?b.va.Ma.name:b.va.Ca.name} to parameter type ${this.name}`);c=Ac(b.va.za,b.va.Ca.Ba,this.Ba);if(this.pb){if(void 0=== +b.va.Ha)throw new W("Passing raw pointer to smart pointer is illegal");switch(this.zc){case 0:if(b.va.Ma===this)c=b.va.Ha;else throw new W(`Cannot convert argument of type ${b.va.Ma?b.va.Ma.name:b.va.Ca.name} to parameter type ${this.name}`);break;case 1:c=b.va.Ha;break;case 2:if(b.va.Ma===this)c=b.va.Ha;else{var d=b.clone();c=this.uc(c,Ec(()=>d["delete"]()));null!==a&&a.push(this.Ra,c)}break;default:throw new W("Unsupporting sharing policy");}}return c} +function Fc(a,b){if(null===b){if(this.Ab)throw new W(`null is not a valid ${this.name}`);return 0}if(!b.va)throw new W(`Cannot pass "${Bc(b)}" as a ${this.name}`);if(!b.va.za)throw new W(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.va.Ca.ob)throw new W(`Cannot convert argument of type ${b.va.Ca.name} to parameter type ${this.name}`);return Ac(b.va.za,b.va.Ca.Ba,this.Ba)} +var Gc=(a,b,c)=>{if(b===c)return a;if(void 0===c.Ja)return null;a=Gc(a,b,c.Ja);return null===a?null:c.Zb(a)},Hc={},Ic=(a,b)=>{if(void 0===b)throw new W("ptr should not be undefined");for(;a.Ja;)b=a.kb(b),a=a.Ja;return Hc[b]},Jc=(a,b)=>{if(!b.Ca||!b.za)throw new kc("makeClassHandle requires ptr and ptrType");if(!!b.Ma!==!!b.Ha)throw new kc("Both smartPtrType and smartPtr must be specified");b.count={value:1};return rc(Object.create(a,{va:{value:b,writable:!0}}))}; +function Kc(a,b,c,d,e,f,g,h,k,m,p){this.name=a;this.Ba=b;this.Ab=c;this.ob=d;this.pb=e;this.sc=f;this.zc=g;this.Sb=h;this.Db=k;this.uc=m;this.Ra=p;e||void 0!==b.Ja?this.Ia=Dc:(this.Ia=d?Cc:Fc,this.Na=null)}var Lc=(a,b,c)=>{if(!l.hasOwnProperty(a))throw new kc("Replacing nonexistent public symbol");void 0!==l[a].Ga&&void 0!==c?l[a].Ga[c]=b:(l[a]=b,l[a].ab=c)},X=(a,b)=>{a=V(a);var c=L(b);if("function"!=typeof c)throw new W(`unknown function pointer with signature ${a}: ${b}`);return c}; +class Mc extends Error{}var Pc=a=>{a=Nc(a);var b=V(a);Oc(a);return b},Qc=(a,b)=>{function c(f){e[f]||ic[f]||(jc[f]?jc[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new Mc(`${a}: `+d.map(Pc).join([", "]));};function Rc(a){for(var b=1;bf)throw new W("argTypes array size mismatch! Must at least get return value and 'this' types!");var g=null!==b[1]&&null!==c,h=Rc(b),k=!b[0].oc,m=f-2,p=Array(m),n=[],t=[];return uc(a,function(...z){t.length=0;n.length=g?2:1;n[0]=e;if(g){var u=b[1].Ia(t,this);n[1]=u}for(var w=0;w{for(var c=[],d=0;d>2]);return c},Uc=a=>{a=a.trim();const b=a.indexOf("(");return-1===b?a:a.slice(0,b)},Vc=[],Wc=[0,1,,1,null,1,!0,1,!1,1],Xc=a=>{9{if(!a)throw new W(`Cannot use deleted val. handle = ${a}`);return Wc[a]},Ec=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=Vc.pop()||Wc.length;Wc[b]=a;Wc[b+1]=1;return b}},Zc={name:"emscripten::val",Fa:a=>{var b= +Yc(a);Xc(a);return b},Ia:(a,b)=>Ec(b),Sa:gc,Na:null},$c=(a,b)=>{switch(b){case 4:return function(c){return this.Fa(ra[c>>2])};case 8:return function(c){return this.Fa(sa[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},ad=Object.assign({optional:!0},Zc),bd=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,cd=(a,b,c)=>{a>>=1;b=Ta(pa,a,b/2,c);if(16{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>1]=a.charCodeAt(e),b+=2;A[b>>1]=0;return b-d},ed=a=>2*a.length,fd=(a,b,c)=>{var d="";a>>=2;for(var e=0;!(e>=b/4);e++){var f=D[a+e];if(!f&&!c)break;d+=String.fromCodePoint(f)}return d},gd=(a,b,c)=>{c??=2147483647;if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e>2]=f;b+=4;if(b+4>c)break}B[b>>2]=0;return b-d},hd=a=>{for(var b=0,c=0;c{var b=kd.length;kd.push(a);return b},md=(a,b)=>{for(var c=Array(a),d=0;d>2],g=ic[f];if(void 0===g)throw a=`${`parameter ${d}`} has unknown type ${Pc(f)}`,new W(a);c[e]=g}return c},nd={},od=a=>{var b=nd[a];return void 0===b?V(a):b},pd=a=>0===a%4&&(0!==a%100||0===a%400),qd=[0,31,60,91,121,152,182,213,244,274,305,335],rd=[0,31,59,90,120,151,181,212,243,273,304,334],sd={},td=a=>{if(!(a instanceof Ba||"unwind"==a))throw a;},ud=a=>{ma=a;Ga|| -0{if(!la)try{if(a(),!(Ga||0{if(!la)try{if(a(),!(Ga||0{try{var c=indexedDB.open("emscripten_filesystem",1)}catch(d){return b(d)}c.onupgradeneeded=d=>{d=d.target.result;d.objectStoreNames.contains("FILES")&&d.deleteObjectStore("FILES");d.createObjectStore("FILES")};c.onsuccess=d=>a(d.target.result);c.onerror=b})}var Y,Ad; -function Bd(a,b,c,d,e){function f(){var I=0,C=0;y.response&&E&&0===D[a+12>>2]&&(C=y.response.byteLength);0>2]=I;Z(a+16,C);Z(a+24,0);(I=y.response?y.response.byteLength:0)&&Z(a+32,I);A[a+40>>1]=y.readyState;A[a+42>>1]=y.status;y.statusText&&N(y.statusText,v,a+44,64);L&&(I=Dd(y.responseURL),D[a+200>>2]=I)}var g=D[a+8>>2];if(g){var h=g?M(v,g):"",k=a+108,m=bc(k+0);m||="GET";var p=D[k+56>>2],n=D[k+68>>2],t=D[k+72>>2];g=D[k+76>>2];var z=D[k+80>>2], -u=D[k+84>>2],w=D[k+88>>2],x=D[k+52>>2],E=!!(x&1),F=!!(x&2),L=!!(x&64);n=n?n?M(v,n):"":void 0;t=t?t?M(v,t):"":void 0;var y=new XMLHttpRequest;y.withCredentials=!!v[k+60];y.open(m,h,!L,n,t);L||(y.timeout=p);y.Oc=h;y.responseType="arraybuffer";z&&(h=z?M(v,z):"",y.overrideMimeType(h));if(g)for(;;){k=D[g>>2];if(!k)break;h=D[g+4>>2];if(!h)break;g+=8;k=k?M(v,k):"";h=h?M(v,h):"";y.setRequestHeader(k,h)}var J=xd(y);D[a>>2]=J;g=u&&w?v.slice(u,u+w):null;y.onload=I=>{Y.has(J)&&(f(),200<=y.status&&300>y.status? -b(a,y,I):c(a,I))};y.onerror=I=>{Y.has(J)&&(f(),c(a,I))};y.ontimeout=I=>{Y.has(J)&&c(a,I)};y.onprogress=I=>{if(Y.has(J)){var C=E&&F&&y.response?y.response.byteLength:0,ra=0;0>2]=ra;Z(a+16,C);Z(a+24,I.loaded-C);Z(a+32,I.total);A[a+40>>1]=y.readyState;C=y.status;3<=y.readyState&&0===y.status&&0>1]=C;y.statusText&&N(y.statusText,v,a+44,64);d(a,I);Oc(ra)}};y.onreadystatechange=I=>{if(Y.has(J)){A[a+40>>1]=y.readyState; -2<=y.readyState&&(A[a+42>>1]=y.status);if(!L&&2===y.readyState&&0>2]=C}e(a,I)}};try{y.send(g)}catch(I){c(a,I)}}else c(a,"no url specified!")}var Z=(a,b)=>{D[a>>2]=b;D[a+4>>2]=(b-D[a>>2])/4294967296},Dd=a=>{var b=Va(a)+1,c=Cd(b);c&&N(a,v,c,b);return c}; +function Bd(a,b,c,d,e){function f(){var I=0,C=0;y.response&&E&&0===D[a+12>>2]&&(C=y.response.byteLength);0>2]=I;Z(a+16,C);Z(a+24,0);(I=y.response?y.response.byteLength:0)&&Z(a+32,I);A[a+40>>1]=y.readyState;A[a+42>>1]=y.status;y.statusText&&N(y.statusText,v,a+44,64);K&&(I=Dd(y.responseURL),D[a+200>>2]=I)}var g=D[a+8>>2];if(g){var h=g?M(v,g):"",k=a+108,m=bc(k+0);m||="GET";var p=D[k+56>>2],n=D[k+68>>2],t=D[k+72>>2];g=D[k+76>>2];var z=D[k+80>>2], +u=D[k+84>>2],w=D[k+88>>2],x=D[k+52>>2],E=!!(x&1),F=!!(x&2),K=!!(x&64);n=n?n?M(v,n):"":void 0;t=t?t?M(v,t):"":void 0;var y=new XMLHttpRequest;y.withCredentials=!!v[k+60];y.open(m,h,!K,n,t);K||(y.timeout=p);y.Nc=h;y.responseType="arraybuffer";z&&(h=z?M(v,z):"",y.overrideMimeType(h));if(g)for(;;){k=D[g>>2];if(!k)break;h=D[g+4>>2];if(!h)break;g+=8;k=k?M(v,k):"";h=h?M(v,h):"";y.setRequestHeader(k,h)}var J=xd(y);D[a>>2]=J;g=u&&w?v.slice(u,u+w):null;y.onload=I=>{Y.has(J)&&(f(),200<=y.status&&300>y.status? +b(a,y,I):c(a,I))};y.onerror=I=>{Y.has(J)&&(f(),c(a,I))};y.ontimeout=I=>{Y.has(J)&&c(a,I)};y.onprogress=I=>{if(Y.has(J)){var C=E&&F&&y.response?y.response.byteLength:0,qa=0;0>2]=qa;Z(a+16,C);Z(a+24,I.loaded-C);Z(a+32,I.total);A[a+40>>1]=y.readyState;C=y.status;3<=y.readyState&&0===y.status&&0>1]=C;y.statusText&&N(y.statusText,v,a+44,64);d(a,I);Oc(qa)}};y.onreadystatechange=I=>{if(Y.has(J)){A[a+40>>1]=y.readyState; +2<=y.readyState&&(A[a+42>>1]=y.status);if(!K&&2===y.readyState&&0>2]=C}e(a,I)}};try{y.send(g)}catch(I){c(a,I)}}else c(a,"no url specified!")}var Z=(a,b)=>{D[a>>2]=b;D[a+4>>2]=(b-D[a>>2])/4294967296},Dd=a=>{var b=Va(a)+1,c=Cd(b);c&&N(a,v,c,b);return c}; function Ed(a,b,c,d){var e=Ad;if(e){var f=D[a+108+64>>2];f||=D[a+8>>2];var g=f?M(v,f):"";try{var h=e.transaction(["FILES"],"readwrite").objectStore("FILES").put(b,g);h.onsuccess=()=>{A[a+40>>1]=4;A[a+42>>1]=200;N("OK",v,a+44,64);c(a,0,g)};h.onerror=k=>{A[a+40>>1]=4;A[a+42>>1]=413;N("Payload Too Large",v,a+44,64);d(a,0,k)}}catch(k){d(a,0,k)}}else d(a,0,"IndexedDB not available!")} function Fd(a,b,c){var d=Ad;if(d){var e=D[a+108+64>>2];e||=D[a+8>>2];e=e?M(v,e):"";try{var f=d.transaction(["FILES"],"readonly").objectStore("FILES").get(e);f.onsuccess=g=>{if(g.target.result){g=g.target.result;var h=g.byteLength||g.length,k=Cd(h);v.set(new Uint8Array(g),k);D[a+12>>2]=k;Z(a+16,h);Z(a+24,0);Z(a+32,h);A[a+40>>1]=4;A[a+42>>1]=200;N("OK",v,a+44,64);b(a,0,g)}else A[a+40>>1]=4,A[a+42>>1]=404,N("Not Found",v,a+44,64),c(a,0,"no data")};f.onerror=g=>{A[a+40>>1]=4;A[a+42>>1]=404;N("Not Found", v,a+44,64);c(a,0,g)}}catch(g){c(a,0,g)}}else c(a,0,"IndexedDB not available!")} function Gd(a,b,c){var d=Ad;if(d){var e=D[a+108+64>>2];e||=D[a+8>>2];e=e?M(v,e):"";try{var f=d.transaction(["FILES"],"readwrite").objectStore("FILES").delete(e);f.onsuccess=g=>{g=g.target.result;D[a+12>>2]=0;Z(a+16,0);Z(a+24,0);Z(a+32,0);A[a+40>>1]=4;A[a+42>>1]=200;N("OK",v,a+44,64);b(a,0,g)};f.onerror=g=>{A[a+40>>1]=4;A[a+42>>1]=404;N("Not Found",v,a+44,64);c(a,0,g)}}catch(g){c(a,0,g)}}else c(a,0,"IndexedDB not available!")} var Hd={},Jd=()=>{if(!Id){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.language||"C").replace("-","_")+".UTF-8",_:da||"./this.program"},b;for(b in Hd)void 0===Hd[b]?delete a[b]:a[b]=Hd[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);Id=c}return Id},Id;ub=Array(4096);Kb(P,"/");S("/tmp");S("/home");S("/home/web_user"); -(function(){S("/dev");Za(259,{read:()=>0,write:(d,e,f,g)=>g,Qa:()=>0});Nb("/dev/null",259);Ya(1280,ab);Ya(1536,bb);Nb("/dev/tty",1280);Nb("/dev/tty1",1536);var a=new Uint8Array(1024),b=0,c=()=>{0===b&&(Qa(a),b=a.byteLength);return a[--b]};Zb("/dev","random",c);Zb("/dev","urandom",c);S("/dev/shm");S("/dev/shm/tmp")})(); -(function(){S("/proc");var a=S("/proc/self");S("/proc/self/fd");Kb({Va(){var b=fb(a,"fd",16895,73);b.xa={Qa:P.xa.Qa};b.za={fb(c,d){c=+d;var e=R(c);c={parent:null,Va:{Sb:"fake"},za:{kb:()=>e.path},id:c+1};return c.parent=c},Fb(){return Array.from(sb.entries()).filter(([,c])=>c).map(([c])=>c.toString())}};return b}},"/proc/self/fd")})(); -(()=>{let a=tc.prototype;Object.assign(a,{isAliasOf:function(c){if(!(this instanceof tc&&c instanceof tc))return!1;var d=this.wa.Da.Ca,e=this.wa.Aa;c.wa=c.wa;var f=c.wa.Da.Ca;for(c=c.wa.Aa;d.Ka;)e=d.lb(e),d=d.Ka;for(;f.Ka;)c=f.lb(c),f=f.Ka;return d===f&&e===c},clone:function(){this.wa.Aa||oc(this);if(this.wa.ib)return this.wa.count.value+=1,this;var c=rc,d=Object,e=d.create,f=Object.getPrototypeOf(this),g=this.wa;c=c(e.call(d,f,{wa:{value:{count:g.count,cb:g.cb,ib:g.ib,Aa:g.Aa,Da:g.Da,Ia:g.Ia,Na:g.Na}}})); -c.wa.count.value+=1;c.wa.cb=!1;return c},["delete"](){this.wa.Aa||oc(this);if(this.wa.cb&&!this.wa.ib)throw new W("Object already scheduled for deletion");qc(this);var c=this.wa;--c.count.value;0===c.count.value&&(c.Ia?c.Na.Sa(c.Ia):c.Da.Ca.Sa(c.Aa));this.wa.ib||(this.wa.Ia=void 0,this.wa.Aa=void 0)},isDeleted:function(){return!this.wa.Aa},deleteLater:function(){this.wa.Aa||oc(this);if(this.wa.cb&&!this.wa.ib)throw new W("Object already scheduled for deletion");sc.push(this);this.wa.cb=!0;return this}}); +(function(){S("/dev");Za(259,{read:()=>0,write:(d,e,f,g)=>g,Pa:()=>0});Nb("/dev/null",259);Ya(1280,ab);Ya(1536,bb);Nb("/dev/tty",1280);Nb("/dev/tty1",1536);var a=new Uint8Array(1024),b=0,c=()=>{0===b&&(Qa(a),b=a.byteLength);return a[--b]};Zb("/dev","random",c);Zb("/dev","urandom",c);S("/dev/shm");S("/dev/shm/tmp")})(); +(function(){S("/proc");var a=S("/proc/self");S("/proc/self/fd");Kb({Ua(){var b=fb(a,"fd",16895,73);b.wa={Pa:P.wa.Pa};b.ya={eb(c,d){c=+d;var e=R(c);c={parent:null,Ua:{Rb:"fake"},ya:{jb:()=>e.path},id:c+1};return c.parent=c},Eb(){return Array.from(sb.entries()).filter(([,c])=>c).map(([c])=>c.toString())}};return b}},"/proc/self/fd")})(); +(()=>{let a=tc.prototype;Object.assign(a,{isAliasOf:function(c){if(!(this instanceof tc&&c instanceof tc))return!1;var d=this.va.Ca.Ba,e=this.va.za;c.va=c.va;var f=c.va.Ca.Ba;for(c=c.va.za;d.Ja;)e=d.kb(e),d=d.Ja;for(;f.Ja;)c=f.kb(c),f=f.Ja;return d===f&&e===c},clone:function(){this.va.za||oc(this);if(this.va.hb)return this.va.count.value+=1,this;var c=rc,d=Object,e=d.create,f=Object.getPrototypeOf(this),g=this.va;c=c(e.call(d,f,{va:{value:{count:g.count,bb:g.bb,hb:g.hb,za:g.za,Ca:g.Ca,Ha:g.Ha,Ma:g.Ma}}})); +c.va.count.value+=1;c.va.bb=!1;return c},["delete"](){this.va.za||oc(this);if(this.va.bb&&!this.va.hb)throw new W("Object already scheduled for deletion");qc(this);var c=this.va;--c.count.value;0===c.count.value&&(c.Ha?c.Ma.Ra(c.Ha):c.Ca.Ba.Ra(c.za));this.va.hb||(this.va.Ha=void 0,this.va.za=void 0)},isDeleted:function(){return!this.va.za},deleteLater:function(){this.va.za||oc(this);if(this.va.bb&&!this.va.hb)throw new W("Object already scheduled for deletion");sc.push(this);this.va.bb=!0;return this}}); const b=Symbol.dispose;b&&(a[b]=a["delete"])})(); -Object.assign(Kc.prototype,{cc(a){this.Tb&&(a=this.Tb(a));return a},Nb(a){this.Sa?.(a)},Ta:gc,Ga:function(a){function b(){return this.qb?Jc(this.Ca.$a,{Da:this.tc,Aa:c,Na:this,Ia:a}):Jc(this.Ca.$a,{Da:this,Aa:a})}var c=this.cc(a);if(!c)return this.Nb(a),null;var d=Ic(this.Ca,c);if(void 0!==d){if(0===d.wa.count.value)return d.wa.Aa=c,d.wa.Ia=a,d.clone();d=d.clone();this.Nb(a);return d}d=this.Ca.bc(c);d=vc[d];if(!d)return b.call(this);d=this.pb?d.Yb:d.pointerType;var e=Gc(c,this.Ca,d.Ca);return null=== -e?b.call(this):this.qb?Jc(d.Ca.$a,{Da:d,Aa:e,Na:this,Ia:a}):Jc(d.Ca.$a,{Da:d,Aa:e})}});(async function(){Y=new yd;nb("library_fetch_init");try{Ad=await zd()}catch(a){Ad=!1}finally{mb("library_fetch_init")}})();wa=l.wasmMemory?l.wasmMemory:new WebAssembly.Memory({initial:(l.INITIAL_MEMORY||209715200)/65536,maximum:32768});va();l.noExitRuntime&&(Ga=l.noExitRuntime);l.preloadPlugins&&(ob=l.preloadPlugins);l.print&&(ja=l.print);l.printErr&&(q=l.printErr);l.wasmBinary&&(ka=l.wasmBinary); +Object.assign(Kc.prototype,{bc(a){this.Sb&&(a=this.Sb(a));return a},Mb(a){this.Ra?.(a)},Sa:gc,Fa:function(a){function b(){return this.pb?Jc(this.Ba.Za,{Ca:this.sc,za:c,Ma:this,Ha:a}):Jc(this.Ba.Za,{Ca:this,za:a})}var c=this.bc(a);if(!c)return this.Mb(a),null;var d=Ic(this.Ba,c);if(void 0!==d){if(0===d.va.count.value)return d.va.za=c,d.va.Ha=a,d.clone();d=d.clone();this.Mb(a);return d}d=this.Ba.ac(c);d=vc[d];if(!d)return b.call(this);d=this.ob?d.Xb:d.pointerType;var e=Gc(c,this.Ba,d.Ba);return null=== +e?b.call(this):this.pb?Jc(d.Ba.Za,{Ca:d,za:e,Ma:this,Ha:a}):Jc(d.Ba.Za,{Ca:d,za:e})}});(async function(){Y=new yd;nb("library_fetch_init");try{Ad=await zd()}catch(a){Ad=!1}finally{mb("library_fetch_init")}})();wa=l.wasmMemory?l.wasmMemory:new WebAssembly.Memory({initial:(l.INITIAL_MEMORY||209715200)/65536,maximum:32768});va();l.noExitRuntime&&(Ga=l.noExitRuntime);l.preloadPlugins&&(ob=l.preloadPlugins);l.print&&(ja=l.print);l.printErr&&(q=l.printErr);l.wasmBinary&&(ka=l.wasmBinary); l.thisProgram&&(da=l.thisProgram);if(l.preInit)for("function"==typeof l.preInit&&(l.preInit=[l.preInit]);0{var k=b?Ra(Na(a+"/"+b)):a,m=`cp ${k}`;nb(m);try{var p=c;"string"==typeof c&&(p=await jb(c));p=await pb(p,k);h?.();f||Yb(a,b,p,d,e,g)}finally{mb(m)}};l.FS_unlink=(...a)=>Pb(...a);l.FS_createPath=(...a)=>Wb(...a);l.FS_createDevice=(...a)=>Zb(...a); -l.FS_createDataFile=(...a)=>Yb(...a);l.FS_createLazyFile=(...a)=>ac(...a);var Kd={203618:(a,b,c,d)=>{a=a?M(v,a):"";b=b?M(v,b):"";c=c?M(v,c):"";d=d?M(v,d):"";throw Error(a+b+c+d);},203834:(a,b)=>{a=a?M(v,a):"";b=b?M(v,b):"";throw Error(a+b);},203944:a=>{a=a?M(v,a):"";throw Error(a);},204012:a=>{a=a?M(v,a):"";throw Error(a);}},Nc,Cd,Oc,cb,Ld,Md,Nd,Od,Ja;l.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE=1024; -var Td={F:(a,b)=>K(a)(b),t:function(a,b,c){Ka=c;try{var d=R(a);switch(b){case 0:var e=La();if(0>e)break;for(;sb[e];)e++;return Ib(d,e).Za;case 1:case 2:return 0;case 3:return d.flags;case 4:return e=La(),d.flags|=e,0;case 12:return e=La(),A[e+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Fa}},Z:function(a,b){try{var c=R(a),d=c.node,e=c.xa.Pa;a=e?c:d;e??=d.za.Pa;Gb(e);var f=e(a);return dc(b,f)}catch(g){if("undefined"==typeof T|| -"ErrnoError"!==g.name)throw g;return-g.Fa}},_:function(a,b,c){Ka=c;try{var d=R(a);switch(b){case 21509:return d.Ba?0:-59;case 21505:if(!d.Ba)return-59;if(d.Ba.Wa.kc){a=[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var e=La();B[e>>2]=25856;B[e+4>>2]=5;B[e+8>>2]=191;B[e+12>>2]=35387;for(var f=0;32>f;f++)r[e+f+17]=a[f]||0}return 0;case 21510:case 21511:case 21512:return d.Ba?0:-59;case 21506:case 21507:case 21508:if(!d.Ba)return-59;if(d.Ba.Wa.lc)for(e=La(),a=[],f=0;32> -f;f++)a.push(r[e+f+17]);return 0;case 21519:if(!d.Ba)return-59;e=La();return B[e>>2]=0;case 21520:return d.Ba?-28:-59;case 21537:case 21531:e=La();if(!d.xa.jc)throw new O(59);return d.xa.jc(d,b,e);case 21523:if(!d.Ba)return-59;d.Ba.Wa.mc&&(f=[24,80],e=La(),A[e>>1]=f[0],A[e+2>>1]=f[1]);return 0;case 21524:return d.Ba?0:-59;case 21515:return d.Ba?0:-59;default:return-28}}catch(g){if("undefined"==typeof T||"ErrnoError"!==g.name)throw g;return-g.Fa}},X:function(a,b){try{return a=a?M(v,a):"",dc(b,Qb(a, -!0))}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return-c.Fa}},W:function(a,b,c,d){try{b=b?M(v,b):"";var e=d&256;b=cc(a,b,d&4096);return dc(c,e?Qb(b,!0):Qb(b))}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Fa}},u:function(a,b,c,d){Ka=d;try{b=b?M(v,b):"";b=cc(a,b);var e=d?La():0;return Sb(b,c,e).Za}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Fa}},Y:function(a,b){try{return a=a?M(v,a):"",dc(b,Qb(a))}catch(c){if("undefined"== -typeof T||"ErrnoError"!==c.name)throw c;return-c.Fa}},$:()=>H(""),e:a=>{var b=ec[a];delete ec[a];var c=b.Eb,d=b.Sa,e=b.Ob,f=e.map(g=>g.ec).concat(e.map(g=>g.yc));lc([a],f,g=>{var h={};e.forEach((k,m)=>{var p=g[m],n=k.eb,t=k.dc,z=g[m+e.length],u=k.xc,w=k.zc;h[k.ac]={read:x=>p.Ga(n(t,x)),write:(x,E)=>{var F=[];u(w,x,z.Ja(F,E));fc(F)},optional:g[m].optional}});return[{name:b.name,Ga:k=>{var m={},p;for(p in h)m[p]=h[p].read(k);d(k);return m},Ja:(k,m)=>{for(var p in h)if(!(p in m||h[p].optional))throw new TypeError(`Missing field: "${p}"`); -var n=c();for(p in h)h[p].write(n,m[p]);null!==k&&k.push(d,n);return n},Ta:gc,Oa:d}]})},w:(a,b,c,d,e)=>{b=V(b);d=0n===d;let f=g=>g;if(d){const g=8*c;f=h=>BigInt.asUintN(g,h);e=f(e)}U(a,{name:b,Ga:f,Ja:(g,h)=>{"number"==typeof h&&(h=BigInt(h));return h},Ta:nc(b,c,!d),Oa:null})},y:(a,b,c,d)=>{b=V(b);U(a,{name:b,Ga:function(e){return!!e},Ja:function(e,f){return f?c:d},Ta:function(e){return this.Ga(v[e])},Oa:null})},ga:(a,b,c,d,e,f,g,h,k,m,p,n,t)=>{p=V(p);f=X(e,f);h&&=X(g,h);m&&=X(k,m);t=X(n,t);var z= -yc(p);xc(z,function(){Qc(`Cannot construct ${p} due to unbound types`,[d])});lc([a,b,c],d?[d]:[],u=>{u=u[0];if(d){var w=u.Ca;var x=w.$a}else x=tc.prototype;u=uc(p,function(...y){if(Object.getPrototypeOf(this)!==E)throw new W(`Use 'new' to construct ${p}`);if(void 0===F.Mb)throw new W(`${p} has no accessible constructor`);var J=F.Mb[y.length];if(void 0===J)throw new W(`Tried to invoke ctor of ${p} with invalid number of parameters (${y.length}) - expected (${Object.keys(F.Mb).toString()}) parameters instead!`); -return J.apply(this,y)});var E=Object.create(x,{constructor:{value:u}});u.prototype=E;var F=new zc(p,u,E,t,w,f,h,m);if(F.Ka){var L;(L=F.Ka).Gb??(L.Gb=[]);F.Ka.Gb.push(F)}w=new Kc(p,F,!0,!1,!1);L=new Kc(p+"*",F,!1,!1,!1);x=new Kc(p+" const*",F,!1,!0,!1);vc[a]={pointerType:L,Yb:x};Lc(z,u);return[w,L,x]})},o:(a,b,c,d,e,f,g,h)=>{var k=Tc(c,d);b=V(b);b=Uc(b);f=X(e,f);lc([],[a],m=>{function p(){Qc(`Cannot call ${n} due to unbound types`,k)}m=m[0];var n=`${m.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]); -h&&m.Ca.uc.push(b);var t=m.Ca.$a,z=t[b];void 0===z||void 0===z.Ha&&z.className!==m.name&&z.bb===c-2?(p.bb=c-2,p.className=m.name,t[b]=p):(wc(t,b,n),t[b].Ha[c-2]=p);lc([],k,u=>{u=Sc(n,u,m,f,g);void 0===t[b].Ha?(u.bb=c-2,t[b]=u):t[b].Ha[c-2]=u;return[]});return[]})},ka:a=>U(a,Zc),v:(a,b,c)=>{b=V(b);U(a,{name:b,Ga:d=>d,Ja:(d,e)=>e,Ta:$c(b,c),Oa:null})},h:(a,b,c,d,e,f)=>{var g=Tc(b,c);a=V(a);a=Uc(a);e=X(d,e);xc(a,function(){Qc(`Cannot call ${a} due to unbound types`,g)},b-1);lc([],g,h=>{Lc(a,Sc(a,[h[0], -null].concat(h.slice(1)),null,e,f),b-1);return[]})},j:(a,b,c,d,e)=>{b=V(b);let f=h=>h;if(0===d){var g=32-8*c;f=h=>h<>>g;e=f(e)}U(a,{name:b,Ga:f,Ja:(h,k)=>k,Ta:nc(b,c,0!==d),Oa:null})},g:(a,b,c)=>{function d(f){return new e(r.buffer,D[f+4>>2],D[f>>2])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][b];c=V(c);U(a,{name:c,Ga:d,Ta:d},{hc:!0})},k:a=>{U(a,ad)},x:(a,b)=>{b=V(b);U(a,{name:b,Ga(c){var d=bc(c+4,D[c>>2],!0); -Oc(c);return d},Ja(c,d){d instanceof ArrayBuffer&&(d=new Uint8Array(d));var e="string"==typeof d;if(!(e||ArrayBuffer.isView(d)&&1==d.BYTES_PER_ELEMENT))throw new W("Cannot pass non-string to std::string");var f=e?Va(d):d.length;var g=Cd(4+f+1),h=g+4;D[g>>2]=f;e?N(d,v,h,f+1):v.set(d,h);null!==c&&c.push(Oc,g);return g},Ta:gc,Oa(c){Oc(c)}})},p:(a,b,c)=>{c=V(c);if(2===b){var d=cd;var e=dd;var f=ed}else d=fd,e=gd,f=hd;U(a,{name:c,Ga:g=>{var h=d(g+4,D[g>>2]*b,!0);Oc(g);return h},Ja:(g,h)=>{if("string"!= -typeof h)throw new W(`Cannot pass non-string to C++ string type ${c}`);var k=f(h),m=Cd(4+k+b);D[m>>2]=k/b;e(h,m+4,k+b);null!==g&&g.push(Oc,m);return m},Ta:gc,Oa(g){Oc(g)}})},f:(a,b,c,d,e,f)=>{ec[a]={name:V(b),Eb:X(c,d),Sa:X(e,f),Ob:[]}},b:(a,b,c,d,e,f,g,h,k,m)=>{ec[a].Ob.push({ac:V(b),ec:c,eb:X(d,e),dc:f,yc:g,xc:X(h,k),zc:m})},z:(a,b)=>{b=V(b);U(a,{pc:!0,name:b,Ga:()=>{},Ja:()=>{}})},H:()=>{Ga=!1;jd=0},D:()=>{throw Infinity;},d:(a,b,c)=>{var [d,...e]=md(a,b),f=d.Ja.bind(d),g=e.map(k=>k.Ta.bind(k)); -a--;var h=Array(a);b=`methodCaller<(${e.map(k=>k.name)}) => ${d.name}>`;return ld(uc(b,(k,m,p,n)=>{for(var t=0,z=0;z>2]=Ec(k));return u}))},ia:Xc,fa:a=>{if(!a)return Ec(globalThis);a=od(a);return Ec(globalThis[a])},i:(a,b)=>{a=Yc(a);b=Yc(b);return Ec(a[b])},P:a=>{9kd[a](b, -c,d,e),ha:()=>Ec([]),ja:a=>Ec(od(a)),E:a=>{var b=Yc(a);fc(b);Xc(a)},O:function(a,b){a=-9007199254740992>a||9007199254740992>2]=a.getSeconds();B[b+4>>2]=a.getMinutes();B[b+8>>2]=a.getHours();B[b+12>>2]=a.getDate();B[b+16>>2]=a.getMonth();B[b+20>>2]=a.getFullYear()-1900;B[b+24>>2]=a.getDay();B[b+28>>2]=(pd(a.getFullYear())?qd:rd)[a.getMonth()]+a.getDate()-1|0;B[b+36>>2]=-(60*a.getTimezoneOffset());var c=(new Date(a.getFullYear(),6,1)).getTimezoneOffset(),d=(new Date(a.getFullYear(), +l.FS_createDataFile=(...a)=>Yb(...a);l.FS_createLazyFile=(...a)=>ac(...a);var Kd={202969:(a,b,c,d)=>{a=a?M(v,a):"";b=b?M(v,b):"";c=c?M(v,c):"";d=d?M(v,d):"";throw Error(a+b+c+d);},203185:(a,b)=>{a=a?M(v,a):"";b=b?M(v,b):"";throw Error(a+b);},203295:a=>{a=a?M(v,a):"";throw Error(a);},203363:a=>{a=a?M(v,a):"";throw Error(a);}},Nc,Cd,Oc,cb,Ld,Md,Nd,Od,Ja;l.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE=1024; +var Td={F:(a,b)=>L(a)(b),t:function(a,b,c){Ka=c;try{var d=R(a);switch(b){case 0:var e=La();if(0>e)break;for(;sb[e];)e++;return Ib(d,e).Ya;case 1:case 2:return 0;case 3:return d.flags;case 4:return e=La(),d.flags|=e,0;case 12:return e=La(),A[e+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Ea}},Z:function(a,b){try{var c=R(a),d=c.node,e=c.wa.Oa;a=e?c:d;e??=d.ya.Oa;Gb(e);var f=e(a);return dc(b,f)}catch(g){if("undefined"==typeof T|| +"ErrnoError"!==g.name)throw g;return-g.Ea}},_:function(a,b,c){Ka=c;try{var d=R(a);switch(b){case 21509:return d.Aa?0:-59;case 21505:if(!d.Aa)return-59;if(d.Aa.Va.jc){a=[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var e=La();B[e>>2]=25856;B[e+4>>2]=5;B[e+8>>2]=191;B[e+12>>2]=35387;for(var f=0;32>f;f++)r[e+f+17]=a[f]||0}return 0;case 21510:case 21511:case 21512:return d.Aa?0:-59;case 21506:case 21507:case 21508:if(!d.Aa)return-59;if(d.Aa.Va.kc)for(e=La(),a=[],f=0;32> +f;f++)a.push(r[e+f+17]);return 0;case 21519:if(!d.Aa)return-59;e=La();return B[e>>2]=0;case 21520:return d.Aa?-28:-59;case 21537:case 21531:e=La();if(!d.wa.ic)throw new O(59);return d.wa.ic(d,b,e);case 21523:if(!d.Aa)return-59;d.Aa.Va.lc&&(f=[24,80],e=La(),A[e>>1]=f[0],A[e+2>>1]=f[1]);return 0;case 21524:return d.Aa?0:-59;case 21515:return d.Aa?0:-59;default:return-28}}catch(g){if("undefined"==typeof T||"ErrnoError"!==g.name)throw g;return-g.Ea}},X:function(a,b){try{return a=a?M(v,a):"",dc(b,Qb(a, +!0))}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return-c.Ea}},W:function(a,b,c,d){try{b=b?M(v,b):"";var e=d&256;b=cc(a,b,d&4096);return dc(c,e?Qb(b,!0):Qb(b))}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Ea}},u:function(a,b,c,d){Ka=d;try{b=b?M(v,b):"";b=cc(a,b);var e=d?La():0;return Sb(b,c,e).Ya}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return-f.Ea}},Y:function(a,b){try{return a=a?M(v,a):"",dc(b,Qb(a))}catch(c){if("undefined"== +typeof T||"ErrnoError"!==c.name)throw c;return-c.Ea}},$:()=>H(""),e:a=>{var b=ec[a];delete ec[a];var c=b.Db,d=b.Ra,e=b.Nb,f=e.map(g=>g.dc).concat(e.map(g=>g.xc));lc([a],f,g=>{var h={};e.forEach((k,m)=>{var p=g[m],n=k.cb,t=k.cc,z=g[m+e.length],u=k.wc,w=k.yc;h[k.$b]={read:x=>p.Fa(n(t,x)),write:(x,E)=>{var F=[];u(w,x,z.Ia(F,E));fc(F)},optional:g[m].optional}});return[{name:b.name,Fa:k=>{var m={},p;for(p in h)m[p]=h[p].read(k);d(k);return m},Ia:(k,m)=>{for(var p in h)if(!(p in m||h[p].optional))throw new TypeError(`Missing field: "${p}"`); +var n=c();for(p in h)h[p].write(n,m[p]);null!==k&&k.push(d,n);return n},Sa:gc,Na:d}]})},w:(a,b,c,d,e)=>{b=V(b);d=0n===d;let f=g=>g;if(d){const g=8*c;f=h=>BigInt.asUintN(g,h);e=f(e)}U(a,{name:b,Fa:f,Ia:(g,h)=>{"number"==typeof h&&(h=BigInt(h));return h},Sa:nc(b,c,!d),Na:null})},y:(a,b,c,d)=>{b=V(b);U(a,{name:b,Fa:function(e){return!!e},Ia:function(e,f){return f?c:d},Sa:function(e){return this.Fa(v[e])},Na:null})},ja:(a,b,c,d,e,f,g,h,k,m,p,n,t)=>{p=V(p);f=X(e,f);h&&=X(g,h);m&&=X(k,m);t=X(n,t);var z= +yc(p);xc(z,function(){Qc(`Cannot construct ${p} due to unbound types`,[d])});lc([a,b,c],d?[d]:[],u=>{u=u[0];if(d){var w=u.Ba;var x=w.Za}else x=tc.prototype;u=uc(p,function(...y){if(Object.getPrototypeOf(this)!==E)throw new W(`Use 'new' to construct ${p}`);if(void 0===F.Lb)throw new W(`${p} has no accessible constructor`);var J=F.Lb[y.length];if(void 0===J)throw new W(`Tried to invoke ctor of ${p} with invalid number of parameters (${y.length}) - expected (${Object.keys(F.Lb).toString()}) parameters instead!`); +return J.apply(this,y)});var E=Object.create(x,{constructor:{value:u}});u.prototype=E;var F=new zc(p,u,E,t,w,f,h,m);if(F.Ja){var K;(K=F.Ja).Fb??(K.Fb=[]);F.Ja.Fb.push(F)}w=new Kc(p,F,!0,!1,!1);K=new Kc(p+"*",F,!1,!1,!1);x=new Kc(p+" const*",F,!1,!0,!1);vc[a]={pointerType:K,Xb:x};Lc(z,u);return[w,K,x]})},l:(a,b,c,d,e,f,g,h)=>{var k=Tc(c,d);b=V(b);b=Uc(b);f=X(e,f);lc([],[a],m=>{function p(){Qc(`Cannot call ${n} due to unbound types`,k)}m=m[0];var n=`${m.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]); +h&&m.Ba.tc.push(b);var t=m.Ba.Za,z=t[b];void 0===z||void 0===z.Ga&&z.className!==m.name&&z.ab===c-2?(p.ab=c-2,p.className=m.name,t[b]=p):(wc(t,b,n),t[b].Ga[c-2]=p);lc([],k,u=>{u=Sc(n,u,m,f,g);void 0===t[b].Ga?(u.ab=c-2,t[b]=u):t[b].Ga[c-2]=u;return[]});return[]})},ka:a=>U(a,Zc),v:(a,b,c)=>{b=V(b);U(a,{name:b,Fa:d=>d,Ia:(d,e)=>e,Sa:$c(b,c),Na:null})},h:(a,b,c,d,e,f)=>{var g=Tc(b,c);a=V(a);a=Uc(a);e=X(d,e);xc(a,function(){Qc(`Cannot call ${a} due to unbound types`,g)},b-1);lc([],g,h=>{Lc(a,Sc(a,[h[0], +null].concat(h.slice(1)),null,e,f),b-1);return[]})},j:(a,b,c,d,e)=>{b=V(b);let f=h=>h;if(0===d){var g=32-8*c;f=h=>h<>>g;e=f(e)}U(a,{name:b,Fa:f,Ia:(h,k)=>k,Sa:nc(b,c,0!==d),Na:null})},g:(a,b,c)=>{function d(f){return new e(r.buffer,D[f+4>>2],D[f>>2])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][b];c=V(c);U(a,{name:c,Fa:d,Sa:d},{fc:!0})},k:a=>{U(a,ad)},x:(a,b)=>{b=V(b);U(a,{name:b,Fa(c){var d=bc(c+4,D[c>>2],!0); +Oc(c);return d},Ia(c,d){d instanceof ArrayBuffer&&(d=new Uint8Array(d));var e="string"==typeof d;if(!(e||ArrayBuffer.isView(d)&&1==d.BYTES_PER_ELEMENT))throw new W("Cannot pass non-string to std::string");var f=e?Va(d):d.length;var g=Cd(4+f+1),h=g+4;D[g>>2]=f;e?N(d,v,h,f+1):v.set(d,h);null!==c&&c.push(Oc,g);return g},Sa:gc,Na(c){Oc(c)}})},p:(a,b,c)=>{c=V(c);if(2===b){var d=cd;var e=dd;var f=ed}else d=fd,e=gd,f=hd;U(a,{name:c,Fa:g=>{var h=d(g+4,D[g>>2]*b,!0);Oc(g);return h},Ia:(g,h)=>{if("string"!= +typeof h)throw new W(`Cannot pass non-string to C++ string type ${c}`);var k=f(h),m=Cd(4+k+b);D[m>>2]=k/b;e(h,m+4,k+b);null!==g&&g.push(Oc,m);return m},Sa:gc,Na(g){Oc(g)}})},f:(a,b,c,d,e,f)=>{ec[a]={name:V(b),Db:X(c,d),Ra:X(e,f),Nb:[]}},b:(a,b,c,d,e,f,g,h,k,m)=>{ec[a].Nb.push({$b:V(b),dc:c,cb:X(d,e),cc:f,xc:g,wc:X(h,k),yc:m})},z:(a,b)=>{b=V(b);U(a,{oc:!0,name:b,Fa:()=>{},Ia:()=>{}})},H:()=>{Ga=!1;jd=0},E:()=>{throw Infinity;},d:(a,b,c)=>{var [d,...e]=md(a,b),f=d.Ia.bind(d),g=e.map(k=>k.Sa.bind(k)); +a--;var h=Array(a);b=`methodCaller<(${e.map(k=>k.name)}) => ${d.name}>`;return ld(uc(b,(k,m,p,n)=>{for(var t=0,z=0;z>2]=Ec(k));return u}))},ia:Xc,ha:a=>{if(!a)return Ec(globalThis);a=od(a);return Ec(globalThis[a])},i:(a,b)=>{a=Yc(a);b=Yc(b);return Ec(a[b])},O:a=>{9kd[a](b, +c,d,e),ga:()=>Ec([]),fa:a=>Ec(od(a)),D:a=>{var b=Yc(a);fc(b);Xc(a)},P:function(a,b){a=-9007199254740992>a||9007199254740992>2]=a.getSeconds();B[b+4>>2]=a.getMinutes();B[b+8>>2]=a.getHours();B[b+12>>2]=a.getDate();B[b+16>>2]=a.getMonth();B[b+20>>2]=a.getFullYear()-1900;B[b+24>>2]=a.getDay();B[b+28>>2]=(pd(a.getFullYear())?qd:rd)[a.getMonth()]+a.getDate()-1|0;B[b+36>>2]=-(60*a.getTimezoneOffset());var c=(new Date(a.getFullYear(),6,1)).getTimezoneOffset(),d=(new Date(a.getFullYear(), 0,1)).getTimezoneOffset();B[b+32>>2]=(c!=d&&a.getTimezoneOffset()==Math.min(d,c))|0},Q:function(a){var b=new Date(B[a+20>>2]+1900,B[a+16>>2],B[a+12>>2],B[a+8>>2],B[a+4>>2],B[a>>2],0),c=B[a+32>>2],d=b.getTimezoneOffset(),e=(new Date(b.getFullYear(),6,1)).getTimezoneOffset(),f=(new Date(b.getFullYear(),0,1)).getTimezoneOffset(),g=Math.min(f,e);0>c?B[a+32>>2]=Number(e!=f&&g==d):0>2]=b.getDay();B[a+28>>2]=(pd(b.getFullYear())? -qd:rd)[b.getMonth()]+b.getDate()-1|0;B[a>>2]=b.getSeconds();B[a+4>>2]=b.getMinutes();B[a+8>>2]=b.getHours();B[a+12>>2]=b.getDate();B[a+16>>2]=b.getMonth();B[a+20>>2]=b.getYear();a=b.getTime();return BigInt(isNaN(a)?-1:a/1E3)},M:function(a,b,c,d,e,f,g){e=-9007199254740992>e||9007199254740992>2]=k.Xa;D[g>>2]=m;return 0}catch(p){if("undefined"==typeof T||"ErrnoError"!==p.name)throw p;return-p.Fa}},N:function(a,b,c,d,e,f){f=-9007199254740992>f||9007199254740992{sd[a]&&(clearTimeout(sd[a].id),delete sd[a]);if(!b)return 0;var c=setTimeout(()=>{delete sd[a];vd(()=> -Ld(a,performance.now()))},b);sd[a]={id:c,Nc:b};return 0},R:(a,b,c,d)=>{var e=(new Date).getFullYear(),f=(new Date(e,0,1)).getTimezoneOffset();e=(new Date(e,6,1)).getTimezoneOffset();D[a>>2]=60*Math.max(f,e);B[b>>2]=Number(f!=e);b=g=>{var h=Math.abs(g);return`UTC${0<=g?"-":"+"}${String(Math.floor(h/60)).padStart(2,"0")}${String(h%60).padStart(2,"0")}`};a=b(f);b=b(e);e=a))return 28;G[c>>3]=BigInt(Math.round(1E6*(0=== -a?Date.now():performance.now())));return 0},l:(a,b,c)=>{wd.length=0;for(var d;d=v[b++];){var e=105!=d;e&=112!=d;c+=e&&c%8?4:0;wd.push(112==d?D[c>>2]:106==d?G[c>>3]:105==d?B[c>>2]:sa[c>>3]);c+=e?8:4}return Kd[a](...wd)},aa:function(a){if(Y.has(a)){var b=Y.get(a),c=Y;c.Xa[a]=void 0;c.Pb.push(a);0b.readyState&&b.abort()}},L:()=>2147483648,m:()=>performance.now(),ca:()=>!ba,K:a=>{var b=v.length;a>>>=0;if(2147483648=c;c*=2){a:{var d=(Math.min(2147483648,65536* -Math.ceil(Math.max(a,b+2097152/c)/65536))-wa.buffer.byteLength+65535)/65536|0;try{wa.grow(d);va();var e=1;break a}catch(f){}e=void 0}if(e)return!0}return!1},ba:function(a,b,c,d,e){function f(C){t?C():vd(C)}var g=a+108,h=D[g+36>>2],k=D[g+40>>2],m=D[g+44>>2],p=D[g+48>>2],n=D[g+52>>2],t=!!(n&64),z=C=>{f(()=>{h?K(h)(C):b?.(C)})},u=C=>{f(()=>{m?K(m)(C):d?.(C)})},w=C=>{f(()=>{k?K(k)(C):c?.(C)})},x=C=>{f(()=>{p?K(p)(C):e?.(C)})},E=C=>{Bd(C,z,w,u,x)},F=(C,ra)=>{Ed(C,ra.response,Ia=>{f(()=>{h?K(h)(Ia):b?.(Ia)})}, -Ia=>{f(()=>{h?K(h)(Ia):b?.(Ia)})})},L=C=>{Bd(C,F,w,u,x)},y=bc(g+0),J=!!(n&16),I=!!(n&4);n=!!(n&32);if("EM_IDB_STORE"===y)E=D[g+84>>2],Ed(a,v.slice(E,E+D[g+88>>2]),z,w);else if("EM_IDB_DELETE"===y)Gd(a,z,w);else if(J){if(n)return 0;Bd(a,I?F:z,w,u,x)}else Fd(a,z,n?w:I?L:E);return a},U:(a,b)=>{var c=0,d=0,e;for(e of Jd()){var f=b+c;D[a+d>>2]=f;c+=N(e,v,f,Infinity)+1;d+=4}return 0},V:(a,b)=>{var c=Jd();D[a>>2]=c.length;a=0;for(var d of c)a+=Va(d)+1;D[b>>2]=a;return 0},ea:a=>{ma=a;ud(a)},n:function(a){try{var b= -R(a);Tb(b);return 0}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return c.Fa}},s:function(a,b,c,d){try{a:{var e=R(a);a=b;for(var f,g=b=0;g>2],k=D[a+4>>2];a+=8;var m=e,p=h,n=k,t=f,z=r;if(0>n||0>t)throw new O(28);if(null===m.Za)throw new O(8);if(1===(m.flags&2097155))throw new O(8);if(Q(m.node.mode))throw new O(31);if(!m.xa.read)throw new O(28);var u="undefined"!=typeof t;if(!u)t=m.position;else if(!m.seekable)throw new O(70);var w=m.xa.read(m,z,p,n,t);u||(m.position+= -w);var x=w;if(0>x){var E=-1;break a}b+=x;if(x>2]=E;return 0}catch(F){if("undefined"==typeof T||"ErrnoError"!==F.name)throw F;return F.Fa}},T:function(a,b,c,d){b=-9007199254740992>b||9007199254740992>3]=BigInt(e.position);e.Ab&&0===b&&0===c&&(e.Ab=null);return 0}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return f.Fa}},r:function(a,b,c,d){try{a:{var e=R(a);a=b;for(var f, -g=b=0;g>2],k=D[a+4>>2];a+=8;var m=Vb(e,r,h,k,f);if(0>m){var p=-1;break a}b+=m;if(m>2]=p;return 0}catch(n){if("undefined"==typeof T||"ErrnoError"!==n.name)throw n;return n.Fa}},da:function(){var a=stackTrace(),b=Va(a)+1,c=Cd(b);N(a,v,c,b);return c},la:function(){var a=self.navigator.userAgent,b=Va(a)+1,c=Cd(b);N(a,v,c,b);return c},A:Pd,q:Qd,B:Rd,C:Sd,a:wa,G:ud,J:function(a,b){try{return Qa(v.subarray(a,a+b)),0}catch(c){if("undefined"== -typeof T||"ErrnoError"!==c.name)throw c;return c.Fa}}};function Qd(a,b){var c=Od();try{K(a)(b)}catch(d){Nd(c);if(d!==d+0)throw d;Md(1,0)}}function Sd(a,b,c,d){var e=Od();try{K(a)(b,c,d)}catch(f){Nd(e);if(f!==f+0)throw f;Md(1,0)}}function Rd(a,b,c){var d=Od();try{K(a)(b,c)}catch(e){Nd(d);if(e!==e+0)throw e;Md(1,0)}}function Pd(a,b,c,d){var e=Od();try{return K(a)(b,c,d)}catch(f){Nd(e);if(f!==f+0)throw f;Md(1,0)}} -function Ud(){function a(){l.calledRun=!0;if(!la){ua=!0;if(!l.noFSInit&&!vb){var b,c;vb=!0;b??=l.stdin;c??=l.stdout;d??=l.stderr;b?Zb("/dev","stdin",b):Ob("/dev/tty","/dev/stdin");c?Zb("/dev","stdout",null,c):Ob("/dev/tty","/dev/stdout");d?Zb("/dev","stderr",null,d):Ob("/dev/tty1","/dev/stderr");Sb("/dev/stdin",0);Sb("/dev/stdout",1);Sb("/dev/stderr",1)}Vd.ma();wb=!1;na?.(l);l.onRuntimeInitialized?.();if(l.postRun)for("function"==typeof l.postRun&&(l.postRun=[l.postRun]);l.postRun.length;){var d= +qd:rd)[b.getMonth()]+b.getDate()-1|0;B[a>>2]=b.getSeconds();B[a+4>>2]=b.getMinutes();B[a+8>>2]=b.getHours();B[a+12>>2]=b.getDate();B[a+16>>2]=b.getMonth();B[a+20>>2]=b.getYear();a=b.getTime();return BigInt(isNaN(a)?-1:a/1E3)},M:function(a,b,c,d,e,f,g){e=-9007199254740992>e||9007199254740992>2]=k.Wa;D[g>>2]=m;return 0}catch(p){if("undefined"==typeof T||"ErrnoError"!==p.name)throw p;return-p.Ea}},N:function(a,b,c,d,e,f){f=-9007199254740992>f||9007199254740992{sd[a]&&(clearTimeout(sd[a].id),delete sd[a]);if(!b)return 0;var c=setTimeout(()=>{delete sd[a];vd(()=> +Ld(a,performance.now()))},b);sd[a]={id:c,Mc:b};return 0},R:(a,b,c,d)=>{var e=(new Date).getFullYear(),f=(new Date(e,0,1)).getTimezoneOffset();e=(new Date(e,6,1)).getTimezoneOffset();D[a>>2]=60*Math.max(f,e);B[b>>2]=Number(f!=e);b=g=>{var h=Math.abs(g);return`UTC${0<=g?"-":"+"}${String(Math.floor(h/60)).padStart(2,"0")}${String(h%60).padStart(2,"0")}`};a=b(f);b=b(e);e=a))return 28;G[c>>3]=BigInt(Math.round(1E6*(0=== +a?Date.now():performance.now())));return 0},m:(a,b,c)=>{wd.length=0;for(var d;d=v[b++];){var e=105!=d;e&=112!=d;c+=e&&c%8?4:0;wd.push(112==d?D[c>>2]:106==d?G[c>>3]:105==d?B[c>>2]:sa[c>>3]);c+=e?8:4}return Kd[a](...wd)},aa:function(a){if(Y.has(a)){var b=Y.get(a),c=Y;c.Wa[a]=void 0;c.Ob.push(a);0b.readyState&&b.abort()}},L:()=>2147483648,n:()=>performance.now(),ca:()=>!ba,K:a=>{var b=v.length;a>>>=0;if(2147483648=c;c*=2){a:{var d=(Math.min(2147483648,65536* +Math.ceil(Math.max(a,b+2097152/c)/65536))-wa.buffer.byteLength+65535)/65536|0;try{wa.grow(d);va();var e=1;break a}catch(f){}e=void 0}if(e)return!0}return!1},ba:function(a,b,c,d,e){function f(C){t?C():vd(C)}var g=a+108,h=D[g+36>>2],k=D[g+40>>2],m=D[g+44>>2],p=D[g+48>>2],n=D[g+52>>2],t=!!(n&64),z=C=>{f(()=>{h?L(h)(C):b?.(C)})},u=C=>{f(()=>{m?L(m)(C):d?.(C)})},w=C=>{f(()=>{k?L(k)(C):c?.(C)})},x=C=>{f(()=>{p?L(p)(C):e?.(C)})},E=C=>{Bd(C,z,w,u,x)},F=(C,qa)=>{Ed(C,qa.response,Ia=>{f(()=>{h?L(h)(Ia):b?.(Ia)})}, +Ia=>{f(()=>{h?L(h)(Ia):b?.(Ia)})})},K=C=>{Bd(C,F,w,u,x)},y=bc(g+0),J=!!(n&16),I=!!(n&4);n=!!(n&32);if("EM_IDB_STORE"===y)E=D[g+84>>2],Ed(a,v.slice(E,E+D[g+88>>2]),z,w);else if("EM_IDB_DELETE"===y)Gd(a,z,w);else if(J){if(n)return 0;Bd(a,I?F:z,w,u,x)}else Fd(a,z,n?w:I?K:E);return a},U:(a,b)=>{var c=0,d=0,e;for(e of Jd()){var f=b+c;D[a+d>>2]=f;c+=N(e,v,f,Infinity)+1;d+=4}return 0},V:(a,b)=>{var c=Jd();D[a>>2]=c.length;a=0;for(var d of c)a+=Va(d)+1;D[b>>2]=a;return 0},ea:a=>{ma=a;ud(a)},o:function(a){try{var b= +R(a);Tb(b);return 0}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return c.Ea}},s:function(a,b,c,d){try{a:{var e=R(a);a=b;for(var f,g=b=0;g>2],k=D[a+4>>2];a+=8;var m=e,p=h,n=k,t=f,z=r;if(0>n||0>t)throw new O(28);if(null===m.Ya)throw new O(8);if(1===(m.flags&2097155))throw new O(8);if(Q(m.node.mode))throw new O(31);if(!m.wa.read)throw new O(28);var u="undefined"!=typeof t;if(!u)t=m.position;else if(!m.seekable)throw new O(70);var w=m.wa.read(m,z,p,n,t);u||(m.position+= +w);var x=w;if(0>x){var E=-1;break a}b+=x;if(x>2]=E;return 0}catch(F){if("undefined"==typeof T||"ErrnoError"!==F.name)throw F;return F.Ea}},T:function(a,b,c,d){b=-9007199254740992>b||9007199254740992>3]=BigInt(e.position);e.zb&&0===b&&0===c&&(e.zb=null);return 0}catch(f){if("undefined"==typeof T||"ErrnoError"!==f.name)throw f;return f.Ea}},r:function(a,b,c,d){try{a:{var e=R(a);a=b;for(var f, +g=b=0;g>2],k=D[a+4>>2];a+=8;var m=Vb(e,r,h,k,f);if(0>m){var p=-1;break a}b+=m;if(m>2]=p;return 0}catch(n){if("undefined"==typeof T||"ErrnoError"!==n.name)throw n;return n.Ea}},da:function(){var a=stackTrace(),b=Va(a)+1,c=Cd(b);N(a,v,c,b);return c},A:Pd,q:Qd,B:Rd,C:Sd,a:wa,G:ud,J:function(a,b){try{return Qa(v.subarray(a,a+b)),0}catch(c){if("undefined"==typeof T||"ErrnoError"!==c.name)throw c;return c.Ea}}}; +function Qd(a,b){var c=Od();try{L(a)(b)}catch(d){Nd(c);if(d!==d+0)throw d;Md(1,0)}}function Sd(a,b,c,d){var e=Od();try{L(a)(b,c,d)}catch(f){Nd(e);if(f!==f+0)throw f;Md(1,0)}}function Rd(a,b,c){var d=Od();try{L(a)(b,c)}catch(e){Nd(d);if(e!==e+0)throw e;Md(1,0)}}function Pd(a,b,c,d){var e=Od();try{return L(a)(b,c,d)}catch(f){Nd(e);if(f!==f+0)throw f;Md(1,0)}} +function Ud(){function a(){l.calledRun=!0;if(!la){ua=!0;if(!l.noFSInit&&!vb){var b,c;vb=!0;b??=l.stdin;c??=l.stdout;d??=l.stderr;b?Zb("/dev","stdin",b):Ob("/dev/tty","/dev/stdin");c?Zb("/dev","stdout",null,c):Ob("/dev/tty","/dev/stdout");d?Zb("/dev","stderr",null,d):Ob("/dev/tty1","/dev/stderr");Sb("/dev/stdin",0);Sb("/dev/stdout",1);Sb("/dev/stderr",1)}Vd.la();wb=!1;na?.(l);l.onRuntimeInitialized?.();if(l.postRun)for("function"==typeof l.postRun&&(l.postRun=[l.postRun]);l.postRun.length;){var d= l.postRun.shift();Da.push(d)}Ca(Da)}}if(0{setTimeout(()=>l.setStatus(""),1);a()},1)):a()}}var Vd; -Vd=await (async function(){function a(c){c=Vd=c.exports;Nc=c.na;Cd=c.oa;Oc=c.pa;cb=c.ra;Ld=c.sa;Md=c.ta;Nd=c.ua;Od=c.va;Ja=c.qa;return Vd}var b={a:Td};if(l.instantiateWasm)return new Promise(c=>{l.instantiateWasm(b,(d,e)=>{c(a(d,e))})});xa??=l.locateFile?l.locateFile?l.locateFile("BlinkCardModule.wasm",fa):fa+"BlinkCardModule.wasm":(new URL("BlinkCardModule.wasm",import.meta.url)).href;return a((await Aa(b)).instance)}());Ud();moduleRtn=ua?l:new Promise((a,b)=>{na=a;oa=b}); +Vd=await (async function(){function a(c){c=Vd=c.exports;Nc=c.ma;Cd=c.na;Oc=c.oa;cb=c.qa;Ld=c.ra;Md=c.sa;Nd=c.ta;Od=c.ua;Ja=c.pa;return Vd}var b={a:Td};if(l.instantiateWasm)return new Promise(c=>{l.instantiateWasm(b,(d,e)=>{c(a(d,e))})});xa??=l.locateFile?l.locateFile?l.locateFile("BlinkCardModule.wasm",fa):fa+"BlinkCardModule.wasm":(new URL("BlinkCardModule.wasm",import.meta.url)).href;return a((await Aa(b)).instance)}());Ud();moduleRtn=ua?l:new Promise((a,b)=>{na=a;oa=b}); ;return moduleRtn}export default createModule; diff --git a/packages/blinkcard-wasm/dist/basic/BlinkCardModule.wasm b/packages/blinkcard-wasm/dist/basic/BlinkCardModule.wasm index 5b27f0e..f03548c 100755 Binary files a/packages/blinkcard-wasm/dist/basic/BlinkCardModule.wasm and b/packages/blinkcard-wasm/dist/basic/BlinkCardModule.wasm differ diff --git a/packages/blinkcard-wasm/dist/size-manifest.json b/packages/blinkcard-wasm/dist/size-manifest.json index ed6fdcc..3daf34f 100644 --- a/packages/blinkcard-wasm/dist/size-manifest.json +++ b/packages/blinkcard-wasm/dist/size-manifest.json @@ -1,12 +1,12 @@ { "wasm": { - "advanced": 2256595, - "basic": 2252883, - "advanced-threads": 2280165 + "basic": 2253698, + "advanced": 2257419, + "advanced-threads": 2281363 }, "data": { - "advanced": 8578325, "basic": 8578325, + "advanced": 8578325, "advanced-threads": 8578325 } } \ No newline at end of file diff --git a/packages/blinkcard-wasm/docs/README.md b/packages/blinkcard-wasm/docs/README.md index e96649a..2cef220 100644 --- a/packages/blinkcard-wasm/docs/README.md +++ b/packages/blinkcard-wasm/docs/README.md @@ -49,10 +49,12 @@ - [SingleSideScanningResult](type-aliases/SingleSideScanningResult.md) - [StrictnessLevel](type-aliases/StrictnessLevel.md) - [WasmBuildType](type-aliases/WasmBuildType.md) +- [WasmSimdVariant](type-aliases/WasmSimdVariant.md) - [WasmVariant](type-aliases/WasmVariant.md) ## Variables - [resourceFileTypes](variables/resourceFileTypes.md) - [wasmBuildTypes](variables/wasmBuildTypes.md) +- [wasmSimdVariants](variables/wasmSimdVariants.md) - [wasmVariants](variables/wasmVariants.md) diff --git a/packages/blinkcard-wasm/docs/type-aliases/WasmSimdVariant.md b/packages/blinkcard-wasm/docs/type-aliases/WasmSimdVariant.md new file mode 100644 index 0000000..6892592 --- /dev/null +++ b/packages/blinkcard-wasm/docs/type-aliases/WasmSimdVariant.md @@ -0,0 +1,9 @@ +[**@microblink/blinkcard-wasm**](../README.md) + +*** + +[@microblink/blinkcard-wasm](../README.md) / WasmSimdVariant + +# Type Alias: WasmSimdVariant + +> **WasmSimdVariant** = *typeof* [`wasmSimdVariants`](../variables/wasmSimdVariants.md)\[`number`\] diff --git a/packages/blinkcard-wasm/docs/variables/wasmSimdVariants.md b/packages/blinkcard-wasm/docs/variables/wasmSimdVariants.md new file mode 100644 index 0000000..bf10eb4 --- /dev/null +++ b/packages/blinkcard-wasm/docs/variables/wasmSimdVariants.md @@ -0,0 +1,9 @@ +[**@microblink/blinkcard-wasm**](../README.md) + +*** + +[@microblink/blinkcard-wasm](../README.md) / wasmSimdVariants + +# Variable: wasmSimdVariants + +> `const` **wasmSimdVariants**: readonly \[`"advanced"`, `"advanced-threads"`\] diff --git a/packages/blinkcard-wasm/package.json b/packages/blinkcard-wasm/package.json index 4411892..a3cce9e 100644 --- a/packages/blinkcard-wasm/package.json +++ b/packages/blinkcard-wasm/package.json @@ -1,7 +1,7 @@ { "name": "@microblink/blinkcard-wasm", "private": true, - "version": "3000.0.3", + "version": "3000.0.4", "scripts": { "build": "tsc", "build:publish": "tsc", @@ -60,5 +60,5 @@ "wasm", "webassembly" ], - "description": "Wasm runtime" + "description": "BlinkCard Wasm runtime" } diff --git a/packages/blinkcard-worker/CHANGELOG.md b/packages/blinkcard-worker/CHANGELOG.md index c86adfb..4a078b3 100644 --- a/packages/blinkcard-worker/CHANGELOG.md +++ b/packages/blinkcard-worker/CHANGELOG.md @@ -1,5 +1,14 @@ # @microblink/blinkcard-worker +## 3000.0.4 + +### Patch Changes + +- Updated dependencies + - @microblink/blinkcard-wasm@3000.0.4 + - @microblink/analytics@1.0.2 + - @microblink/worker-common@1.0.3 + ## 3000.0.3 ### Patch Changes diff --git a/packages/blinkcard-worker/docs/classes/BlinkCardWorker.md b/packages/blinkcard-worker/docs/classes/BlinkCardWorker.md index cc6e7d5..4bfe0ce 100644 --- a/packages/blinkcard-worker/docs/classes/BlinkCardWorker.md +++ b/packages/blinkcard-worker/docs/classes/BlinkCardWorker.md @@ -40,29 +40,9 @@ This method is called when the worker is terminated. *** -### createProxySession() - -> **createProxySession**(`session`): `object` & `object` & `ProxyMarked` - -This method creates a proxy session. - -#### Parameters - -##### session - -`BlinkCardScanningSession` - -The BlinkCard scanning session. - -#### Returns - -The proxy session. - -*** - ### createScanningSession() -> **createScanningSession**(`sessionSettings?`): `object` & `object` & `ProxyMarked` +> **createScanningSession**(`sessionSettings?`): `Omit`\<`BlinkCardScanningSession`, `"deleteLater"` \| `"isAliasOf"` \| `"process"`\> & `object` & `ProxyMarked` This method creates a BlinkCard scanning session. diff --git a/packages/blinkcard-worker/docs/type-aliases/WorkerScanningSession.md b/packages/blinkcard-worker/docs/type-aliases/WorkerScanningSession.md index 3dbb2c8..a514b5d 100644 --- a/packages/blinkcard-worker/docs/type-aliases/WorkerScanningSession.md +++ b/packages/blinkcard-worker/docs/type-aliases/WorkerScanningSession.md @@ -6,7 +6,7 @@ # Type Alias: WorkerScanningSession -> **WorkerScanningSession** = `OverrideProperties`\<`BlinkCardScanningSession`, \{ `process`: (`image`) => [`ProcessResultWithBuffer`](ProcessResultWithBuffer.md); \}\> & `object` +> **WorkerScanningSession** = `Omit`\<`BlinkCardScanningSession`, `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` The worker scanning session. @@ -52,6 +52,20 @@ The settings. > **ping**: [`BlinkCardWorker`](../classes/BlinkCardWorker.md)\[`"reportPinglet"`\] +### process() + +> **process**: (`image`) => [`ProcessResultWithBuffer`](ProcessResultWithBuffer.md) + +#### Parameters + +##### image + +`ImageData` + +#### Returns + +[`ProcessResultWithBuffer`](ProcessResultWithBuffer.md) + ### sendPinglets > **sendPinglets**: [`BlinkCardWorker`](../classes/BlinkCardWorker.md)\[`"sendPinglets"`\] diff --git a/packages/blinkcard-worker/package.json b/packages/blinkcard-worker/package.json index f629172..3140376 100644 --- a/packages/blinkcard-worker/package.json +++ b/packages/blinkcard-worker/package.json @@ -2,7 +2,7 @@ "name": "@microblink/blinkcard-worker", "description": "Provides a worker which runs the BlinkCard WebAssembly in separate thread", "private": true, - "version": "3000.0.3", + "version": "3000.0.4", "scripts": { "build": "concurrently pnpm:build:js pnpm:build:types", "build:js": "vite build --mode ${VITE_BUILD_MODE:-production}", diff --git a/packages/blinkcard-worker/src/BlinkCardWorker.test.ts b/packages/blinkcard-worker/src/BlinkCardWorker.test.ts index e4dd296..032e274 100644 --- a/packages/blinkcard-worker/src/BlinkCardWorker.test.ts +++ b/packages/blinkcard-worker/src/BlinkCardWorker.test.ts @@ -3,12 +3,8 @@ */ import type { Ping } from "@microblink/analytics/ping"; -import type { BlinkCardScanningSession } from "@microblink/blinkcard-wasm"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { createFakeImageData } from "@microblink/test-utils/mocks/imageData"; -import { createScanningSessionMock } from "@microblink/test-utils/mocks/scanningSession"; - /** * Test purpose: * - Cover non-init worker behavior in isolation from real wasm/network. @@ -16,14 +12,12 @@ import { createScanningSessionMock } from "@microblink/test-utils/mocks/scanning * Mocking procedure used in this file: * 1) Mock worker-common/comlink dependencies and install deterministic globals (`self`). * 2) Import the worker class and instantiate it directly. - * 3) Use helper-created fake sessions for proxy-session behavior tests. + * 3) Exercise public worker APIs without loading wasm/network resources. * * Cases covered: * - Guard rails before wasm load (`reportPinglet`/`sendPinglets` throw). * - Graceful terminate without a loaded module. - * - Active session cleanup/replacement for proxy and created sessions. - * - Proxy session forwards methods and transfers `arrayBuffer`. - * - Session processing errors are reported as ping error events. + * - Tightening helper privacy does not affect public guard-rail behavior. */ vi.mock("comlink", () => { const finalizer = Symbol("finalizer"); @@ -57,55 +51,6 @@ describe("BlinkCardWorker", () => { vi.unstubAllGlobals(); }); - it("sets active session when createScanningSession is called", async () => { - const worker = new BlinkCardWorker(); - const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => { - /* noop */ - }); - let deleted = false; - const session = createScanningSessionMock({ - delete: vi.fn().mockImplementation(() => { - deleted = true; - }), - isDeleted: vi.fn().mockReturnValue(deleted), - }); - - // invoke createScanningSession to set active session - worker.createProxySession(session); - // invoke terminate to clean up active session - await worker.terminate(); - - expect(session.isDeleted).toHaveBeenCalledTimes(1); - // we implicitly test that the session is set as active by the worker, - // since delete is called if this.#activeSession exists. - expect(session.delete).toHaveBeenCalledTimes(1); - expect(warnSpy).toHaveBeenCalledWith( - "No Wasm module loaded during worker termination. Skipping cleanup.", - ); - }); - - it("replaces active session when a newer proxy session is created", async () => { - const worker = new BlinkCardWorker(); - vi.spyOn(console, "warn").mockImplementation(() => { - /* noop */ - }); - const firstSession = createScanningSessionMock({ - isDeleted: vi.fn().mockReturnValue(false), - }); - const secondSession = createScanningSessionMock({ - isDeleted: vi.fn().mockReturnValue(false), - }); - - const firstProxySession = worker.createProxySession(firstSession); - worker.createProxySession(secondSession); - - firstProxySession.delete(); - await worker.terminate(); - - expect(firstSession.delete).toHaveBeenCalledTimes(1); - expect(secondSession.delete).toHaveBeenCalledTimes(1); - }); - it("throws when reporting pinglet without a loaded module", () => { const worker = new BlinkCardWorker(); const pinglet: Ping = { @@ -145,33 +90,4 @@ describe("BlinkCardWorker", () => { ); expect(self.close).toHaveBeenCalled(); }); - - it("creates a proxy session that forwards methods and attaches arrayBuffer", () => { - const worker = new BlinkCardWorker(); - const processResult = { status: "ok" }; - const session = createScanningSessionMock({ - process: vi.fn().mockReturnValue(processResult), - }); - - const proxySession = worker.createProxySession(session); - const image = createFakeImageData(); - const result = proxySession.process(image); - expect(result).toMatchObject(processResult); - expect(result.arrayBuffer).toBe(image.data.buffer); - }); - - it("rethrows session process errors without a loaded wasm module", () => { - const worker = new BlinkCardWorker(); - const error = new Error("boom"); - const session = createScanningSessionMock({ - process: vi.fn().mockImplementation(() => { - throw error; - }), - }); - - const proxySession = worker.createProxySession(session); - const image = createFakeImageData(); - - expect(() => proxySession.process(image)).toThrow(error); - }); }); diff --git a/packages/blinkcard-worker/src/BlinkCardWorker.ts b/packages/blinkcard-worker/src/BlinkCardWorker.ts index 164d9dc..5ad96d7 100644 --- a/packages/blinkcard-worker/src/BlinkCardWorker.ts +++ b/packages/blinkcard-worker/src/BlinkCardWorker.ts @@ -36,7 +36,6 @@ import type { EmscriptenModuleFactory, WasmVariant, } from "@microblink/blinkcard-wasm"; -import { OverrideProperties } from "type-fest"; import { installWorkerCrashReporter } from "@microblink/worker-common/workerCrashReporter"; export type { DownloadProgress } from "@microblink/worker-common/downloadResourceBuffer"; @@ -421,8 +420,7 @@ export class BlinkCardWorker { this.#proxyUrls?.baltazar && licenseUnlockResult.allowBaltazarProxy; const baltazarProxyUrl = shouldUseBaltazarProxy - ? // shouldUseBaltazarProxy implies this.#proxyUrls.baltazar is defined - this.#proxyUrls!.baltazar + ? this.#proxyUrls?.baltazar : undefined; if (baltazarProxyUrl) { @@ -475,7 +473,9 @@ export class BlinkCardWorker { * @param sessionSettings - The options for the session. * @returns The session. */ - createScanningSession(sessionSettings?: BlinkCardSessionSettingsInput) { + createScanningSession( + sessionSettings?: BlinkCardSessionSettingsInput, + ): WorkerScanningSession & ProxyMarked { if (!this.#wasmModule) { throw new Error("Wasm module not loaded"); } @@ -490,7 +490,7 @@ export class BlinkCardWorker { this.sendPinglets(); - return this.createProxySession(session); + return this.#createProxySession(session); } catch (error) { this.reportPinglet({ schemaName: "ping.error", @@ -513,7 +513,7 @@ export class BlinkCardWorker { * @param session - The BlinkCard scanning session. * @returns The proxy session. */ - createProxySession( + #createProxySession( session: BlinkCardScanningSession, ): WorkerScanningSession & ProxyMarked { this.#activeSession = session; @@ -522,7 +522,7 @@ export class BlinkCardWorker { * this is a custom session that will be proxied * it handles the transfer of the image data buffer */ - const customSession: WorkerScanningSession = { + const customSession: InternalWorkerScanningSession = { getResult: () => { try { return session.getResult(); @@ -790,12 +790,11 @@ export type ProcessResultWithBuffer = BlinkCardProcessResult & { /** * The worker scanning session. */ -export type WorkerScanningSession = OverrideProperties< +export type WorkerScanningSession = Omit< BlinkCardScanningSession, - { - process: (image: ImageData) => ProcessResultWithBuffer; - } + "process" | "deleteLater" | "isAliasOf" > & { + process: (image: ImageData) => ProcessResultWithBuffer; /** * Gets the settings. * @@ -830,6 +829,9 @@ export type WorkerScanningSession = OverrideProperties< sendPinglets: BlinkCardWorker["sendPinglets"]; }; +type InternalWorkerScanningSession = WorkerScanningSession & + Pick; + /** * Initialization settings for the BlinkCard worker. * diff --git a/packages/blinkcard/CHANGELOG.md b/packages/blinkcard/CHANGELOG.md index 1f6224b..19d9864 100644 --- a/packages/blinkcard/CHANGELOG.md +++ b/packages/blinkcard/CHANGELOG.md @@ -1,5 +1,14 @@ # @microblink/blinkcard +## 3000.0.4 + +### Patch Changes + +- Updated dependencies + - @microblink/blinkcard-ux-manager@3000.0.4 + - @microblink/camera-manager@7.3.2 + - @microblink/blinkcard-core@3000.0.4 + ## 3000.0.3 ### Patch Changes diff --git a/packages/blinkcard/README.md b/packages/blinkcard/README.md index 8b0dce3..91da05a 100644 --- a/packages/blinkcard/README.md +++ b/packages/blinkcard/README.md @@ -57,7 +57,7 @@ Explore example applications in the repository under `apps/examples`: - Must be served in a [secure context](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts). - For multithreaded builds, your site must be [cross-origin isolated](https://web.dev/articles/why-coop-coep): - ``` + ```http Cross-Origin-Embedder-Policy: require-corp Cross-Origin-Opener-Policy: same-origin ``` diff --git a/packages/blinkcard/docs/README.md b/packages/blinkcard/docs/README.md index 8755add..8336333 100644 --- a/packages/blinkcard/docs/README.md +++ b/packages/blinkcard/docs/README.md @@ -6,6 +6,7 @@ ## Classes +- [AnalyticService](classes/AnalyticService.md) - [BlinkCardWorker](classes/BlinkCardWorker.md) - [Camera](classes/Camera.md) - [CameraError](classes/CameraError.md) @@ -19,6 +20,7 @@ ## Interfaces - [BlinkCardUxManager](interfaces/BlinkCardUxManager.md) +- [PingBase](interfaces/PingBase.md) - [UADataValues](interfaces/UADataValues.md) - [WasmBindings](interfaces/WasmBindings.md) - [WasmModule](interfaces/WasmModule.md) @@ -101,6 +103,27 @@ - [LocalizedValue](type-aliases/LocalizedValue.md) - [PartialLocalizationStrings](type-aliases/PartialLocalizationStrings.md) - [PartialScanningSettingsInput](type-aliases/PartialScanningSettingsInput.md) +- [Ping](type-aliases/Ping.md) +- [PingBrowserDeviceInfo](type-aliases/PingBrowserDeviceInfo.md) +- [PingBrowserDeviceInfoData](type-aliases/PingBrowserDeviceInfoData.md) +- [PingCameraHardwareInfo](type-aliases/PingCameraHardwareInfo.md) +- [PingCameraHardwareInfoData](type-aliases/PingCameraHardwareInfoData.md) +- [PingCameraInputInfo](type-aliases/PingCameraInputInfo.md) +- [PingCameraInputInfoData](type-aliases/PingCameraInputInfoData.md) +- [PingCameraPermission](type-aliases/PingCameraPermission.md) +- [PingCameraPermissionData](type-aliases/PingCameraPermissionData.md) +- [PingError](type-aliases/PingError.md) +- [PingErrorData](type-aliases/PingErrorData.md) +- [PingLog](type-aliases/PingLog.md) +- [PingLogData](type-aliases/PingLogData.md) +- [PingScanningConditions](type-aliases/PingScanningConditions.md) +- [PingScanningConditionsData](type-aliases/PingScanningConditionsData.md) +- [PingSdkInitStart](type-aliases/PingSdkInitStart.md) +- [PingSdkInitStartData](type-aliases/PingSdkInitStartData.md) +- [PingUxEvent](type-aliases/PingUxEvent.md) +- [PingUxEventData](type-aliases/PingUxEventData.md) +- [PingWrapperProductInfo](type-aliases/PingWrapperProductInfo.md) +- [PingWrapperProductInfoData](type-aliases/PingWrapperProductInfoData.md) - [PlaybackState](type-aliases/PlaybackState.md) - [ProcessingStatus](type-aliases/ProcessingStatus.md) - [ProcessResultWithBuffer](type-aliases/ProcessResultWithBuffer.md) @@ -112,6 +135,7 @@ - [ScanningSettings](type-aliases/ScanningSettings.md) - [ScanningSide](type-aliases/ScanningSide.md) - [ScanningStatus](type-aliases/ScanningStatus.md) +- [SchemaName](type-aliases/SchemaName.md) - [ServerPermissionErrorReason](type-aliases/ServerPermissionErrorReason.md) - [ServerPermissionSubmitError](type-aliases/ServerPermissionSubmitError.md) - [SingleSideScanningResult](type-aliases/SingleSideScanningResult.md) @@ -123,6 +147,7 @@ - [VideoFrameProcessorInitOptions](type-aliases/VideoFrameProcessorInitOptions.md) - [VideoResolutionName](type-aliases/VideoResolutionName.md) - [WasmBuildType](type-aliases/WasmBuildType.md) +- [WasmSimdVariant](type-aliases/WasmSimdVariant.md) - [WasmVariant](type-aliases/WasmVariant.md) - [WorkerScanningSession](type-aliases/WorkerScanningSession.md) @@ -145,6 +170,7 @@ - [resourceFileTypes](variables/resourceFileTypes.md) - [videoResolutions](variables/videoResolutions.md) - [wasmBuildTypes](variables/wasmBuildTypes.md) +- [wasmSimdVariants](variables/wasmSimdVariants.md) - [wasmVariants](variables/wasmVariants.md) ## Functions diff --git a/packages/blinkcard/docs/classes/AnalyticService.md b/packages/blinkcard/docs/classes/AnalyticService.md new file mode 100644 index 0000000..64cfd8d --- /dev/null +++ b/packages/blinkcard/docs/classes/AnalyticService.md @@ -0,0 +1,324 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / AnalyticService + +# Class: AnalyticService + +Analytic service +Provides a clean interface for tracking user interactions and events + +## Constructors + +### Constructor + +> **new AnalyticService**(`__namedParameters`): `AnalyticService` + +#### Parameters + +##### \_\_namedParameters + +###### pingFn + +(`ping`) => `Promise`\<`void`\> + +###### sendPingletsFn + +() => `Promise`\<`void`\> + +#### Returns + +`AnalyticService` + +## Methods + +### logAlertDisplayedEvent() + +> **logAlertDisplayedEvent**(`alertType`): `Promise`\<`void`\> + +#### Parameters + +##### alertType + +`NonNullable`\<`undefined` \| `AlertType`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logAppMovedToBackgroundEvent() + +> **logAppMovedToBackgroundEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraClosedEvent() + +> **logCameraClosedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraInputInfo() + +> **logCameraInputInfo**(`pingData`): `Promise`\<`void`\> + +#### Parameters + +##### pingData + +[`PingCameraInputInfoData`](../type-aliases/PingCameraInputInfoData.md) + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraPermissionCheck() + +> **logCameraPermissionCheck**(`granted`): `Promise`\<`void`\> + +#### Parameters + +##### granted + +`boolean` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraPermissionRequest() + +> **logCameraPermissionRequest**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraPermissionUserResponse() + +> **logCameraPermissionUserResponse**(`granted`): `Promise`\<`void`\> + +#### Parameters + +##### granted + +`boolean` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraStartedEvent() + +> **logCameraStartedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCloseButtonClickedEvent() + +> **logCloseButtonClickedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logDeviceInfo() + +> **logDeviceInfo**(`pingData`): `Promise`\<`void`\> + +#### Parameters + +##### pingData + +[`PingBrowserDeviceInfoData`](../type-aliases/PingBrowserDeviceInfoData.md) + +#### Returns + +`Promise`\<`void`\> + +*** + +### logDeviceOrientation() + +> **logDeviceOrientation**(`orientation`): `Promise`\<`void`\> + +#### Parameters + +##### orientation + +`undefined` | `DeviceOrientation` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logErrorEvent() + +> **logErrorEvent**(`__namedParameters`): `Promise`\<`void`\> + +#### Parameters + +##### \_\_namedParameters + +###### error + +`unknown` + +###### errorType + +`ErrorType` + +###### origin + +`string` + +###### sessionNumber? + +`number` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logErrorMessageEvent() + +> **logErrorMessageEvent**(`errorMessageType`): `Promise`\<`void`\> + +#### Parameters + +##### errorMessageType + +`undefined` | `ErrorMessageType` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logFlashlightState() + +> **logFlashlightState**(`flashlightOn`): `Promise`\<`void`\> + +#### Parameters + +##### flashlightOn + +`boolean` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logHardwareCameraInfo() + +> **logHardwareCameraInfo**(`cameras`): `Promise`\<`void`\> + +#### Parameters + +##### cameras + +`AvailableCamerasItem`[] + +#### Returns + +`Promise`\<`void`\> + +*** + +### logHelpClosedEvent() + +> **logHelpClosedEvent**(`contentFullyViewed`): `Promise`\<`void`\> + +#### Parameters + +##### contentFullyViewed + +`boolean` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logHelpOpenedEvent() + +> **logHelpOpenedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logHelpTooltipDisplayedEvent() + +> **logHelpTooltipDisplayedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logOnboardingDisplayedEvent() + +> **logOnboardingDisplayedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logStepTimeoutEvent() + +> **logStepTimeoutEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### sendPinglets() + +> **sendPinglets**(): `Promise`\<`void`\> + +Safely send queued pinglets, handling errors gracefully + +#### Returns + +`Promise`\<`void`\> diff --git a/packages/blinkcard/docs/classes/BlinkCardWorker.md b/packages/blinkcard/docs/classes/BlinkCardWorker.md index faf89ac..984d5b3 100644 --- a/packages/blinkcard/docs/classes/BlinkCardWorker.md +++ b/packages/blinkcard/docs/classes/BlinkCardWorker.md @@ -40,29 +40,9 @@ This method is called when the worker is terminated. *** -### createProxySession() - -> **createProxySession**(`session`): `object` & `object` & `ProxyMarked` - -This method creates a proxy session. - -#### Parameters - -##### session - -[`BlinkCardScanningSession`](../type-aliases/BlinkCardScanningSession.md) - -The BlinkCard scanning session. - -#### Returns - -The proxy session. - -*** - ### createScanningSession() -> **createScanningSession**(`sessionSettings?`): `object` & `object` & `ProxyMarked` +> **createScanningSession**(`sessionSettings?`): `Omit`\<[`BlinkCardScanningSession`](../type-aliases/BlinkCardScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` & `ProxyMarked` This method creates a BlinkCard scanning session. @@ -122,7 +102,7 @@ This method initializes the BlinkCard Wasm module. ##### pinglet -`Ping` +[`Ping`](../type-aliases/Ping.md) #### Returns diff --git a/packages/blinkcard/docs/functions/loadBlinkCardCore.md b/packages/blinkcard/docs/functions/loadBlinkCardCore.md index e206bfb..d7210db 100644 --- a/packages/blinkcard/docs/functions/loadBlinkCardCore.md +++ b/packages/blinkcard/docs/functions/loadBlinkCardCore.md @@ -6,7 +6,7 @@ # Function: loadBlinkCardCore() -> **loadBlinkCardCore**(`settings`, `progressCallback?`): `Promise`\<\{ `progressStatusCallback?`: `Promise`\<`undefined`\> \| `Remote`\<[`ProgressStatusCallback`](../type-aliases/ProgressStatusCallback.md)\>; `createProxySession`: `Promise`\<`Remote`\<`object` & `object` & `ProxyMarked`\>\>; `createScanningSession`: `Promise`\<`Remote`\<`object` & `object` & `ProxyMarked`\>\>; `initBlinkCard`: `Promise`\<`void`\>; `reportPinglet`: `Promise`\<`void`\>; `sendPinglets`: `Promise`\<`void`\>; `terminate`: `Promise`\<`void`\>; \}\> +> **loadBlinkCardCore**(`settings`, `progressCallback?`): `Promise`\<\{ `progressStatusCallback?`: `Promise`\<`undefined`\> \| `Remote`\<[`ProgressStatusCallback`](../type-aliases/ProgressStatusCallback.md)\>; `createScanningSession`: `Promise`\<`Remote`\<`Omit`\<[`BlinkCardScanningSession`](../type-aliases/BlinkCardScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` & `ProxyMarked`\>\>; `initBlinkCard`: `Promise`\<`void`\>; `reportPinglet`: `Promise`\<`void`\>; `sendPinglets`: `Promise`\<`void`\>; `terminate`: `Promise`\<`void`\>; \}\> Creates and initializes a BlinkCard core instance. @@ -80,7 +80,7 @@ Optional callback for tracking resource download progress (WASM, data files) ## Returns -`Promise`\<\{ `progressStatusCallback?`: `Promise`\<`undefined`\> \| `Remote`\<[`ProgressStatusCallback`](../type-aliases/ProgressStatusCallback.md)\>; `createProxySession`: `Promise`\<`Remote`\<`object` & `object` & `ProxyMarked`\>\>; `createScanningSession`: `Promise`\<`Remote`\<`object` & `object` & `ProxyMarked`\>\>; `initBlinkCard`: `Promise`\<`void`\>; `reportPinglet`: `Promise`\<`void`\>; `sendPinglets`: `Promise`\<`void`\>; `terminate`: `Promise`\<`void`\>; \}\> +`Promise`\<\{ `progressStatusCallback?`: `Promise`\<`undefined`\> \| `Remote`\<[`ProgressStatusCallback`](../type-aliases/ProgressStatusCallback.md)\>; `createScanningSession`: `Promise`\<`Remote`\<`Omit`\<[`BlinkCardScanningSession`](../type-aliases/BlinkCardScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` & `ProxyMarked`\>\>; `initBlinkCard`: `Promise`\<`void`\>; `reportPinglet`: `Promise`\<`void`\>; `sendPinglets`: `Promise`\<`void`\>; `terminate`: `Promise`\<`void`\>; \}\> Promise that resolves with initialized BlinkCard core instance diff --git a/packages/blinkcard/docs/interfaces/BlinkCardUxManager.md b/packages/blinkcard/docs/interfaces/BlinkCardUxManager.md index 8184755..a9e800c 100644 --- a/packages/blinkcard/docs/interfaces/BlinkCardUxManager.md +++ b/packages/blinkcard/docs/interfaces/BlinkCardUxManager.md @@ -85,13 +85,13 @@ Whether the production overlay should be shown. #### Get Signature -> **get** **analytics**(): `AnalyticService` +> **get** **analytics**(): [`AnalyticService`](../classes/AnalyticService.md) Gets the analytics service for tracking UX events. ##### Returns -`AnalyticService` +[`AnalyticService`](../classes/AnalyticService.md) *** @@ -133,7 +133,7 @@ Use `mappedUiStateKey` (internal/debug) or `uiStateKey` (displayed state). The current UI state. Updated internally by the RAF update loop. Read externally once at UI mount to seed the initial Solid signal value; -subsequent updates are delivered via [addOnUiStateChangedCallback](#addonuistatechangedcallback). +subsequent updates are delivered via `addOnUiStateChangedCallback`. ##### Returns diff --git a/packages/blinkcard/docs/interfaces/PingBase.md b/packages/blinkcard/docs/interfaces/PingBase.md new file mode 100644 index 0000000..d07f9d3 --- /dev/null +++ b/packages/blinkcard/docs/interfaces/PingBase.md @@ -0,0 +1,51 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingBase + +# Interface: PingBase\ + +Generated base structure for a ping event. + +## Type Parameters + +### TSchemaName + +`TSchemaName` *extends* [`SchemaName`](../type-aliases/SchemaName.md) + +### TSchemaVersion + +`TSchemaVersion` *extends* `Semver` = `"1.0.0"` + +### TData + +`TData` *extends* `object` = \{ \} + +### TSessionNumber + +`TSessionNumber` *extends* `number` = `number` + +## Properties + +### data + +> **data**: `TData` + +*** + +### schemaName + +> **schemaName**: `TSchemaName` + +*** + +### schemaVersion + +> **schemaVersion**: `TSchemaVersion` + +*** + +### sessionNumber? + +> `optional` **sessionNumber**: `TSessionNumber` diff --git a/packages/blinkcard/docs/type-aliases/Ping.md b/packages/blinkcard/docs/type-aliases/Ping.md new file mode 100644 index 0000000..629c62c --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/Ping.md @@ -0,0 +1,9 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / Ping + +# Type Alias: Ping + +> **Ping** = [`PingBrowserDeviceInfo`](PingBrowserDeviceInfo.md) \| [`PingError`](PingError.md) \| [`PingCameraHardwareInfo`](PingCameraHardwareInfo.md) \| [`PingLog`](PingLog.md) \| [`PingCameraInputInfo`](PingCameraInputInfo.md) \| [`PingCameraPermission`](PingCameraPermission.md) \| [`PingSdkInitStart`](PingSdkInitStart.md) \| [`PingScanningConditions`](PingScanningConditions.md) \| [`PingUxEvent`](PingUxEvent.md) \| [`PingWrapperProductInfo`](PingWrapperProductInfo.md) diff --git a/packages/blinkcard/docs/type-aliases/PingBrowserDeviceInfo.md b/packages/blinkcard/docs/type-aliases/PingBrowserDeviceInfo.md new file mode 100644 index 0000000..514be51 --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingBrowserDeviceInfo.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingBrowserDeviceInfo + +# Type Alias: PingBrowserDeviceInfo + +> **PingBrowserDeviceInfo** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.browser.device.info"`, `"1.0.0"`, [`PingBrowserDeviceInfoData`](PingBrowserDeviceInfoData.md)\> + +Ping type for ping.browser.device.info diff --git a/packages/blinkcard/docs/type-aliases/PingBrowserDeviceInfoData.md b/packages/blinkcard/docs/type-aliases/PingBrowserDeviceInfoData.md new file mode 100644 index 0000000..d4255f0 --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingBrowserDeviceInfoData.md @@ -0,0 +1,57 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingBrowserDeviceInfoData + +# Type Alias: PingBrowserDeviceInfoData + +> **PingBrowserDeviceInfoData** = `object` + +## Properties + +### browserStorageSupport + +> **browserStorageSupport**: `BrowserStorageSupport` + +*** + +### derivedDeviceInfo + +> **derivedDeviceInfo**: `DerivedDeviceInfo` + +*** + +### gpu? + +> `optional` **gpu**: `Gpu` + +*** + +### memory? + +> `optional` **memory**: `number` + +*** + +### screen + +> **screen**: `Screen` + +*** + +### threads + +> **threads**: `number` + +*** + +### userAgent + +> **userAgent**: `string` + +*** + +### userAgentData? + +> `optional` **userAgentData**: `UserAgentData` diff --git a/packages/blinkcard/docs/type-aliases/PingCameraHardwareInfo.md b/packages/blinkcard/docs/type-aliases/PingCameraHardwareInfo.md new file mode 100644 index 0000000..cfecf7d --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingCameraHardwareInfo.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingCameraHardwareInfo + +# Type Alias: PingCameraHardwareInfo + +> **PingCameraHardwareInfo** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.hardware.camera.info"`, `"1.0.3"`, [`PingCameraHardwareInfoData`](PingCameraHardwareInfoData.md)\> + +Ping type for ping.hardware.camera.info diff --git a/packages/blinkcard/docs/type-aliases/PingCameraHardwareInfoData.md b/packages/blinkcard/docs/type-aliases/PingCameraHardwareInfoData.md new file mode 100644 index 0000000..62666ef --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingCameraHardwareInfoData.md @@ -0,0 +1,15 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingCameraHardwareInfoData + +# Type Alias: PingCameraHardwareInfoData + +> **PingCameraHardwareInfoData** = `object` + +## Properties + +### availableCameras + +> **availableCameras**: `AvailableCamerasItem`[] diff --git a/packages/blinkcard/docs/type-aliases/PingCameraInputInfo.md b/packages/blinkcard/docs/type-aliases/PingCameraInputInfo.md new file mode 100644 index 0000000..a01548d --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingCameraInputInfo.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingCameraInputInfo + +# Type Alias: PingCameraInputInfo + +> **PingCameraInputInfo** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.camera.input.info"`, `"1.0.2"`, [`PingCameraInputInfoData`](PingCameraInputInfoData.md)\> + +Ping type for ping.sdk.camera.input.info diff --git a/packages/blinkcard/docs/type-aliases/PingCameraInputInfoData.md b/packages/blinkcard/docs/type-aliases/PingCameraInputInfoData.md new file mode 100644 index 0000000..390071b --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingCameraInputInfoData.md @@ -0,0 +1,51 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingCameraInputInfoData + +# Type Alias: PingCameraInputInfoData + +> **PingCameraInputInfoData** = `object` + +## Properties + +### cameraFacing + +> **cameraFacing**: `CameraFacing` + +*** + +### cameraFrameHeight + +> **cameraFrameHeight**: `number` + +*** + +### cameraFrameWidth + +> **cameraFrameWidth**: `number` + +*** + +### deviceId + +> **deviceId**: `string` + +*** + +### roiHeight + +> **roiHeight**: `number` + +*** + +### roiWidth + +> **roiWidth**: `number` + +*** + +### viewPortAspectRatio + +> **viewPortAspectRatio**: `number` diff --git a/packages/blinkcard/docs/type-aliases/PingCameraPermission.md b/packages/blinkcard/docs/type-aliases/PingCameraPermission.md new file mode 100644 index 0000000..e88d108 --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingCameraPermission.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingCameraPermission + +# Type Alias: PingCameraPermission + +> **PingCameraPermission** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.camera.permission"`, `"1.0.0"`, [`PingCameraPermissionData`](PingCameraPermissionData.md)\> + +Ping type for ping.sdk.camera.permission diff --git a/packages/blinkcard/docs/type-aliases/PingCameraPermissionData.md b/packages/blinkcard/docs/type-aliases/PingCameraPermissionData.md new file mode 100644 index 0000000..d6386f6 --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingCameraPermissionData.md @@ -0,0 +1,21 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingCameraPermissionData + +# Type Alias: PingCameraPermissionData + +> **PingCameraPermissionData** = `object` + +## Properties + +### cameraPermissionGranted? + +> `optional` **cameraPermissionGranted**: `boolean` + +*** + +### eventType + +> **eventType**: `EventType` diff --git a/packages/blinkcard/docs/type-aliases/PingError.md b/packages/blinkcard/docs/type-aliases/PingError.md new file mode 100644 index 0000000..c099223 --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingError.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingError + +# Type Alias: PingError + +> **PingError** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.error"`, `"1.0.0"`, [`PingErrorData`](PingErrorData.md)\> + +Ping type for ping.error diff --git a/packages/blinkcard/docs/type-aliases/PingErrorData.md b/packages/blinkcard/docs/type-aliases/PingErrorData.md new file mode 100644 index 0000000..2915129 --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingErrorData.md @@ -0,0 +1,27 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingErrorData + +# Type Alias: PingErrorData + +> **PingErrorData** = `object` + +## Properties + +### errorMessage + +> **errorMessage**: `string` + +*** + +### errorType + +> **errorType**: `ErrorType` + +*** + +### stackTrace? + +> `optional` **stackTrace**: `string` diff --git a/packages/blinkcard/docs/type-aliases/PingLog.md b/packages/blinkcard/docs/type-aliases/PingLog.md new file mode 100644 index 0000000..5579c6b --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingLog.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingLog + +# Type Alias: PingLog + +> **PingLog** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.log"`, `"1.0.0"`, [`PingLogData`](PingLogData.md)\> + +Ping type for ping.log diff --git a/packages/blinkcard/docs/type-aliases/PingLogData.md b/packages/blinkcard/docs/type-aliases/PingLogData.md new file mode 100644 index 0000000..61dfda0 --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingLogData.md @@ -0,0 +1,21 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingLogData + +# Type Alias: PingLogData + +> **PingLogData** = `object` + +## Properties + +### logLevel + +> **logLevel**: `LogLevel` + +*** + +### logMessage + +> **logMessage**: `string` diff --git a/packages/blinkcard/docs/type-aliases/PingScanningConditions.md b/packages/blinkcard/docs/type-aliases/PingScanningConditions.md new file mode 100644 index 0000000..c0f54c3 --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingScanningConditions.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingScanningConditions + +# Type Alias: PingScanningConditions + +> **PingScanningConditions** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.scan.conditions"`, `"1.0.0"`, [`PingScanningConditionsData`](PingScanningConditionsData.md)\> + +Ping type for ping.sdk.scan.conditions diff --git a/packages/blinkcard/docs/type-aliases/PingScanningConditionsData.md b/packages/blinkcard/docs/type-aliases/PingScanningConditionsData.md new file mode 100644 index 0000000..17cead4 --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingScanningConditionsData.md @@ -0,0 +1,27 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingScanningConditionsData + +# Type Alias: PingScanningConditionsData + +> **PingScanningConditionsData** = `object` + +## Properties + +### deviceOrientation? + +> `optional` **deviceOrientation**: `DeviceOrientation` + +*** + +### flashlightOn? + +> `optional` **flashlightOn**: `boolean` + +*** + +### updateType + +> **updateType**: `UpdateType` diff --git a/packages/blinkcard/docs/type-aliases/PingSdkInitStart.md b/packages/blinkcard/docs/type-aliases/PingSdkInitStart.md new file mode 100644 index 0000000..36d7403 --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingSdkInitStart.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingSdkInitStart + +# Type Alias: PingSdkInitStart + +> **PingSdkInitStart** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.init.start"`, `"1.1.0"`, [`PingSdkInitStartData`](PingSdkInitStartData.md)\> + +Ping type for ping.sdk.init.start diff --git a/packages/blinkcard/docs/type-aliases/PingSdkInitStartData.md b/packages/blinkcard/docs/type-aliases/PingSdkInitStartData.md new file mode 100644 index 0000000..8519c31 --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingSdkInitStartData.md @@ -0,0 +1,39 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingSdkInitStartData + +# Type Alias: PingSdkInitStartData + +> **PingSdkInitStartData** = `object` + +## Properties + +### packageName + +> **packageName**: `string` + +*** + +### platform + +> **platform**: `Platform` + +*** + +### platformDetails? + +> `optional` **platformDetails**: `PlatformDetails` + +*** + +### product + +> **product**: `Product` + +*** + +### userId + +> **userId**: `string` diff --git a/packages/blinkcard/docs/type-aliases/PingUxEvent.md b/packages/blinkcard/docs/type-aliases/PingUxEvent.md new file mode 100644 index 0000000..a90a511 --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingUxEvent.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingUxEvent + +# Type Alias: PingUxEvent + +> **PingUxEvent** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.ux.event"`, `"1.0.0"`, [`PingUxEventData`](PingUxEventData.md)\> + +Ping type for ping.sdk.ux.event diff --git a/packages/blinkcard/docs/type-aliases/PingUxEventData.md b/packages/blinkcard/docs/type-aliases/PingUxEventData.md new file mode 100644 index 0000000..535383c --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingUxEventData.md @@ -0,0 +1,33 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingUxEventData + +# Type Alias: PingUxEventData + +> **PingUxEventData** = `object` + +## Properties + +### alertType? + +> `optional` **alertType**: `AlertType` + +*** + +### errorMessageType? + +> `optional` **errorMessageType**: `ErrorMessageType` + +*** + +### eventType + +> **eventType**: `EventType` + +*** + +### helpCloseType? + +> `optional` **helpCloseType**: `HelpCloseType` diff --git a/packages/blinkcard/docs/type-aliases/PingWrapperProductInfo.md b/packages/blinkcard/docs/type-aliases/PingWrapperProductInfo.md new file mode 100644 index 0000000..98238ed --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingWrapperProductInfo.md @@ -0,0 +1,11 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingWrapperProductInfo + +# Type Alias: PingWrapperProductInfo + +> **PingWrapperProductInfo** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.wrapper.product"`, `"1.0.0"`, [`PingWrapperProductInfoData`](PingWrapperProductInfoData.md)\> + +Ping type for ping.sdk.wrapper.product diff --git a/packages/blinkcard/docs/type-aliases/PingWrapperProductInfoData.md b/packages/blinkcard/docs/type-aliases/PingWrapperProductInfoData.md new file mode 100644 index 0000000..a84c504 --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/PingWrapperProductInfoData.md @@ -0,0 +1,21 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / PingWrapperProductInfoData + +# Type Alias: PingWrapperProductInfoData + +> **PingWrapperProductInfoData** = `object` + +## Properties + +### correlationId? + +> `optional` **correlationId**: `string` + +*** + +### wrapperProduct + +> **wrapperProduct**: `WrapperProduct` diff --git a/packages/blinkcard/docs/type-aliases/SchemaName.md b/packages/blinkcard/docs/type-aliases/SchemaName.md new file mode 100644 index 0000000..35deb31 --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/SchemaName.md @@ -0,0 +1,9 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / SchemaName + +# Type Alias: SchemaName + +> **SchemaName** = [`Ping`](Ping.md)\[`"schemaName"`\] diff --git a/packages/blinkcard/docs/type-aliases/WasmSimdVariant.md b/packages/blinkcard/docs/type-aliases/WasmSimdVariant.md new file mode 100644 index 0000000..10813db --- /dev/null +++ b/packages/blinkcard/docs/type-aliases/WasmSimdVariant.md @@ -0,0 +1,9 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / WasmSimdVariant + +# Type Alias: WasmSimdVariant + +> **WasmSimdVariant** = *typeof* [`wasmSimdVariants`](../variables/wasmSimdVariants.md)\[`number`\] diff --git a/packages/blinkcard/docs/type-aliases/WorkerScanningSession.md b/packages/blinkcard/docs/type-aliases/WorkerScanningSession.md index 5c97cd4..1b6774b 100644 --- a/packages/blinkcard/docs/type-aliases/WorkerScanningSession.md +++ b/packages/blinkcard/docs/type-aliases/WorkerScanningSession.md @@ -6,7 +6,7 @@ # Type Alias: WorkerScanningSession -> **WorkerScanningSession** = `OverrideProperties`\<[`BlinkCardScanningSession`](BlinkCardScanningSession.md), \{ `process`: (`image`) => [`ProcessResultWithBuffer`](ProcessResultWithBuffer.md); \}\> & `object` +> **WorkerScanningSession** = `Omit`\<[`BlinkCardScanningSession`](BlinkCardScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` The worker scanning session. @@ -52,6 +52,20 @@ The settings. > **ping**: [`BlinkCardWorker`](../classes/BlinkCardWorker.md)\[`"reportPinglet"`\] +### process() + +> **process**: (`image`) => [`ProcessResultWithBuffer`](ProcessResultWithBuffer.md) + +#### Parameters + +##### image + +`ImageData` + +#### Returns + +[`ProcessResultWithBuffer`](ProcessResultWithBuffer.md) + ### sendPinglets > **sendPinglets**: [`BlinkCardWorker`](../classes/BlinkCardWorker.md)\[`"sendPinglets"`\] diff --git a/packages/blinkcard/docs/variables/wasmSimdVariants.md b/packages/blinkcard/docs/variables/wasmSimdVariants.md new file mode 100644 index 0000000..e1dd23b --- /dev/null +++ b/packages/blinkcard/docs/variables/wasmSimdVariants.md @@ -0,0 +1,9 @@ +[**@microblink/blinkcard**](../README.md) + +*** + +[@microblink/blinkcard](../README.md) / wasmSimdVariants + +# Variable: wasmSimdVariants + +> `const` **wasmSimdVariants**: readonly \[`"advanced"`, `"advanced-threads"`\] diff --git a/packages/blinkcard/package.json b/packages/blinkcard/package.json index 761c9f1..fcef9b1 100644 --- a/packages/blinkcard/package.json +++ b/packages/blinkcard/package.json @@ -1,7 +1,7 @@ { "name": "@microblink/blinkcard", "description": "All-in-one BlinkCard browser SDK for fast and accurate debit and credit card scanning and recognition in web applications.", - "version": "3000.0.3", + "version": "3000.0.4", "author": "Microblink", "scripts": { "build": "concurrently pnpm:build:js pnpm:build:types", diff --git a/packages/blinkid-core/CHANGELOG.md b/packages/blinkid-core/CHANGELOG.md index 29f6498..9b05829 100644 --- a/packages/blinkid-core/CHANGELOG.md +++ b/packages/blinkid-core/CHANGELOG.md @@ -1,5 +1,13 @@ # @microblink/blinkid-core +## 7.7.3 + +### Patch Changes + +- Updated dependencies + - @microblink/blinkid-wasm@7.7.3 + - @microblink/blinkid-worker@7.7.3 + ## 7.7.2 ### Patch Changes @@ -137,6 +145,7 @@ ### Patch Changes - Introduced utilities for extracting images from the `BlinkIdScanningResult`: + - `extractSideInputImage` - `extractBarcodeImage` - `extractSideDocumentImage` diff --git a/packages/blinkid-core/README.md b/packages/blinkid-core/README.md index 283a1c2..e31ebde 100644 --- a/packages/blinkid-core/README.md +++ b/packages/blinkid-core/README.md @@ -62,7 +62,7 @@ You must host the `dist/resources` directory from this package without modificat - Must be served in a [secure context](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts). - For multithreaded builds, your site must be [cross-origin isolated](https://web.dev/articles/why-coop-coep): - ``` + ```http Cross-Origin-Embedder-Policy: require-corp Cross-Origin-Opener-Policy: same-origin ``` diff --git a/packages/blinkid-core/docs/README.md b/packages/blinkid-core/docs/README.md index bb66151..f47eb4c 100644 --- a/packages/blinkid-core/docs/README.md +++ b/packages/blinkid-core/docs/README.md @@ -6,10 +6,12 @@ ## Classes +- [AnalyticService](classes/AnalyticService.md) - [BlinkIdWorker](classes/BlinkIdWorker.md) ## Interfaces +- [PingBase](interfaces/PingBase.md) - [UADataValues](interfaces/UADataValues.md) - [WasmBindings](interfaces/WasmBindings.md) - [WasmModule](interfaces/WasmModule.md) @@ -78,6 +80,27 @@ - [MrzDocumentType](type-aliases/MrzDocumentType.md) - [MrzResult](type-aliases/MrzResult.md) - [ParentInfo](type-aliases/ParentInfo.md) +- [Ping](type-aliases/Ping.md) +- [PingBrowserDeviceInfo](type-aliases/PingBrowserDeviceInfo.md) +- [PingBrowserDeviceInfoData](type-aliases/PingBrowserDeviceInfoData.md) +- [PingCameraHardwareInfo](type-aliases/PingCameraHardwareInfo.md) +- [PingCameraHardwareInfoData](type-aliases/PingCameraHardwareInfoData.md) +- [PingCameraInputInfo](type-aliases/PingCameraInputInfo.md) +- [PingCameraInputInfoData](type-aliases/PingCameraInputInfoData.md) +- [PingCameraPermission](type-aliases/PingCameraPermission.md) +- [PingCameraPermissionData](type-aliases/PingCameraPermissionData.md) +- [PingError](type-aliases/PingError.md) +- [PingErrorData](type-aliases/PingErrorData.md) +- [PingLog](type-aliases/PingLog.md) +- [PingLogData](type-aliases/PingLogData.md) +- [PingScanningConditions](type-aliases/PingScanningConditions.md) +- [PingScanningConditionsData](type-aliases/PingScanningConditionsData.md) +- [PingSdkInitStart](type-aliases/PingSdkInitStart.md) +- [PingSdkInitStartData](type-aliases/PingSdkInitStartData.md) +- [PingUxEvent](type-aliases/PingUxEvent.md) +- [PingUxEventData](type-aliases/PingUxEventData.md) +- [PingWrapperProductInfo](type-aliases/PingWrapperProductInfo.md) +- [PingWrapperProductInfoData](type-aliases/PingWrapperProductInfoData.md) - [Point](type-aliases/Point.md) - [ProcessingStatus](type-aliases/ProcessingStatus.md) - [ProcessResultWithBuffer](type-aliases/ProcessResultWithBuffer.md) @@ -94,6 +117,7 @@ - [ScanningSettings](type-aliases/ScanningSettings.md) - [ScanningSide](type-aliases/ScanningSide.md) - [ScanningStatus](type-aliases/ScanningStatus.md) +- [SchemaName](type-aliases/SchemaName.md) - [ServerPermissionErrorReason](type-aliases/ServerPermissionErrorReason.md) - [ServerPermissionSubmitError](type-aliases/ServerPermissionSubmitError.md) - [SingleSideScanningResult](type-aliases/SingleSideScanningResult.md) @@ -101,6 +125,7 @@ - [VehicleClassInfo](type-aliases/VehicleClassInfo.md) - [VizResult](type-aliases/VizResult.md) - [WasmBuildType](type-aliases/WasmBuildType.md) +- [WasmSimdVariant](type-aliases/WasmSimdVariant.md) - [WasmVariant](type-aliases/WasmVariant.md) - [WorkerScanningSession](type-aliases/WorkerScanningSession.md) @@ -110,6 +135,7 @@ - [getCrossOriginWorkerURL](variables/getCrossOriginWorkerURL.md) - [resourceFileTypes](variables/resourceFileTypes.md) - [wasmBuildTypes](variables/wasmBuildTypes.md) +- [wasmSimdVariants](variables/wasmSimdVariants.md) - [wasmVariants](variables/wasmVariants.md) ## Functions diff --git a/packages/blinkid-core/docs/classes/AnalyticService.md b/packages/blinkid-core/docs/classes/AnalyticService.md new file mode 100644 index 0000000..e1fecc3 --- /dev/null +++ b/packages/blinkid-core/docs/classes/AnalyticService.md @@ -0,0 +1,324 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / AnalyticService + +# Class: AnalyticService + +Analytic service +Provides a clean interface for tracking user interactions and events + +## Constructors + +### Constructor + +> **new AnalyticService**(`__namedParameters`): `AnalyticService` + +#### Parameters + +##### \_\_namedParameters + +###### pingFn + +(`ping`) => `Promise`\<`void`\> + +###### sendPingletsFn + +() => `Promise`\<`void`\> + +#### Returns + +`AnalyticService` + +## Methods + +### logAlertDisplayedEvent() + +> **logAlertDisplayedEvent**(`alertType`): `Promise`\<`void`\> + +#### Parameters + +##### alertType + +`NonNullable`\<`undefined` \| `AlertType`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logAppMovedToBackgroundEvent() + +> **logAppMovedToBackgroundEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraClosedEvent() + +> **logCameraClosedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraInputInfo() + +> **logCameraInputInfo**(`pingData`): `Promise`\<`void`\> + +#### Parameters + +##### pingData + +[`PingCameraInputInfoData`](../type-aliases/PingCameraInputInfoData.md) + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraPermissionCheck() + +> **logCameraPermissionCheck**(`granted`): `Promise`\<`void`\> + +#### Parameters + +##### granted + +`boolean` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraPermissionRequest() + +> **logCameraPermissionRequest**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraPermissionUserResponse() + +> **logCameraPermissionUserResponse**(`granted`): `Promise`\<`void`\> + +#### Parameters + +##### granted + +`boolean` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCameraStartedEvent() + +> **logCameraStartedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logCloseButtonClickedEvent() + +> **logCloseButtonClickedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logDeviceInfo() + +> **logDeviceInfo**(`pingData`): `Promise`\<`void`\> + +#### Parameters + +##### pingData + +[`PingBrowserDeviceInfoData`](../type-aliases/PingBrowserDeviceInfoData.md) + +#### Returns + +`Promise`\<`void`\> + +*** + +### logDeviceOrientation() + +> **logDeviceOrientation**(`orientation`): `Promise`\<`void`\> + +#### Parameters + +##### orientation + +`undefined` | `DeviceOrientation` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logErrorEvent() + +> **logErrorEvent**(`__namedParameters`): `Promise`\<`void`\> + +#### Parameters + +##### \_\_namedParameters + +###### error + +`unknown` + +###### errorType + +`ErrorType` + +###### origin + +`string` + +###### sessionNumber? + +`number` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logErrorMessageEvent() + +> **logErrorMessageEvent**(`errorMessageType`): `Promise`\<`void`\> + +#### Parameters + +##### errorMessageType + +`undefined` | `ErrorMessageType` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logFlashlightState() + +> **logFlashlightState**(`flashlightOn`): `Promise`\<`void`\> + +#### Parameters + +##### flashlightOn + +`boolean` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logHardwareCameraInfo() + +> **logHardwareCameraInfo**(`cameras`): `Promise`\<`void`\> + +#### Parameters + +##### cameras + +`AvailableCamerasItem`[] + +#### Returns + +`Promise`\<`void`\> + +*** + +### logHelpClosedEvent() + +> **logHelpClosedEvent**(`contentFullyViewed`): `Promise`\<`void`\> + +#### Parameters + +##### contentFullyViewed + +`boolean` + +#### Returns + +`Promise`\<`void`\> + +*** + +### logHelpOpenedEvent() + +> **logHelpOpenedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logHelpTooltipDisplayedEvent() + +> **logHelpTooltipDisplayedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logOnboardingDisplayedEvent() + +> **logOnboardingDisplayedEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### logStepTimeoutEvent() + +> **logStepTimeoutEvent**(): `Promise`\<`void`\> + +#### Returns + +`Promise`\<`void`\> + +*** + +### sendPinglets() + +> **sendPinglets**(): `Promise`\<`void`\> + +Safely send queued pinglets, handling errors gracefully + +#### Returns + +`Promise`\<`void`\> diff --git a/packages/blinkid-core/docs/classes/BlinkIdWorker.md b/packages/blinkid-core/docs/classes/BlinkIdWorker.md index 26880e7..9d00501 100644 --- a/packages/blinkid-core/docs/classes/BlinkIdWorker.md +++ b/packages/blinkid-core/docs/classes/BlinkIdWorker.md @@ -42,7 +42,7 @@ This method is called when the worker is terminated. ### ~~createBlinkIdScanningSession()~~ -> **createBlinkIdScanningSession**(`options?`): `object` & `object` & `ProxyMarked` +> **createBlinkIdScanningSession**(`options?`): `Omit`\<[`BlinkIdScanningSession`](../type-aliases/BlinkIdScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` & `ProxyMarked` Backward-compatible alias for `createScanningSession`. @@ -97,35 +97,9 @@ Use `createScanningSession` instead. *** -### createProxySession() - -> **createProxySession**(`session`, `sessionSettings`): `object` & `object` & `ProxyMarked` - -This method creates a proxy session. - -#### Parameters - -##### session - -[`BlinkIdScanningSession`](../type-aliases/BlinkIdScanningSession.md) - -The session. - -##### sessionSettings - -[`BlinkIdSessionSettings`](../type-aliases/BlinkIdSessionSettings.md) - -The session settings. - -#### Returns - -The proxy session. - -*** - ### createScanningSession() -> **createScanningSession**(`options?`): `object` & `object` & `ProxyMarked` +> **createScanningSession**(`options?`): `Omit`\<[`BlinkIdScanningSession`](../type-aliases/BlinkIdScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` & `ProxyMarked` This method creates a BlinkID scanning session. @@ -214,7 +188,7 @@ This method initializes everything. ##### pinglet -`Ping` +[`Ping`](../type-aliases/Ping.md) #### Returns diff --git a/packages/blinkid-core/docs/functions/loadBlinkIdCore.md b/packages/blinkid-core/docs/functions/loadBlinkIdCore.md index b3ac989..6750d29 100644 --- a/packages/blinkid-core/docs/functions/loadBlinkIdCore.md +++ b/packages/blinkid-core/docs/functions/loadBlinkIdCore.md @@ -6,7 +6,7 @@ # Function: loadBlinkIdCore() -> **loadBlinkIdCore**(`settings`, `progressCallback?`): `Promise`\<\{ `progressStatusCallback?`: `Promise`\<`undefined`\> \| `Remote`\<[`ProgressStatusCallback`](../type-aliases/ProgressStatusCallback.md)\>; `createBlinkIdScanningSession`: `Promise`\<`Remote`\<`object` & `object` & `ProxyMarked`\>\>; `createProxySession`: `Promise`\<`Remote`\<`object` & `object` & `ProxyMarked`\>\>; `createScanningSession`: `Promise`\<`Remote`\<`object` & `object` & `ProxyMarked`\>\>; `initBlinkId`: `Promise`\<`void`\>; `reportPinglet`: `Promise`\<`void`\>; `sendPinglets`: `Promise`\<`void`\>; `terminate`: `Promise`\<`void`\>; \}\> +> **loadBlinkIdCore**(`settings`, `progressCallback?`): `Promise`\<\{ `progressStatusCallback?`: `Promise`\<`undefined`\> \| `Remote`\<[`ProgressStatusCallback`](../type-aliases/ProgressStatusCallback.md)\>; `createBlinkIdScanningSession`: `Promise`\<`Remote`\<`Omit`\<[`BlinkIdScanningSession`](../type-aliases/BlinkIdScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` & `ProxyMarked`\>\>; `createScanningSession`: `Promise`\<`Remote`\<`Omit`\<[`BlinkIdScanningSession`](../type-aliases/BlinkIdScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` & `ProxyMarked`\>\>; `initBlinkId`: `Promise`\<`void`\>; `reportPinglet`: `Promise`\<`void`\>; `sendPinglets`: `Promise`\<`void`\>; `terminate`: `Promise`\<`void`\>; \}\> Creates and initializes a BlinkID core instance. @@ -87,7 +87,7 @@ Optional callback for tracking resource download progress (WASM, data files) ## Returns -`Promise`\<\{ `progressStatusCallback?`: `Promise`\<`undefined`\> \| `Remote`\<[`ProgressStatusCallback`](../type-aliases/ProgressStatusCallback.md)\>; `createBlinkIdScanningSession`: `Promise`\<`Remote`\<`object` & `object` & `ProxyMarked`\>\>; `createProxySession`: `Promise`\<`Remote`\<`object` & `object` & `ProxyMarked`\>\>; `createScanningSession`: `Promise`\<`Remote`\<`object` & `object` & `ProxyMarked`\>\>; `initBlinkId`: `Promise`\<`void`\>; `reportPinglet`: `Promise`\<`void`\>; `sendPinglets`: `Promise`\<`void`\>; `terminate`: `Promise`\<`void`\>; \}\> +`Promise`\<\{ `progressStatusCallback?`: `Promise`\<`undefined`\> \| `Remote`\<[`ProgressStatusCallback`](../type-aliases/ProgressStatusCallback.md)\>; `createBlinkIdScanningSession`: `Promise`\<`Remote`\<`Omit`\<[`BlinkIdScanningSession`](../type-aliases/BlinkIdScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` & `ProxyMarked`\>\>; `createScanningSession`: `Promise`\<`Remote`\<`Omit`\<[`BlinkIdScanningSession`](../type-aliases/BlinkIdScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` & `ProxyMarked`\>\>; `initBlinkId`: `Promise`\<`void`\>; `reportPinglet`: `Promise`\<`void`\>; `sendPinglets`: `Promise`\<`void`\>; `terminate`: `Promise`\<`void`\>; \}\> Promise that resolves with initialized BlinkID core instance diff --git a/packages/blinkid-core/docs/interfaces/PingBase.md b/packages/blinkid-core/docs/interfaces/PingBase.md new file mode 100644 index 0000000..7b9e3d8 --- /dev/null +++ b/packages/blinkid-core/docs/interfaces/PingBase.md @@ -0,0 +1,51 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingBase + +# Interface: PingBase\ + +Generated base structure for a ping event. + +## Type Parameters + +### TSchemaName + +`TSchemaName` *extends* [`SchemaName`](../type-aliases/SchemaName.md) + +### TSchemaVersion + +`TSchemaVersion` *extends* `Semver` = `"1.0.0"` + +### TData + +`TData` *extends* `object` = \{ \} + +### TSessionNumber + +`TSessionNumber` *extends* `number` = `number` + +## Properties + +### data + +> **data**: `TData` + +*** + +### schemaName + +> **schemaName**: `TSchemaName` + +*** + +### schemaVersion + +> **schemaVersion**: `TSchemaVersion` + +*** + +### sessionNumber? + +> `optional` **sessionNumber**: `TSessionNumber` diff --git a/packages/blinkid-core/docs/type-aliases/Ping.md b/packages/blinkid-core/docs/type-aliases/Ping.md new file mode 100644 index 0000000..f8c9d7b --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/Ping.md @@ -0,0 +1,9 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / Ping + +# Type Alias: Ping + +> **Ping** = [`PingBrowserDeviceInfo`](PingBrowserDeviceInfo.md) \| [`PingError`](PingError.md) \| [`PingCameraHardwareInfo`](PingCameraHardwareInfo.md) \| [`PingLog`](PingLog.md) \| [`PingCameraInputInfo`](PingCameraInputInfo.md) \| [`PingCameraPermission`](PingCameraPermission.md) \| [`PingSdkInitStart`](PingSdkInitStart.md) \| [`PingScanningConditions`](PingScanningConditions.md) \| [`PingUxEvent`](PingUxEvent.md) \| [`PingWrapperProductInfo`](PingWrapperProductInfo.md) diff --git a/packages/blinkid-core/docs/type-aliases/PingBrowserDeviceInfo.md b/packages/blinkid-core/docs/type-aliases/PingBrowserDeviceInfo.md new file mode 100644 index 0000000..9e357a0 --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingBrowserDeviceInfo.md @@ -0,0 +1,11 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingBrowserDeviceInfo + +# Type Alias: PingBrowserDeviceInfo + +> **PingBrowserDeviceInfo** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.browser.device.info"`, `"1.0.0"`, [`PingBrowserDeviceInfoData`](PingBrowserDeviceInfoData.md)\> + +Ping type for ping.browser.device.info diff --git a/packages/blinkid-core/docs/type-aliases/PingBrowserDeviceInfoData.md b/packages/blinkid-core/docs/type-aliases/PingBrowserDeviceInfoData.md new file mode 100644 index 0000000..6a3798a --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingBrowserDeviceInfoData.md @@ -0,0 +1,57 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingBrowserDeviceInfoData + +# Type Alias: PingBrowserDeviceInfoData + +> **PingBrowserDeviceInfoData** = `object` + +## Properties + +### browserStorageSupport + +> **browserStorageSupport**: `BrowserStorageSupport` + +*** + +### derivedDeviceInfo + +> **derivedDeviceInfo**: `DerivedDeviceInfo` + +*** + +### gpu? + +> `optional` **gpu**: `Gpu` + +*** + +### memory? + +> `optional` **memory**: `number` + +*** + +### screen + +> **screen**: `Screen` + +*** + +### threads + +> **threads**: `number` + +*** + +### userAgent + +> **userAgent**: `string` + +*** + +### userAgentData? + +> `optional` **userAgentData**: `UserAgentData` diff --git a/packages/blinkid-core/docs/type-aliases/PingCameraHardwareInfo.md b/packages/blinkid-core/docs/type-aliases/PingCameraHardwareInfo.md new file mode 100644 index 0000000..8b13f88 --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingCameraHardwareInfo.md @@ -0,0 +1,11 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingCameraHardwareInfo + +# Type Alias: PingCameraHardwareInfo + +> **PingCameraHardwareInfo** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.hardware.camera.info"`, `"1.0.3"`, [`PingCameraHardwareInfoData`](PingCameraHardwareInfoData.md)\> + +Ping type for ping.hardware.camera.info diff --git a/packages/blinkid-core/docs/type-aliases/PingCameraHardwareInfoData.md b/packages/blinkid-core/docs/type-aliases/PingCameraHardwareInfoData.md new file mode 100644 index 0000000..a32ce09 --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingCameraHardwareInfoData.md @@ -0,0 +1,15 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingCameraHardwareInfoData + +# Type Alias: PingCameraHardwareInfoData + +> **PingCameraHardwareInfoData** = `object` + +## Properties + +### availableCameras + +> **availableCameras**: `AvailableCamerasItem`[] diff --git a/packages/blinkid-core/docs/type-aliases/PingCameraInputInfo.md b/packages/blinkid-core/docs/type-aliases/PingCameraInputInfo.md new file mode 100644 index 0000000..8507ef7 --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingCameraInputInfo.md @@ -0,0 +1,11 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingCameraInputInfo + +# Type Alias: PingCameraInputInfo + +> **PingCameraInputInfo** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.camera.input.info"`, `"1.0.2"`, [`PingCameraInputInfoData`](PingCameraInputInfoData.md)\> + +Ping type for ping.sdk.camera.input.info diff --git a/packages/blinkid-core/docs/type-aliases/PingCameraInputInfoData.md b/packages/blinkid-core/docs/type-aliases/PingCameraInputInfoData.md new file mode 100644 index 0000000..73ae49d --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingCameraInputInfoData.md @@ -0,0 +1,51 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingCameraInputInfoData + +# Type Alias: PingCameraInputInfoData + +> **PingCameraInputInfoData** = `object` + +## Properties + +### cameraFacing + +> **cameraFacing**: `CameraFacing` + +*** + +### cameraFrameHeight + +> **cameraFrameHeight**: `number` + +*** + +### cameraFrameWidth + +> **cameraFrameWidth**: `number` + +*** + +### deviceId + +> **deviceId**: `string` + +*** + +### roiHeight + +> **roiHeight**: `number` + +*** + +### roiWidth + +> **roiWidth**: `number` + +*** + +### viewPortAspectRatio + +> **viewPortAspectRatio**: `number` diff --git a/packages/blinkid-core/docs/type-aliases/PingCameraPermission.md b/packages/blinkid-core/docs/type-aliases/PingCameraPermission.md new file mode 100644 index 0000000..3ad07cc --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingCameraPermission.md @@ -0,0 +1,11 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingCameraPermission + +# Type Alias: PingCameraPermission + +> **PingCameraPermission** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.camera.permission"`, `"1.0.0"`, [`PingCameraPermissionData`](PingCameraPermissionData.md)\> + +Ping type for ping.sdk.camera.permission diff --git a/packages/blinkid-core/docs/type-aliases/PingCameraPermissionData.md b/packages/blinkid-core/docs/type-aliases/PingCameraPermissionData.md new file mode 100644 index 0000000..2451fd3 --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingCameraPermissionData.md @@ -0,0 +1,21 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingCameraPermissionData + +# Type Alias: PingCameraPermissionData + +> **PingCameraPermissionData** = `object` + +## Properties + +### cameraPermissionGranted? + +> `optional` **cameraPermissionGranted**: `boolean` + +*** + +### eventType + +> **eventType**: `EventType` diff --git a/packages/blinkid-core/docs/type-aliases/PingError.md b/packages/blinkid-core/docs/type-aliases/PingError.md new file mode 100644 index 0000000..279f1ab --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingError.md @@ -0,0 +1,11 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingError + +# Type Alias: PingError + +> **PingError** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.error"`, `"1.0.0"`, [`PingErrorData`](PingErrorData.md)\> + +Ping type for ping.error diff --git a/packages/blinkid-core/docs/type-aliases/PingErrorData.md b/packages/blinkid-core/docs/type-aliases/PingErrorData.md new file mode 100644 index 0000000..a73e750 --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingErrorData.md @@ -0,0 +1,27 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingErrorData + +# Type Alias: PingErrorData + +> **PingErrorData** = `object` + +## Properties + +### errorMessage + +> **errorMessage**: `string` + +*** + +### errorType + +> **errorType**: `ErrorType` + +*** + +### stackTrace? + +> `optional` **stackTrace**: `string` diff --git a/packages/blinkid-core/docs/type-aliases/PingLog.md b/packages/blinkid-core/docs/type-aliases/PingLog.md new file mode 100644 index 0000000..33f9038 --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingLog.md @@ -0,0 +1,11 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingLog + +# Type Alias: PingLog + +> **PingLog** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.log"`, `"1.0.0"`, [`PingLogData`](PingLogData.md)\> + +Ping type for ping.log diff --git a/packages/blinkid-core/docs/type-aliases/PingLogData.md b/packages/blinkid-core/docs/type-aliases/PingLogData.md new file mode 100644 index 0000000..166327f --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingLogData.md @@ -0,0 +1,21 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingLogData + +# Type Alias: PingLogData + +> **PingLogData** = `object` + +## Properties + +### logLevel + +> **logLevel**: `LogLevel` + +*** + +### logMessage + +> **logMessage**: `string` diff --git a/packages/blinkid-core/docs/type-aliases/PingScanningConditions.md b/packages/blinkid-core/docs/type-aliases/PingScanningConditions.md new file mode 100644 index 0000000..f84561b --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingScanningConditions.md @@ -0,0 +1,11 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingScanningConditions + +# Type Alias: PingScanningConditions + +> **PingScanningConditions** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.scan.conditions"`, `"1.0.0"`, [`PingScanningConditionsData`](PingScanningConditionsData.md)\> + +Ping type for ping.sdk.scan.conditions diff --git a/packages/blinkid-core/docs/type-aliases/PingScanningConditionsData.md b/packages/blinkid-core/docs/type-aliases/PingScanningConditionsData.md new file mode 100644 index 0000000..db8d750 --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingScanningConditionsData.md @@ -0,0 +1,27 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingScanningConditionsData + +# Type Alias: PingScanningConditionsData + +> **PingScanningConditionsData** = `object` + +## Properties + +### deviceOrientation? + +> `optional` **deviceOrientation**: `DeviceOrientation` + +*** + +### flashlightOn? + +> `optional` **flashlightOn**: `boolean` + +*** + +### updateType + +> **updateType**: `UpdateType` diff --git a/packages/blinkid-core/docs/type-aliases/PingSdkInitStart.md b/packages/blinkid-core/docs/type-aliases/PingSdkInitStart.md new file mode 100644 index 0000000..f380d39 --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingSdkInitStart.md @@ -0,0 +1,11 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingSdkInitStart + +# Type Alias: PingSdkInitStart + +> **PingSdkInitStart** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.init.start"`, `"1.1.0"`, [`PingSdkInitStartData`](PingSdkInitStartData.md)\> + +Ping type for ping.sdk.init.start diff --git a/packages/blinkid-core/docs/type-aliases/PingSdkInitStartData.md b/packages/blinkid-core/docs/type-aliases/PingSdkInitStartData.md new file mode 100644 index 0000000..30a375b --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingSdkInitStartData.md @@ -0,0 +1,39 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingSdkInitStartData + +# Type Alias: PingSdkInitStartData + +> **PingSdkInitStartData** = `object` + +## Properties + +### packageName + +> **packageName**: `string` + +*** + +### platform + +> **platform**: `Platform` + +*** + +### platformDetails? + +> `optional` **platformDetails**: `PlatformDetails` + +*** + +### product + +> **product**: `Product` + +*** + +### userId + +> **userId**: `string` diff --git a/packages/blinkid-core/docs/type-aliases/PingUxEvent.md b/packages/blinkid-core/docs/type-aliases/PingUxEvent.md new file mode 100644 index 0000000..575c304 --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingUxEvent.md @@ -0,0 +1,11 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingUxEvent + +# Type Alias: PingUxEvent + +> **PingUxEvent** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.ux.event"`, `"1.0.0"`, [`PingUxEventData`](PingUxEventData.md)\> + +Ping type for ping.sdk.ux.event diff --git a/packages/blinkid-core/docs/type-aliases/PingUxEventData.md b/packages/blinkid-core/docs/type-aliases/PingUxEventData.md new file mode 100644 index 0000000..b4b6a01 --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingUxEventData.md @@ -0,0 +1,33 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingUxEventData + +# Type Alias: PingUxEventData + +> **PingUxEventData** = `object` + +## Properties + +### alertType? + +> `optional` **alertType**: `AlertType` + +*** + +### errorMessageType? + +> `optional` **errorMessageType**: `ErrorMessageType` + +*** + +### eventType + +> **eventType**: `EventType` + +*** + +### helpCloseType? + +> `optional` **helpCloseType**: `HelpCloseType` diff --git a/packages/blinkid-core/docs/type-aliases/PingWrapperProductInfo.md b/packages/blinkid-core/docs/type-aliases/PingWrapperProductInfo.md new file mode 100644 index 0000000..b25c19c --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingWrapperProductInfo.md @@ -0,0 +1,11 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingWrapperProductInfo + +# Type Alias: PingWrapperProductInfo + +> **PingWrapperProductInfo** = [`PingBase`](../interfaces/PingBase.md)\<`"ping.sdk.wrapper.product"`, `"1.0.0"`, [`PingWrapperProductInfoData`](PingWrapperProductInfoData.md)\> + +Ping type for ping.sdk.wrapper.product diff --git a/packages/blinkid-core/docs/type-aliases/PingWrapperProductInfoData.md b/packages/blinkid-core/docs/type-aliases/PingWrapperProductInfoData.md new file mode 100644 index 0000000..87c8dc7 --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/PingWrapperProductInfoData.md @@ -0,0 +1,21 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / PingWrapperProductInfoData + +# Type Alias: PingWrapperProductInfoData + +> **PingWrapperProductInfoData** = `object` + +## Properties + +### correlationId? + +> `optional` **correlationId**: `string` + +*** + +### wrapperProduct + +> **wrapperProduct**: `WrapperProduct` diff --git a/packages/blinkid-core/docs/type-aliases/SchemaName.md b/packages/blinkid-core/docs/type-aliases/SchemaName.md new file mode 100644 index 0000000..7103aa8 --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/SchemaName.md @@ -0,0 +1,9 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / SchemaName + +# Type Alias: SchemaName + +> **SchemaName** = [`Ping`](Ping.md)\[`"schemaName"`\] diff --git a/packages/blinkid-core/docs/type-aliases/WasmSimdVariant.md b/packages/blinkid-core/docs/type-aliases/WasmSimdVariant.md new file mode 100644 index 0000000..aa09702 --- /dev/null +++ b/packages/blinkid-core/docs/type-aliases/WasmSimdVariant.md @@ -0,0 +1,9 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / WasmSimdVariant + +# Type Alias: WasmSimdVariant + +> **WasmSimdVariant** = *typeof* [`wasmSimdVariants`](../variables/wasmSimdVariants.md)\[`number`\] diff --git a/packages/blinkid-core/docs/type-aliases/WorkerScanningSession.md b/packages/blinkid-core/docs/type-aliases/WorkerScanningSession.md index 8e2a59e..def302c 100644 --- a/packages/blinkid-core/docs/type-aliases/WorkerScanningSession.md +++ b/packages/blinkid-core/docs/type-aliases/WorkerScanningSession.md @@ -6,7 +6,7 @@ # Type Alias: WorkerScanningSession -> **WorkerScanningSession** = `OverrideProperties`\<[`BlinkIdScanningSession`](BlinkIdScanningSession.md), \{ `process`: (`image`) => [`ProcessResultWithBuffer`](ProcessResultWithBuffer.md) \| [`BlinkIdSessionErrorWithBuffer`](BlinkIdSessionErrorWithBuffer.md); \}\> & `object` +> **WorkerScanningSession** = `Omit`\<[`BlinkIdScanningSession`](BlinkIdScanningSession.md), `"process"` \| `"deleteLater"` \| `"isAliasOf"`\> & `object` The worker scanning session. @@ -28,6 +28,20 @@ The settings. > **ping**: [`BlinkIdWorker`](../classes/BlinkIdWorker.md)\[`"reportPinglet"`\] +### process() + +> **process**: (`image`) => [`ProcessResultWithBuffer`](ProcessResultWithBuffer.md) \| [`BlinkIdSessionErrorWithBuffer`](BlinkIdSessionErrorWithBuffer.md) + +#### Parameters + +##### image + +`ImageData` + +#### Returns + +[`ProcessResultWithBuffer`](ProcessResultWithBuffer.md) \| [`BlinkIdSessionErrorWithBuffer`](BlinkIdSessionErrorWithBuffer.md) + ### sendPinglets > **sendPinglets**: [`BlinkIdWorker`](../classes/BlinkIdWorker.md)\[`"sendPinglets"`\] diff --git a/packages/blinkid-core/docs/variables/wasmSimdVariants.md b/packages/blinkid-core/docs/variables/wasmSimdVariants.md new file mode 100644 index 0000000..cf2ea0b --- /dev/null +++ b/packages/blinkid-core/docs/variables/wasmSimdVariants.md @@ -0,0 +1,9 @@ +[**@microblink/blinkid-core**](../README.md) + +*** + +[@microblink/blinkid-core](../README.md) / wasmSimdVariants + +# Variable: wasmSimdVariants + +> `const` **wasmSimdVariants**: readonly \[`"advanced"`, `"advanced-threads"`\] diff --git a/packages/blinkid-core/package.json b/packages/blinkid-core/package.json index 42a7c69..5ceb224 100644 --- a/packages/blinkid-core/package.json +++ b/packages/blinkid-core/package.json @@ -1,7 +1,7 @@ { "name": "@microblink/blinkid-core", "description": "BlinkID Core SDK", - "version": "7.7.2", + "version": "7.7.3", "author": "Microblink", "scripts": { "build": "concurrently pnpm:build:js pnpm:build:types", @@ -45,6 +45,7 @@ "types" ], "dependencies": { + "@microblink/analytics": "workspace:*", "@microblink/blinkid-wasm": "workspace:*", "@microblink/blinkid-worker": "workspace:*", "@microblink/core-common": "workspace:*", @@ -54,14 +55,16 @@ }, "devDependencies": { "@arethetypeswrong/cli": "0.18.2", - "@vitest/browser": "^3.0.8", - "@microblink/tsconfig": "workspace:*", "@microblink/repo-utils": "workspace:*", "@microblink/test-utils": "workspace:*", + "@microblink/tsconfig": "workspace:*", + "@microblink/wasm-common": "workspace:*", + "@microblink/worker-common": "workspace:*", "@microsoft/api-extractor": "^7.52.4", "@types/common-tags": "^1.8.3", "@typescript-eslint/eslint-plugin": "^6.9.0", "@typescript-eslint/parser": "^6.9.0", + "@vitest/browser": "^3.0.8", "concurrently": "^9.1.2", "eslint": "^8.57.0", "eslint-config-prettier": "10.1.8", @@ -78,6 +81,27 @@ "write-package": "^7.1.0", "zx": "^8.8.5" }, - "keywords": [], + "keywords": [ + "aml", + "blinkid", + "compliance", + "computer-vision", + "document-authentification", + "document-scanner", + "document-verification", + "driver-license", + "frontend", + "image-processing", + "kyc", + "microblink", + "ocr", + "passport-verification", + "typescript", + "verification", + "verify", + "video", + "wasm", + "webassembly" + ], "license": "ISC" } diff --git a/packages/blinkid-core/scripts/prepare-publish.mts b/packages/blinkid-core/scripts/prepare-publish.mts index 3da7bef..0246028 100644 --- a/packages/blinkid-core/scripts/prepare-publish.mts +++ b/packages/blinkid-core/scripts/prepare-publish.mts @@ -29,23 +29,33 @@ const corePackageJson = pickKeys([ "files", ]); +const bundledDependencies = [ + "@microblink/analytics", + "@microblink/blinkid-wasm", + "@microblink/blinkid-worker", + "@microblink/core-common", +]; + +const publishedDependencies = Object.fromEntries( + Object.entries(packageJson.dependencies).filter( + ([key]) => !bundledDependencies.includes(key), + ), +); + await fs.emptyDir(publishPath); await fs.copy("dist", path.join(publishPath, "dist")); await fs.copy("types", path.join(publishPath, "types")); await fs.copy("README.md", path.join(publishPath, "README.md")); -// We don't want to include [@microblink/blinkid-worker, @microblink/blinkid-wasm and @microblink/core-common] in the published package.json. -// They are rolled up into the main types file, and don't have any runtime code +// Keep bundled internal packages out of the published manifest. They are +// either rolled into the runtime bundle or inlined into index.rollup.d.ts. await writePackage( newPackagePath, { ...corePackageJson, - dependencies: { - "type-fest": packageJson.dependencies["type-fest"], - comlink: packageJson.dependencies.comlink, - }, + dependencies: publishedDependencies, access: "public", registry: "https://registry.npmjs.org/", types: "./types/index.rollup.d.ts", diff --git a/packages/blinkid-core/src/BlinkIdCore.ts b/packages/blinkid-core/src/BlinkIdCore.ts index b8104c5..340f199 100644 --- a/packages/blinkid-core/src/BlinkIdCore.ts +++ b/packages/blinkid-core/src/BlinkIdCore.ts @@ -48,18 +48,13 @@ export async function loadBlinkIdCore( settings: BlinkIdInitSettings, progressCallback?: ProgressStatusCallback, ): Promise { + settings.resourcesLocation ??= window.location.href; const remoteWorker = await createProxyWorker( - settings.resourcesLocation ?? window.location.href, + settings.resourcesLocation, "blinkid-worker.js", ); - if (!settings.userId) { - settings.userId = getUserId(STORAGE_KEY); - } - - if (!settings.resourcesLocation) { - settings.resourcesLocation = window.location.href; - } + settings.userId ??= getUserId(STORAGE_KEY); if (settings.useLightweightBuild === undefined) { settings.useLightweightBuild = await shouldUseLightweightBuild(); diff --git a/packages/blinkid-core/src/index.ts b/packages/blinkid-core/src/index.ts index 213e07a..4cea249 100644 --- a/packages/blinkid-core/src/index.ts +++ b/packages/blinkid-core/src/index.ts @@ -14,6 +14,8 @@ import { Remote } from "comlink"; export type * from "@microblink/blinkid-wasm"; export type * from "@microblink/blinkid-worker"; +export { AnalyticService } from "@microblink/analytics/AnalyticService"; +export type * from "@microblink/analytics/ping"; export { createProxyWorker } from "@microblink/core-common/createProxyWorker"; export { createDerivedDeviceInfo, diff --git a/packages/blinkid-ux-manager/CHANGELOG.md b/packages/blinkid-ux-manager/CHANGELOG.md index 43f3bf0..b75f5ca 100644 --- a/packages/blinkid-ux-manager/CHANGELOG.md +++ b/packages/blinkid-ux-manager/CHANGELOG.md @@ -1,5 +1,13 @@ # @microblink/blinkid-ux-manager +## 7.7.3 + +### Patch Changes + +- Updated dependencies + - @microblink/blinkid-core@7.7.3 + - @microblink/camera-manager@7.3.2 + ## 7.7.2 ### Patch Changes diff --git a/packages/blinkid-ux-manager/README.md b/packages/blinkid-ux-manager/README.md index 430e301..ad86139 100644 --- a/packages/blinkid-ux-manager/README.md +++ b/packages/blinkid-ux-manager/README.md @@ -155,7 +155,7 @@ The output files will be available in the `dist/` and `types/` directories. You can customize UI strings when creating the feedback UI: -``` +```typescript createBlinkIdFeedbackUi(uxManager, cameraUi, { localizationStrings: { scan_the_barcode: "Please scan the barcode" diff --git a/packages/blinkid-ux-manager/docs/interfaces/BlinkIdUxManager.md b/packages/blinkid-ux-manager/docs/interfaces/BlinkIdUxManager.md index d9090b5..eccc9ed 100644 --- a/packages/blinkid-ux-manager/docs/interfaces/BlinkIdUxManager.md +++ b/packages/blinkid-ux-manager/docs/interfaces/BlinkIdUxManager.md @@ -123,7 +123,7 @@ Use `mappedUiStateKey` (internal/debug) or `uiStateKey` (displayed state). The current UI state. Updated internally by the RAF update loop. Read externally once at UI mount to seed the initial Solid signal value; -subsequent updates are delivered via [addOnUiStateChangedCallback](#addonuistatechangedcallback). +subsequent updates are delivered via `addOnUiStateChangedCallback`. ##### Returns diff --git a/packages/blinkid-ux-manager/docs/type-aliases/BlinkIdPageTransitionKey.md b/packages/blinkid-ux-manager/docs/type-aliases/BlinkIdPageTransitionKey.md index 65e3af3..258022e 100644 --- a/packages/blinkid-ux-manager/docs/type-aliases/BlinkIdPageTransitionKey.md +++ b/packages/blinkid-ux-manager/docs/type-aliases/BlinkIdPageTransitionKey.md @@ -12,4 +12,4 @@ Union type of all page transition state keys. ## See -[blinkIdPageTransitionKeys](../variables/blinkIdPageTransitionKeys.md) for detailed documentation on each state +`blinkIdPageTransitionKeys` for detailed documentation on each state diff --git a/packages/blinkid-ux-manager/docs/type-aliases/BlinkIdUiIntroStateKey.md b/packages/blinkid-ux-manager/docs/type-aliases/BlinkIdUiIntroStateKey.md index a6314a3..f64d4e5 100644 --- a/packages/blinkid-ux-manager/docs/type-aliases/BlinkIdUiIntroStateKey.md +++ b/packages/blinkid-ux-manager/docs/type-aliases/BlinkIdUiIntroStateKey.md @@ -12,4 +12,4 @@ Union type of all intro state keys. ## See -[blinkIdUiIntroStateKeys](../variables/blinkIdUiIntroStateKeys.md) for detailed documentation on each state +`blinkIdUiIntroStateKeys` for detailed documentation on each state diff --git a/packages/blinkid-ux-manager/docs/variables/blinkIdPageTransitionKeys.md b/packages/blinkid-ux-manager/docs/variables/blinkIdPageTransitionKeys.md index d76d20a..e2f1604 100644 --- a/packages/blinkid-ux-manager/docs/variables/blinkIdPageTransitionKeys.md +++ b/packages/blinkid-ux-manager/docs/variables/blinkIdPageTransitionKeys.md @@ -35,6 +35,6 @@ corresponding intro state to begin scanning the next page: ## See - - [BlinkIdPageTransitionKey](../type-aliases/BlinkIdPageTransitionKey.md) for the union type of these keys - - getChainedUiStateKey for the automatic state transition logic - - [blinkIdUiIntroStateKeys](blinkIdUiIntroStateKeys.md) for the intro states that follow transitions + - `BlinkIdPageTransitionKey` for the union type of these keys + - `getChainedUiStateKey` for the automatic state transition logic + - `blinkIdUiIntroStateKeys` for the intro states that follow transitions diff --git a/packages/blinkid-ux-manager/docs/variables/blinkIdUiIntroStateKeys.md b/packages/blinkid-ux-manager/docs/variables/blinkIdUiIntroStateKeys.md index 2eb30bb..fa14f1e 100644 --- a/packages/blinkid-ux-manager/docs/variables/blinkIdUiIntroStateKeys.md +++ b/packages/blinkid-ux-manager/docs/variables/blinkIdUiIntroStateKeys.md @@ -44,5 +44,5 @@ uxManager.setInitialUiStateKey("INTRO_DATA_PAGE", true); ## See - - [BlinkIdUiIntroStateKey](../type-aliases/BlinkIdUiIntroStateKey.md) for the union type of these keys - - getChainedUiStateKey for the automatic state transition logic + - `BlinkIdUiIntroStateKey` for the union type of these keys + - `getChainedUiStateKey` for the automatic state transition logic diff --git a/packages/blinkid-ux-manager/package.json b/packages/blinkid-ux-manager/package.json index 88ea4af..c1728d0 100644 --- a/packages/blinkid-ux-manager/package.json +++ b/packages/blinkid-ux-manager/package.json @@ -1,7 +1,7 @@ { "name": "@microblink/blinkid-ux-manager", "description": "BlinkID UX Manager provides user feedback based on the blinkid process results.", - "version": "7.7.2", + "version": "7.7.3", "author": "Microblink", "scripts": { "build": "concurrently pnpm:build:js pnpm:build:types", @@ -45,7 +45,6 @@ "types" ], "dependencies": { - "@microblink/analytics": "workspace:^", "@microblink/blinkid-core": "workspace:^", "@microblink/camera-manager": "workspace:^", "@microblink/ux-common": "workspace:^", @@ -68,8 +67,8 @@ "@microsoft/api-extractor": "^7.52.4", "@typescript-eslint/eslint-plugin": "^6.9.0", "@typescript-eslint/parser": "^6.9.0", - "@unocss/eslint-config": "^65.5.0", - "@unocss/preset-uno": "^65.5.0", + "@unocss/eslint-config": "^66.6.5", + "@unocss/preset-uno": "^66.6.5", "@vitest/browser": "^3.0.8", "concurrently": "^9.1.2", "eslint": "^8.57.0", @@ -84,7 +83,7 @@ "typedoc": "^0.28.7", "typedoc-plugin-markdown": "^4.7.0", "typescript": "5.8.3", - "unocss": "^66.5.7", + "unocss": "^66.6.5", "vite": "^6.2.1", "vite-plugin-css-injected-by-js": "^3.5.2", "vite-plugin-externalize-dependencies": "1.0.1", diff --git a/packages/blinkid-ux-manager/scripts/prepare-publish.mts b/packages/blinkid-ux-manager/scripts/prepare-publish.mts index 7c66619..2b8b04f 100644 --- a/packages/blinkid-ux-manager/scripts/prepare-publish.mts +++ b/packages/blinkid-ux-manager/scripts/prepare-publish.mts @@ -38,7 +38,7 @@ await fs.copy("README.md", path.join(publishPath, "README.md")); // These dependencies are bundled into the main types file, so we don't need to // include them in the dependencies. -const bundleDependencies = ["@microblink/analytics", "@microblink/ux-common"]; +const bundleDependencies = ["@microblink/ux-common"]; const microblinkDependencies = Object.keys(packageJson.dependencies).filter( (key) => key.startsWith("@microblink") && !bundleDependencies.includes(key), diff --git a/packages/blinkid-ux-manager/src/core/BlinkIdUxManager.test.ts b/packages/blinkid-ux-manager/src/core/BlinkIdUxManager.test.ts index 0536ab6..5217639 100644 --- a/packages/blinkid-ux-manager/src/core/BlinkIdUxManager.test.ts +++ b/packages/blinkid-ux-manager/src/core/BlinkIdUxManager.test.ts @@ -21,11 +21,11 @@ vi.mock("@microblink/ux-common/utils", async (importOriginal) => { }; }); -import { AnalyticService } from "@microblink/analytics/AnalyticService"; import type { BlinkIdScanningResult, DocumentClassInfo, } from "@microblink/blinkid-core"; +import { AnalyticService } from "@microblink/blinkid-core"; import { createFakeImageData, enableRafAwareFakeTimers, diff --git a/packages/blinkid-ux-manager/src/core/BlinkIdUxManager.ts b/packages/blinkid-ux-manager/src/core/BlinkIdUxManager.ts index 82dea09..71d25ba 100644 --- a/packages/blinkid-ux-manager/src/core/BlinkIdUxManager.ts +++ b/packages/blinkid-ux-manager/src/core/BlinkIdUxManager.ts @@ -5,18 +5,16 @@ // TODO: fix linting to apply only to /ui /* eslint-disable solid/reactivity */ -import { AnalyticService } from "@microblink/analytics/AnalyticService"; -import type { - PingCameraInputInfoData, - PingScanningConditionsData, -} from "@microblink/analytics/ping"; import { + AnalyticService, DeviceInfo, DocumentRotation, type BlinkIdProcessResult, type BlinkIdScanningResult, type BlinkIdSessionSettings, type DocumentClassInfo, + type PingCameraInputInfoData, + type PingScanningConditionsData, type ProcessResultWithBuffer, type RemoteScanningSession, } from "@microblink/blinkid-core"; @@ -83,7 +81,7 @@ export class BlinkIdUxManager { /** * The current UI state. Updated internally by the RAF update loop. * Read externally once at UI mount to seed the initial Solid signal value; - * subsequent updates are delivered via {@link addOnUiStateChangedCallback}. + * subsequent updates are delivered via `addOnUiStateChangedCallback`. */ get uiState(): BlinkIdUiState { return this.#uiState; @@ -154,7 +152,7 @@ export class BlinkIdUxManager { #analytics: AnalyticService; /** Tracks last reported camera hardware state. */ #reportedCameraKeys = new Set(); - /** Debounced wrapper around {@link #syncCameraInputToAnalytics} (300 ms). */ + /** Debounced wrapper around `#syncCameraInputToAnalytics` (300 ms). */ #debouncedCameraInputSyncToAnalytics = debounce(() => { this.#syncCameraInputToAnalytics(); }, 300); diff --git a/packages/blinkid-ux-manager/src/core/blinkid-ui-state.ts b/packages/blinkid-ux-manager/src/core/blinkid-ui-state.ts index 0e15d5c..467823e 100644 --- a/packages/blinkid-ux-manager/src/core/blinkid-ui-state.ts +++ b/packages/blinkid-ux-manager/src/core/blinkid-ui-state.ts @@ -62,8 +62,8 @@ export type BlinkIdReticleType = * uxManager.setInitialUiStateKey("INTRO_DATA_PAGE", true); * ``` * - * @see {@link BlinkIdUiIntroStateKey} for the union type of these keys - * @see {@link getChainedUiStateKey} for the automatic state transition logic + * @see `BlinkIdUiIntroStateKey` for the union type of these keys + * @see `getChainedUiStateKey` for the automatic state transition logic */ export const blinkIdUiIntroStateKeys = [ "INTRO_FRONT_PAGE", @@ -78,7 +78,7 @@ export const blinkIdUiIntroStateKeys = [ /** * Union type of all intro state keys. * - * @see {@link blinkIdUiIntroStateKeys} for detailed documentation on each state + * @see `blinkIdUiIntroStateKeys` for detailed documentation on each state */ export type BlinkIdUiIntroStateKey = (typeof blinkIdUiIntroStateKeys)[number]; @@ -107,9 +107,9 @@ export type BlinkIdUiIntroStateKey = (typeof blinkIdUiIntroStateKeys)[number]; * - `MOVE_RIGHT` → `INTRO_RIGHT_PAGE` * - `MOVE_LEFT` → `INTRO_LEFT_PAGE` * - * @see {@link BlinkIdPageTransitionKey} for the union type of these keys - * @see {@link getChainedUiStateKey} for the automatic state transition logic - * @see {@link blinkIdUiIntroStateKeys} for the intro states that follow transitions + * @see `BlinkIdPageTransitionKey` for the union type of these keys + * @see `getChainedUiStateKey` for the automatic state transition logic + * @see `blinkIdUiIntroStateKeys` for the intro states that follow transitions */ export const blinkIdPageTransitionKeys = [ "FLIP_CARD", @@ -122,7 +122,7 @@ export const blinkIdPageTransitionKeys = [ /** * Union type of all page transition state keys. * - * @see {@link blinkIdPageTransitionKeys} for detailed documentation on each state + * @see `blinkIdPageTransitionKeys` for detailed documentation on each state */ export type BlinkIdPageTransitionKey = (typeof blinkIdPageTransitionKeys)[number]; diff --git a/packages/blinkid-ux-manager/src/core/uxAnalyticsMappers.ts b/packages/blinkid-ux-manager/src/core/uxAnalyticsMappers.ts index f35c7a6..6b5d0c3 100644 --- a/packages/blinkid-ux-manager/src/core/uxAnalyticsMappers.ts +++ b/packages/blinkid-ux-manager/src/core/uxAnalyticsMappers.ts @@ -2,7 +2,7 @@ * Copyright (c) 2026 Microblink Ltd. All rights reserved. */ -import type { PingUxEventData } from "@microblink/analytics/ping"; +import type { PingUxEventData } from "@microblink/blinkid-core"; import { match } from "ts-pattern"; import type { BlinkIdUiErrorStateKey } from "./blinkid-ui-state"; diff --git a/packages/blinkid-verify-core/.eslintrc.cjs b/packages/blinkid-verify-core/.eslintrc.cjs new file mode 100644 index 0000000..a386518 --- /dev/null +++ b/packages/blinkid-verify-core/.eslintrc.cjs @@ -0,0 +1,52 @@ +const { defineConfig } = require("eslint-define-config"); + +module.exports = defineConfig({ + root: true, + + parserOptions: { + ecmaVersion: "2022", + sourceType: "module", + }, + + overrides: [ + { + files: ["src/**/*.ts"], + plugins: ["@typescript-eslint"], + 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:@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/blinkid-verify-core/.gitignore b/packages/blinkid-verify-core/.gitignore new file mode 100644 index 0000000..1a09bde --- /dev/null +++ b/packages/blinkid-verify-core/.gitignore @@ -0,0 +1,3 @@ +types +public/resources/** +publish diff --git a/packages/blinkid-verify-core/CHANGELOG.md b/packages/blinkid-verify-core/CHANGELOG.md new file mode 100644 index 0000000..f4714e5 --- /dev/null +++ b/packages/blinkid-verify-core/CHANGELOG.md @@ -0,0 +1,5 @@ +# @microblink/blinkid-verify-core + +## 3.20.0 + +- Introducing BlinkID Verify web SDK, a capturing solution for perparing the perfect frames from a camera to be sent to the BlinkID verify API diff --git a/packages/blinkid-verify-core/README.md b/packages/blinkid-verify-core/README.md new file mode 100644 index 0000000..da13cca --- /dev/null +++ b/packages/blinkid-verify-core/README.md @@ -0,0 +1,71 @@ +# @microblink/blinkid-verify-core + +This package provides the core BlinkID Verify functionality for browser-based card scanning. It exposes a low-level API for initializing and controlling the BlinkID Verify engine, managing sessions, and processing images. It can be used directly by end users for advanced or custom integrations, or as a dependency of higher-level packages such as [`@microblink/blinkid-verify`](https://www.npmjs.com/package/@microblink/blinkid-verify). + +## Overview + +- Provides the main API for BlinkID Verify scanning and recognition in the browser. +- Handles initialization, licensing, and session management. +- Can be used directly by end users for advanced use cases. +- Used internally by [`@microblink/blinkid-verify`](https://www.npmjs.com/package/@microblink/blinkid-verify). + +## Installation + +Install from npm using your preferred package manager: + +```sh +npm install @microblink/blinkid-verify-core +# or +yarn add @microblink/blinkid-verify-core +# or +pnpm add @microblink/blinkid-verify-core +``` + +## Usage + +You can use `@microblink/blinkid-verify-core` directly in your project for custom integrations. See the example apps in the `apps/examples` directory in the GitHub repository for usage details. + +## Environment & Setup + +- ESM-only: Use in browsers with a bundler (e.g., Vite) or via [`