diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..5bbfce1 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,21 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.sol] +indent_size = 4 + +[*.nr] +indent_size = 4 + +[*.rs] +indent_size = 4 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..a2ae54a --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,28 @@ +name: Lint Test + +on: [push] + +jobs: + build: + runs-on: ubuntu-20.04 + strategy: + matrix: + node-version: [20] + steps: + - uses: actions/checkout@v3 + + - uses: pnpm/action-setup@v4 + with: + version: 9 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Run lint test + run: pnpm test:lint diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..818c151 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +.DS_Store +node_modules +build +dist +.vercel +package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* + +.vscode/settings.json + +codegenCache.json + +artifacts +cache + +**/target/*.bak diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..c5dfebd --- /dev/null +++ b/.prettierignore @@ -0,0 +1,18 @@ +.DS_Store +node_modules +/build +dist +/package +.env +.env.* +!.env.example + +vite.config.js.timestamp-* +vite.config.ts.timestamp-* + +target/ + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..6b78363 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "plugins": ["prettier-plugin-svelte"], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/Nargo.toml b/Nargo.toml deleted file mode 100644 index ae091a0..0000000 --- a/Nargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "zkemail" -type = "lib" -authors = ["Oleh Misarosh "] -compiler_version = ">=0.33.0" - -[dependencies] -noir_rsa = { tag = "v0.2", git = "https://github.com/noir-lang/noir_rsa" } -noir_base64 = { tag = "v0.2.0", git = "https://github.com/noir-lang/noir_base64" } -string_search = { tag = "v0.1", git = "https://github.com/noir-lang/noir_string_search" } diff --git a/README.md b/README.md index 984a5eb..fca7f0c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ -# zkemail lib +# zkemail in Noir -Used by . +Prove any email with selective disclosure: . + +Written in Noir and Svelte. + +![zkemail](./assets/zkemail.jpg) diff --git a/apps/zkemail/.gitignore b/apps/zkemail/.gitignore new file mode 100644 index 0000000..53db4e6 --- /dev/null +++ b/apps/zkemail/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules +/build +.svelte-kit/* +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/apps/zkemail/.prettierignore b/apps/zkemail/.prettierignore new file mode 100644 index 0000000..8231b7e --- /dev/null +++ b/apps/zkemail/.prettierignore @@ -0,0 +1,8 @@ +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock + +.svelte-kit +.vercel +ROUTES.ts diff --git a/apps/zkemail/components.json b/apps/zkemail/components.json new file mode 100644 index 0000000..1053591 --- /dev/null +++ b/apps/zkemail/components.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://shadcn-svelte.com/schema.json", + "style": "default", + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/app.css", + "baseColor": "slate" + }, + "aliases": { + "components": "$lib/components", + "utils": "$lib/utils" + }, + "typescript": true +} diff --git a/apps/zkemail/package.json b/apps/zkemail/package.json new file mode 100644 index 0000000..8750476 --- /dev/null +++ b/apps/zkemail/package.json @@ -0,0 +1,70 @@ +{ + "name": "@repo/zkemail", + "type": "module", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "pnpm _chore && vite dev", + "build": "pnpm _chore && pnpm test:lint && vite build", + "preview": "vite preview", + "test": "pnpm test:lint && pnpm test:unit", + "test:unit": "pnpm _chore && vitest run", + "test:lint": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json && prettier --check .", + "test:lint:fix": "prettier --write .", + "_chore": "pnpm i" + }, + "dependencies": { + "@metamask/jazzicon": "^2.0.0", + "@noir-lang/acvm_js": "0.49.0", + "@noir-lang/backend_barretenberg": "0.33.0", + "@noir-lang/noir_js": "0.33.0", + "@noir-lang/noir_wasm": "0.33.0", + "@noir-lang/noirc_abi": "0.33.0", + "@repo/utils": "workspace:*", + "@shieldswap/email_account_utils_rs": "0.3.2", + "@tanstack/svelte-query": "^5.13.4", + "@vercel/analytics": "^1.3.1", + "@zk-email/helpers": "6.1.5", + "autoprefixer": "^10.4.20", + "bits-ui": "^0.21.16", + "clsx": "^2.1.1", + "formsnap": "^1.0.1", + "ky": "^1.7.1", + "lodash-es": "^4.17.21", + "lucide-svelte": "^0.441.0", + "ms": "^2.1.3", + "node-forge": "^1.3.1", + "svelte-french-toast": "^1.2.0", + "svelte-typed-context": "https://github.com/KamenKolev/svelte-typed-context#02dc12b4a8fdfc7258ee25309685a04924d9eff5", + "sveltekit-superforms": "2.19.0", + "tailwind-merge": "^2.5.2", + "tailwind-variants": "^0.2.1", + "ts-essentials": "^10.0.2", + "ufo": "^1.5.4", + "viem": "^2.20.0", + "zod": "^3.23.8" + }, + "devDependencies": { + "@sveltejs/adapter-vercel": "^5.4.3", + "@sveltejs/kit": "^2.5.17", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "@tailwindcss/typography": "^0.5.15", + "@types/lodash-es": "^4.17.12", + "@types/ms": "^0.7.34", + "@types/node-forge": "^1.3.11", + "prettier": "^3.1.1", + "prettier-plugin-svelte": "^3.1.2", + "rollup-plugin-copy": "^3.5.0", + "sass": "^1.80.3", + "svelte": "5.0.0-next.144", + "svelte-check": "^3.6.0", + "sveltekit-adapter-chrome-extension": "^2.0.1", + "tailwindcss": "^3.4.14", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^5.2.11", + "vite-plugin-kit-routes": "^0.6.5", + "vite-plugin-node-polyfills": "0.17.0", + "vite-plugin-resolve": "^2.5.1" + } +} diff --git a/apps/zkemail/postcss.config.js b/apps/zkemail/postcss.config.js new file mode 100644 index 0000000..2aa7205 --- /dev/null +++ b/apps/zkemail/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/apps/zkemail/src/app.css b/apps/zkemail/src/app.css new file mode 100644 index 0000000..ff2aa87 --- /dev/null +++ b/apps/zkemail/src/app.css @@ -0,0 +1,83 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 222.2 84% 4.9%; + + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + + --popover: 0 0% 100%; + --popover-foreground: 222.2 84% 4.9%; + + --card: 0 0% 100%; + --card-foreground: 222.2 84% 4.9%; + + --border: 214.3 31.8% 91.4%; + --input: 214.3 31.8% 91.4%; + + --primary: 222.2 47.4% 11.2%; + --primary-foreground: 210 40% 98%; + + --secondary: 210 40% 96.1%; + --secondary-foreground: 222.2 47.4% 11.2%; + + --accent: 210 40% 96.1%; + --accent-foreground: 222.2 47.4% 11.2%; + + --destructive: 0 72.2% 50.6%; + --destructive-foreground: 210 40% 98%; + + --ring: 222.2 84% 4.9%; + + --radius: 0.5rem; + } + + .dark { + --background: 222.2 84% 4.9%; + --foreground: 210 40% 98%; + + --muted: 217.2 32.6% 17.5%; + --muted-foreground: 215 20.2% 65.1%; + + --popover: 222.2 84% 4.9%; + --popover-foreground: 210 40% 98%; + + --card: 222.2 84% 4.9%; + --card-foreground: 210 40% 98%; + + --border: 217.2 32.6% 17.5%; + --input: 217.2 32.6% 17.5%; + + --primary: 210 40% 98%; + --primary-foreground: 222.2 47.4% 11.2%; + + --secondary: 217.2 32.6% 17.5%; + --secondary-foreground: 210 40% 98%; + + --accent: 217.2 32.6% 17.5%; + --accent-foreground: 210 40% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 40% 98%; + + --ring: 212.7 26.8% 83.9%; + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} + +body, +html { + height: 100%; +} diff --git a/apps/zkemail/src/app.d.ts b/apps/zkemail/src/app.d.ts new file mode 100644 index 0000000..ede601a --- /dev/null +++ b/apps/zkemail/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/apps/zkemail/src/app.html b/apps/zkemail/src/app.html new file mode 100644 index 0000000..da9b066 --- /dev/null +++ b/apps/zkemail/src/app.html @@ -0,0 +1,13 @@ + + + + + + + zkEmail Noir + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/apps/zkemail/src/lib/HeadersSelector.svelte b/apps/zkemail/src/lib/HeadersSelector.svelte new file mode 100644 index 0000000..8e413d1 --- /dev/null +++ b/apps/zkemail/src/lib/HeadersSelector.svelte @@ -0,0 +1,87 @@ + + +{#each splitHeaders.mainHeaders as header} + {@render renderRow(header)} +{/each} + +
+ Other metadata + {#each splitHeaders.otherHeaders as header} + {@render renderRow(header)} + {/each} +
+ +{#snippet renderRow(header: ElementOf)} +
+ +
+{/snippet} diff --git a/apps/zkemail/src/lib/ProveEmailForm.svelte b/apps/zkemail/src/lib/ProveEmailForm.svelte new file mode 100644 index 0000000..05a7e8e --- /dev/null +++ b/apps/zkemail/src/lib/ProveEmailForm.svelte @@ -0,0 +1,109 @@ + + + +
+
+ + + Select what you want to reveal to a verifier + + +
+

Metadata

+
+ +
+
+
+

Message

+ + Select text you want to reveal. Click on selection to cancel it. + +
+
+ +
+
+
+
+ + + A verifier will see this + + + + + +
+
+ +
+ + Prove + +
+ +
+

Proof

+
+ {#if proof} + Copy proof + + {:else} +

Proof will be shown here.

+ {/if} +
diff --git a/apps/zkemail/src/lib/ROUTES.ts b/apps/zkemail/src/lib/ROUTES.ts new file mode 100644 index 0000000..71ab031 --- /dev/null +++ b/apps/zkemail/src/lib/ROUTES.ts @@ -0,0 +1,141 @@ +/* eslint-disable */ +/** + * This file was generated by 'vite-plugin-kit-routes' + * + * >> DO NOT EDIT THIS FILE MANUALLY << + */ + +/** + * PAGES + */ +const PAGES = { + "/": `/`, + "/verify": `/verify` +} + +/** + * SERVERS + */ +const SERVERS = { + "GET /api/proxy/github/[...path]": (params: { path: (string | number)[] }) => { + return `/api/proxy/github/${params.path?.join('/')}` + } +} + +/** + * ACTIONS + */ +const ACTIONS = { + +} + +/** + * LINKS + */ +const LINKS = { + +} + +type ParamValue = string | number | undefined + +/** + * Append search params to a string + */ +export const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { + if (sp === undefined) return '' + + const params = new URLSearchParams() + const append = (n: string, v: ParamValue) => { + if (v !== undefined) { + params.append(n, String(v)) + } + } + + for (const [name, val] of Object.entries(sp)) { + if (Array.isArray(val)) { + for (const v of val) { + append(name, v) + } + } else { + append(name, val) + } + } + + const formatted = params.toString() + if (formatted) { + return `${prefix}${formatted}` + } + return '' +} + +/** + * get the current search params + * + * Could be use like this: + * ``` + * route("/cities", { page: 2 }, { ...currentSP() }) + * ``` + */ +export const currentSp = () => { + const params = new URLSearchParams(window.location.search) + const record: Record = {} + for (const [key, value] of params.entries()) { + record[key] = value + } + return record +} + +// route function helpers +type NonFunctionKeys = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T] +type FunctionKeys = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T] +type FunctionParams = T extends (...args: infer P) => any ? P : never + +const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } +type AllTypes = typeof AllObjs + +export type Routes = keyof AllTypes extends `${string}/${infer Route}` ? `/${Route}` : keyof AllTypes +export const routes = [ + ...new Set(Object.keys(AllObjs).map((route) => /^\/.*|[^ ]?\/.*$/.exec(route)?.[0] ?? route)), +] as Routes[] + +/** + * To be used like this: + * ```ts + * import { route } from './ROUTES' + * + * route('site_id', { id: 1 }) + * ``` + */ +export function route>(key: T, ...params: FunctionParams): string +export function route>(key: T): string +export function route(key: T, ...params: any[]): string { + if (AllObjs[key] as any instanceof Function) { + const element = (AllObjs as any)[key] as (...args: any[]) => string + return element(...params) + } else { + return AllObjs[key] as string + } +} + +/** +* Add this type as a generic of the vite plugin `kitRoutes`. +* +* Full example: +* ```ts +* import type { KIT_ROUTES } from './ROUTES' +* import { kitRoutes } from 'vite-plugin-kit-routes' +* +* kitRoutes({ +* PAGES: { +* // here, key of object will be typed! +* } +* }) +* ``` +*/ +export type KIT_ROUTES = { + PAGES: { '/': never, '/verify': never } + SERVERS: { 'GET /api/proxy/github/[...path]': 'path' } + ACTIONS: Record + LINKS: Record + Params: { path: never } +} diff --git a/apps/zkemail/src/lib/ReconstructedEmail.svelte b/apps/zkemail/src/lib/ReconstructedEmail.svelte new file mode 100644 index 0000000..29d5d9e --- /dev/null +++ b/apps/zkemail/src/lib/ReconstructedEmail.svelte @@ -0,0 +1,53 @@ + + + + +

+{#if result.verified} + + +
+ Proof: + {#if result.verified} + Verified +
+ + Signed by "@{result.data.dkimSignature.domain}" with selector "{result + .data.dkimSignature.selector}" + + {:else} + Not verified + {/if} +
+
+ + +
+

Metadata

+
+ + +
+ +
+

Message

+
+ +
+
+{/if} diff --git a/apps/zkemail/src/lib/ReconstructedText.svelte b/apps/zkemail/src/lib/ReconstructedText.svelte new file mode 100644 index 0000000..8c6b3bc --- /dev/null +++ b/apps/zkemail/src/lib/ReconstructedText.svelte @@ -0,0 +1,21 @@ + + +
+
{#each reconstructed as char}{#if char != null}{#if char === " "} {:else}{char}{/if}{:else}█{/if}{/each}
+
+ + diff --git a/apps/zkemail/src/lib/TextSelector.svelte b/apps/zkemail/src/lib/TextSelector.svelte new file mode 100644 index 0000000..58cf586 --- /dev/null +++ b/apps/zkemail/src/lib/TextSelector.svelte @@ -0,0 +1,86 @@ + + +
+ +
{text}
+
{#each text as char, i}{@const {
+        chunk,
+        revealed,
+      } =
+        isRevealed(
+          i,
+        )} {
+          if (!revealed) {
+            return;
+          }
+          chunks = chunks.filter((c) => c !== chunk);
+        }}>{char}{/each}
+
+ + diff --git a/apps/zkemail/src/lib/components/Container.svelte b/apps/zkemail/src/lib/components/Container.svelte new file mode 100644 index 0000000..4fec28b --- /dev/null +++ b/apps/zkemail/src/lib/components/Container.svelte @@ -0,0 +1,17 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/CopyButton.svelte b/apps/zkemail/src/lib/components/CopyButton.svelte new file mode 100644 index 0000000..030f4a1 --- /dev/null +++ b/apps/zkemail/src/lib/components/CopyButton.svelte @@ -0,0 +1,36 @@ + + + diff --git a/apps/zkemail/src/lib/components/GapContainer.svelte b/apps/zkemail/src/lib/components/GapContainer.svelte new file mode 100644 index 0000000..49fb062 --- /dev/null +++ b/apps/zkemail/src/lib/components/GapContainer.svelte @@ -0,0 +1,9 @@ + + +
+ {@render children?.()} +
diff --git a/apps/zkemail/src/lib/components/Link.svelte b/apps/zkemail/src/lib/components/Link.svelte new file mode 100644 index 0000000..8c616da --- /dev/null +++ b/apps/zkemail/src/lib/components/Link.svelte @@ -0,0 +1,28 @@ + + + + {@render children?.()}{#if isExternal && !hideExternalIcon} {/if} + diff --git a/apps/zkemail/src/lib/components/LoadingButton.svelte b/apps/zkemail/src/lib/components/LoadingButton.svelte new file mode 100644 index 0000000..fe6c66e --- /dev/null +++ b/apps/zkemail/src/lib/components/LoadingButton.svelte @@ -0,0 +1,34 @@ + + + diff --git a/apps/zkemail/src/lib/components/Query.svelte b/apps/zkemail/src/lib/components/Query.svelte new file mode 100644 index 0000000..5868ce6 --- /dev/null +++ b/apps/zkemail/src/lib/components/Query.svelte @@ -0,0 +1,52 @@ + + +{#if query.status === "pending"} + {#if !hideArray.includes("pending")} + {#if pending} + {@render pending()} + {:else} + Loading... + {/if} + {/if} +{:else if query.status === "error"} + {#if !hideArray.includes("error")} + {#if error} + {@render error(query.error)} + {:else} + Error: {String(query.error)} + {/if} + {/if} +{:else if query.status === "success"} + {@render success(query.data)} +{/if} diff --git a/apps/zkemail/src/lib/components/UserAvatar.svelte b/apps/zkemail/src/lib/components/UserAvatar.svelte new file mode 100644 index 0000000..6c9c3f3 --- /dev/null +++ b/apps/zkemail/src/lib/components/UserAvatar.svelte @@ -0,0 +1,17 @@ + + + diff --git a/apps/zkemail/src/lib/components/form/Checkbox.svelte b/apps/zkemail/src/lib/components/form/Checkbox.svelte new file mode 100644 index 0000000..290b029 --- /dev/null +++ b/apps/zkemail/src/lib/components/form/Checkbox.svelte @@ -0,0 +1,18 @@ + + + diff --git a/apps/zkemail/src/lib/components/form/Form.svelte b/apps/zkemail/src/lib/components/form/Form.svelte new file mode 100644 index 0000000..c82a287 --- /dev/null +++ b/apps/zkemail/src/lib/components/form/Form.svelte @@ -0,0 +1,54 @@ + + +
+ {@render children(form, formData)} +
diff --git a/apps/zkemail/src/lib/components/form/SubmitButton.svelte b/apps/zkemail/src/lib/components/form/SubmitButton.svelte new file mode 100644 index 0000000..6dcfa7d --- /dev/null +++ b/apps/zkemail/src/lib/components/form/SubmitButton.svelte @@ -0,0 +1,21 @@ + + + diff --git a/apps/zkemail/src/lib/components/form/index.ts b/apps/zkemail/src/lib/components/form/index.ts new file mode 100644 index 0000000..fd568f5 --- /dev/null +++ b/apps/zkemail/src/lib/components/form/index.ts @@ -0,0 +1,11 @@ +import { omit } from "lodash-es"; +import * as FormShadcn from "../ui/form"; +import Checkbox from "./Checkbox.svelte"; +import FormComponent from "./Form.svelte"; +import SubmitButton from "./SubmitButton.svelte"; + +export const Form = Object.assign(FormComponent, { + SubmitButton, + Checkbox, + ...omit(FormShadcn, ["Form"]), +}); diff --git a/apps/zkemail/src/lib/components/form/types.ts b/apps/zkemail/src/lib/components/form/types.ts new file mode 100644 index 0000000..9b444b2 --- /dev/null +++ b/apps/zkemail/src/lib/components/form/types.ts @@ -0,0 +1,4 @@ +import type { InjectionKey } from "svelte-typed-context"; +import type { SuperForm } from "sveltekit-superforms"; + +export const formContextKey: InjectionKey> = Symbol("form"); diff --git a/apps/zkemail/src/lib/components/toast/ConfirmToast.svelte b/apps/zkemail/src/lib/components/toast/ConfirmToast.svelte new file mode 100644 index 0000000..6bede31 --- /dev/null +++ b/apps/zkemail/src/lib/components/toast/ConfirmToast.svelte @@ -0,0 +1,37 @@ + + +
+

{confirmText}

+ +
+ { + toast_.dismiss(toast.id); + onresult(false); + }} + > + {no} + + + { + toast_.dismiss(toast.id); + onresult(true); + }} + > + {yes} + +
+
diff --git a/apps/zkemail/src/lib/components/toast/index.ts b/apps/zkemail/src/lib/components/toast/index.ts new file mode 100644 index 0000000..28549ff --- /dev/null +++ b/apps/zkemail/src/lib/components/toast/index.ts @@ -0,0 +1,2 @@ +export { default as ConfirmToast } from "./ConfirmToast.svelte"; +export * from "./toast"; diff --git a/apps/zkemail/src/lib/components/toast/toast.ts b/apps/zkemail/src/lib/components/toast/toast.ts new file mode 100644 index 0000000..3c0de9a --- /dev/null +++ b/apps/zkemail/src/lib/components/toast/toast.ts @@ -0,0 +1,94 @@ +import { utils } from "@repo/utils"; +import ms from "ms"; +import type { ComponentProps, SvelteComponent } from "svelte"; +import frenchToast, { + type Toast as FrenchToast, + type Renderable, + type ToastOptions, +} from "svelte-french-toast"; +import ConfirmToast from "./ConfirmToast.svelte"; + +export { Toaster } from "svelte-french-toast"; + +export type Toast = FrenchToast & { props: TProps }; + +const duration = ms("5 sec"); +export const toast = { + success: (msg: Renderable, options?: ToastOptions) => { + return frenchToast.success(msg, { duration, ...options }); + }, + log(msg: Renderable, options?: ToastOptions) { + if (typeof msg === "string") { + console.log(msg); + } + return frenchToast(msg, { duration, ...options }); + }, + error(error: unknown, options?: ToastOptions) { + console.error(error); + const errStr = utils.errorToString(error); + return frenchToast.error(errStr, { duration, ...options }); + }, + promise: async ( + promise: Promise, + msgs: string | Parameters[1], + options?: Parameters[2], + ) => { + if (typeof msgs === "string") { + msgs = { + loading: `Loading ${msgs}...`, + success: `Loaded ${msgs}!`, + error: `Error loading ${msgs}`, + }; + } + if (typeof msgs.loading === "string") { + console.log(msgs.loading); + } + try { + const value = await frenchToast.promise(promise, msgs, { + ...options, + success: { duration }, + error: { duration }, + }); + console.log( + typeof msgs.success !== "function" + ? msgs.success + : `Success ${msgs.loading}`, + ); + return value; + } catch (err) { + console.error( + typeof msgs.error !== "function" ? msgs.error : `Error ${msgs.loading}`, + ); + console.error(err); + throw err; + } + }, + confirm( + props: Omit["toast"]["props"], "onresult">, + { duration = Infinity, ...options }: ToastOptions = {}, + ) { + return new Promise((resolve) => { + toastCustomTypesafe(ConfirmToast, { + ...options, + duration, + props: { + ...props, + onresult: resolve, + }, + }); + }); + }, + custom: toastCustomTypesafe, + dismiss: frenchToast.dismiss.bind(frenchToast), +}; + +function toastCustomTypesafe< + T extends typeof SvelteComponent<{ toast: Toast }>, +>( + component: T, + options: ToastOptions & { + props: ComponentProps>["toast"]["props"]; + }, +) { + return frenchToast(component, options); +} diff --git a/apps/zkemail/src/lib/components/ui.ts b/apps/zkemail/src/lib/components/ui.ts new file mode 100644 index 0000000..0dc19e9 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui.ts @@ -0,0 +1,16 @@ +import * as CardComponents from "./ui/card"; + +export { default as Container } from "./Container.svelte"; +export { default as CopyButton } from "./CopyButton.svelte"; +export * from "./form"; +export { default as GapContainer } from "./GapContainer.svelte"; +export { default as Link } from "./Link.svelte"; +export { default as LoadingButton } from "./LoadingButton.svelte"; +export { default as Query } from "./Query.svelte"; +export * from "./toast"; +export { Badge } from "./ui/badge"; +export { Button } from "./ui/button"; +export { Input } from "./ui/input"; +export { Textarea } from "./ui/textarea"; +export { default as UserAvatar } from "./UserAvatar.svelte"; +export const Card = Object.assign(CardComponents.Root, CardComponents); diff --git a/apps/zkemail/src/lib/components/ui/badge/badge.svelte b/apps/zkemail/src/lib/components/ui/badge/badge.svelte new file mode 100644 index 0000000..8a71705 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/badge/badge.svelte @@ -0,0 +1,18 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/badge/index.ts b/apps/zkemail/src/lib/components/ui/badge/index.ts new file mode 100644 index 0000000..d17134c --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/badge/index.ts @@ -0,0 +1,22 @@ +import { type VariantProps, tv } from "tailwind-variants"; +export { default as Badge } from "./badge.svelte"; + +export const badgeVariants = tv({ + base: "focus:ring-ring inline-flex select-none items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2", + variants: { + variant: { + default: + "bg-primary text-primary-foreground hover:bg-primary/80 border-transparent", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80 border-transparent", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/80 border-transparent", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, +}); + +export type Variant = VariantProps["variant"]; diff --git a/apps/zkemail/src/lib/components/ui/button/button.svelte b/apps/zkemail/src/lib/components/ui/button/button.svelte new file mode 100644 index 0000000..a146733 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/button/button.svelte @@ -0,0 +1,33 @@ + + + + {#if loading} + + {/if} + + diff --git a/apps/zkemail/src/lib/components/ui/button/index.ts b/apps/zkemail/src/lib/components/ui/button/index.ts new file mode 100644 index 0000000..6667b06 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/button/index.ts @@ -0,0 +1,50 @@ +import type { Button as ButtonPrimitive } from "bits-ui"; +import { type VariantProps, tv } from "tailwind-variants"; +import Root from "./button.svelte"; + +const buttonVariants = tv({ + base: "ring-offset-background focus-visible:ring-ring inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border-input bg-background hover:bg-accent hover:text-accent-foreground border", + secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, +}); + +type Variant = VariantProps["variant"]; +type Size = VariantProps["size"]; + +type Props = ButtonPrimitive.Props & { + variant?: Variant; + size?: Size; +}; + +type Events = ButtonPrimitive.Events; + +export { + // + Root as Button, + Root, + buttonVariants, + type Events as ButtonEvents, + type Props as ButtonProps, + type Events, + type Props, +}; diff --git a/apps/zkemail/src/lib/components/ui/card/card-content.svelte b/apps/zkemail/src/lib/components/ui/card/card-content.svelte new file mode 100644 index 0000000..56f33c9 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/card/card-content.svelte @@ -0,0 +1,13 @@ + + +
+ +
diff --git a/apps/zkemail/src/lib/components/ui/card/card-description.svelte b/apps/zkemail/src/lib/components/ui/card/card-description.svelte new file mode 100644 index 0000000..338afc9 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/card/card-description.svelte @@ -0,0 +1,13 @@ + + +

+ +

diff --git a/apps/zkemail/src/lib/components/ui/card/card-footer.svelte b/apps/zkemail/src/lib/components/ui/card/card-footer.svelte new file mode 100644 index 0000000..18464f0 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/card/card-footer.svelte @@ -0,0 +1,13 @@ + + +
+ +
diff --git a/apps/zkemail/src/lib/components/ui/card/card-header.svelte b/apps/zkemail/src/lib/components/ui/card/card-header.svelte new file mode 100644 index 0000000..a12a69d --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/card/card-header.svelte @@ -0,0 +1,13 @@ + + +
+ +
diff --git a/apps/zkemail/src/lib/components/ui/card/card-title.svelte b/apps/zkemail/src/lib/components/ui/card/card-title.svelte new file mode 100644 index 0000000..287ebc3 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/card/card-title.svelte @@ -0,0 +1,21 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/card/card.svelte b/apps/zkemail/src/lib/components/ui/card/card.svelte new file mode 100644 index 0000000..9207be7 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/card/card.svelte @@ -0,0 +1,19 @@ + + +
+ +
diff --git a/apps/zkemail/src/lib/components/ui/card/index.ts b/apps/zkemail/src/lib/components/ui/card/index.ts new file mode 100644 index 0000000..b7f88bb --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/card/index.ts @@ -0,0 +1,24 @@ +import Root from "./card.svelte"; +import Content from "./card-content.svelte"; +import Description from "./card-description.svelte"; +import Footer from "./card-footer.svelte"; +import Header from "./card-header.svelte"; +import Title from "./card-title.svelte"; + +export { + Root, + Content, + Description, + Footer, + Header, + Title, + // + Root as Card, + Content as CardContent, + Description as CardDescription, + Footer as CardFooter, + Header as CardHeader, + Title as CardTitle, +}; + +export type HeadingLevel = "h1" | "h2" | "h3" | "h4" | "h5" | "h6"; diff --git a/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte new file mode 100644 index 0000000..10e978f --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte @@ -0,0 +1,35 @@ + + + + + + + + + + diff --git a/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte new file mode 100644 index 0000000..6d8db90 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte @@ -0,0 +1,27 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte new file mode 100644 index 0000000..bba23e8 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte @@ -0,0 +1,31 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte new file mode 100644 index 0000000..f9f5784 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte @@ -0,0 +1,19 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte new file mode 100644 index 0000000..d64cdf3 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte @@ -0,0 +1,11 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte new file mode 100644 index 0000000..7fbf733 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte @@ -0,0 +1,35 @@ + + + + + + + + + + diff --git a/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte new file mode 100644 index 0000000..0f23d09 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte @@ -0,0 +1,14 @@ + + + diff --git a/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte new file mode 100644 index 0000000..84df09b --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte @@ -0,0 +1,16 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte new file mode 100644 index 0000000..513d066 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte @@ -0,0 +1,30 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte new file mode 100644 index 0000000..d981a3d --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte @@ -0,0 +1,32 @@ + + + + + + diff --git a/apps/zkemail/src/lib/components/ui/dropdown-menu/index.ts b/apps/zkemail/src/lib/components/ui/dropdown-menu/index.ts new file mode 100644 index 0000000..fedb817 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/dropdown-menu/index.ts @@ -0,0 +1,48 @@ +import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui"; +import Item from "./dropdown-menu-item.svelte"; +import Label from "./dropdown-menu-label.svelte"; +import Content from "./dropdown-menu-content.svelte"; +import Shortcut from "./dropdown-menu-shortcut.svelte"; +import RadioItem from "./dropdown-menu-radio-item.svelte"; +import Separator from "./dropdown-menu-separator.svelte"; +import RadioGroup from "./dropdown-menu-radio-group.svelte"; +import SubContent from "./dropdown-menu-sub-content.svelte"; +import SubTrigger from "./dropdown-menu-sub-trigger.svelte"; +import CheckboxItem from "./dropdown-menu-checkbox-item.svelte"; + +const Sub = DropdownMenuPrimitive.Sub; +const Root = DropdownMenuPrimitive.Root; +const Trigger = DropdownMenuPrimitive.Trigger; +const Group = DropdownMenuPrimitive.Group; + +export { + Sub, + Root, + Item, + Label, + Group, + Trigger, + Content, + Shortcut, + Separator, + RadioItem, + SubContent, + SubTrigger, + RadioGroup, + CheckboxItem, + // + Root as DropdownMenu, + Sub as DropdownMenuSub, + Item as DropdownMenuItem, + Label as DropdownMenuLabel, + Group as DropdownMenuGroup, + Content as DropdownMenuContent, + Trigger as DropdownMenuTrigger, + Shortcut as DropdownMenuShortcut, + RadioItem as DropdownMenuRadioItem, + Separator as DropdownMenuSeparator, + RadioGroup as DropdownMenuRadioGroup, + SubContent as DropdownMenuSubContent, + SubTrigger as DropdownMenuSubTrigger, + CheckboxItem as DropdownMenuCheckboxItem, +}; diff --git a/apps/zkemail/src/lib/components/ui/form/form-button.svelte b/apps/zkemail/src/lib/components/ui/form/form-button.svelte new file mode 100644 index 0000000..7d9c3ff --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/form/form-button.svelte @@ -0,0 +1,10 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/form/form-description.svelte b/apps/zkemail/src/lib/components/ui/form/form-description.svelte new file mode 100644 index 0000000..3c46933 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/form/form-description.svelte @@ -0,0 +1,17 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/form/form-element-field.svelte b/apps/zkemail/src/lib/components/ui/form/form-element-field.svelte new file mode 100644 index 0000000..67bf21f --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/form/form-element-field.svelte @@ -0,0 +1,36 @@ + + + + + +
+ +
+
diff --git a/apps/zkemail/src/lib/components/ui/form/form-field-errors.svelte b/apps/zkemail/src/lib/components/ui/form/form-field-errors.svelte new file mode 100644 index 0000000..5cdc067 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/form/form-field-errors.svelte @@ -0,0 +1,26 @@ + + + + + {#each errors as error} +
{error}
+ {/each} +
+
diff --git a/apps/zkemail/src/lib/components/ui/form/form-field.svelte b/apps/zkemail/src/lib/components/ui/form/form-field.svelte new file mode 100644 index 0000000..8ba20b3 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/form/form-field.svelte @@ -0,0 +1,35 @@ + + + + + +
+ +
+
diff --git a/apps/zkemail/src/lib/components/ui/form/form-fieldset.svelte b/apps/zkemail/src/lib/components/ui/form/form-fieldset.svelte new file mode 100644 index 0000000..9290f6a --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/form/form-fieldset.svelte @@ -0,0 +1,33 @@ + + + + + + + diff --git a/apps/zkemail/src/lib/components/ui/form/form-label.svelte b/apps/zkemail/src/lib/components/ui/form/form-label.svelte new file mode 100644 index 0000000..9447a8b --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/form/form-label.svelte @@ -0,0 +1,21 @@ + + + diff --git a/apps/zkemail/src/lib/components/ui/form/form-legend.svelte b/apps/zkemail/src/lib/components/ui/form/form-legend.svelte new file mode 100644 index 0000000..5cccacf --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/form/form-legend.svelte @@ -0,0 +1,20 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/form/index.ts b/apps/zkemail/src/lib/components/ui/form/index.ts new file mode 100644 index 0000000..0c88b1f --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/form/index.ts @@ -0,0 +1,33 @@ +import * as FormPrimitive from "formsnap"; +import Button from "./form-button.svelte"; +import Description from "./form-description.svelte"; +import ElementField from "./form-element-field.svelte"; +import FieldErrors from "./form-field-errors.svelte"; +import Field from "./form-field.svelte"; +import Fieldset from "./form-fieldset.svelte"; +import Label from "./form-label.svelte"; +import Legend from "./form-legend.svelte"; + +const Control = FormPrimitive.Control; + +export { + Button, + Control, + Description, + ElementField, + Field, + FieldErrors, + Fieldset, + Button as FormButton, + Control as FormControl, + Description as FormDescription, + ElementField as FormElementField, + // + Field as FormField, + FieldErrors as FormFieldErrors, + Fieldset as FormFieldset, + Label as FormLabel, + Legend as FormLegend, + Label, + Legend, +}; diff --git a/apps/zkemail/src/lib/components/ui/input/index.ts b/apps/zkemail/src/lib/components/ui/input/index.ts new file mode 100644 index 0000000..c717cfc --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/input/index.ts @@ -0,0 +1,29 @@ +import Root from "./input.svelte"; + +export type FormInputEvent = T & { + currentTarget: EventTarget & HTMLInputElement; +}; +export type InputEvents = { + blur: FormInputEvent; + change: FormInputEvent; + click: FormInputEvent; + focus: FormInputEvent; + focusin: FormInputEvent; + focusout: FormInputEvent; + keydown: FormInputEvent; + keypress: FormInputEvent; + keyup: FormInputEvent; + mouseover: FormInputEvent; + mouseenter: FormInputEvent; + mouseleave: FormInputEvent; + mousemove: FormInputEvent; + paste: FormInputEvent; + input: FormInputEvent; + wheel: FormInputEvent; +}; + +export { + Root, + // + Root as Input, +}; diff --git a/apps/zkemail/src/lib/components/ui/input/input.svelte b/apps/zkemail/src/lib/components/ui/input/input.svelte new file mode 100644 index 0000000..10aea15 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/input/input.svelte @@ -0,0 +1,42 @@ + + + diff --git a/apps/zkemail/src/lib/components/ui/label/index.ts b/apps/zkemail/src/lib/components/ui/label/index.ts new file mode 100644 index 0000000..b0b23ce --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/label/index.ts @@ -0,0 +1,7 @@ +import Root from "./label.svelte"; + +export { + Root, + // + Root as Label, +}; diff --git a/apps/zkemail/src/lib/components/ui/label/label.svelte b/apps/zkemail/src/lib/components/ui/label/label.svelte new file mode 100644 index 0000000..4e60802 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/label/label.svelte @@ -0,0 +1,21 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/sheet/index.ts b/apps/zkemail/src/lib/components/ui/sheet/index.ts new file mode 100644 index 0000000..bc15f3b --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/sheet/index.ts @@ -0,0 +1,106 @@ +import { Dialog as SheetPrimitive } from "bits-ui"; +import { type VariantProps, tv } from "tailwind-variants"; + +import Portal from "./sheet-portal.svelte"; +import Overlay from "./sheet-overlay.svelte"; +import Content from "./sheet-content.svelte"; +import Header from "./sheet-header.svelte"; +import Footer from "./sheet-footer.svelte"; +import Title from "./sheet-title.svelte"; +import Description from "./sheet-description.svelte"; + +const Root = SheetPrimitive.Root; +const Close = SheetPrimitive.Close; +const Trigger = SheetPrimitive.Trigger; + +export { + Root, + Close, + Trigger, + Portal, + Overlay, + Content, + Header, + Footer, + Title, + Description, + // + Root as Sheet, + Close as SheetClose, + Trigger as SheetTrigger, + Portal as SheetPortal, + Overlay as SheetOverlay, + Content as SheetContent, + Header as SheetHeader, + Footer as SheetFooter, + Title as SheetTitle, + Description as SheetDescription, +}; + +export const sheetVariants = tv({ + base: "bg-background fixed z-50 gap-4 p-6 shadow-lg", + variants: { + side: { + top: "inset-x-0 top-0 border-b", + bottom: "inset-x-0 bottom-0 border-t", + left: "inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", + right: "inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", + }, + }, + defaultVariants: { + side: "right", + }, +}); + +export const sheetTransitions = { + top: { + in: { + y: "-100%", + duration: 500, + opacity: 1, + }, + out: { + y: "-100%", + duration: 300, + opacity: 1, + }, + }, + bottom: { + in: { + y: "100%", + duration: 500, + opacity: 1, + }, + out: { + y: "100%", + duration: 300, + opacity: 1, + }, + }, + left: { + in: { + x: "-100%", + duration: 500, + opacity: 1, + }, + out: { + x: "-100%", + duration: 300, + opacity: 1, + }, + }, + right: { + in: { + x: "100%", + duration: 500, + opacity: 1, + }, + out: { + x: "100%", + duration: 300, + opacity: 1, + }, + }, +}; + +export type Side = VariantProps["side"]; diff --git a/apps/zkemail/src/lib/components/ui/sheet/sheet-content.svelte b/apps/zkemail/src/lib/components/ui/sheet/sheet-content.svelte new file mode 100644 index 0000000..f7f90ee --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/sheet/sheet-content.svelte @@ -0,0 +1,47 @@ + + + + + + + + + Close + + + diff --git a/apps/zkemail/src/lib/components/ui/sheet/sheet-description.svelte b/apps/zkemail/src/lib/components/ui/sheet/sheet-description.svelte new file mode 100644 index 0000000..f281d8f --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/sheet/sheet-description.svelte @@ -0,0 +1,16 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/sheet/sheet-footer.svelte b/apps/zkemail/src/lib/components/ui/sheet/sheet-footer.svelte new file mode 100644 index 0000000..0302d0c --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/sheet/sheet-footer.svelte @@ -0,0 +1,19 @@ + + +
+ +
diff --git a/apps/zkemail/src/lib/components/ui/sheet/sheet-header.svelte b/apps/zkemail/src/lib/components/ui/sheet/sheet-header.svelte new file mode 100644 index 0000000..b6829f0 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/sheet/sheet-header.svelte @@ -0,0 +1,16 @@ + + +
+ +
diff --git a/apps/zkemail/src/lib/components/ui/sheet/sheet-overlay.svelte b/apps/zkemail/src/lib/components/ui/sheet/sheet-overlay.svelte new file mode 100644 index 0000000..6dd4a6d --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/sheet/sheet-overlay.svelte @@ -0,0 +1,21 @@ + + + diff --git a/apps/zkemail/src/lib/components/ui/sheet/sheet-portal.svelte b/apps/zkemail/src/lib/components/ui/sheet/sheet-portal.svelte new file mode 100644 index 0000000..34cc69c --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/sheet/sheet-portal.svelte @@ -0,0 +1,13 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/sheet/sheet-title.svelte b/apps/zkemail/src/lib/components/ui/sheet/sheet-title.svelte new file mode 100644 index 0000000..97eec5d --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/sheet/sheet-title.svelte @@ -0,0 +1,16 @@ + + + + + diff --git a/apps/zkemail/src/lib/components/ui/textarea/index.ts b/apps/zkemail/src/lib/components/ui/textarea/index.ts new file mode 100644 index 0000000..821ef31 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/textarea/index.ts @@ -0,0 +1,28 @@ +import Root from "./textarea.svelte"; + +type FormTextareaEvent = T & { + currentTarget: EventTarget & HTMLTextAreaElement; +}; + +type TextareaEvents = { + blur: FormTextareaEvent; + change: FormTextareaEvent; + click: FormTextareaEvent; + focus: FormTextareaEvent; + keydown: FormTextareaEvent; + keypress: FormTextareaEvent; + keyup: FormTextareaEvent; + mouseover: FormTextareaEvent; + mouseenter: FormTextareaEvent; + mouseleave: FormTextareaEvent; + paste: FormTextareaEvent; + input: FormTextareaEvent; +}; + +export { + Root, + // + Root as Textarea, + type TextareaEvents, + type FormTextareaEvent, +}; diff --git a/apps/zkemail/src/lib/components/ui/textarea/textarea.svelte b/apps/zkemail/src/lib/components/ui/textarea/textarea.svelte new file mode 100644 index 0000000..3782ed9 --- /dev/null +++ b/apps/zkemail/src/lib/components/ui/textarea/textarea.svelte @@ -0,0 +1,38 @@ + + + diff --git a/apps/zkemail/src/lib/demoEmail.ts b/apps/zkemail/src/lib/demoEmail.ts new file mode 100644 index 0000000..21d5055 --- /dev/null +++ b/apps/zkemail/src/lib/demoEmail.ts @@ -0,0 +1,22 @@ +export const demoEmail = String.raw` +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=icloud.com; s=1a1hai; t=1693038337; bh=7xQMDuoVVU4m0W0WRVSrVXMeGSIASsnucK9dJsrc+vU=; h=from:Content-Type:Mime-Version:Subject:Message-Id:Date:to; b=EhLyVPpKD7d2/+h1nrnu+iEEBDfh6UWiAf9Y5UK+aPNLt3fAyEKw6Ic46v32NOcZD + M/zhXWucN0FXNiS0pz/QVIEy8Bcdy7eBZA0QA1fp8x5x5SugDELSRobQNbkOjBg7Mx + VXy7h4pKZMm/hKyhvMZXK4AX9fSoXZt4VGlAFymFNavfdAeKgg/SHXLds4lOPJV1wR + 2E21g853iz5m/INq3uK6SQKzTnz/wDkdyiq90gC0tHQe8HpDRhPIqgL5KSEpuvUYmJ + wjEOwwHqP6L3JfEeROOt6wyuB1ah7wgRvoABOJ81+qLYRn3bxF+y1BC+PwFd5yFWH5 + Ry43lwp1/3+sA== +From: runnier.leagues.0j@icloud.com +To: zkewtest@gmail.com +Subject: Hello +Content-Type: text/plain; charset=us-ascii +Content-Transfer-Encoding: 7bit +Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.500.231\)) +Message-Id: <8F819D32-B6AC-489D-977F-438BBC4CAB27@me.com> +Date: Sat, 26 Aug 2023 12:25:22 +0400 + +Hello, + +How are you? +` + .trimStart() + .replace(/\n/g, "\r\n"); diff --git a/apps/zkemail/src/lib/email-utils.ts b/apps/zkemail/src/lib/email-utils.ts new file mode 100644 index 0000000..9cd65c6 --- /dev/null +++ b/apps/zkemail/src/lib/email-utils.ts @@ -0,0 +1,87 @@ +import { utils } from "@repo/utils"; +import { get_limbs } from "@shieldswap/email_account_utils_rs"; +import { assert } from "ts-essentials"; +import { toBytes } from "viem"; +import { + DoH, + DoHServer, + verifyDKIMSignature, +} from "./patched-zk-email-helpers.js"; + +const SUPPORTED_DKIM_ALGORITHM = "RSA-SHA256"; + +export async function extractSignInfoFromEmail(parsedEmail: ParsedEmail) { + const publicKeyBase64 = await resolveDkimPublicKey(parsedEmail.dkimSignature); + + // { + // // TODO + // const verified = verifySignature( + // publicKeyBase64, + // canonicalHeaders, + // signatureBase64, + // ); + // assert(verified, "DKIM signature verification failed"); + // } + + const bigNumLimbs = await getLimbs( + publicKeyBase64, + parsedEmail.dkimSignature.signatureBase64, + ); + const result = { + ...parsedEmail, + ...bigNumLimbs, + }; + return result; +} + +export type ParsedEmail = Awaited>; +export async function splitEmail(emailStr: string) { + const res = await verifyDKIMSignature(emailStr); + assert( + res.algo.toLowerCase() === SUPPORTED_DKIM_ALGORITHM.toLowerCase(), + `Unsupported DKIM algorithm: "${res.algo}"`, + ); + console.log("headers", res.headers.toString("utf-8")); + return { + headers: res.headers.toString("utf-8"), + body: res.body.toString("utf-8"), + dkimSignature: { + domain: res.signingDomain, + selector: res.selector, + algorithm: res.algo, + signatureBase64: Buffer.from( + toBytes(res.signature, { size: 256 }), + ).toString("base64"), + }, + }; +} + +export async function getLimbs( + publicKeyBase64: string, + signatureBase64: string, +) { + return get_limbs(publicKeyBase64, signatureBase64); +} + +export async function resolveDkimPublicKey(params: { + domain: string; + selector: string; +}) { + const result = await DoH.resolveDKIMPublicKey( + `${params.selector}._domainkey.${params.domain}`, + DoHServer.Google, + ); + assert( + result, + `DKIM public key not found for {domain: ${params.domain}, selector: ${params.selector}}`, + ); + const publicKeyBase64 = utils.removePrefixOrThrow( + result, + "v=DKIM1; k=rsa; p=", + ); + assert( + publicKeyBase64, + `DKIM public key not found for {domain: ${params.domain}, selector: ${params.selector}}`, + ); + return publicKeyBase64; +} diff --git a/apps/zkemail/src/lib/index.ts b/apps/zkemail/src/lib/index.ts new file mode 100644 index 0000000..eff3ef6 --- /dev/null +++ b/apps/zkemail/src/lib/index.ts @@ -0,0 +1,21 @@ +import { browser } from "$app/environment"; +import { QueryClient } from "@tanstack/svelte-query"; +import { NoirCompilerService, ZkEmailCircuitService } from "./noir.js"; +import { QueriesService } from "./services/QueriesService.svelte.js"; + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + enabled: browser, + }, + }, +}); + +const queries = new QueriesService(queryClient); +const compiler = new NoirCompilerService(); +const zkemail = new ZkEmailCircuitService(compiler); + +export const lib = { + queries, + zkemail, +}; diff --git a/apps/zkemail/src/lib/noir.ts b/apps/zkemail/src/lib/noir.ts new file mode 100644 index 0000000..3bae37d --- /dev/null +++ b/apps/zkemail/src/lib/noir.ts @@ -0,0 +1,372 @@ +import { dev } from "$app/environment"; +import { + UltraHonkBackend, + type CompiledCircuit, +} from "@noir-lang/backend_barretenberg"; +import { Noir } from "@noir-lang/noir_js"; +import { compile, createFileManager } from "@noir-lang/noir_wasm"; +import { keyBy, mapValues, times, uniqBy } from "lodash-es"; +import { assert } from "ts-essentials"; +import { stringToBytes } from "viem"; +import { + extractSignInfoFromEmail, + getLimbs, + resolveDkimPublicKey, + type ParsedEmail, +} from "./email-utils"; + +export class ZkEmailCircuitService { + constructor(private compiler: NoirCompilerService) {} + + async getZkemailCircuit( + headersLen: number, + bodyLen: number, + headersReveals: RevealStringPart[], + bodyReveals: RevealStringPart[], + ) { + const src = ` + fn main( + headers: [u8; ${headersLen}], + body: [u8; ${bodyLen}], + ${joinTrailing( + [...headersReveals, ...bodyReveals].map((r) => + r.toNoirArgumentDef(), + ), + ",\n", + )} + pubkey_limbs: pub [Field; zkemail::PUBKEY_LIMBS_LEN], + pubkey_redc_limbs: pub [Field; zkemail::PUBKEY_LIMBS_LEN], + signature_limbs: pub [Field; zkemail::SIGNATURE_LIMBS_LEN] + ) { + zkemail::assert_verify_email_signature(headers, body, pubkey_limbs, pubkey_redc_limbs, signature_limbs); + ${joinTrailing( + headersReveals.map((r) => r.toNoirAssertionStatement("headers")), + ";\n", + )} + ${joinTrailing( + bodyReveals.map((r) => r.toNoirAssertionStatement("body")), + ";\n", + )} + } + `; + + if (dev) { + console.log("compiling", src); + } + + const circuit = await this.compiler.compile(src); + const noir = new Noir(circuit); + const backend = new UltraHonkBackend(circuit); + return { backend, noir }; + } + + async prove( + email: ParsedEmail, + params: { + headersReveals: RevealStringPartRequest[]; + bodyReveals: RevealStringPartRequest[]; + }, + ) { + const { headersReveals, bodyReveals } = + this.toHeadersAndBodyReveals(params); + const reveals = [...headersReveals, ...bodyReveals]; + assert( + uniqBy(reveals, (r) => r.noirVariableName).length === reveals.length, + "duplicate reveals noir variable names", + ); + + const info = await extractSignInfoFromEmail(email); + const input = await getInput(info, reveals); + + console.time("compile circuit"); + const { backend, noir } = await this.getZkemailCircuit( + input.headers.length, + input.body.length, + headersReveals, + bodyReveals, + ); + console.timeEnd("compile circuit"); + + console.time("get witness"); + const { witness } = await noir.execute(input); + console.timeEnd("get witness"); + + console.time("generate proof"); + const proof = await backend.generateProof(witness); + console.timeEnd("generate proof"); + + console.log("proof", proof.proof); + + const result: EmailProof = { + proof: { + publicInputs: proof.publicInputs, + proof: Array.from(proof.proof), + }, + dkimSignature: info.dkimSignature, + headersLen: input.headers.length, + bodyLen: input.body.length, + headersReveals: params.headersReveals, + bodyReveals: params.bodyReveals, + }; + return result; + } + + async verify(proof: EmailProof) { + // TODO(security): get headersReveals and bodyReveals from proof + await this.#assertRevealsAgainstPublicInputs(proof); + + const { headersReveals, bodyReveals } = this.toHeadersAndBodyReveals({ + headersReveals: proof.headersReveals, + bodyReveals: proof.bodyReveals, + }); + const { backend } = await this.getZkemailCircuit( + proof.headersLen, + proof.bodyLen, + headersReveals, + bodyReveals, + ); + const verified = await backend.verifyProof({ + publicInputs: proof.proof.publicInputs, + proof: Uint8Array.from(proof.proof.proof), + }); + assert(verified === true, "proof is not valid"); + return { + dkimSignature: proof.dkimSignature, + reconstructed: this.reconstructFromParts({ + headersLen: proof.headersLen, + bodyLen: proof.bodyLen, + headersReveals, + bodyReveals, + }), + }; + } + + toHeadersAndBodyReveals(params: { + headersReveals: RevealStringPartRequest[]; + bodyReveals: RevealStringPartRequest[]; + }) { + const headersReveals = params.headersReveals.map( + (r, i) => new RevealStringPart(r.fromIndex, r.part, `reveal_headers${i}`), + ); + const bodyReveals = params.bodyReveals.map( + (r, i) => new RevealStringPart(r.fromIndex, r.part, `reveal_body${i}`), + ); + return { headersReveals, bodyReveals }; + } + + /** + * Should be used as a preview for a prover. Verifier must verify the proof before reconstruction + */ + reconstructFromParts(params: { + headersLen: number; + bodyLen: number; + headersReveals: RevealStringPart[]; + bodyReveals: RevealStringPart[]; + }) { + return { + headers: this.#reconstructFromPartsSingle( + params.headersLen, + params.headersReveals, + ), + body: this.#reconstructFromPartsSingle( + params.bodyLen, + params.bodyReveals, + ), + }; + } + + #reconstructFromPartsSingle(len: number, parts: RevealStringPart[]) { + const result: (string | undefined)[] = times(len, () => undefined); + for (const part of parts) { + for (const [i, char] of part.part.split("").entries()) { + const curr = result[part.fromIndex + i]; + assert( + curr == null || curr === char, + `char mismatch at index "${part.fromIndex + i}": "${curr}" !== "${char}"`, + ); + result[part.fromIndex + i] = char; + } + } + return result; + } + + async #assertRevealsAgainstPublicInputs(proof: EmailProof) { + const pi = proof.proof.publicInputs; + let i = 0; + for (const request of proof.headersReveals) { + assert( + BigInt(pi[i++]!) === BigInt(request.fromIndex), + "pi: header reveals from_index mismatch", + ); + for (const char of request.part) { + assert( + BigInt(pi[i++]!) === BigInt(char.charCodeAt(0)), + "pi: header reveals part mismatch", + ); + } + } + for (const request of proof.bodyReveals) { + assert( + BigInt(pi[i++]!) === BigInt(request.fromIndex), + "pi: body reveals from_index mismatch", + ); + for (const char of request.part) { + assert( + BigInt(pi[i++]!) === BigInt(char.charCodeAt(0)), + "pi: body reveals part mismatch", + ); + } + } + + const publicKey = await resolveDkimPublicKey(proof.dkimSignature); + const a = await getLimbs(publicKey, proof.dkimSignature.signatureBase64); + for (const limb of a.public_key_limbs) { + assert( + BigInt(pi[i++]!) === BigInt(limb), + "pi: public_key_limbs mismatch", + ); + } + for (const limb of a.public_key_redc_limbs) { + assert( + BigInt(pi[i++]!) === BigInt(limb), + "pi: public_key_redc_limbs mismatch", + ); + } + for (const limb of a.signature_limbs) { + assert(BigInt(pi[i++]!) === BigInt(limb), "pi: signature_limbs mismatch"); + } + assert(i === pi.length, "proof has more public inputs than expected"); + } +} + +export interface EmailProof { + proof: { + publicInputs: string[]; + /** Uint8Array */ + proof: number[]; + }; + headersLen: number; + bodyLen: number; + dkimSignature: { + domain: string; + selector: string; + // TODO: signature is not needed really. It's here because `get_limbs` cannot except only public key + signatureBase64: string; + }; + // TODO(security): define headersReveal and bodyReveas from proof.publicInputs + headersReveals: RevealStringPartRequest[]; + bodyReveals: RevealStringPartRequest[]; +} + +export interface RevealStringPartRequest { + fromIndex: number; + part: string; +} +/** + * Note: keep in sync with Noir + */ +export class RevealStringPart { + // noir struct fields + readonly fromIndex: number; + readonly part: string; + + // extra fields + readonly noirVariableName: string; + constructor(fromIndex: number, part: string, noirVarName: string) { + this.fromIndex = fromIndex; + this.noirVariableName = noirVarName; + this.part = part; + } + + toNoirArgumentDef() { + return `${this.noirVariableName}: pub zkemail::RevealStringPart<${this.part.length}>`; + } + + toNoirAssertionStatement(matchOn: "headers" | "body") { + return `${this.noirVariableName}.assert_matches(${matchOn})`; + } + + toNoirInput() { + return { + from_index: this.fromIndex, + part: asBytes(this.part), + }; + } +} + +async function getInput( + info: Awaited>, + reveals: RevealStringPart[], +) { + const revealsMap = mapValues( + keyBy(reveals, (r) => r.noirVariableName), + (r) => r.toNoirInput(), + ); + return { + headers: asBytes(info.headers), + body: asBytes(info.body), + ...revealsMap, + pubkey_limbs: info.public_key_limbs, + pubkey_redc_limbs: info.public_key_redc_limbs, + signature_limbs: info.signature_limbs, + }; +} + +function asBytes(s: string) { + return Array.from(stringToBytes(s)); +} + +function joinTrailing(array: unknown[], separator: string) { + const joined = array.join(separator); + if (array.length > 0) { + return joined + separator; + } + return joined; +} + +export class NoirCompilerService { + private cache = new Map(); + + async compile(src: string) { + const cached = this.cache.get(src); + if (cached) { + return cached; + } + const res = await this.#compileInternal(src); + this.cache.set(src, res); + return res; + } + + async #compileInternal(src: string) { + const fm = createFileManager("/"); + await fm.writeFile("./src/main.nr", stringToReadableStream(src)); + const nargoSrc = ` + [package] + name = "zkemail_circuit" + type = "bin" + + [dependencies] + zkemail = { git = "https://github.com/olehmisar/zkemail/", tag = "v0.33.0" } + `; + await fm.writeFile("./Nargo.toml", stringToReadableStream(nargoSrc)); + + const result = await compile(fm); + if (!("program" in result)) { + throw new Error("Compilation failed"); + } + const res = result.program as CompiledCircuit; + return res; + } +} + +function stringToReadableStream(str: string) { + const encoder = new TextEncoder(); + const uint8Array = encoder.encode(str); + + return new ReadableStream({ + start(controller) { + controller.enqueue(uint8Array); + controller.close(); + }, + }); +} diff --git a/apps/zkemail/src/lib/patched-zk-email-helpers.ts b/apps/zkemail/src/lib/patched-zk-email-helpers.ts new file mode 100644 index 0000000..53b8a94 --- /dev/null +++ b/apps/zkemail/src/lib/patched-zk-email-helpers.ts @@ -0,0 +1,232 @@ +import sanitizers from "@zk-email/helpers/dist/dkim/sanitizers"; +import { DkimVerifier } from "@zk-email/helpers/dist/lib/mailauth/dkim-verifier"; +import { writeToStream } from "@zk-email/helpers/dist/lib/mailauth/tools"; +import forgePkg from "node-forge"; +const { pki } = forgePkg; + +// modified https://github.com/zkemail/zk-email-verify/blob/d718290d661e0ec9519a67a1dfa6bf764a9cf322/packages/helpers/package.json + +export interface DKIMVerificationResult { + publicKey: bigint; + signature: bigint; + headers: Buffer; + body: Buffer; + bodyHash: string; + signingDomain: string; + selector: string; + algo: string; + format: string; + modulusLength: number; + appliedSanitization?: string; +} + +/** + * + * @param email Entire email data as a string or buffer + * @param domain Domain to verify DKIM signature for. If not provided, the domain is extracted from the `From` header + * @param enableSanitization If true, email will be applied with various sanitization to try and pass DKIM verification + * @returns + */ +export async function verifyDKIMSignature( + email: Buffer | string, + domain: string = "", + enableSanitization: boolean = true, +): Promise { + const emailStr = email.toString(); + + let dkimResult = await tryVerifyDKIM(email, domain); + + // If DKIM verification fails, try again after sanitizing email + let appliedSanitization; + if (dkimResult.status.comment === "bad signature" && enableSanitization) { + const results = await Promise.all( + sanitizers.map((sanitize) => + tryVerifyDKIM(sanitize(emailStr), domain).then((result) => ({ + result, + sanitizer: sanitize.name, + })), + ), + ); + + const passed = results.find((r) => r.result.status.result === "pass"); + + if (passed) { + console.log( + `DKIM: Verification passed after applying sanitization "${passed.sanitizer}"`, + ); + dkimResult = passed.result; + appliedSanitization = passed.sanitizer; + } + } + + const { + status: { result, comment }, + signingDomain, + publicKey, + signature, + status, + body, + bodyHash, + } = dkimResult; + + if (result !== "pass") { + throw new Error( + `DKIM signature verification failed for domain ${signingDomain}. Reason: ${comment}`, + ); + } + + const pubKeyData = pki.publicKeyFromPem(publicKey.toString()); + + return { + signature: BigInt(`0x${Buffer.from(signature, "base64").toString("hex")}`), + headers: status.signedHeaders, + body, + bodyHash, + signingDomain: dkimResult.signingDomain, + publicKey: BigInt(pubKeyData.n.toString()), + selector: dkimResult.selector, + algo: dkimResult.algo, + format: dkimResult.format, + modulusLength: dkimResult.modulusLength, + appliedSanitization, + }; +} + +async function tryVerifyDKIM(email: Buffer | string, domain: string = "") { + const dkimVerifier = new DkimVerifier({}); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + await writeToStream(dkimVerifier, email as any); + + let domainToVerifyDKIM = domain; + if (!domainToVerifyDKIM) { + if (dkimVerifier.headerFrom.length > 1) { + throw new Error( + "Multiple From header in email and domain for verification not specified", + ); + } + + domainToVerifyDKIM = dkimVerifier.headerFrom[0]!.split("@")[1]!; + } + + const dkimResult = dkimVerifier.results.find((d) => + domainToVerifyDKIM.endsWith(d.signingDomain), + ); + + if (!dkimResult) { + throw new Error( + `DKIM signature not found for domain ${domainToVerifyDKIM}`, + ); + } + + dkimResult.headers = dkimVerifier.headers; + + return dkimResult; +} + +/** + * DNS over HTTPS (DoH) resolver + * + * @export + * @class DoH + */ +export class DoH { + // DNS response codes + static DoHStatusNoError = 0; + + // DNS RR types + static DoHTypeTXT = 16; + + /** + * Resolve DKIM public key from DNS + * + * @static + * @param {string} name DKIM record name (e.g. 20230601._domainkey.gmail.com) + * @param {string} dnsServerURL DNS over HTTPS API URL + * @return {*} {(Promise)} DKIM public key or null if not found + * @memberof DoH + */ + public static async resolveDKIMPublicKey( + name: string, + dnsServerURL: string, + ): Promise { + let cleanURL = dnsServerURL; + if (!cleanURL.startsWith("https://")) { + cleanURL = `https://${cleanURL}`; + } + if (cleanURL.endsWith("/")) { + cleanURL = cleanURL.slice(0, -1); + } + + const queryUrl = new URL(cleanURL); + queryUrl.searchParams.set("name", name); + queryUrl.searchParams.set("type", DoH.DoHTypeTXT.toString()); + + const resp = await fetch(queryUrl, { + headers: { + accept: "application/dns-json", + }, + }); + + if (resp.status === 200) { + const out = await resp.json(); + if ( + typeof out === "object" && + out !== null && + "Status" in out && + "Answer" in out + ) { + const result = out as DoHResponse; + if ( + result.Status === DoH.DoHStatusNoError && + result.Answer.length > 0 + ) { + for (const ans of result.Answer) { + if (ans.type === DoH.DoHTypeTXT) { + let DKIMRecord = ans.data; + /* + Remove all double quotes + Some DNS providers wrap TXT records in double quotes, + and others like Cloudflare may include them. According to + TXT (potentially multi-line) and DKIM (Base64 data) standards, + we can directly remove all double quotes from the DKIM public key. + */ + DKIMRecord = DKIMRecord.replace(/"/g, ""); + return DKIMRecord; + } + } + } + } + } + return null; + } +} + +// DoH servers list +export enum DoHServer { + // Google Public DNS + Google = "https://dns.google/resolve", + // Cloudflare DNS + Cloudflare = "https://cloudflare-dns.com/dns-query", +} + +interface DoHResponse { + Status: number; // NOERROR - Standard DNS response code (32 bit integer). + TC: boolean; // Whether the response is truncated + AD: boolean; // Whether all response data was validated with DNSSEC + CD: boolean; // Whether the client asked to disable DNSSEC + Question: Question[]; + Answer: Answer[]; + Comment: string; +} + +interface Question { + name: string; // FQDN with trailing dot + type: number; // A - Standard DNS RR type. 5:CNAME, 16:TXT +} + +interface Answer { + name: string; // Always matches name in the Question section + type: number; // A - Standard DNS RR type. 5:CNAME, 16:TXT + TTL: number; // Record's time-to-live in seconds + data: string; // Record data +} diff --git a/apps/zkemail/src/lib/services/QueriesService.svelte.ts b/apps/zkemail/src/lib/services/QueriesService.svelte.ts new file mode 100644 index 0000000..d28a11c --- /dev/null +++ b/apps/zkemail/src/lib/services/QueriesService.svelte.ts @@ -0,0 +1,14 @@ +import type { QueryClient } from "@tanstack/svelte-query"; + +export class QueriesService { + constructor( + /** + * # For use only in provider + */ + readonly queryClient: QueryClient, + ) {} + + async invalidateAll() { + await this.queryClient.invalidateQueries(); + } +} diff --git a/apps/zkemail/src/lib/ui.ts b/apps/zkemail/src/lib/ui.ts new file mode 100644 index 0000000..2728237 --- /dev/null +++ b/apps/zkemail/src/lib/ui.ts @@ -0,0 +1,2 @@ +// TODO: remove when UI is moved to it's own package +export * as Ui from "./components/ui.js"; diff --git a/apps/zkemail/src/lib/utils.svelte.ts b/apps/zkemail/src/lib/utils.svelte.ts new file mode 100644 index 0000000..30a7235 --- /dev/null +++ b/apps/zkemail/src/lib/utils.svelte.ts @@ -0,0 +1,18 @@ +import { get, type Writable } from "svelte/store"; + +export function toRuneObject(store: Writable): T { + let value = $state(get(store)); + store.subscribe((s) => { + value = s; + }); + return new Proxy(value, { + get(target, prop) { + return Reflect.get(target, prop); + }, + set(target, prop, value) { + Reflect.set(target, prop, value); + store.set(target); + return true; + }, + }); +} diff --git a/apps/zkemail/src/lib/utils.ts b/apps/zkemail/src/lib/utils.ts new file mode 100644 index 0000000..77dfc84 --- /dev/null +++ b/apps/zkemail/src/lib/utils.ts @@ -0,0 +1,64 @@ +import { type ClassValue, clsx } from "clsx"; +import { cubicOut } from "svelte/easing"; +import type { TransitionConfig } from "svelte/transition"; +import { twMerge } from "tailwind-merge"; + +export * from "./utils.svelte.js"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} + +type FlyAndScaleParams = { + y?: number; + x?: number; + start?: number; + duration?: number; +}; + +export const flyAndScale = ( + node: Element, + params: FlyAndScaleParams = { y: -8, x: 0, start: 0.95, duration: 150 }, +): TransitionConfig => { + const style = getComputedStyle(node); + const transform = style.transform === "none" ? "" : style.transform; + + const scaleConversion = ( + valueA: number, + scaleA: [number, number], + scaleB: [number, number], + ) => { + const [minA, maxA] = scaleA; + const [minB, maxB] = scaleB; + + const percentage = (valueA - minA) / (maxA - minA); + const valueB = percentage * (maxB - minB) + minB; + + return valueB; + }; + + const styleToString = ( + style: Record, + ): string => { + return Object.keys(style).reduce((str, key) => { + if (style[key] === undefined) return str; + return str + `${key}:${style[key]};`; + }, ""); + }; + + return { + duration: params.duration ?? 200, + delay: 0, + css: (t) => { + const y = scaleConversion(t, [0, 1], [params.y ?? 5, 0]); + const x = scaleConversion(t, [0, 1], [params.x ?? 0, 0]); + const scale = scaleConversion(t, [0, 1], [params.start ?? 0.95, 1]); + + return styleToString({ + transform: `${transform} translate3d(${x}px, ${y}px, 0) scale(${scale})`, + opacity: t, + }); + }, + easing: cubicOut, + }; +}; diff --git a/apps/zkemail/src/routes/+layout.svelte b/apps/zkemail/src/routes/+layout.svelte new file mode 100644 index 0000000..8d32c08 --- /dev/null +++ b/apps/zkemail/src/routes/+layout.svelte @@ -0,0 +1,30 @@ + + + +
+
+
+ + {@render children()} +
+
+
+
+
+ + +
diff --git a/apps/zkemail/src/routes/+layout.ts b/apps/zkemail/src/routes/+layout.ts new file mode 100644 index 0000000..189f71e --- /dev/null +++ b/apps/zkemail/src/routes/+layout.ts @@ -0,0 +1 @@ +export const prerender = true; diff --git a/apps/zkemail/src/routes/+page.svelte b/apps/zkemail/src/routes/+page.svelte new file mode 100644 index 0000000..03e120f --- /dev/null +++ b/apps/zkemail/src/routes/+page.svelte @@ -0,0 +1,135 @@ + + + +
+

Prove email

+

+ using + Noir +

+
+ + {#if !$emailQuery.data} + + +
+ +
+ +
OR
+ +
+ { + rawEmail = { showDemo: true }; + }} + > + Try demo email + +
+
+
+ {/if} + + + {#snippet success(texts)} + {#if texts} +
+ { + rawEmail = { showDemo: false }; + }} + > + Change email + +
+ + {/if} + {/snippet} +
+ +
+

How it works

+ +
    +
  1. Download .eml file from your email client and upload it here
  2. +
  3. All text in the email is hidden by default
  4. +
  5. Select text in the email you want to reveal
  6. +
  7. You can select multiple parts of the email
  8. +
  9. Click on the selection to cancel it
  10. +
  11. Once you selected all parts that you want to prove, click "Prove"
  12. +
  13. + Wait 1-2 minutes for the proof and send it to a verifier. Verifier will + be able to check your proof and see only the parts of the email you + revealed. +
  14. +
+
+
+ + diff --git a/apps/zkemail/src/routes/Footer.svelte b/apps/zkemail/src/routes/Footer.svelte new file mode 100644 index 0000000..2519070 --- /dev/null +++ b/apps/zkemail/src/routes/Footer.svelte @@ -0,0 +1,17 @@ + + + + © {new Date().getFullYear()} + ShieldSwap Labs LLC · + ShieldSwap + diff --git a/apps/zkemail/src/routes/Header.svelte b/apps/zkemail/src/routes/Header.svelte new file mode 100644 index 0000000..91b2d07 --- /dev/null +++ b/apps/zkemail/src/routes/Header.svelte @@ -0,0 +1,71 @@ + + +
+ + + + + + + + + +
+
+
+
+ +{#snippet navbar()} + + zkEmail Noir + + {@render link({ text: "Prove", href: route("/") })} + {@render link({ text: "Verify", href: route("/verify") })} +{/snippet} + +{#snippet link({ text, href }: { text: string; href: string })} + + {text} + +{/snippet} diff --git a/apps/zkemail/src/routes/api/proxy/github/[...path]/+server.ts b/apps/zkemail/src/routes/api/proxy/github/[...path]/+server.ts new file mode 100644 index 0000000..3b478e2 --- /dev/null +++ b/apps/zkemail/src/routes/api/proxy/github/[...path]/+server.ts @@ -0,0 +1,3 @@ +export async function GET({ params }) { + return await fetch(`https://github.com/${params.path}`); +} diff --git a/apps/zkemail/src/routes/verify/+page.svelte b/apps/zkemail/src/routes/verify/+page.svelte new file mode 100644 index 0000000..a532ed4 --- /dev/null +++ b/apps/zkemail/src/routes/verify/+page.svelte @@ -0,0 +1,74 @@ + + + +
+

Verify email

+
+ + + {#snippet children(form, formData)} + + + Paste proof here + + + + + + + Verify + {/snippet} + + + {#if result} +

Verified email parts

+ + {/if} + +
+

How it works

+
    +
  1. Paste the proof in the input above and click "Verify".
  2. +
  3. The proof is verified in browser.
  4. +
  5. + Verified email domain and revealed email parts will be shown after + verification. +
  6. +
  7. If the proof is invalid, you will see an error message.
  8. +
+
+
diff --git a/apps/zkemail/static/favicon.svg b/apps/zkemail/static/favicon.svg new file mode 100644 index 0000000..ef0fa81 --- /dev/null +++ b/apps/zkemail/static/favicon.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/zkemail/static/manifest.json b/apps/zkemail/static/manifest.json new file mode 100644 index 0000000..75d24c9 --- /dev/null +++ b/apps/zkemail/static/manifest.json @@ -0,0 +1,10 @@ +{ + "manifest_version": 3, + "name": "zkEmail Noir", + "description": "Prove you received an email from a specific address with a specific content without revealing it.", + "version": "0.0.1", + "action": { + "default_title": "zkEmail Noir", + "default_popup": "index.html" + } +} diff --git a/apps/zkemail/svelte.config.js b/apps/zkemail/svelte.config.js new file mode 100644 index 0000000..72cbacf --- /dev/null +++ b/apps/zkemail/svelte.config.js @@ -0,0 +1,22 @@ +import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; +// import adapter from "sveltekit-adapter-chrome-extension"; // TODO: make it an extension some day +import adapter from "@sveltejs/adapter-vercel"; + +/** @type {import("@sveltejs/kit").Config} */ +const config = { + // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // for more information about preprocessors + preprocess: vitePreprocess(), + + kit: { + // See https://kit.svelte.dev/docs/adapters for more information about adapters. + adapter: adapter(), + appDir: "app", + }, + + vitePlugin: { + inspector: true, + }, +}; + +export default config; diff --git a/apps/zkemail/tailwind.config.ts b/apps/zkemail/tailwind.config.ts new file mode 100644 index 0000000..333fd78 --- /dev/null +++ b/apps/zkemail/tailwind.config.ts @@ -0,0 +1,66 @@ +import typography from "@tailwindcss/typography"; +import type { Config } from "tailwindcss"; +import { fontFamily } from "tailwindcss/defaultTheme"; + +const config: Config = { + darkMode: ["class"], + content: ["./src/**/*.{html,js,svelte,ts}"], + safelist: ["dark"], + plugins: [typography()], + theme: { + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px", + }, + }, + extend: { + colors: { + border: "hsl(var(--border) / )", + input: "hsl(var(--input) / )", + ring: "hsl(var(--ring) / )", + background: "hsl(var(--background) / )", + foreground: "hsl(var(--foreground) / )", + primary: { + DEFAULT: "hsl(var(--primary) / )", + foreground: "hsl(var(--primary-foreground) / )", + }, + secondary: { + DEFAULT: "hsl(var(--secondary) / )", + foreground: "hsl(var(--secondary-foreground) / )", + }, + destructive: { + DEFAULT: "hsl(var(--destructive) / )", + foreground: "hsl(var(--destructive-foreground) / )", + }, + muted: { + DEFAULT: "hsl(var(--muted) / )", + foreground: "hsl(var(--muted-foreground) / )", + }, + accent: { + DEFAULT: "hsl(var(--accent) / )", + foreground: "hsl(var(--accent-foreground) / )", + }, + popover: { + DEFAULT: "hsl(var(--popover) / )", + foreground: "hsl(var(--popover-foreground) / )", + }, + card: { + DEFAULT: "hsl(var(--card) / )", + foreground: "hsl(var(--card-foreground) / )", + }, + }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)", + }, + fontFamily: { + sans: [...fontFamily.sans], + }, + }, + }, +}; + +export default config; diff --git a/apps/zkemail/tsconfig.json b/apps/zkemail/tsconfig.json new file mode 100644 index 0000000..37f3661 --- /dev/null +++ b/apps/zkemail/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": ["../../tsconfig.json", "./.svelte-kit/tsconfig.json"], + "compilerOptions": {} + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/apps/zkemail/vite.config.ts b/apps/zkemail/vite.config.ts new file mode 100644 index 0000000..91b131d --- /dev/null +++ b/apps/zkemail/vite.config.ts @@ -0,0 +1,54 @@ +import { sveltekit } from "@sveltejs/kit/vite"; +import fs from "node:fs"; +import path from "node:path"; +import copy from "rollup-plugin-copy"; +import { defineConfig, type Plugin, type UserConfig } from "vite"; +import { kitRoutes } from "vite-plugin-kit-routes"; +import { nodePolyfills } from "vite-plugin-node-polyfills"; +import resolve from "vite-plugin-resolve"; + +const wasmContentTypePlugin: Plugin = { + name: "wasm-content-type-plugin", + configureServer(server) { + server.middlewares.use(async (req, res, next) => { + if (req.url!.endsWith(".wasm")) { + res.setHeader("Content-Type", "application/wasm"); + const newPath = req.url!.replace("deps", "dist"); + const targetPath = path.join(__dirname, newPath); + const wasmContent = fs.readFileSync(targetPath); + return res.end(wasmContent); + } + next(); + }); + }, +}; + +export default defineConfig({ + plugins: [ + kitRoutes(), + sveltekit(), + copy({ + targets: [ + { src: "node_modules/**/*.wasm", dest: "node_modules/.vite/dist" }, + ], + copySync: true, + hook: "buildStart", + }), + wasmContentTypePlugin, + process.env.NODE_ENV === "production" + ? resolve({ + // `unreachable` error in wasm is caused by incorrect version of bb.js. Consult pnpm-lock.yaml + "@aztec/bb.js": `export * from "https://unpkg.com/@aztec/bb.js@0.47.1/dest/browser/index.js"`, + }) + : undefined, + nodePolyfills(), + ], + build: { + target: "esnext", + }, + optimizeDeps: { + esbuildOptions: { + target: "esnext", + }, + }, +} satisfies UserConfig); diff --git a/assets/zkemail.jpg b/assets/zkemail.jpg new file mode 100644 index 0000000..e0adbc7 Binary files /dev/null and b/assets/zkemail.jpg differ diff --git a/package.json b/package.json new file mode 100644 index 0000000..33e3d60 --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "name": "@repo/monorepo", + "type": "module", + "private": true, + "scripts": { + "test:lint": "pnpm _chore && pnpm -r --parallel test:lint", + "_chore": "pnpm i" + }, + "devDependencies": { + "typescript": "^5.5.2" + }, + "pnpm": { + "patchedDependencies": { + "@noir-lang/noir_wasm@0.33.0": "patches/@noir-lang__noir_wasm.patch", + "sveltekit-superforms": "patches/sveltekit-superforms.patch" + } + } +} diff --git a/packages/utils/.gitignore b/packages/utils/.gitignore new file mode 100644 index 0000000..1521c8b --- /dev/null +++ b/packages/utils/.gitignore @@ -0,0 +1 @@ +dist diff --git a/packages/utils/package.json b/packages/utils/package.json new file mode 100644 index 0000000..2ffaae6 --- /dev/null +++ b/packages/utils/package.json @@ -0,0 +1,36 @@ +{ + "name": "@repo/utils", + "version": "0.0.1", + "type": "module", + "private": true, + "main": "src/index.ts", + "module": "src/index.ts", + "publishConfig": { + "types": "dist/index.d.ts", + "access": "public" + }, + "files": [ + "dist", + "src" + ], + "scripts": { + "dev": "pnpm _chore && tsc -w", + "build": "pnpm _chore && rm -rf dist && tsc", + "test": "pnpm test:lint && pnpm test:unit", + "test:unit": "pnpm _chore && vitest run", + "test:lint": "pnpm _chore && tsc --noEmit --emitDeclarationOnly false && prettier --check .", + "test:lint:fix": "pnpm _chore && prettier --write . && eslint . --fix", + "prepublishOnly": "pnpm test:lint && pnpm build", + "_chore": "pnpm i" + }, + "dependencies": { + "ms": "^2.1.3", + "ts-essentials": "^9.4.1", + "ufo": "^1.5.4" + }, + "devDependencies": { + "@types/ms": "^0.7.34", + "prettier": "^3.2.5", + "typescript": "^5.5.2" + } +} diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts new file mode 100644 index 0000000..9441e97 --- /dev/null +++ b/packages/utils/src/index.ts @@ -0,0 +1 @@ +export * as utils from "./utils.js"; diff --git a/packages/utils/src/utils.ts b/packages/utils/src/utils.ts new file mode 100644 index 0000000..04b3cd9 --- /dev/null +++ b/packages/utils/src/utils.ts @@ -0,0 +1,32 @@ +import ms from "ms"; + +export { joinURL as joinUrl } from "ufo"; + +export function sleep(duration: number | string) { + const durationMs = typeof duration === "number" ? duration : ms(duration); + return new Promise((resolve) => setTimeout(resolve, durationMs)); +} + +export function lazyValue(value: () => T): () => T { + let initialized = false; + let result: T; + return () => { + if (!initialized) { + initialized = true; + result = value(); + } + return result; + }; +} + +export function errorToString(error: any) { + return String(error?.message || error); +} + +export function removePrefixOrThrow(str: string, prefix: string) { + if (!str.startsWith(prefix)) { + throw new Error(`string does not start with "${prefix}"`); + } + + return str.slice(prefix.length); +} diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json new file mode 100644 index 0000000..9f27594 --- /dev/null +++ b/packages/utils/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist" + } +} diff --git a/patches/@noir-lang__noir_wasm.patch b/patches/@noir-lang__noir_wasm.patch new file mode 100644 index 0000000..f852a25 --- /dev/null +++ b/patches/@noir-lang__noir_wasm.patch @@ -0,0 +1,1145 @@ +diff --git a/CHANGELOG.md b/CHANGELOG.md +deleted file mode 100644 +index b36f6ed29020e44144e4aacddd3e0e2327a16bb1..0000000000000000000000000000000000000000 +diff --git a/build/cjs/package.json b/build/cjs/package.json +deleted file mode 100644 +index caf9c5d61a8d1662de8e90eccdbb2a774a4166cf..0000000000000000000000000000000000000000 +diff --git a/build/esm/package.json b/build/esm/package.json +deleted file mode 100644 +index 63ce43c7e0c1d1afd230e1bda535953cdc682727..0000000000000000000000000000000000000000 +diff --git a/dist/web/main.mjs b/dist/web/main.mjs +index 8dcefe1f0f330cb1941292351bd1d00b875fdeb3..db6fb7efd45cfcb4f96ef9082a03674cb6a37258 100644 +--- a/dist/web/main.mjs ++++ b/dist/web/main.mjs +@@ -8753,7 +8753,7 @@ class Volume { + const steps = pathToSteps(id as PathLike); + let link = this.getLink(steps); + if (link) return link.getNode(); +- ++ + // Try creating a node if not found. + if (flags & O_CREAT) { + const dirLink = this.getLinkParent(steps); +@@ -8763,7 +8763,7 @@ class Volume { + return link.getNode(); + } + } +- ++ + throw createError(ENOENT, 'getNodeByIdOrCreate', pathToFilename(id)); + } + } +@@ -22686,7 +22686,7 @@ class GithubDependencyResolver { + async resolveDependency(_pkg, dependency) { + // TODO accept ssh urls? + // TODO github authentication? +- if (!('git' in dependency) || !dependency.git.startsWith('https://github.com')) { ++ if (!('git' in dependency)) { + return null; + } + const archivePath = await this.#fetchZipFromGithub(dependency); +@@ -22697,9 +22697,9 @@ class GithubDependencyResolver { + }; + } + async #fetchZipFromGithub(dependency) { +- if (!dependency.git.startsWith('https://github.com')) { +- throw new Error('Only github dependencies are supported'); +- } ++ // if (!dependency.git.startsWith('https://github.com')) { ++ // throw new Error('Only github dependencies are supported'); ++ // } + const url = resolveGithubCodeArchive(dependency, 'zip'); + const localArchivePath = (0,path__WEBPACK_IMPORTED_MODULE_0__.join)('archives', safeFilename(url.pathname)); + // TODO should check signature before accepting any file +@@ -22768,14 +22768,16 @@ function safeFilename(val) { + * @returns The URL to the library archive + */ + function resolveGithubCodeArchive(dependency, format) { +- const gitUrl = new URL(dependency.git); +- const [owner, repo] = gitUrl.pathname.slice(1).split('/'); ++ // const gitUrl = new URL(dependency.git); ++ // const [owner, repo] = gitUrl.pathname.slice(1).split('/').reverse(); + const ref = dependency.tag ?? 'HEAD'; + const extension = format === 'zip' ? 'zip' : 'tar.gz'; +- if (!owner || !repo || gitUrl.hostname !== 'github.com') { +- throw new Error('Invalid Github repository URL'); +- } +- return new URL(`https://github.com/${owner}/${repo}/archive/${ref}.${extension}`); ++ // if (!owner || !repo || gitUrl.hostname !== 'github.com') { ++ // throw new Error('Invalid Github repository URL'); ++ // } ++ const gitUrl = dependency.git.endsWith('/') ? dependency.git.slice(0, -1) : dependency.git; ++ const replacedUrl = gitUrl.replace('https://github.com', `${window.location.origin}/api/proxy/github`) ++ return new URL(`${replacedUrl}/archive/${ref}.${extension}`); + } + + +@@ -23044,9 +23046,9 @@ class NoirWasmCompiler { + * @param projectPath - The path to the project + * @param opts - Compilation options + */ +- static async new(fileManager, projectPath, ++ static async new(fileManager, projectPath, + /* eslint-disable @typescript-eslint/no-explicit-any */ +- wasmCompiler, sourceMap, ++ wasmCompiler, sourceMap, + /* eslint-enable @typescript-eslint/no-explicit-any */ + opts) { + // Assume the filemanager is initialized at the project root +@@ -23447,22 +23449,22 @@ function inflate(data, buf) { + var u8=Uint8Array; + if(data[0]==3 && data[1]==0) return (buf ? buf : new u8(0)); + var bitsF = _bitsF, bitsE = _bitsE, decodeTiny = _decodeTiny, get17 = _get17; +- ++ + var noBuf = (buf==null); + if(noBuf) buf = new u8((data.length>>>2)<<3); +- +- var BFINAL=0, BTYPE=0, HLIT=0, HDIST=0, HCLEN=0, ML=0, MD=0; ++ ++ var BFINAL=0, BTYPE=0, HLIT=0, HDIST=0, HCLEN=0, ML=0, MD=0; + var off = 0, pos = 0; + var lmap, dmap; +- +- while(BFINAL==0) { ++ ++ while(BFINAL==0) { + BFINAL = bitsF(data, pos , 1); + BTYPE = bitsF(data, pos+1, 2); pos+=3; + //console.log(BFINAL, BTYPE); +- ++ + if(BTYPE==0) { + if((pos&7)!=0) pos+=8-(pos&7); +- var p8 = (pos>>>3)+4, len = data[p8-4]|(data[p8-3]<<8); //console.log(len);//bitsF(data, pos, 16), ++ var p8 = (pos>>>3)+4, len = data[p8-4]|(data[p8-3]<<8); //console.log(len);//bitsF(data, pos, 16), + if(noBuf) buf=_check(buf, off+len); + buf.set(new u8(data.buffer, data.byteOffset+p8, len), off); + //for(var i=0; itl)tl=l; } pos+=3*HCLEN; //console.log(itree); + makeCodes(U.itree, tl); + codes2map(U.itree, tl, U.imap); +- ++ + lmap = U.lmap; dmap = U.dmap; +- ++ + pos = decodeTiny(U.imap, (1<>>24))-1; pos+=(ml&0xffffff); + makeCodes(U.ltree, mx0); + codes2map(U.ltree, mx0, lmap); +- ++ + //var md = decodeTiny(U.imap, (1<>>24))-1; pos+=(md&0xffffff); + makeCodes(U.dtree, mx1); + codes2map(U.dtree, mx1, dmap); +@@ -23498,24 +23500,24 @@ function inflate(data, buf) { + //var ooff=off, opos=pos; + while(true) { + var code = lmap[get17(data, pos) & ML]; pos += code&15; +- var lit = code>>>4; //U.lhst[lit]++; ++ var lit = code>>>4; //U.lhst[lit]++; + if((lit>>>8)==0) { buf[off++] = lit; } + else if(lit==256) { break; } + else { + var end = off+lit-254; + if(lit>264) { var ebs = U.ldef[lit-257]; end = off + (ebs>>>3) + bitsE(data, pos, ebs&7); pos += ebs&7; } + //dst[end-off]++; +- ++ + var dcode = dmap[get17(data, pos) & MD]; pos += dcode&15; + var dlit = dcode>>>4; + var dbs = U.ddef[dlit], dst = (dbs>>>4) + bitsF(data, pos, dbs&15); pos += dbs&15; +- ++ + //var o0 = off-dst, stp = Math.min(end-off, dst); + //if(stp>20) while(off>>4; ++ var lit = code>>>4; + if(lit<=15) { tree[i]=lit; i++; } + else { + var ll = 0, n = 0; +@@ -23567,19 +23569,19 @@ function _copyOut(src, off, len, tree) { + function makeCodes(tree, MAX_BITS) { // code, length + var max_code = tree.length; + var code, bits, n, i, len; +- ++ + var bl_count = U.bl_count; for(var i=0; i<=MAX_BITS; i++) bl_count[i]=0; + for(i=1; i>> 8) | ((x & 0x00ff00ff) << 8)); + U.rev15[i] = (((x >>> 16) | (x << 16)))>>>17; + } +- ++ + function pushV(tgt, n, sv) { while(n--!=0) tgt.push(0,sv); } +- ++ + for(var i=0; i<32; i++) { U.ldef[i]=(U.of0[i]<<3)|U.exb[i]; U.ddef[i]=(U.df0[i]<<4)|U.dxb[i]; } +- ++ + pushV(U.fltree, 144, 8); pushV(U.fltree, 255-143, 9); pushV(U.fltree, 279-255, 7); pushV(U.fltree,287-279,8); + /* + var i = 0; +@@ -23668,13 +23670,13 @@ const U = function(){ + makeCodes(U.fltree, 9); + codes2map(U.fltree, 9, U.flmap); + revCodes (U.fltree, 9); +- ++ + pushV(U.fdtree,32,5); + //for(i=0;i<32; i++) U.fdtree.push(0,5); + makeCodes(U.fdtree, 5); + codes2map(U.fdtree, 5, U.fdmap); + revCodes (U.fdtree, 5); +- ++ + pushV(U.itree,19,0); pushV(U.ltree,286,0); pushV(U.dtree,30,0); pushV(U.ttree,320,0); + /* + for(var i=0; i< 19; i++) U.itree.push(0,0); +@@ -23693,7 +23695,7 @@ const crc = { + if (c & 1) c = 0xedb88320 ^ (c >>> 1); + else c = c >>> 1; + } +- tab[n] = c; } ++ tab[n] = c; } + return tab; })(), + update : function(c, buf, off, len) { + for (var i=0; i>> 8); +@@ -27240,7 +27242,7 @@ const Default = ( + */ + + var Test = bind +- ? /*#__PURE__*/bind.bind(test ) ++ ? /*#__PURE__*/bind.bind(test ) + : function (re) { + return function (string) { + return test.call(re, string); +@@ -27248,7 +27250,7 @@ var Test = bind + }; + + var Exec = bind +- ? /*#__PURE__*/bind.bind(exec ) ++ ? /*#__PURE__*/bind.bind(exec ) + : function (re) { + return function (string) { + return exec.call(re, string); +@@ -27271,7 +27273,7 @@ var NT = /[\n\t]+/g; + var ESCAPE = /\\./g; + function graveAccentReplacer ($$ ) { return $$==='\\`' ? '`' : $$; } + +-var includes = ''.includes ++var includes = ''.includes + ? function (that , searchString ) { return that.includes(searchString); } + : function (that , searchString ) { return that.indexOf(searchString)>-1; }; + +@@ -27285,12 +27287,12 @@ function RE ( template ) { + var index = 1; + var length = arguments.length; + while ( index!==length ) { +- var value +- +- +- +- +- ++ var value ++ ++ ++ ++ ++ + = arguments[index]; + if ( typeof value==='string' ) { source += value; } + else { +@@ -27521,18 +27523,18 @@ const newWeakMap = () => { + weakMap.set = weakMap.set; + return weakMap; + }; +-const target2keeper = /*#__PURE__*/newWeakMap() +- +- ++const target2keeper = /*#__PURE__*/newWeakMap() ++ ++ + ; +-const proxy2target = /*#__PURE__*/newWeakMap() +- +- +- ++const proxy2target = /*#__PURE__*/newWeakMap() ++ ++ ++ + ; +-const target2proxy = /*#__PURE__*/newWeakMap() +- +- ++const target2proxy = /*#__PURE__*/newWeakMap() ++ ++ + ; + + const handlers = /*#__PURE__*/assign$1(create$1(NULL), { +@@ -27615,14 +27617,14 @@ const deInline = /*#__PURE__*/map_del.bind(INLINES) + const deSection = /*#__PURE__*/del.bind(SECTIONS) ; + + const isInline = /*#__PURE__*/map_has.bind(INLINES) ; +-const ofInline = /*#__PURE__*/get.bind(INLINES) +- +- +- ++const ofInline = /*#__PURE__*/get.bind(INLINES) ++ ++ ++ + ; +-const beInline = /*#__PURE__*/set.bind(INLINES) +- +- ++const beInline = /*#__PURE__*/set.bind(INLINES) ++ ++ + ; + const inline = (value , mode , looping ) => { + if ( isArray$1(value) ) { +@@ -27687,7 +27689,7 @@ const fromPair = /*#__PURE__*/has.bind(pairs) + const PAIR = true; + + const PlainTable = /*#__PURE__*/Null$1(class Table extends Null$1 { +- ++ + constructor (isDirect , isInline$fromPair ) { + super(); + tables_add(this); +@@ -27699,7 +27701,7 @@ const PlainTable = /*#__PURE__*/Null$1(class Table extends Null$1 { + }); + + const OrderedTable = /*#__PURE__*/Null$1(class Table extends Null { +- ++ + constructor (isDirect , isInline$fromPair ) { + super(); + tables_add(this); +@@ -27986,28 +27988,28 @@ let usingBigInt = true; + let IntegerMinNumber = 0; + let IntegerMaxNumber = 0; + +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + const ANY = { + test: () => true, + }; +- +- +- ++ ++ ++ + const Keys = class KeysRegExp extends RegExp$1 { +- ++ + constructor (keys ) { + super(`^${groupify(keys)}$`); + let maxLength = -1; +@@ -28032,7 +28034,7 @@ let disallowEmptyKey ; + //export const xob :boolean = true; + let sError ; + let sFloat ; +- ++ + let Table ; + let allowLonger ; + let enableNull ; +@@ -28042,7 +28044,7 @@ let disableDigit ; + const arrayTypes = new WeakMap$1 (); + const arrayTypes_get = /*#__PURE__*/get.bind(arrayTypes) ; + const arrayTypes_set = /*#__PURE__*/set.bind(arrayTypes) ; +- ++ + const As = () => { + const as = (array ) => { + const got = arrayTypes_get(array); +@@ -28080,16 +28082,16 @@ let + asLocalDates , + asLocalTimes ; + +- + +- ++ ++ + let processor = null; + let each = null; +- +- +- +- +- ++ ++ ++ ++ ++ + const collect_on = (tag , array , table , key ) => { + const _each = create$1(NULL) ; + _each._linked = each; +@@ -28106,7 +28108,7 @@ const collect_on = (tag , array , table , key + }; + const collect_off = () => { throw throws(SyntaxError$1(`xOptions.tag is not enabled, but found tag syntax` + where(' at '))); }; + let collect = collect_off; +- ++ + const Process = () => { + if ( each ) { + const _processor = processor ; +@@ -28132,9 +28134,9 @@ const clear = () => { + }; + + const use = (specificationVersion , multilineStringJoiner , useBigInt , keys , xOptions , argsMode ) => { +- ++ + ARGS_MODE = argsMode; +- ++ + let mixed ; + switch ( specificationVersion ) { + case 1.0: +@@ -28165,11 +28167,11 @@ const use = (specificationVersion , multilineStringJoiner , useB + throw RangeError$1(`TOML.parse(,specificationVersion)`); + } + switchRegExp(specificationVersion); +- ++ + if ( typeof multilineStringJoiner==='string' ) { useWhatToJoinMultilineString = multilineStringJoiner; } + else if ( multilineStringJoiner===undefined$1 ) { useWhatToJoinMultilineString = null; } + else { throw TypeError$1(`TOML.parse(${ARGS_MODE ? `${ARGS_MODE}multilineStringJoiner` : `,{ joiner }`})`); } +- ++ + if ( useBigInt===undefined$1 || useBigInt===true ) { usingBigInt = true; } + else if ( useBigInt===false ) { usingBigInt = false; } + else { +@@ -28181,13 +28183,13 @@ const use = (specificationVersion , multilineStringJoiner , useB + : IntegerMaxNumber = -( IntegerMinNumber = useBigInt ) - 1; + } + if ( !BigInt$1 && usingBigInt!==false ) { throw Error$1(`Can't work without TOML.parse(${ARGS_MODE ? `${ARGS_MODE},useBigInt` : `,{ bigint }`}) being set to false, because the host doesn't have BigInt support`); } +- ++ + if ( keys==null ) { KEYS$1 = ANY; } + else { + if ( !isKeys(keys) ) { throw TypeError$1(`TOML.parse(,{ keys })`); } + KEYS$1 = keys; + } +- ++ + if ( xOptions==null ) { + Table = PlainTable; + sError = allowLonger = enableNull = allowInlineTableMultilineAndTrailingCommaEvenNoComma = false; +@@ -28216,11 +28218,11 @@ const use = (specificationVersion , multilineStringJoiner , useB + } + else { collect = collect_off; } + } +- ++ + mixed + ? asNulls = asStrings = asTables = asArrays = asBooleans = asFloats = asIntegers = asOffsetDateTimes = asLocalDateTimes = asLocalDates = asLocalTimes = asMixed + : ( { asNulls, asStrings, asTables, asArrays, asBooleans, asFloats, asIntegers, asOffsetDateTimes, asLocalDateTimes, asLocalDates, asLocalTimes } = AS_TYPED ); +- ++ + }; + + const isView = ArrayBuffer.isView; +@@ -28247,12 +28249,12 @@ const Symbol$1 = Symbol; + + const previous = Symbol$1('previous') ; + +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ + + const x = (rootStack ) => { + let stack = rootStack; +@@ -28433,17 +28435,17 @@ const Datetime = /*#__PURE__*/( () => { + return freeze(Datetime); + } )(); + +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + const Value = (ISOString ) => ISOString.replace(ZERO, zeroReplacer).replace(DELIMITER_DOT, ''); + +@@ -28493,15 +28495,15 @@ const OffsetDateTime_set = (that :InstanceType, start :nu + );///time + };*/// + const OffsetDateTime = /*#__PURE__*/fpc(class OffsetDateTime extends Datetime { +- ++ + [OffsetDateTime_ISOString] ; + [OffsetDateTime_value] ; +- ++ + get [Symbol$1.toStringTag] () { return 'OffsetDateTime' ; } +- ++ + valueOf ( ) { return this[OffsetDateTime_value]; } + toISOString ( ) { return this[OffsetDateTime_ISOString]; } +- ++ + constructor (literal ) { + validateLeap(literal) || throws(SyntaxError$1(`Invalid Offset Date-Time ${literal}` + where(' at '))); + const with60 = literal.startsWith('60', 17); +@@ -28517,7 +28519,7 @@ const OffsetDateTime = /*#__PURE__*/fpc(class OffsetDateTime extends Datetime { + this[OffsetDateTime_value] = ValueOFFSET(time, more); + return this; + } +- ++ + getUTCFullYear ( ) { return OffsetDateTime_use(this).getUTCFullYear(); } + ///get year () :FullYear { return OffsetDateTime_get(this, 0, 4); } + ///set year (value :FullYear) { OffsetDateTime_set(this, 0, 4, value, true); } +@@ -28527,7 +28529,7 @@ const OffsetDateTime = /*#__PURE__*/fpc(class OffsetDateTime extends Datetime { + getUTCDate ( ) { return OffsetDateTime_use(this).getUTCDate(); } + ///get day () :Date { return OffsetDateTime_get(this, 8, 10); } + ///set day (value :Date) { OffsetDateTime_set(this, 8, 10, value, true); } +- ++ + getUTCHours ( ) { return OffsetDateTime_use(this).getUTCHours(); } + ///get hour () :Hours { return OffsetDateTime_get(this, 11, 13); } + ///set hour (value :Hours) { OffsetDateTime_set(this, 11, 13, value, true); } +@@ -28547,7 +28549,7 @@ const OffsetDateTime = /*#__PURE__*/fpc(class OffsetDateTime extends Datetime { + ///set microsecond (value :Milliseconds) + ///get nanosecond () :Milliseconds + ///set nanosecond (value :Milliseconds) +- ++ + getUTCDay ( ) { return OffsetDateTime_use(this).getUTCDay(); } + ///get dayOfWeek () { return OffsetDateTime_use(this, this.getTimezoneOffset()*60000).getUTCDay() || 7; } + getTimezoneOffset ( ) { +@@ -28568,7 +28570,7 @@ const OffsetDateTime = /*#__PURE__*/fpc(class OffsetDateTime extends Datetime { + this[OffsetDateTime_value] = ValueOFFSET(value, ''); + ///return value; + }*/ +- ++ + }); + + const LocalDateTime_ISOString = Symbol$1('LocalDateTime_ISOString') ; +@@ -28583,15 +28585,15 @@ const LocalDateTime_set = (that , start + ); + }; + const LocalDateTime = /*#__PURE__*/fpc(class LocalDateTime extends Datetime { +- ++ + [LocalDateTime_ISOString] ; + [LocalDateTime_value] ; +- ++ + get [Symbol$1.toStringTag] () { return 'LocalDateTime' ; } +- ++ + valueOf ( ) { return this[LocalDateTime_value]; } + toISOString ( ) { return this[LocalDateTime_ISOString]; } +- ++ + constructor (literal ) { + IS_LOCAL_DATETIME(literal) && validateLeap(literal) || throws(SyntaxError$1(`Invalid Local Date-Time ${literal}` + where(' at '))); + super(); +@@ -28600,14 +28602,14 @@ const LocalDateTime = /*#__PURE__*/fpc(class LocalDateTime extends Datetime { + ); + return this; + } +- ++ + getFullYear ( ) { return LocalDateTime_get(this, 0, 4); } + setFullYear ( value ) { LocalDateTime_set(this, 0, 4, value); } + getMonth ( ) { return LocalDateTime_get(this, 5, 7) - 1; } + setMonth ( value ) { LocalDateTime_set(this, 5, 7, value + 1); } + getDate ( ) { return LocalDateTime_get(this, 8, 10); } + setDate ( value ) { LocalDateTime_set(this, 8, 10, value); } +- ++ + getHours ( ) { return LocalDateTime_get(this, 11, 13); } + setHours ( value ) { LocalDateTime_set(this, 11, 13, value); } + getMinutes ( ) { return LocalDateTime_get(this, 14, 16); } +@@ -28620,7 +28622,7 @@ const LocalDateTime = /*#__PURE__*/fpc(class LocalDateTime extends Datetime { + this[LocalDateTime_ISOString] = this[LocalDateTime_ISOString].slice(0, 19) + ( value ? ( '.' + ( '' + value ).padStart(3, '0') ).replace(DOT_ZERO, '') : '' ) + ); + } +- ++ + }); + + const LocalDate_ISOString = Symbol$1('LocalDate_ISOString') ; +@@ -28635,15 +28637,15 @@ const LocalDate_set = (that , start , end + ); + }; + const LocalDate = /*#__PURE__*/fpc(class LocalDate extends Datetime { +- ++ + [LocalDate_ISOString] ; + [LocalDate_value] ; +- ++ + get [Symbol$1.toStringTag] () { return 'LocalDate' ; } +- ++ + valueOf ( ) { return this[LocalDate_value]; } + toISOString ( ) { return this[LocalDate_ISOString]; } +- ++ + constructor (literal ) { + IS_LOCAL_DATE(literal) && validateLeap(literal) || throws(SyntaxError$1(`Invalid Local Date ${literal}` + where(' at '))); + super(); +@@ -28652,14 +28654,14 @@ const LocalDate = /*#__PURE__*/fpc(class LocalDate extends Datetime { + ); + return this; + } +- ++ + getFullYear ( ) { return LocalDate_get(this, 0, 4); } + setFullYear ( value ) { LocalDate_set(this, 0, 4, value); } + getMonth ( ) { return LocalDate_get(this, 5, 7) - 1; } + setMonth ( value ) { LocalDate_set(this, 5, 7, value + 1); } + getDate ( ) { return LocalDate_get(this, 8, 10); } + setDate ( value ) { LocalDate_set(this, 8, 10, value); } +- ++ + }); + + const LocalTime_ISOString = Symbol$1('LocalTime_ISOString') ; +@@ -28674,15 +28676,15 @@ const LocalTime_set = (that , start , end + ); + }; + const LocalTime = /*#__PURE__*/fpc(class LocalTime extends Datetime { +- ++ + [LocalTime_ISOString] ; + [LocalTime_value] ; +- ++ + get [Symbol$1.toStringTag] () { return 'LocalTime' ; } +- ++ + valueOf ( ) { return this[LocalTime_value]; } + toISOString ( ) { return this[LocalTime_ISOString]; } +- ++ + constructor (literal ) { + IS_LOCAL_TIME(literal) || throws(SyntaxError$1(`Invalid Local Time ${literal}` + where(' at '))); + super(); +@@ -28691,7 +28693,7 @@ const LocalTime = /*#__PURE__*/fpc(class LocalTime extends Datetime { + ); + return this; + } +- ++ + getHours ( ) { return LocalTime_get(this, 0, 2); } + setHours ( value ) { LocalTime_set(this, 0, 2, value); } + getMinutes ( ) { return LocalTime_get(this, 3, 5); } +@@ -28704,7 +28706,7 @@ const LocalTime = /*#__PURE__*/fpc(class LocalTime extends Datetime { + this[LocalTime_ISOString] = this[LocalTime_ISOString].slice(0, 8) + ( value ? ( '.' + ( '' + value ).padStart(3, '0') ).replace(DOT_ZERO, '') : '' ) + ); + } +- ++ + }); + + const parseInt$1 = parseInt; +@@ -29001,9 +29003,9 @@ const assignLiteralString = ( (table , finalKey , literal ) + } + lines[lines.length] = checkLiteralString(line); + } +-} ) +- +- ++} ) ++ ++ + ; + + const assignBasicString = ( (table , finalKey , literal ) => { +@@ -29054,9 +29056,9 @@ const assignBasicString = ( (table , finalKey , literal ) + ESCAPED_EXCLUDE_CONTROL_CHARACTER_test(line + '\n') || throws(SyntaxError$1(`Bad multi-line basic string` + where(' at '))); + lines[lines.length] = line; + } +-} ) +- +- ++} ) ++ ++ + ; + + const KEYS = /*#__PURE__*/Null$1 (null); +@@ -29207,9 +29209,9 @@ const equalStaticArray = function * ( table , finalKey , + } + inline===null || beInline(staticArray, inline); + return lineRest.replace(SYM_WHITESPACE, ''); +-} +- +- ++} ++ ++ + ; + + const equalInlineTable = function * ( table , finalKey , lineRest ) { +@@ -29260,12 +29262,12 @@ const equalInlineTable = function * ( table , finalKey , + } + } + return lineRest.replace(SYM_WHITESPACE, ''); +-} +- +- ++} ++ ++ + ; + +- ++ + const ForComment = (lastInlineTable , lineRest ) => { + const { leadingKeys, finalKey, tag } = { lineRest } = KEY_VALUE_PAIR_exec_groups(parseKeys(lineRest)); + return { table: prepareInlineTable(lastInlineTable, leadingKeys), finalKey, tag, lineRest }; +@@ -29497,7 +29499,7 @@ const escape_multiline = (lines , lineIndex ) => { + } + }; + +- ++ + const Lines = (lines ) => ( lines = [ '', ...lines ] ).length===1 ? [ '', '' ] : lines ; + + const multilineString = (lines ) => { +@@ -29541,7 +29543,7 @@ const float64Array = new Float64Array$1([ NaN$1 ]); + const uint8Array = new Uint8Array$1(float64Array.buffer); + const NaN_7 = uint8Array[7] ; + +-const float = NaN_7===new Uint8Array$1(new Float64Array$1([ -NaN$1 ]).buffer)[7] ++const float = NaN_7===new Uint8Array$1(new Float64Array$1([ -NaN$1 ]).buffer)[7] + ? (value ) => value + ? value===Infinity ? 'inf' : value===_Infinity ? '-inf' : ensureFloat('' + value) + : value===value ? is(value, 0) ? '0.0' : '-0.0' : 'nan' +@@ -29559,22 +29561,22 @@ const literalString = (value ) => `'${value}'`; + const $Keys = (keys ) => isAmazing(keys) ? keys.replace(FIRST, literalString) : keys==='null' ? `'null'` : keys; + + class TOMLSection extends Array$1 { +- ++ + document ; +- ++ + constructor (document ) { + super(); + this.document = document; + return this; + } +- ++ + [Symbol$1.toPrimitive] () { return this.join(this.document.newline); } +- ++ + appendNewline () { this[this.length] = ''; } + set appendLine (source ) { this[this.length] = source; } +- set appendInline (source ) { this[this.length - 1] += source; } ++ set appendInline (source ) { this[this.length - 1] += source; } + set appendInlineIf (source ) { source && ( this[this.length - 1] += source ); }/// +- ++ + * assignBlock (documentKeys_ , sectionKeys_ , table , tableKeys ) { + const { document } = this; + const { newlineUnderHeader, newlineUnderSectionButPair } = document; +@@ -29648,7 +29650,7 @@ class TOMLSection extends Array$1 { + } + } + } +- ++ + value (indent , value , returnValueKeysIfValueIsDottedTable ) { + switch ( typeof value ) { + case 'object': +@@ -29721,7 +29723,7 @@ class TOMLSection extends Array$1 { + } + return null; + } +- ++ + singlelineArray (indent , staticArray , inlineMode ) { + const { length } = staticArray; + if ( length ) { +@@ -29748,7 +29750,7 @@ class TOMLSection extends Array$1 { + } + this.appendLine = indent + ']'; + } +- ++ + inlineTable (indent , inlineTable ) { + const keys = getOwnPropertyNames(inlineTable); + if ( keys.length ) { +@@ -29794,7 +29796,7 @@ class TOMLSection extends Array$1 { + } + } + } +- ++ + } + + const name2code = /*#__PURE__*/Null$1({ +@@ -29810,11 +29812,11 @@ const { test: IS_INDENT } = theRegExp(/^[\t ]*$/); + const return_false = () => false; + + class TOMLDocument extends Array$1 { +- ++ + get ['constructor'] () { return Array$1; } +- ++ + 0 = new TOMLSection(this); +- ++ + asInteger = return_false; + newline = ''; + newlineUnderSection = true; +@@ -29831,13 +29833,13 @@ class TOMLDocument extends Array$1 { + multilineTableComma ; + preferCommentForThis = false; + $singlelineArray ; +- ++ + constructor (options ) { +- ++ + super(); +- ++ + if ( options==null ) { return this; } +- ++ + const { integer } = options; + if ( integer===undefined ) ; + else if ( integer===MAX_SAFE_INTEGER ) { this.asInteger = isSafeInteger; } +@@ -29848,7 +29850,7 @@ class TOMLDocument extends Array$1 { + this.asInteger = (number ) => isSafeInteger(number) && min<=number && number<=max; + } + else { throw TypeError$1(`TOML.stringify(,{integer}) can only be number`); } +- ++ + const { newline } = options; + if ( newline===undefined ) ; + else if ( newline==='\n' || newline==='\r\n' ) { this.newline = newline; } +@@ -29857,12 +29859,12 @@ class TOMLDocument extends Array$1 { + ? SyntaxError$1(`TOML.stringify(,{newline}) can only be valid TOML newline`) + : TypeError$1(`TOML.stringify(,{newline}) can only be string`); + } +- ++ + const { preferCommentFor } = options; + if ( preferCommentFor===undefined ) ; + else if ( preferCommentFor==='this' || preferCommentFor==='key' ) { this.preferCommentForThis = preferCommentFor==='this'; } + else { throw TypeError$1(`TOML.stringify(,{preferCommentFor) can only be 'key' or 'this'`); } +- ++ + const { [options.newlineAround || 'header']: around = name2code.header } = name2code; + this.newlineUnderSection = around>0; + this.newlineUnderSectionButPair = around===1 || around===2; +@@ -29870,7 +29872,7 @@ class TOMLDocument extends Array$1 { + this.newlineUnderPair = around>2; + this.newlineUnderPairButDotted = around===3; + this.newlineUnderDotted = around>3; +- ++ + const { indent } = options; + if ( indent===undefined ) ; + else if ( typeof indent==='string' ) { +@@ -29882,19 +29884,19 @@ class TOMLDocument extends Array$1 { + this.indent = ' '.repeat(indent); + } + else { throw TypeError$1(`TOML.stringify(,{indent}) can not be "${typeof indent}" type`); } +- ++ + const { T } = options; + if ( T===undefined ) ; + else if ( T===' ' || T==='t' || T==='T' ) { this.T = T; } + else { throw TypeError$1(`TOML.stringify(,{T}) can only be "T" or " " or "t"`); } +- ++ + const { Z } = options; + if ( Z===undefined ) ; + else if ( Z==='z' || Z==='Z' ) { this.Z = Z; } + else { throw TypeError$1(`TOML.stringify(,{Z}) can only be "Z" or "z"`); } +- ++ + if ( options.xNull ) { this.nullDisabled = false; } +- ++ + const { xBeforeNewlineInMultilineTable } = options; + if ( xBeforeNewlineInMultilineTable===undefined ) ; + else if ( xBeforeNewlineInMultilineTable==='' || xBeforeNewlineInMultilineTable===',' ) { +@@ -29902,7 +29904,7 @@ class TOMLDocument extends Array$1 { + this.multilineTableComma = !!xBeforeNewlineInMultilineTable; + } + else { throw TypeError$1(`TOML.stringify(,{xBeforeNewlineInMultilineTable}) can only be "" or ","`); } +- ++ + const $singlelineArray = options.forceInlineArraySpacing; + switch ( $singlelineArray ) { + case undefined: +@@ -29918,13 +29920,13 @@ class TOMLDocument extends Array$1 { + ? RangeError$1(`array inline mode must be 0 | 1 | 2 | 3, not including ${$singlelineArray}`) + : TypeError$1(`array inline mode must be "number" type, not including ${$singlelineArray===null ? '"null"' : typeof $singlelineArray}`); + } +- ++ + return this; +- ++ + } +- ++ + appendSection () { return this[this.length] = new TOMLSection(this); } +- ++ + } + + const linesFromStringify = new WeakSet$1 (); +@@ -37006,7 +37008,7 @@ var pako = { + /************************************************************************/ + /******/ // The module cache + /******/ var __webpack_module_cache__ = {}; +-/******/ ++/******/ + /******/ // The require function + /******/ function __webpack_require__(moduleId) { + /******/ // Check if module is in cache +@@ -37020,20 +37022,20 @@ var pako = { + /******/ loaded: false, + /******/ exports: {} + /******/ }; +-/******/ ++/******/ + /******/ // Execute the module function + /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +-/******/ ++/******/ + /******/ // Flag the module as loaded + /******/ module.loaded = true; +-/******/ ++/******/ + /******/ // Return the exports of the module + /******/ return module.exports; + /******/ } +-/******/ ++/******/ + /******/ // expose the modules object (__webpack_modules__) + /******/ __webpack_require__.m = __webpack_modules__; +-/******/ ++/******/ + /************************************************************************/ + /******/ /* webpack/runtime/compat get default export */ + /******/ (() => { +@@ -37046,7 +37048,7 @@ var pako = { + /******/ return getter; + /******/ }; + /******/ })(); +-/******/ ++/******/ + /******/ /* webpack/runtime/define property getters */ + /******/ (() => { + /******/ // define getter functions for harmony exports +@@ -37058,7 +37060,7 @@ var pako = { + /******/ } + /******/ }; + /******/ })(); +-/******/ ++/******/ + /******/ /* webpack/runtime/global */ + /******/ (() => { + /******/ __webpack_require__.g = (function() { +@@ -37070,7 +37072,7 @@ var pako = { + /******/ } + /******/ })(); + /******/ })(); +-/******/ ++/******/ + /******/ /* webpack/runtime/harmony module decorator */ + /******/ (() => { + /******/ __webpack_require__.hmd = (module) => { +@@ -37085,12 +37087,12 @@ var pako = { + /******/ return module; + /******/ }; + /******/ })(); +-/******/ ++/******/ + /******/ /* webpack/runtime/hasOwnProperty shorthand */ + /******/ (() => { + /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) + /******/ })(); +-/******/ ++/******/ + /******/ /* webpack/runtime/make namespace object */ + /******/ (() => { + /******/ // define __esModule on exports +@@ -37101,7 +37103,7 @@ var pako = { + /******/ Object.defineProperty(exports, '__esModule', { value: true }); + /******/ }; + /******/ })(); +-/******/ ++/******/ + /******/ /* webpack/runtime/node module decorator */ + /******/ (() => { + /******/ __webpack_require__.nmd = (module) => { +@@ -37110,33 +37112,33 @@ var pako = { + /******/ return module; + /******/ }; + /******/ })(); +-/******/ ++/******/ + /******/ /* webpack/runtime/jsonp chunk loading */ + /******/ (() => { + /******/ __webpack_require__.b = document.baseURI || self.location.href; +-/******/ ++/******/ + /******/ // object to store loaded and loading chunks + /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched + /******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded + /******/ var installedChunks = { + /******/ "main": 0 + /******/ }; +-/******/ ++/******/ + /******/ // no chunk on demand loading +-/******/ ++/******/ + /******/ // no prefetching +-/******/ ++/******/ + /******/ // no preloaded +-/******/ ++/******/ + /******/ // no HMR +-/******/ ++/******/ + /******/ // no HMR manifest +-/******/ ++/******/ + /******/ // no on chunks loaded +-/******/ ++/******/ + /******/ // no jsonp function + /******/ })(); +-/******/ ++/******/ + /************************************************************************/ + var __webpack_exports__ = {}; + // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. diff --git a/patches/sveltekit-superforms.patch b/patches/sveltekit-superforms.patch new file mode 100644 index 0000000..03804cb --- /dev/null +++ b/patches/sveltekit-superforms.patch @@ -0,0 +1,13 @@ +diff --git a/dist/adapters/index.js b/dist/adapters/index.js +index d022b0d285a4c0e23dd7b4e0fc2b291e7ca49103..4d2c7778b024e8acc8ab7133d4be8c00254a25d9 100644 +--- a/dist/adapters/index.js ++++ b/dist/adapters/index.js +@@ -6,7 +6,7 @@ export { typebox, typeboxClient } from './typebox.js'; + export { valibot, valibotClient } from './valibot.js'; + export { yup, yupClient } from './yup.js'; + export { zod, zodClient } from './zod.js'; +-export { vine, vineClient } from './vine.js'; ++// export { vine, vineClient } from './vine.js'; + export { schemasafe, schemasafeClient } from './schemasafe.js'; + export { superstruct, superstructClient } from './superstruct.js'; + /* diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..392bec5 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,5879 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +patchedDependencies: + '@noir-lang/noir_wasm@0.33.0': + hash: ivzvyhvywcx2okfxsubqwitdjm + path: patches/@noir-lang__noir_wasm.patch + sveltekit-superforms: + hash: mov3azv4vigdt5tdhn5vfb4b7q + path: patches/sveltekit-superforms.patch + +importers: + + .: + devDependencies: + typescript: + specifier: ^5.5.2 + version: 5.6.3 + + apps/zkemail: + dependencies: + '@metamask/jazzicon': + specifier: ^2.0.0 + version: 2.0.0 + '@noir-lang/acvm_js': + specifier: 0.49.0 + version: 0.49.0 + '@noir-lang/backend_barretenberg': + specifier: 0.33.0 + version: 0.33.0 + '@noir-lang/noir_js': + specifier: 0.33.0 + version: 0.33.0 + '@noir-lang/noir_wasm': + specifier: 0.33.0 + version: 0.33.0(patch_hash=ivzvyhvywcx2okfxsubqwitdjm) + '@noir-lang/noirc_abi': + specifier: 0.33.0 + version: 0.33.0 + '@repo/utils': + specifier: workspace:* + version: link:../../packages/utils + '@shieldswap/email_account_utils_rs': + specifier: 0.3.2 + version: 0.3.2 + '@tanstack/svelte-query': + specifier: ^5.13.4 + version: 5.59.13(svelte@5.0.0-next.144) + '@vercel/analytics': + specifier: ^1.3.1 + version: 1.3.1 + '@zk-email/helpers': + specifier: 6.1.5 + version: 6.1.5 + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.47) + bits-ui: + specifier: ^0.21.16 + version: 0.21.16(svelte@5.0.0-next.144) + clsx: + specifier: ^2.1.1 + version: 2.1.1 + formsnap: + specifier: ^1.0.1 + version: 1.0.1(svelte@5.0.0-next.144)(sveltekit-superforms@2.19.0(patch_hash=mov3azv4vigdt5tdhn5vfb4b7q)(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(@types/json-schema@7.0.15)(svelte@5.0.0-next.144)) + ky: + specifier: ^1.7.1 + version: 1.7.2 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + lucide-svelte: + specifier: ^0.441.0 + version: 0.441.0(svelte@5.0.0-next.144) + ms: + specifier: ^2.1.3 + version: 2.1.3 + node-forge: + specifier: ^1.3.1 + version: 1.3.1 + svelte-french-toast: + specifier: ^1.2.0 + version: 1.2.0(svelte@5.0.0-next.144) + svelte-typed-context: + specifier: https://github.com/KamenKolev/svelte-typed-context#02dc12b4a8fdfc7258ee25309685a04924d9eff5 + version: https://codeload.github.com/KamenKolev/svelte-typed-context/tar.gz/02dc12b4a8fdfc7258ee25309685a04924d9eff5(svelte@5.0.0-next.144) + sveltekit-superforms: + specifier: 2.19.0 + version: 2.19.0(patch_hash=mov3azv4vigdt5tdhn5vfb4b7q)(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(@types/json-schema@7.0.15)(svelte@5.0.0-next.144) + tailwind-merge: + specifier: ^2.5.2 + version: 2.5.4 + tailwind-variants: + specifier: ^0.2.1 + version: 0.2.1(tailwindcss@3.4.14) + ts-essentials: + specifier: ^10.0.2 + version: 10.0.2(typescript@5.6.3) + ufo: + specifier: ^1.5.4 + version: 1.5.4 + viem: + specifier: ^2.20.0 + version: 2.21.32(typescript@5.6.3)(zod@3.23.8) + zod: + specifier: ^3.23.8 + version: 3.23.8 + devDependencies: + '@sveltejs/adapter-vercel': + specifier: ^5.4.3 + version: 5.4.5(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3))) + '@sveltejs/kit': + specifier: ^2.5.17 + version: 2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)) + '@sveltejs/vite-plugin-svelte': + specifier: ^3.0.0 + version: 3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)) + '@tailwindcss/typography': + specifier: ^0.5.15 + version: 0.5.15(tailwindcss@3.4.14) + '@types/lodash-es': + specifier: ^4.17.12 + version: 4.17.12 + '@types/ms': + specifier: ^0.7.34 + version: 0.7.34 + '@types/node-forge': + specifier: ^1.3.11 + version: 1.3.11 + prettier: + specifier: ^3.1.1 + version: 3.3.3 + prettier-plugin-svelte: + specifier: ^3.1.2 + version: 3.2.7(prettier@3.3.3)(svelte@5.0.0-next.144) + rollup-plugin-copy: + specifier: ^3.5.0 + version: 3.5.0 + sass: + specifier: ^1.80.3 + version: 1.80.3 + svelte: + specifier: 5.0.0-next.144 + version: 5.0.0-next.144 + svelte-check: + specifier: ^3.6.0 + version: 3.8.6(postcss-load-config@4.0.2(postcss@8.4.47))(postcss@8.4.47)(sass@1.80.3)(svelte@5.0.0-next.144) + sveltekit-adapter-chrome-extension: + specifier: ^2.0.1 + version: 2.0.1(@sveltejs/adapter-static@3.0.5(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))) + tailwindcss: + specifier: ^3.4.14 + version: 3.4.14 + tslib: + specifier: ^2.4.1 + version: 2.8.0 + typescript: + specifier: ^5.0.0 + version: 5.6.3 + vite: + specifier: ^5.2.11 + version: 5.4.9(@types/node@22.7.7)(sass@1.80.3) + vite-plugin-kit-routes: + specifier: ^0.6.5 + version: 0.6.11 + vite-plugin-node-polyfills: + specifier: 0.17.0 + version: 0.17.0(rollup@4.24.0)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)) + vite-plugin-resolve: + specifier: ^2.5.1 + version: 2.5.2 + + packages/utils: + dependencies: + ms: + specifier: ^2.1.3 + version: 2.1.3 + ts-essentials: + specifier: ^9.4.1 + version: 9.4.2(typescript@5.6.3) + ufo: + specifier: ^1.5.4 + version: 1.5.4 + devDependencies: + '@types/ms': + specifier: ^0.7.34 + version: 0.7.34 + prettier: + specifier: ^3.2.5 + version: 3.3.3 + typescript: + specifier: ^5.5.2 + version: 5.6.3 + +packages: + + '@adraffy/ens-normalize@1.11.0': + resolution: {integrity: sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==} + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@ark/schema@0.10.0': + resolution: {integrity: sha512-zpfXwWLOzj9aUK+dXQ6aleJAOgle4/WrHDop5CMX2M88dFQ85NdH8O0v0pvMAQnfFcaQAZ/nVDYLlBJsFc09XA==} + + '@ark/util@0.10.0': + resolution: {integrity: sha512-uK+9VU5doGMYOoOZVE+XaSs1vYACoaEJdrDkuBx26S4X7y3ChyKsPnIg/9pIw2vUySph1GkAXbvBnfVE2GmXgQ==} + + '@aztec/bb.js@0.47.1': + resolution: {integrity: sha512-3SmRF+suvNZkheCWGU7jH/reEHXkAjMo7q5u/xoLFL0Rn/1HZQN0W6o6Sd3QUoopCwVWQIJ66YwalaRaslP41Q==} + hasBin: true + + '@babel/helper-string-parser@7.25.7': + resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.7': + resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.8': + resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.25.7': + resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.8': + resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} + engines: {node: '>=6.9.0'} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@ethersproject/abi@5.7.0': + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + + '@ethersproject/abstract-provider@5.7.0': + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + + '@ethersproject/abstract-signer@5.7.0': + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + + '@ethersproject/address@5.7.0': + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + + '@ethersproject/base64@5.7.0': + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + + '@ethersproject/basex@5.7.0': + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + + '@ethersproject/bignumber@5.7.0': + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + + '@ethersproject/bytes@5.7.0': + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + + '@ethersproject/constants@5.7.0': + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + + '@ethersproject/contracts@5.7.0': + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + + '@ethersproject/hash@5.7.0': + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + + '@ethersproject/hdnode@5.7.0': + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + + '@ethersproject/json-wallets@5.7.0': + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + + '@ethersproject/keccak256@5.7.0': + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + + '@ethersproject/logger@5.7.0': + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + + '@ethersproject/networks@5.7.1': + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + + '@ethersproject/pbkdf2@5.7.0': + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + + '@ethersproject/properties@5.7.0': + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + + '@ethersproject/providers@5.7.2': + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + + '@ethersproject/random@5.7.0': + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + + '@ethersproject/rlp@5.7.0': + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + + '@ethersproject/sha2@5.7.0': + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + + '@ethersproject/signing-key@5.7.0': + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + + '@ethersproject/solidity@5.7.0': + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + + '@ethersproject/strings@5.7.0': + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + + '@ethersproject/transactions@5.7.0': + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + + '@ethersproject/units@5.7.0': + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + + '@ethersproject/wallet@5.7.0': + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + + '@ethersproject/web@5.7.1': + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + + '@ethersproject/wordlists@5.7.0': + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + + '@exodus/schemasafe@1.3.0': + resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} + + '@floating-ui/core@1.6.8': + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + + '@floating-ui/dom@1.6.11': + resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + + '@gcornut/valibot-json-schema@0.31.0': + resolution: {integrity: sha512-3xGptCurm23e7nuPQkdrE5rEs1FeTPHhAUsBuwwqG4/YeZLwJOoYZv+fmsppUEfo5y9lzUwNQrNqLS/q7HMc7g==} + hasBin: true + + '@hapi/hoek@9.3.0': + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + '@hapi/topo@5.1.0': + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + + '@iden3/bigarray@0.0.2': + resolution: {integrity: sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g==} + + '@iden3/binfileutils@0.0.11': + resolution: {integrity: sha512-LylnJoZ0CTdgErnKY8OxohvW4K+p6UHD3sxt+3P9AmMyBQjYR4IpoqoYZZ+9aMj89cmCQ21UvdhndAx04er3NA==} + + '@internationalized/date@3.5.6': + resolution: {integrity: sha512-jLxQjefH9VI5P9UQuqB6qNKnvFt1Ky1TPIzHGsIlCi7sZZoMR8SdYbBGRvM0y+Jtb+ez4ieBzmiAUcpmPYpyOw==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@kitql/helpers@0.8.10': + resolution: {integrity: sha512-r9m0eQyjy3Z2sdeXA8wRGl2tgKtZ9puPuZ3vm9Cv3WMMWVmbKVzUJvF+4UucsHzT9xECFbO9lcQu7lIb774PPQ==} + engines: {node: ^16.14 || >=18} + + '@kitql/internals@0.9.10': + resolution: {integrity: sha512-t0BUn/XenYdSpq3bLGFqB3Ic4lIFChsNObxKFl8g7+VP9SyS6cUrcFYZgE8hssBmDjsoeF7Nu4N2071bN8V8Fw==} + engines: {node: ^16.14 || >=18} + + '@mapbox/node-pre-gyp@1.0.11': + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true + + '@melt-ui/svelte@0.76.2': + resolution: {integrity: sha512-7SbOa11tXUS95T3fReL+dwDs5FyJtCEqrqG3inRziDws346SYLsxOQ6HmX+4BkIsQh1R8U3XNa+EMmdMt38lMA==} + peerDependencies: + svelte: '>=3 <5' + + '@metamask/jazzicon@2.0.0': + resolution: {integrity: sha512-7M+WSZWKcQAo0LEhErKf1z+D3YX0tEDAcGvcKbDyvDg34uvgeKR00mFNIYwAhdAS9t8YXxhxZgsrRBBg6X8UQg==} + + '@noble/curves@1.6.0': + resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@noir-lang/acvm_js@0.49.0': + resolution: {integrity: sha512-bBcEbGB48ippJnuDu17JDsR5NFazcY4/huzouFkjLpSrFfzlUINCeZ0JqwuQHMq6VDlPB9L8KF7q3zJ5X1L34g==} + + '@noir-lang/backend_barretenberg@0.33.0': + resolution: {integrity: sha512-9uxgUAzM1ERqGbeNTsCNPfADttDzzXBfaHOQkzMKKtDk2S+3u68gDrlZmC/MJKkf1ZzFG1Ly95XpbpPFW993ig==} + + '@noir-lang/noir_js@0.33.0': + resolution: {integrity: sha512-woM8ZOy2X2qnukLcD1WwjFA1WeZFNRKa/dRNbYpgP+hVi/yBbR4xFcNxrswEMzoKeehgwaf0IK0Lkw4KRM5a4Q==} + + '@noir-lang/noir_wasm@0.33.0': + resolution: {integrity: sha512-Py7tgiHF7aqy0c3bTprCWflHahvIWj6cvJLS3B5j/35gRkgOoX5Qagl9Po4w4rFhFV4fHvECaZRL8olG+KB1RQ==} + + '@noir-lang/noirc_abi@0.33.0': + resolution: {integrity: sha512-aTkTIIFh9QJqfjrXMCNwvZOKZTxYgAEtgVc3uuKIbv4C6hghg6NHaWnQ04szCvSfA9hvc1T+Std087CrAahvYA==} + + '@noir-lang/types@0.33.0': + resolution: {integrity: sha512-iXtn+L7Fy1Oj7XUKLg3Jpam213QDQtmt/5izNnMaESz87+3vNNeAKR2ssVOB6qkjkuOH8p7cShSruGCPACiaAA==} + + '@parcel/watcher-android-arm64@2.4.1': + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.4.1': + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.4.1': + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.4.1': + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.4.1': + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.4.1': + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.4.1': + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.4.1': + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.4.1': + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.4.1': + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.4.1': + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.4.1': + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + + '@poppinss/macroable@1.0.3': + resolution: {integrity: sha512-B4iV6QxW//Fn17+qF1EMZRmoThIUJlCtcO85yoRDJnMyHeAthjz4ig9OTkfGGXKtQhcdPX0me75gU5K9J897+w==} + engines: {node: '>=18.16.0'} + + '@rollup/plugin-inject@5.0.5': + resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@4.2.1': + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + + '@rollup/pluginutils@5.1.2': + resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.24.0': + resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.24.0': + resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.24.0': + resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.24.0': + resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.24.0': + resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.24.0': + resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.24.0': + resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.24.0': + resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.24.0': + resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.24.0': + resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.24.0': + resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.24.0': + resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + cpu: [x64] + os: [win32] + + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + + '@scure/bip32@1.5.0': + resolution: {integrity: sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==} + + '@scure/bip39@1.4.0': + resolution: {integrity: sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==} + + '@shieldswap/email_account_utils_rs@0.3.2': + resolution: {integrity: sha512-vsVRLstau5d7QAFJ/95tIDp8WD/lA3zwu4stKFC+d0AE2dYv812XnAUFuxtYGnDZ93QMijmHHmrHQOvdnci80A==} + + '@sideway/address@4.1.5': + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + + '@sideway/formula@3.0.1': + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + '@sideway/pinpoint@2.0.0': + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + + '@sinclair/typebox@0.32.35': + resolution: {integrity: sha512-Ul3YyOTU++to8cgNkttakC0dWvpERr6RYoHO2W47DLbFvrwBDJUY31B1sImH6JZSYc4Kt4PyHtoPNu+vL2r2dA==} + + '@sodaru/yup-to-json-schema@2.0.1': + resolution: {integrity: sha512-lWb0Wiz8KZ9ip/dY1eUqt7fhTPmL24p6Hmv5Fd9pzlzAdw/YNcWZr+tiCT4oZ4Zyxzi9+1X4zv82o7jYvcFxYA==} + + '@sveltejs/adapter-static@3.0.5': + resolution: {integrity: sha512-kFJR7RxeB6FBvrKZWAEzIALatgy11ISaaZbcPup8JdWUdrmmfUHHTJ738YHJTEfnCiiXi6aX8Q6ePY7tnSMD6Q==} + peerDependencies: + '@sveltejs/kit': ^2.0.0 + + '@sveltejs/adapter-vercel@5.4.5': + resolution: {integrity: sha512-SROpUbjSZ1Xni4xuS22dunXFLjYzvTZwppqixIQFzTrf9oWcZEm2OfO+VgnrOT67LOcWQefJp7VSrpmjV691yQ==} + peerDependencies: + '@sveltejs/kit': ^2.4.0 + + '@sveltejs/kit@2.7.2': + resolution: {integrity: sha512-bFwrl+0bNr0/DHQZM0INwwSPNYqDjfsKRhUoa6rj9d8tDZzszBrJ3La6/HVFxWGONEigtG+SzHXa1BEa1BLdwA==} + engines: {node: '>=18.13'} + hasBin: true + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.3 + + '@sveltejs/vite-plugin-svelte-inspector@2.1.0': + resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + + '@sveltejs/vite-plugin-svelte@3.1.2': + resolution: {integrity: sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + + '@tailwindcss/typography@0.5.15': + resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20' + + '@tanstack/query-core@5.59.13': + resolution: {integrity: sha512-Oou0bBu/P8+oYjXsJQ11j+gcpLAMpqW42UlokQYEz4dE7+hOtVO9rVuolJKgEccqzvyFzqX4/zZWY+R/v1wVsQ==} + + '@tanstack/svelte-query@5.59.13': + resolution: {integrity: sha512-ulyvUFl6nTfpC4z0ljk1venGOGnDGCd3EZhkeFV+EkjI/skJeXbk/Z1TqDL6oZ5QvtT+F9DjObsZihP5ht39Ng==} + peerDependencies: + svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0 + + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/fs-extra@8.1.5': + resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + + '@types/lodash@4.17.12': + resolution: {integrity: sha512-sviUmCE8AYdaF/KIHLDJBQgeYzPBI0vf/17NaYehBJfYD1j6/L95Slh07NlyK2iNyBNaEkb3En2jRt+a8y3xZQ==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + + '@types/node@22.7.7': + resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==} + + '@types/pug@2.0.10': + resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + + '@types/validator@13.12.2': + resolution: {integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==} + + '@typeschema/class-validator@0.2.0': + resolution: {integrity: sha512-zq0qeflVu1Z6D0ttkqAWZMtxJeNEQ70yo/025sV0jujiOOgQx38JXrky77nSWWPp2E1KIMtgkToQbkzkXyW5yg==} + peerDependencies: + class-validator: ^0.14.1 + peerDependenciesMeta: + class-validator: + optional: true + + '@typeschema/core@0.14.0': + resolution: {integrity: sha512-Ia6PtZHcL3KqsAWXjMi5xIyZ7XMH4aSnOQes8mfMLx+wGFGtGRNlwe6Y7cYvX+WfNK67OL0/HSe9t8QDygV0/w==} + peerDependencies: + '@types/json-schema': ^7.0.15 + peerDependenciesMeta: + '@types/json-schema': + optional: true + + '@vercel/analytics@1.3.1': + resolution: {integrity: sha512-xhSlYgAuJ6Q4WQGkzYTLmXwhYl39sWjoMA3nHxfkvG+WdBT25c563a7QhwwKivEOZtPJXifYHR1m2ihoisbWyA==} + peerDependencies: + next: '>= 13' + react: ^18 || ^19 + peerDependenciesMeta: + next: + optional: true + react: + optional: true + + '@vercel/nft@0.27.4': + resolution: {integrity: sha512-Rioz3LJkEKicKCi9BSyc1RXZ5R6GmXosFMeBSThh6msWSOiArKhb7c75MiWwZEgPL7x0/l3TAfH/l0cxKNuUFA==} + engines: {node: '>=16'} + hasBin: true + + '@vinejs/compiler@2.5.0': + resolution: {integrity: sha512-hg4ekaB5Y2zh+IWzBiC/WCDWrIfpVnKu/ubUvelKlidc/VbulsexoFRw5kJGHZenPVI5YzNnDeTdYSALkTV7jQ==} + engines: {node: '>=18.0.0'} + + '@vinejs/vine@1.8.0': + resolution: {integrity: sha512-Qq3XxbA26jzqS9ICifkqzT399lMQZ2fWtqeV3luI2as+UIK7qDifJFU2Q4W3q3IB5VXoWxgwAZSZEO0em9I/qQ==} + engines: {node: '>=18.16.0'} + + '@zk-email/helpers@6.1.5': + resolution: {integrity: sha512-DaUQPdQKxI38QOIuce88kiEoQHZ/bEej34wUofmGqB0XlXVky1oFvvmF2MjJdDjuNScSL86QVR2WP06IIaLeJg==} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + abitype@1.0.6: + resolution: {integrity: sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + + acorn-typescript@1.4.13: + resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} + peerDependencies: + acorn: '>=8.9.0' + + acorn@8.13.0: + resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} + engines: {node: '>=0.4.0'} + hasBin: true + + addressparser@1.0.1: + resolution: {integrity: sha512-aQX7AISOMM7HFE0iZ3+YnD07oIeJqWGVnJ+ZIKaBZAk03ftmVYVqsGas/rbXKR21n4D/hKCSHypvcyOkds/xzg==} + + aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + arktype@2.0.0-rc.8: + resolution: {integrity: sha512-ByrqjptsavUCUL9ptts6BUL2LCNkVZyniOdaBw76dlBQ6gYIhYSeycuuj4gRFwcAafszOnAPD2fAqHK7bbo/Zw==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + asn1.js@4.10.1: + resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} + + assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + + async-sema@3.1.1: + resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + b4a@1.6.7: + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + + bfj@7.1.0: + resolution: {integrity: sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==} + engines: {node: '>= 8.0.0'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bits-ui@0.21.16: + resolution: {integrity: sha512-XFZ7/bK7j/K+5iktxX/ZpmoFHjYjpPzP5EOO/4bWiaFg5TG1iMcfjDhlBTQnJxD6BoVoHuqeZPHZvaTgF4Iv3Q==} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.118 + + blake-hash@2.0.0: + resolution: {integrity: sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w==} + engines: {node: '>= 10'} + + blake2b-wasm@2.4.0: + resolution: {integrity: sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w==} + + blake2b@2.1.4: + resolution: {integrity: sha512-AyBuuJNI64gIvwx13qiICz6H6hpmjvYS5DGkG6jbXMOT8Z3WUJ3V1X0FlhIoT1b/5JtHE3ki+xjtMvu1nn+t9A==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browser-resolve@2.0.0: + resolution: {integrity: sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==} + + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + + browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + + browserify-rsa@4.1.1: + resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==} + engines: {node: '>= 0.10'} + + browserify-sign@4.2.3: + resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} + engines: {node: '>= 0.12'} + + browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + + browserslist@4.24.0: + resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase@8.0.0: + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} + engines: {node: '>=16'} + + caniuse-lite@1.0.30001669: + resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + check-types@11.2.3: + resolution: {integrity: sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==} + + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + + cheerio@1.0.0: + resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} + engines: {node: '>=18.17'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + + circom_runtime@0.1.21: + resolution: {integrity: sha512-qTkud630B/GK8y76hnOaaS1aNuF6prfV0dTrkeRsiJKnlP1ryQbP2FWLgDOPqn6aKyaPlam+Z+DTbBhkEzh8dA==} + hasBin: true + + circomlibjs@0.1.7: + resolution: {integrity: sha512-GRAUoAlKAsiiTa+PA725G9RmEmJJRc8tRFxw/zKktUxlQISGznT4hH4ESvW8FNTsrGg/nNd06sGP/Wlx0LUHVg==} + + class-validator@0.14.1: + resolution: {integrity: sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + code-red@1.0.4: + resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@0.3.0: + resolution: {integrity: sha512-sz29j1bmSDfoAxKIEU6zwoIZXN6BrFbAMIhfYCNyiZXBDuU/aiHlN84lp/xDzL2ubyFhLDobHIlU1X70XRrMDA==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + color@0.11.4: + resolution: {integrity: sha512-Ajpjd8asqZ6EdxQeqGzU5WBhhTfJ/0cA4Wlbre7e5vXfmDSmda7Ov6jeKoru+b0vHcb1CqvuroTHp5zIWzhVMA==} + + colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + + comlink@4.4.1: + resolution: {integrity: sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + crypto-browserify@3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + devalue@5.1.1: + resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domain-browser@4.23.0: + resolution: {integrity: sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==} + engines: {node: '>=10'} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.41: + resolution: {integrity: sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==} + + elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + + elliptic@6.5.7: + resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encoding-japanese@2.1.0: + resolution: {integrity: sha512-58XySVxUgVlBikBTbQ8WdDxBDHIdXucB16LO5PBHR8t75D54wQrNo4cg+58+R1CtJfKnsVsvt9XlteRaR8xw1w==} + engines: {node: '>=8.10.0'} + + encoding-sniffer@0.2.0: + resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + + esbuild-runner@2.2.2: + resolution: {integrity: sha512-fRFVXcmYVmSmtYm2mL8RlUASt2TDkGh3uRcvHFOKNr/T58VrfVeKD9uT9nlgxk96u0LS0ehS/GY7Da/bXWKkhw==} + hasBin: true + peerDependencies: + esbuild: '*' + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escodegen@1.14.3: + resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} + engines: {node: '>=4.0'} + hasBin: true + + esm-env@1.0.0: + resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + + esprima@1.2.2: + resolution: {integrity: sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==} + engines: {node: '>=0.4.0'} + hasBin: true + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esrap@1.2.2: + resolution: {integrity: sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastfile@0.0.20: + resolution: {integrity: sha512-r5ZDbgImvVWCP0lA/cGNgQcZqR+aYdFx3u+CtJqUE510pBUVGMn4ulL/iRTI4tACTYsNJ736uzFxEBXesPAktA==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + ffjavascript@0.2.56: + resolution: {integrity: sha512-em6G5Lrj7ucIqj4TYEgyoHs/j99Urwwqa4+YxEVY2hggnpRimVj+noX5pZQTxI1pvtiekZI4rG65JBf0xraXrg==} + + ffjavascript@0.2.63: + resolution: {integrity: sha512-dBgdsfGks58b66JnUZeZpGxdMIDQ4QsD3VYlRJyFVrKQHb2kJy4R2gufx5oetrTxXPT+aEjg0dOvOLg1N0on4A==} + + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + focus-trap@7.6.0: + resolution: {integrity: sha512-1td0l3pMkWJLFipobUcGaf+5DTY4PLDDrcqoSaKP8ediO/CoWCCYk/fT/Y2A4e6TNB+Sh6clRJCjOPPnKoNHnQ==} + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + formsnap@1.0.1: + resolution: {integrity: sha512-TvU9CoLSiacW1c7wXhLiyVpyy/LBfG0CEFDbs3M3jrsxBSrkTpsuhbQ8JYKY3CNCmIhZlgxCH+Vqr7RBF9G53w==} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.1 + sveltekit-superforms: ^2.3.0 + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + + globby@10.0.1: + resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} + engines: {node: '>=8'} + + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + hash-base@3.0.4: + resolution: {integrity: sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==} + engines: {node: '>=4'} + + hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + hoopy@0.1.4: + resolution: {integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==} + engines: {node: '>= 6.0.0'} + + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + + https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-object@3.0.1: + resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} + engines: {node: '>=0.10.0'} + + is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isomorphic-timers-promises@1.0.1: + resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==} + engines: {node: '>=10'} + + isows@1.0.6: + resolution: {integrity: sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==} + peerDependencies: + ws: '*' + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + json-schema-to-ts@3.1.1: + resolution: {integrity: sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==} + engines: {node: '>=16'} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonpath@1.1.1: + resolution: {integrity: sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==} + + just-clone@6.2.0: + resolution: {integrity: sha512-1IynUYEc/HAwxhi3WDpIpxJbZpMCvvrrmZVqvj9EhpvbH8lls7HhdhiByjL7DkAaWlLIzpC0Xc/VPvy/UxLNjA==} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + ky@1.7.2: + resolution: {integrity: sha512-OzIvbHKKDpi60TnF9t7UUVAF1B4mcqc02z5PIvrm08Wyb+yOcz63GRvEuVxNT18a9E1SrNouhB4W2NNLeD7Ykg==} + engines: {node: '>=18'} + + levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + + lib-esm@0.4.2: + resolution: {integrity: sha512-VGqaEGuryUbT7FLGxXg46nrSzkhLzyk+JQjYoYEORH5UtdIu3yf6DCOqh65FOR3bWOHHGINQH/vR5YGGIFBgJw==} + + libbase64@1.3.0: + resolution: {integrity: sha512-GgOXd0Eo6phYgh0DJtjQ2tO8dc0IVINtZJeARPeiIJqge+HdsWSuaDTe8ztQ7j/cONByDZ3zeB325AHiv5O0dg==} + + libmime@5.3.5: + resolution: {integrity: sha512-nSlR1yRZ43L3cZCiWEw7ali3jY29Hz9CQQ96Oy+sSspYnIP5N54ucOPHqooBsXzwrX1pwn13VUE05q4WmzfaLg==} + + libphonenumber-js@1.11.12: + resolution: {integrity: sha512-QkJn9/D7zZ1ucvT++TQSvZuSA2xAWeUytU+DiEQwbPKLyrDpvbul2AFs1CGbRAPpSCCk47aRAb5DX5mmcayp4g==} + + libqp@2.1.0: + resolution: {integrity: sha512-O6O6/fsG5jiUVbvdgT7YX3xY3uIadR6wEZ7+vy9u7PKHAlSEB6blvC1o5pHBjgsi95Uo0aiBBdkyFecj6jtb7A==} + + lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + + locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + logplease@1.2.15: + resolution: {integrity: sha512-jLlHnlsPSJjpwUfcNyUxXCl33AYg2cHhIf9QhGL2T4iPT0XPB+xP1LRKFPgIg1M/sg9kAJvy94w9CzBNrfnstA==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lucide-svelte@0.441.0: + resolution: {integrity: sha512-lwckKpu4KNth7EBPWUdx7dvRaBrFC173JSdioN2WILol7nwFAPfvbGLeez8ZlnT31boj7pNT7hjvBz3ZJfmUbQ==} + peerDependencies: + svelte: ^3 || ^4 || ^5.0.0-next.42 + + magic-string@0.30.12: + resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + memoize-weak@1.0.2: + resolution: {integrity: sha512-gj39xkrjEw7nCn4nJ1M5ms6+MyMlyiGmttzsqAUsAKn6bYKwuTHh/AO3cKPF8IBrTIYTxb0wWXFs3E//Y8VoWQ==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + mersenne-twister@1.1.0: + resolution: {integrity: sha512-mUYWsMKNrm4lfygPkL3OfGzOPTR2DBlTkBNHM//F6hGp8cLThY897crAlk3/Jo17LEOOjQUrNAx6DvgO77QJkA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoassert@2.0.0: + resolution: {integrity: sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@5.0.7: + resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} + engines: {node: ^18 || >=20} + hasBin: true + + node-addon-api@3.2.1: + resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + node-gyp-build@4.8.2: + resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} + hasBin: true + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + node-stdlib-browser@1.2.1: + resolution: {integrity: sha512-dZezG3D88Lg22DwyjsDuUs7cCT/XGr8WwJgg/S3ZnkcWuPet2Tt/W1d2Eytb1Z73JpZv+XVCDI5TWv6UMRq0Gg==} + engines: {node: '>=10'} + + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + engines: {node: '>=14.16'} + + npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + + os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + + parse-asn1@5.1.7: + resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} + engines: {node: '>= 0.10'} + + parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} + + parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + + parse5@7.2.0: + resolution: {integrity: sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + + periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + + prettier-plugin-svelte@3.2.7: + resolution: {integrity: sha512-/Dswx/ea0lV34If1eDcG3nulQ63YNr5KPDfMsjbdtpSWOxKKJ7nAc2qlVuYwEvCr4raIuredNoR7K4JCkmTGaQ==} + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + property-expr@2.0.6: + resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} + + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + + public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + + punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + r1csfile@0.0.41: + resolution: {integrity: sha512-Q1WDF3u1vYeAwjHo4YuddkA8Aq0TulbKjmGm99+Atn13Lf5fTsMZBnBV9T741w8iSyPFG6Uh6sapQby77sREqA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} + + recast@0.23.9: + resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} + engines: {node: '>= 4'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + + rollup-plugin-copy@3.5.0: + resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} + engines: {node: '>=8.3'} + + rollup@4.24.0: + resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sander@0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + + sass@1.80.3: + resolution: {integrity: sha512-ptDWyVmDMVielpz/oWy3YP3nfs7LpJTHIJZboMVs8GEC9eUmtZTZhMHlTW98wY4aEorDfjN38+Wr/XjskFWcfA==} + engines: {node: '>=14.0.0'} + hasBin: true + + scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + server-only@0.0.1: + resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-cookie-parser@2.7.0: + resolution: {integrity: sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sirv@3.0.0: + resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} + engines: {node: '>=18'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + snarkjs@https://codeload.github.com/sampritipanda/snarkjs/tar.gz/fef81fc51d17a734637555c6edbd585ecda02d9e: + resolution: {tarball: https://codeload.github.com/sampritipanda/snarkjs/tar.gz/fef81fc51d17a734637555c6edbd585ecda02d9e} + version: 0.5.0 + hasBin: true + + sorcery@0.11.1: + resolution: {integrity: sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ==} + hasBin: true + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + static-eval@2.0.2: + resolution: {integrity: sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==} + + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + stream-http@3.2.0: + resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + superstruct@2.0.2: + resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} + engines: {node: '>=14.0.0'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svelte-check@3.8.6: + resolution: {integrity: sha512-ij0u4Lw/sOTREP13BdWZjiXD/BlHE6/e2e34XzmVmsp5IN4kVa3PWP65NM32JAgwjZlwBg/+JtiNV1MM8khu0Q==} + hasBin: true + peerDependencies: + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + + svelte-french-toast@1.2.0: + resolution: {integrity: sha512-5PW+6RFX3xQPbR44CngYAP1Sd9oCq9P2FOox4FZffzJuZI2mHOB7q5gJBVnOiLF5y3moVGZ7u2bYt7+yPAgcEQ==} + peerDependencies: + svelte: ^3.57.0 || ^4.0.0 + + svelte-hmr@0.16.0: + resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: ^3.19.0 || ^4.0.0 + + svelte-preprocess@5.1.4: + resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} + engines: {node: '>= 16.0.0'} + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true + + svelte-typed-context@https://codeload.github.com/KamenKolev/svelte-typed-context/tar.gz/02dc12b4a8fdfc7258ee25309685a04924d9eff5: + resolution: {tarball: https://codeload.github.com/KamenKolev/svelte-typed-context/tar.gz/02dc12b4a8fdfc7258ee25309685a04924d9eff5} + version: 1.0.1 + peerDependencies: + svelte: ^3.38.2 + + svelte-writable-derived@3.1.1: + resolution: {integrity: sha512-w4LR6/bYZEuCs7SGr+M54oipk/UQKtiMadyOhW0PTwAtJ/Ai12QS77sLngEcfBx2q4H8ZBQucc9ktSA5sUGZWw==} + peerDependencies: + svelte: ^3.2.1 || ^4.0.0-next.1 || ^5.0.0-next.94 + + svelte@4.2.19: + resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==} + engines: {node: '>=16'} + + svelte@5.0.0-next.144: + resolution: {integrity: sha512-akjtRBHzaLa1XdMv9tBGkXE5N2JaRc3gL+ZIctjc9Gew9DF7NxGTlxXq+HR9yUV7Lsg4o9ltMfkxz8H3K7piNQ==} + engines: {node: '>=18'} + + sveltekit-adapter-chrome-extension@2.0.1: + resolution: {integrity: sha512-I+jO05BYF86YZVm4pUKWUiNnBnwxEASP4+uwgUzKLTvr8qmyzZ2I5MFL4BILPcIz6ImP8h6wW2DwoOpI5qRDyA==} + peerDependencies: + '@sveltejs/adapter-static': ^3.0.1 + + sveltekit-superforms@2.19.0: + resolution: {integrity: sha512-WJmdYf8WpuDkl6zxdRP72R+wDefx1OhIQYKdsIQqNkFntNq0/BUrkMdUr1i7d/FbX0gS1A9GRflCx3WiYQlAXg==} + peerDependencies: + '@sveltejs/kit': 1.x || 2.x + svelte: 3.x || 4.x || >=5.0.0-next.51 + + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + tailwind-merge@2.5.4: + resolution: {integrity: sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==} + + tailwind-variants@0.2.1: + resolution: {integrity: sha512-2xmhAf4UIc3PijOUcJPA1LP4AbxhpcHuHM2C26xM0k81r0maAO6uoUSHl3APmvHZcY5cZCY/bYuJdfFa4eGoaw==} + engines: {node: '>=16.x', pnpm: '>=7.x'} + peerDependencies: + tailwindcss: '*' + + tailwindcss@3.4.14: + resolution: {integrity: sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==} + engines: {node: '>=14.0.0'} + hasBin: true + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + timers-browserify@2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + + tiny-case@1.0.3: + resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} + + tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toposort@2.0.2: + resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tryer@1.0.1: + resolution: {integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==} + + ts-algebra@2.0.0: + resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==} + + ts-deepmerge@7.0.1: + resolution: {integrity: sha512-JBFCmNenZdUCc+TRNCtXVM6N8y/nDQHAcpj5BlwXG/gnogjam1NunulB9ia68mnqYI446giMfpqeBFFkOleh+g==} + engines: {node: '>=14.13.1'} + + ts-essentials@10.0.2: + resolution: {integrity: sha512-Xwag0TULqriaugXqVdDiGZ5wuZpqABZlpwQ2Ho4GDyiu/R2Xjkp/9+zcFxL7uzeLl/QCPrflnvpVYyS3ouT7Zw==} + peerDependencies: + typescript: '>=4.5.0' + peerDependenciesMeta: + typescript: + optional: true + + ts-essentials@9.4.2: + resolution: {integrity: sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==} + peerDependencies: + typescript: '>=4.1.0' + peerDependenciesMeta: + typescript: + optional: true + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tslib@2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + + tslib@2.8.0: + resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} + + tty-browserify@0.0.1: + resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} + + type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + underscore@1.12.1: + resolution: {integrity: sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + undici@6.20.1: + resolution: {integrity: sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==} + engines: {node: '>=18.17'} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + valibot@0.31.1: + resolution: {integrity: sha512-2YYIhPrnVSz/gfT2/iXVTrSj92HwchCt9Cga/6hX4B26iCz9zkIsGTS0HjDYTZfTi1Un0X6aRvhBi1cfqs/i0Q==} + + valibot@0.35.0: + resolution: {integrity: sha512-+i2aCRkReTrd5KBN/dW2BrPOvFnU5LXTV2xjZnjnqUIO8YUx6P2+MgRrkwF2FhkexgyKq/NIZdPdknhHf5A/Ww==} + + validator@13.12.0: + resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} + engines: {node: '>= 0.10'} + + viem@2.21.32: + resolution: {integrity: sha512-2oXt5JNIb683oy7C8wuIJ/SeL3XtHVMEQpy1U2TA6WMnJQ4ScssRvyPwYLcaP6mKlrGXE/cR/V7ncWpvLUVPYQ==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + vite-plugin-kit-routes@0.6.11: + resolution: {integrity: sha512-W1WNQt6DNM03KD6s/Q0z1bgTNNVbRC+ML8dg1P3XRMUzqEc8mOOOJ2iPxDtj6JFsu/YP4tmbibKCA7R58qq6kA==} + engines: {node: ^16.14 || >=18} + + vite-plugin-node-polyfills@0.17.0: + resolution: {integrity: sha512-iPmPn7376e5u6QvoTSJa16hf5Q0DFwHFXJk2uYpsNlmI3JdPms7hWyh55o+OysJ5jo9J5XPhLC9sMOYifwFd1w==} + peerDependencies: + vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + + vite-plugin-resolve@2.5.2: + resolution: {integrity: sha512-8twv20M+KIMxkZzAoF1eAUxxxB56NxKdYjIJ309A/30lZ3GAqgiAeGFjVVlLLEpeAcbAwfl9p7jztsQEw7C3Jg==} + + vite-plugin-watch-and-run@1.7.1: + resolution: {integrity: sha512-knLbovXBUwVrm0q4+LcpIhqTAZRoWVv5m8xRn42dy8hrF3rgJ7ucxm1d99KecED87NZI7v5oH3Pc2sPDcwJKEQ==} + engines: {node: ^16.14 || >=18} + + vite@5.4.9: + resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitefu@0.2.5: + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + + vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + + wasmbuilder@0.0.16: + resolution: {integrity: sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA==} + + wasmcurves@0.2.0: + resolution: {integrity: sha512-3e2rbxdujOwaod657gxgmdhZNn+i1qKdHO3Y/bK+8E7bV8ttV/fu5FO4/WLBACF375cK0QDLOP+65Na63qYuWA==} + + wasmcurves@0.2.2: + resolution: {integrity: sha512-JRY908NkmKjFl4ytnTu5ED6AwPD+8VJ9oc94kdq7h5bIwbj0L4TDJ69mG+2aLs2SoCmGfqIesMWTEJjtYsoQXQ==} + + web-worker@1.2.0: + resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==} + + web-worker@1.3.0: + resolution: {integrity: sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==} + + webauthn-p256@0.0.10: + resolution: {integrity: sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@2.6.0: + resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} + engines: {node: '>= 14'} + hasBin: true + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yup@1.4.0: + resolution: {integrity: sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==} + + zimmerframe@1.1.2: + resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} + + zod-to-json-schema@3.23.3: + resolution: {integrity: sha512-TYWChTxKQbRJp5ST22o/Irt9KC5nj7CdBKYB/AosCRdj/wxEMvv4NNaj9XVUHDOIp53ZxArGhnw5HMZziPFjog==} + peerDependencies: + zod: ^3.23.3 + + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + +snapshots: + + '@adraffy/ens-normalize@1.11.0': {} + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@ark/schema@0.10.0': + dependencies: + '@ark/util': 0.10.0 + optional: true + + '@ark/util@0.10.0': + optional: true + + '@aztec/bb.js@0.47.1': + dependencies: + comlink: 4.4.1 + commander: 10.0.1 + debug: 4.3.7 + tslib: 2.8.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.25.7': {} + + '@babel/helper-validator-identifier@7.25.7': {} + + '@babel/parser@7.25.8': + dependencies: + '@babel/types': 7.25.8 + + '@babel/runtime@7.25.7': + dependencies: + regenerator-runtime: 0.14.1 + optional: true + + '@babel/types@7.25.8': + dependencies: + '@babel/helper-string-parser': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + to-fast-properties: 2.0.0 + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@ethersproject/abi@5.7.0': + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@ethersproject/abstract-provider@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + + '@ethersproject/abstract-signer@5.7.0': + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + + '@ethersproject/address@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 + + '@ethersproject/base64@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + + '@ethersproject/basex@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/properties': 5.7.0 + + '@ethersproject/bignumber@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + bn.js: 5.2.1 + + '@ethersproject/bytes@5.7.0': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/constants@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + + '@ethersproject/contracts@5.7.0': + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + + '@ethersproject/hash@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@ethersproject/hdnode@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + + '@ethersproject/json-wallets@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + + '@ethersproject/keccak256@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + js-sha3: 0.8.0 + + '@ethersproject/logger@5.7.0': {} + + '@ethersproject/networks@5.7.1': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/pbkdf2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/sha2': 5.7.0 + + '@ethersproject/properties@5.7.0': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/providers@5.7.2': + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + bech32: 1.1.4 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@ethersproject/random@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/rlp@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/sha2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + + '@ethersproject/signing-key@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + hash.js: 1.1.7 + + '@ethersproject/solidity@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@ethersproject/strings@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/transactions@5.7.0': + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + + '@ethersproject/units@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/wallet@5.7.0': + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + + '@ethersproject/web@5.7.1': + dependencies: + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@ethersproject/wordlists@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@exodus/schemasafe@1.3.0': + optional: true + + '@floating-ui/core@1.6.8': + dependencies: + '@floating-ui/utils': 0.2.8 + + '@floating-ui/dom@1.6.11': + dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 + + '@floating-ui/utils@0.2.8': {} + + '@gcornut/valibot-json-schema@0.31.0': + dependencies: + valibot: 0.31.1 + optionalDependencies: + '@types/json-schema': 7.0.15 + esbuild: 0.21.5 + esbuild-runner: 2.2.2(esbuild@0.21.5) + optional: true + + '@hapi/hoek@9.3.0': + optional: true + + '@hapi/topo@5.1.0': + dependencies: + '@hapi/hoek': 9.3.0 + optional: true + + '@iden3/bigarray@0.0.2': {} + + '@iden3/binfileutils@0.0.11': + dependencies: + fastfile: 0.0.20 + ffjavascript: 0.2.63 + + '@internationalized/date@3.5.6': + dependencies: + '@swc/helpers': 0.5.13 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@kitql/helpers@0.8.10': + dependencies: + esm-env: 1.0.0 + + '@kitql/internals@0.9.10': + dependencies: + '@babel/parser': 7.25.8 + '@kitql/helpers': 0.8.10 + recast: 0.23.9 + svelte: 4.2.19 + + '@mapbox/node-pre-gyp@1.0.11': + dependencies: + detect-libc: 2.0.3 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.6.3 + tar: 6.2.1 + transitivePeerDependencies: + - encoding + - supports-color + + '@melt-ui/svelte@0.76.2(svelte@5.0.0-next.144)': + dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/dom': 1.6.11 + '@internationalized/date': 3.5.6 + dequal: 2.0.3 + focus-trap: 7.6.0 + nanoid: 5.0.7 + svelte: 5.0.0-next.144 + + '@metamask/jazzicon@2.0.0': + dependencies: + color: 0.11.4 + mersenne-twister: 1.1.0 + + '@noble/curves@1.6.0': + dependencies: + '@noble/hashes': 1.5.0 + + '@noble/hashes@1.5.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@noir-lang/acvm_js@0.49.0': {} + + '@noir-lang/backend_barretenberg@0.33.0': + dependencies: + '@aztec/bb.js': 0.47.1 + '@noir-lang/types': 0.33.0 + fflate: 0.8.2 + transitivePeerDependencies: + - supports-color + + '@noir-lang/noir_js@0.33.0': + dependencies: + '@noir-lang/acvm_js': 0.49.0 + '@noir-lang/noirc_abi': 0.33.0 + '@noir-lang/types': 0.33.0 + + '@noir-lang/noir_wasm@0.33.0(patch_hash=ivzvyhvywcx2okfxsubqwitdjm)': + dependencies: + '@noir-lang/types': 0.33.0 + pako: 2.1.0 + + '@noir-lang/noirc_abi@0.33.0': + dependencies: + '@noir-lang/types': 0.33.0 + + '@noir-lang/types@0.33.0': {} + + '@parcel/watcher-android-arm64@2.4.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.4.1': + optional: true + + '@parcel/watcher-darwin-x64@2.4.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.4.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.4.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.4.1': + optional: true + + '@parcel/watcher-win32-arm64@2.4.1': + optional: true + + '@parcel/watcher-win32-ia32@2.4.1': + optional: true + + '@parcel/watcher-win32-x64@2.4.1': + optional: true + + '@parcel/watcher@2.4.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.4.1 + '@parcel/watcher-darwin-arm64': 2.4.1 + '@parcel/watcher-darwin-x64': 2.4.1 + '@parcel/watcher-freebsd-x64': 2.4.1 + '@parcel/watcher-linux-arm-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-musl': 2.4.1 + '@parcel/watcher-linux-x64-glibc': 2.4.1 + '@parcel/watcher-linux-x64-musl': 2.4.1 + '@parcel/watcher-win32-arm64': 2.4.1 + '@parcel/watcher-win32-ia32': 2.4.1 + '@parcel/watcher-win32-x64': 2.4.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@polka/url@1.0.0-next.28': {} + + '@poppinss/macroable@1.0.3': + optional: true + + '@rollup/plugin-inject@5.0.5(rollup@4.24.0)': + dependencies: + '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + estree-walker: 2.0.2 + magic-string: 0.30.12 + optionalDependencies: + rollup: 4.24.0 + + '@rollup/pluginutils@4.2.1': + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + + '@rollup/pluginutils@5.1.2(rollup@4.24.0)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.24.0 + + '@rollup/rollup-android-arm-eabi@4.24.0': + optional: true + + '@rollup/rollup-android-arm64@4.24.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.24.0': + optional: true + + '@rollup/rollup-darwin-x64@4.24.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.24.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.24.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.24.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.24.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.24.0': + optional: true + + '@scure/base@1.1.9': {} + + '@scure/bip32@1.5.0': + dependencies: + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.4.0': + dependencies: + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.9 + + '@shieldswap/email_account_utils_rs@0.3.2': {} + + '@sideway/address@4.1.5': + dependencies: + '@hapi/hoek': 9.3.0 + optional: true + + '@sideway/formula@3.0.1': + optional: true + + '@sideway/pinpoint@2.0.0': + optional: true + + '@sinclair/typebox@0.32.35': + optional: true + + '@sodaru/yup-to-json-schema@2.0.1': + optional: true + + '@sveltejs/adapter-static@3.0.5(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))': + dependencies: + '@sveltejs/kit': 2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)) + + '@sveltejs/adapter-vercel@5.4.5(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))': + dependencies: + '@sveltejs/kit': 2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)) + '@vercel/nft': 0.27.4 + esbuild: 0.21.5 + transitivePeerDependencies: + - encoding + - supports-color + + '@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3))': + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)) + '@types/cookie': 0.6.0 + cookie: 0.6.0 + devalue: 5.1.1 + esm-env: 1.0.0 + import-meta-resolve: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.12 + mrmime: 2.0.0 + sade: 1.8.1 + set-cookie-parser: 2.7.0 + sirv: 3.0.0 + svelte: 5.0.0-next.144 + tiny-glob: 0.2.9 + vite: 5.4.9(@types/node@22.7.7)(sass@1.80.3) + + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3))': + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)) + debug: 4.3.7 + svelte: 5.0.0-next.144 + vite: 5.4.9(@types/node@22.7.7)(sass@1.80.3) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)) + debug: 4.3.7 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.12 + svelte: 5.0.0-next.144 + svelte-hmr: 0.16.0(svelte@5.0.0-next.144) + vite: 5.4.9(@types/node@22.7.7)(sass@1.80.3) + vitefu: 0.2.5(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)) + transitivePeerDependencies: + - supports-color + + '@swc/helpers@0.5.13': + dependencies: + tslib: 2.8.0 + + '@tailwindcss/typography@0.5.15(tailwindcss@3.4.14)': + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.14 + + '@tanstack/query-core@5.59.13': {} + + '@tanstack/svelte-query@5.59.13(svelte@5.0.0-next.144)': + dependencies: + '@tanstack/query-core': 5.59.13 + svelte: 5.0.0-next.144 + + '@types/cookie@0.6.0': {} + + '@types/estree@1.0.6': {} + + '@types/fs-extra@8.1.5': + dependencies: + '@types/node': 22.7.7 + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 22.7.7 + + '@types/json-schema@7.0.15': + optional: true + + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.12 + + '@types/lodash@4.17.12': {} + + '@types/minimatch@5.1.2': {} + + '@types/ms@0.7.34': {} + + '@types/node-forge@1.3.11': + dependencies: + '@types/node': 22.7.7 + + '@types/node@22.7.7': + dependencies: + undici-types: 6.19.8 + + '@types/pug@2.0.10': {} + + '@types/validator@13.12.2': + optional: true + + '@typeschema/class-validator@0.2.0(@types/json-schema@7.0.15)(class-validator@0.14.1)': + dependencies: + '@typeschema/core': 0.14.0(@types/json-schema@7.0.15) + optionalDependencies: + class-validator: 0.14.1 + transitivePeerDependencies: + - '@types/json-schema' + optional: true + + '@typeschema/core@0.14.0(@types/json-schema@7.0.15)': + optionalDependencies: + '@types/json-schema': 7.0.15 + optional: true + + '@vercel/analytics@1.3.1': + dependencies: + server-only: 0.0.1 + + '@vercel/nft@0.27.4': + dependencies: + '@mapbox/node-pre-gyp': 1.0.11 + '@rollup/pluginutils': 4.2.1 + acorn: 8.13.0 + acorn-import-attributes: 1.9.5(acorn@8.13.0) + async-sema: 3.1.1 + bindings: 1.5.0 + estree-walker: 2.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + node-gyp-build: 4.8.2 + resolve-from: 5.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + '@vinejs/compiler@2.5.0': + optional: true + + '@vinejs/vine@1.8.0': + dependencies: + '@poppinss/macroable': 1.0.3 + '@types/validator': 13.12.2 + '@vinejs/compiler': 2.5.0 + camelcase: 8.0.0 + dayjs: 1.11.13 + dlv: 1.1.3 + normalize-url: 8.0.1 + validator: 13.12.0 + optional: true + + '@zk-email/helpers@6.1.5': + dependencies: + addressparser: 1.0.1 + atob: 2.1.2 + circomlibjs: 0.1.7 + libmime: 5.3.5 + localforage: 1.10.0 + node-forge: 1.3.1 + pako: 2.1.0 + psl: 1.9.0 + snarkjs: https://codeload.github.com/sampritipanda/snarkjs/tar.gz/fef81fc51d17a734637555c6edbd585ecda02d9e + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + abbrev@1.1.1: {} + + abitype@1.0.6(typescript@5.6.3)(zod@3.23.8): + optionalDependencies: + typescript: 5.6.3 + zod: 3.23.8 + + acorn-import-attributes@1.9.5(acorn@8.13.0): + dependencies: + acorn: 8.13.0 + + acorn-typescript@1.4.13(acorn@8.13.0): + dependencies: + acorn: 8.13.0 + + acorn@8.13.0: {} + + addressparser@1.0.1: {} + + aes-js@3.0.0: {} + + agent-base@6.0.2: + dependencies: + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + aproba@2.0.0: {} + + are-we-there-yet@2.0.0: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + + arg@5.0.2: {} + + aria-query@5.3.2: {} + + arktype@2.0.0-rc.8: + dependencies: + '@ark/schema': 0.10.0 + '@ark/util': 0.10.0 + optional: true + + array-union@2.1.0: {} + + asn1.js@4.10.1: + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + assert@2.1.0: + dependencies: + call-bind: 1.0.7 + is-nan: 1.3.2 + object-is: 1.1.6 + object.assign: 4.1.5 + util: 0.12.5 + + ast-types@0.16.1: + dependencies: + tslib: 2.8.0 + + async-sema@3.1.1: {} + + async@3.2.6: {} + + atob@2.1.2: {} + + autoprefixer@10.4.20(postcss@8.4.47): + dependencies: + browserslist: 4.24.0 + caniuse-lite: 1.0.30001669 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.4.47 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + axobject-query@4.1.0: {} + + b4a@1.6.7: {} + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + bech32@1.1.4: {} + + bfj@7.1.0: + dependencies: + bluebird: 3.7.2 + check-types: 11.2.3 + hoopy: 0.1.4 + jsonpath: 1.1.1 + tryer: 1.0.1 + + binary-extensions@2.3.0: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + bits-ui@0.21.16(svelte@5.0.0-next.144): + dependencies: + '@internationalized/date': 3.5.6 + '@melt-ui/svelte': 0.76.2(svelte@5.0.0-next.144) + nanoid: 5.0.7 + svelte: 5.0.0-next.144 + + blake-hash@2.0.0: + dependencies: + node-addon-api: 3.2.1 + node-gyp-build: 4.8.2 + readable-stream: 3.6.2 + + blake2b-wasm@2.4.0: + dependencies: + b4a: 1.6.7 + nanoassert: 2.0.0 + + blake2b@2.1.4: + dependencies: + blake2b-wasm: 2.4.0 + nanoassert: 2.0.0 + + bluebird@3.7.2: {} + + bn.js@4.12.0: {} + + bn.js@5.2.1: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + brorand@1.1.0: {} + + browser-resolve@2.0.0: + dependencies: + resolve: 1.22.8 + + browserify-aes@1.2.0: + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-cipher@1.0.1: + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + + browserify-des@1.0.2: + dependencies: + cipher-base: 1.0.4 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-rsa@4.1.1: + dependencies: + bn.js: 5.2.1 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + browserify-sign@4.2.3: + dependencies: + bn.js: 5.2.1 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.5.7 + hash-base: 3.0.4 + inherits: 2.0.4 + parse-asn1: 5.1.7 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + + browserify-zlib@0.2.0: + dependencies: + pako: 1.0.11 + + browserslist@4.24.0: + dependencies: + caniuse-lite: 1.0.30001669 + electron-to-chromium: 1.5.41 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.0) + + buffer-crc32@1.0.0: {} + + buffer-from@1.1.2: + optional: true + + buffer-xor@1.0.3: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtin-status-codes@3.0.0: {} + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + camelcase-css@2.0.1: {} + + camelcase@8.0.0: + optional: true + + caniuse-lite@1.0.30001669: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + check-types@11.2.3: {} + + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + + cheerio@1.0.0: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + encoding-sniffer: 0.2.0 + htmlparser2: 9.1.0 + parse5: 7.2.0 + parse5-htmlparser2-tree-adapter: 7.1.0 + parse5-parser-stream: 7.1.2 + undici: 6.20.1 + whatwg-mimetype: 4.0.0 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@4.0.1: + dependencies: + readdirp: 4.0.2 + + chownr@2.0.0: {} + + cipher-base@1.0.4: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + circom_runtime@0.1.21: + dependencies: + ffjavascript: 0.2.56 + + circomlibjs@0.1.7: + dependencies: + blake-hash: 2.0.0 + blake2b: 2.1.4 + ethers: 5.7.2 + ffjavascript: 0.2.63 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + class-validator@0.14.1: + dependencies: + '@types/validator': 13.12.2 + libphonenumber-js: 1.11.12 + validator: 13.12.0 + optional: true + + clone@1.0.4: {} + + clsx@2.1.1: {} + + code-red@1.0.4: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + '@types/estree': 1.0.6 + acorn: 8.13.0 + estree-walker: 3.0.3 + periscopic: 3.1.0 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-string@0.3.0: + dependencies: + color-name: 1.1.4 + + color-support@1.1.3: {} + + color@0.11.4: + dependencies: + clone: 1.0.4 + color-convert: 1.9.3 + color-string: 0.3.0 + + colorette@1.4.0: {} + + comlink@4.4.1: {} + + commander@10.0.1: {} + + commander@4.1.1: {} + + concat-map@0.0.1: {} + + console-browserify@1.2.0: {} + + console-control-strings@1.1.0: {} + + constants-browserify@1.0.0: {} + + cookie@0.6.0: {} + + core-util-is@1.0.3: {} + + create-ecdh@4.0.4: + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.7 + + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + create-require@1.1.1: {} + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-browserify@3.12.0: + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.3 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.2 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + dayjs@1.11.13: + optional: true + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delegates@1.0.0: {} + + dequal@2.0.3: {} + + des.js@1.1.0: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + detect-indent@6.1.0: {} + + detect-libc@1.0.3: {} + + detect-libc@2.0.3: {} + + devalue@5.1.1: {} + + didyoumean@1.2.2: {} + + diffie-hellman@5.0.3: + dependencies: + bn.js: 4.12.0 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dlv@1.1.3: {} + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domain-browser@4.23.0: {} + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + eastasianwidth@0.2.0: {} + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.41: {} + + elliptic@6.5.4: + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + elliptic@6.5.7: + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encoding-japanese@2.1.0: {} + + encoding-sniffer@0.2.0: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + + entities@4.5.0: {} + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es6-promise@3.3.1: {} + + esbuild-runner@2.2.2(esbuild@0.21.5): + dependencies: + esbuild: 0.21.5 + source-map-support: 0.5.21 + tslib: 2.4.0 + optional: true + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escalade@3.2.0: {} + + escodegen@1.14.3: + dependencies: + esprima: 4.0.1 + estraverse: 4.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + + esm-env@1.0.0: {} + + esprima@1.2.2: {} + + esprima@4.0.1: {} + + esrap@1.2.2: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + '@types/estree': 1.0.6 + + estraverse@4.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + esutils@2.0.3: {} + + ethers@5.7.2: + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/units': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@ethersproject/web': 5.7.1 + '@ethersproject/wordlists': 5.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + events@3.3.0: {} + + evp_bytestokey@1.0.3: + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-levenshtein@2.0.6: {} + + fastfile@0.0.20: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + ffjavascript@0.2.56: + dependencies: + wasmbuilder: 0.0.16 + wasmcurves: 0.2.0 + web-worker: 1.3.0 + + ffjavascript@0.2.63: + dependencies: + wasmbuilder: 0.0.16 + wasmcurves: 0.2.2 + web-worker: 1.2.0 + + fflate@0.8.2: {} + + file-uri-to-path@1.0.0: {} + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + focus-trap@7.6.0: + dependencies: + tabbable: 6.2.0 + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + formsnap@1.0.1(svelte@5.0.0-next.144)(sveltekit-superforms@2.19.0(patch_hash=mov3azv4vigdt5tdhn5vfb4b7q)(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(@types/json-schema@7.0.15)(svelte@5.0.0-next.144)): + dependencies: + nanoid: 5.0.7 + svelte: 5.0.0-next.144 + sveltekit-superforms: 2.19.0(patch_hash=mov3azv4vigdt5tdhn5vfb4b7q)(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(@types/json-schema@7.0.15)(svelte@5.0.0-next.144) + + fraction.js@4.3.7: {} + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gauge@3.0.2: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globalyzer@0.1.0: {} + + globby@10.0.1: + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + glob: 7.2.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globrex@0.1.2: {} + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + + has-unicode@2.0.1: {} + + hash-base@3.0.4: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + hash-base@3.1.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + hoopy@0.1.4: {} + + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + + https-browserify@1.0.0: {} + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + immediate@3.0.6: {} + + immutable@4.3.7: {} + + import-meta-resolve@4.1.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + is-arguments@1.1.1: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-callable@1.2.7: {} + + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-nan@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + + is-number@7.0.0: {} + + is-plain-object@3.0.1: {} + + is-reference@3.0.2: + dependencies: + '@types/estree': 1.0.6 + + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + isomorphic-timers-promises@1.0.1: {} + + isows@1.0.6(ws@8.18.0): + dependencies: + ws: 8.18.0 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jiti@1.21.6: {} + + joi@17.13.3: + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + optional: true + + js-sha3@0.8.0: {} + + json-schema-to-ts@3.1.1: + dependencies: + '@babel/runtime': 7.25.7 + ts-algebra: 2.0.0 + optional: true + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonpath@1.1.1: + dependencies: + esprima: 1.2.2 + static-eval: 2.0.2 + underscore: 1.12.1 + + just-clone@6.2.0: {} + + kleur@4.1.5: {} + + ky@1.7.2: {} + + levn@0.3.0: + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + + lib-esm@0.4.2: {} + + libbase64@1.3.0: {} + + libmime@5.3.5: + dependencies: + encoding-japanese: 2.1.0 + iconv-lite: 0.6.3 + libbase64: 1.3.0 + libqp: 2.1.0 + + libphonenumber-js@1.11.12: + optional: true + + libqp@2.1.0: {} + + lie@3.1.1: + dependencies: + immediate: 3.0.6 + + lilconfig@2.1.0: {} + + lilconfig@3.1.2: {} + + lines-and-columns@1.2.4: {} + + localforage@1.10.0: + dependencies: + lie: 3.1.1 + + locate-character@3.0.0: {} + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash.castarray@4.4.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.merge@4.6.2: {} + + logplease@1.2.15: {} + + lru-cache@10.4.3: {} + + lucide-svelte@0.441.0(svelte@5.0.0-next.144): + dependencies: + svelte: 5.0.0-next.144 + + magic-string@0.30.12: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + md5.js@1.3.5: + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + mdn-data@2.0.30: {} + + memoize-weak@1.0.2: {} + + merge2@1.4.1: {} + + mersenne-twister@1.1.0: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + miller-rabin@4.0.1: + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + + min-indent@1.0.1: {} + + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@1.0.4: {} + + mri@1.2.0: {} + + mrmime@2.0.0: {} + + ms@2.1.3: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoassert@2.0.0: {} + + nanoid@3.3.7: {} + + nanoid@5.0.7: {} + + node-addon-api@3.2.1: {} + + node-addon-api@7.1.1: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-forge@1.3.1: {} + + node-gyp-build@4.8.2: {} + + node-releases@2.0.18: {} + + node-stdlib-browser@1.2.1: + dependencies: + assert: 2.1.0 + browser-resolve: 2.0.0 + browserify-zlib: 0.2.0 + buffer: 5.7.1 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + create-require: 1.1.1 + crypto-browserify: 3.12.0 + domain-browser: 4.23.0 + events: 3.3.0 + https-browserify: 1.0.0 + isomorphic-timers-promises: 1.0.1 + os-browserify: 0.3.0 + path-browserify: 1.0.1 + pkg-dir: 5.0.0 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 3.6.2 + stream-browserify: 3.0.0 + stream-http: 3.2.0 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.1 + url: 0.11.4 + util: 0.12.5 + vm-browserify: 1.1.2 + + nopt@5.0.0: + dependencies: + abbrev: 1.1.1 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + normalize-url@8.0.1: + optional: true + + npmlog@5.0.1: + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.2: {} + + object-is@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + + object-keys@1.1.1: {} + + object.assign@4.1.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + optionator@0.8.3: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + + os-browserify@0.3.0: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + package-json-from-dist@1.0.1: {} + + pako@1.0.11: {} + + pako@2.1.0: {} + + parse-asn1@5.1.7: + dependencies: + asn1.js: 4.10.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + hash-base: 3.0.4 + pbkdf2: 3.1.2 + safe-buffer: 5.2.1 + + parse5-htmlparser2-tree-adapter@7.1.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.2.0 + + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.2.0 + + parse5@7.2.0: + dependencies: + entities: 4.5.0 + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-type@4.0.0: {} + + pbkdf2@3.1.2: + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + periscopic@3.1.0: + dependencies: + '@types/estree': 1.0.6 + estree-walker: 3.0.3 + is-reference: 3.0.2 + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pify@2.3.0: {} + + pirates@4.0.6: {} + + pkg-dir@5.0.0: + dependencies: + find-up: 5.0.0 + + possible-typed-array-names@1.0.0: {} + + postcss-import@15.1.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-js@4.0.1(postcss@8.4.47): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.47 + + postcss-load-config@4.0.2(postcss@8.4.47): + dependencies: + lilconfig: 3.1.2 + yaml: 2.6.0 + optionalDependencies: + postcss: 8.4.47 + + postcss-nested@6.2.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.0.10: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.1.2: {} + + prettier-plugin-svelte@3.2.7(prettier@3.3.3)(svelte@5.0.0-next.144): + dependencies: + prettier: 3.3.3 + svelte: 5.0.0-next.144 + + prettier@3.3.3: {} + + process-nextick-args@2.0.1: {} + + process@0.11.10: {} + + property-expr@2.0.6: + optional: true + + psl@1.9.0: {} + + public-encrypt@4.0.3: + dependencies: + bn.js: 4.12.0 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + parse-asn1: 5.1.7 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + punycode@1.4.1: {} + + qs@6.13.0: + dependencies: + side-channel: 1.0.6 + + querystring-es3@0.2.1: {} + + queue-microtask@1.2.3: {} + + r1csfile@0.0.41: + dependencies: + '@iden3/bigarray': 0.0.2 + '@iden3/binfileutils': 0.0.11 + fastfile: 0.0.20 + ffjavascript: 0.2.56 + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + randomfill@1.0.4: + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.0.2: {} + + recast@0.23.9: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.0 + + regenerator-runtime@0.14.1: + optional: true + + resolve-from@5.0.0: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.0.4: {} + + rimraf@2.7.1: + dependencies: + glob: 7.2.3 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + ripemd160@2.0.2: + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + + rollup-plugin-copy@3.5.0: + dependencies: + '@types/fs-extra': 8.1.5 + colorette: 1.4.0 + fs-extra: 8.1.0 + globby: 10.0.1 + is-plain-object: 3.0.1 + + rollup@4.24.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.24.0 + '@rollup/rollup-android-arm64': 4.24.0 + '@rollup/rollup-darwin-arm64': 4.24.0 + '@rollup/rollup-darwin-x64': 4.24.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 + '@rollup/rollup-linux-arm-musleabihf': 4.24.0 + '@rollup/rollup-linux-arm64-gnu': 4.24.0 + '@rollup/rollup-linux-arm64-musl': 4.24.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 + '@rollup/rollup-linux-riscv64-gnu': 4.24.0 + '@rollup/rollup-linux-s390x-gnu': 4.24.0 + '@rollup/rollup-linux-x64-gnu': 4.24.0 + '@rollup/rollup-linux-x64-musl': 4.24.0 + '@rollup/rollup-win32-arm64-msvc': 4.24.0 + '@rollup/rollup-win32-ia32-msvc': 4.24.0 + '@rollup/rollup-win32-x64-msvc': 4.24.0 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + sade@1.8.1: + dependencies: + mri: 1.2.0 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sander@0.5.1: + dependencies: + es6-promise: 3.3.1 + graceful-fs: 4.2.11 + mkdirp: 0.5.6 + rimraf: 2.7.1 + + sass@1.80.3: + dependencies: + '@parcel/watcher': 2.4.1 + chokidar: 4.0.1 + immutable: 4.3.7 + source-map-js: 1.2.1 + + scrypt-js@3.0.1: {} + + semver@6.3.1: {} + + semver@7.6.3: {} + + server-only@0.0.1: {} + + set-blocking@2.0.0: {} + + set-cookie-parser@2.7.0: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + setimmediate@1.0.5: {} + + sha.js@2.4.11: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sirv@3.0.0: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + + slash@3.0.0: {} + + snarkjs@https://codeload.github.com/sampritipanda/snarkjs/tar.gz/fef81fc51d17a734637555c6edbd585ecda02d9e: + dependencies: + '@iden3/binfileutils': 0.0.11 + bfj: 7.1.0 + blake2b-wasm: 2.4.0 + circom_runtime: 0.1.21 + ejs: 3.1.10 + fastfile: 0.0.20 + ffjavascript: 0.2.56 + js-sha3: 0.8.0 + localforage: 1.10.0 + logplease: 1.2.15 + r1csfile: 0.0.41 + + sorcery@0.11.1: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + buffer-crc32: 1.0.0 + minimist: 1.2.8 + sander: 0.5.1 + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + optional: true + + source-map@0.6.1: {} + + static-eval@2.0.2: + dependencies: + escodegen: 1.14.3 + + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + + stream-http@3.2.0: + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + xtend: 4.0.2 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + superstruct@2.0.2: + optional: true + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svelte-check@3.8.6(postcss-load-config@4.0.2(postcss@8.4.47))(postcss@8.4.47)(sass@1.80.3)(svelte@5.0.0-next.144): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + chokidar: 3.6.0 + picocolors: 1.1.1 + sade: 1.8.1 + svelte: 5.0.0-next.144 + svelte-preprocess: 5.1.4(postcss-load-config@4.0.2(postcss@8.4.47))(postcss@8.4.47)(sass@1.80.3)(svelte@5.0.0-next.144)(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + + svelte-french-toast@1.2.0(svelte@5.0.0-next.144): + dependencies: + svelte: 5.0.0-next.144 + svelte-writable-derived: 3.1.1(svelte@5.0.0-next.144) + + svelte-hmr@0.16.0(svelte@5.0.0-next.144): + dependencies: + svelte: 5.0.0-next.144 + + svelte-preprocess@5.1.4(postcss-load-config@4.0.2(postcss@8.4.47))(postcss@8.4.47)(sass@1.80.3)(svelte@5.0.0-next.144)(typescript@5.6.3): + dependencies: + '@types/pug': 2.0.10 + detect-indent: 6.1.0 + magic-string: 0.30.12 + sorcery: 0.11.1 + strip-indent: 3.0.0 + svelte: 5.0.0-next.144 + optionalDependencies: + postcss: 8.4.47 + postcss-load-config: 4.0.2(postcss@8.4.47) + sass: 1.80.3 + typescript: 5.6.3 + + svelte-typed-context@https://codeload.github.com/KamenKolev/svelte-typed-context/tar.gz/02dc12b4a8fdfc7258ee25309685a04924d9eff5(svelte@5.0.0-next.144): + dependencies: + svelte: 5.0.0-next.144 + + svelte-writable-derived@3.1.1(svelte@5.0.0-next.144): + dependencies: + svelte: 5.0.0-next.144 + + svelte@4.2.19: + dependencies: + '@ampproject/remapping': 2.3.0 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + '@types/estree': 1.0.6 + acorn: 8.13.0 + aria-query: 5.3.2 + axobject-query: 4.1.0 + code-red: 1.0.4 + css-tree: 2.3.1 + estree-walker: 3.0.3 + is-reference: 3.0.2 + locate-character: 3.0.0 + magic-string: 0.30.12 + periscopic: 3.1.0 + + svelte@5.0.0-next.144: + dependencies: + '@ampproject/remapping': 2.3.0 + '@jridgewell/sourcemap-codec': 1.5.0 + '@types/estree': 1.0.6 + acorn: 8.13.0 + acorn-typescript: 1.4.13(acorn@8.13.0) + aria-query: 5.3.2 + axobject-query: 4.1.0 + esm-env: 1.0.0 + esrap: 1.2.2 + is-reference: 3.0.2 + locate-character: 3.0.0 + magic-string: 0.30.12 + zimmerframe: 1.1.2 + + sveltekit-adapter-chrome-extension@2.0.1(@sveltejs/adapter-static@3.0.5(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))): + dependencies: + '@sveltejs/adapter-static': 3.0.5(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3))) + cheerio: 1.0.0 + tiny-glob: 0.2.9 + + sveltekit-superforms@2.19.0(patch_hash=mov3azv4vigdt5tdhn5vfb4b7q)(@sveltejs/kit@2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(@types/json-schema@7.0.15)(svelte@5.0.0-next.144): + dependencies: + '@sveltejs/kit': 2.7.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)))(svelte@5.0.0-next.144)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)) + devalue: 5.1.1 + just-clone: 6.2.0 + memoize-weak: 1.0.2 + svelte: 5.0.0-next.144 + ts-deepmerge: 7.0.1 + optionalDependencies: + '@exodus/schemasafe': 1.3.0 + '@gcornut/valibot-json-schema': 0.31.0 + '@sinclair/typebox': 0.32.35 + '@sodaru/yup-to-json-schema': 2.0.1 + '@typeschema/class-validator': 0.2.0(@types/json-schema@7.0.15)(class-validator@0.14.1) + '@vinejs/vine': 1.8.0 + arktype: 2.0.0-rc.8 + class-validator: 0.14.1 + joi: 17.13.3 + json-schema-to-ts: 3.1.1 + superstruct: 2.0.2 + valibot: 0.35.0 + yup: 1.4.0 + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - '@types/json-schema' + + tabbable@6.2.0: {} + + tailwind-merge@2.5.4: {} + + tailwind-variants@0.2.1(tailwindcss@3.4.14): + dependencies: + tailwind-merge: 2.5.4 + tailwindcss: 3.4.14 + + tailwindcss@3.4.14: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47) + postcss-nested: 6.2.0(postcss@8.4.47) + postcss-selector-parser: 6.1.2 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + timers-browserify@2.0.12: + dependencies: + setimmediate: 1.0.5 + + tiny-case@1.0.3: + optional: true + + tiny-glob@0.2.9: + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + + tiny-invariant@1.3.3: {} + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toposort@2.0.2: + optional: true + + totalist@3.0.1: {} + + tr46@0.0.3: {} + + tryer@1.0.1: {} + + ts-algebra@2.0.0: + optional: true + + ts-deepmerge@7.0.1: {} + + ts-essentials@10.0.2(typescript@5.6.3): + optionalDependencies: + typescript: 5.6.3 + + ts-essentials@9.4.2(typescript@5.6.3): + optionalDependencies: + typescript: 5.6.3 + + ts-interface-checker@0.1.13: {} + + tslib@2.4.0: + optional: true + + tslib@2.8.0: {} + + tty-browserify@0.0.1: {} + + type-check@0.3.2: + dependencies: + prelude-ls: 1.1.2 + + type-fest@2.19.0: + optional: true + + typescript@5.6.3: {} + + ufo@1.5.4: {} + + underscore@1.12.1: {} + + undici-types@6.19.8: {} + + undici@6.20.1: {} + + universalify@0.1.2: {} + + update-browserslist-db@1.1.1(browserslist@4.24.0): + dependencies: + browserslist: 4.24.0 + escalade: 3.2.0 + picocolors: 1.1.1 + + url@0.11.4: + dependencies: + punycode: 1.4.1 + qs: 6.13.0 + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + + valibot@0.31.1: + optional: true + + valibot@0.35.0: + optional: true + + validator@13.12.0: + optional: true + + viem@2.21.32(typescript@5.6.3)(zod@3.23.8): + dependencies: + '@adraffy/ens-normalize': 1.11.0 + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + '@scure/bip32': 1.5.0 + '@scure/bip39': 1.4.0 + abitype: 1.0.6(typescript@5.6.3)(zod@3.23.8) + isows: 1.0.6(ws@8.18.0) + webauthn-p256: 0.0.10 + ws: 8.18.0 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + vite-plugin-kit-routes@0.6.11: + dependencies: + '@babel/parser': 7.25.8 + '@kitql/helpers': 0.8.10 + '@kitql/internals': 0.9.10 + recast: 0.23.9 + vite-plugin-watch-and-run: 1.7.1 + + vite-plugin-node-polyfills@0.17.0(rollup@4.24.0)(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)): + dependencies: + '@rollup/plugin-inject': 5.0.5(rollup@4.24.0) + buffer-polyfill: buffer@6.0.3 + node-stdlib-browser: 1.2.1 + process: 0.11.10 + vite: 5.4.9(@types/node@22.7.7)(sass@1.80.3) + transitivePeerDependencies: + - rollup + + vite-plugin-resolve@2.5.2: + dependencies: + lib-esm: 0.4.2 + + vite-plugin-watch-and-run@1.7.1: + dependencies: + '@kitql/helpers': 0.8.10 + micromatch: 4.0.8 + + vite@5.4.9(@types/node@22.7.7)(sass@1.80.3): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.24.0 + optionalDependencies: + '@types/node': 22.7.7 + fsevents: 2.3.3 + sass: 1.80.3 + + vitefu@0.2.5(vite@5.4.9(@types/node@22.7.7)(sass@1.80.3)): + optionalDependencies: + vite: 5.4.9(@types/node@22.7.7)(sass@1.80.3) + + vm-browserify@1.1.2: {} + + wasmbuilder@0.0.16: {} + + wasmcurves@0.2.0: + dependencies: + wasmbuilder: 0.0.16 + + wasmcurves@0.2.2: + dependencies: + wasmbuilder: 0.0.16 + + web-worker@1.2.0: {} + + web-worker@1.3.0: {} + + webauthn-p256@0.0.10: + dependencies: + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 + + webidl-conversions@3.0.1: {} + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@4.0.0: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + word-wrap@1.2.5: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + ws@7.4.6: {} + + ws@8.18.0: {} + + xtend@4.0.2: {} + + yallist@4.0.0: {} + + yaml@2.6.0: {} + + yocto-queue@0.1.0: {} + + yup@1.4.0: + dependencies: + property-expr: 2.0.6 + tiny-case: 1.0.3 + toposort: 2.0.2 + type-fest: 2.19.0 + optional: true + + zimmerframe@1.1.2: {} + + zod-to-json-schema@3.23.3(zod@3.23.8): + dependencies: + zod: 3.23.8 + optional: true + + zod@3.23.8: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..e9b0dad --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +packages: + - 'apps/*' + - 'packages/*' diff --git a/src/body_hash.nr b/src/body_hash.nr deleted file mode 100644 index 5276dbc..0000000 --- a/src/body_hash.nr +++ /dev/null @@ -1,32 +0,0 @@ -global BODY_HASH_PREFIX = "bh=".as_bytes(); -global BODY_HASH_END_MARKER = ";".as_bytes()[0]; -global BODY_HASH_BASE64_LEN = 44; - -pub fn body_hash_from_header(headers: [u8; HeadersLen]) -> [u8; 32] { - let body_hash_position = locate_body_hash(headers); - - // verify that it is the body hash parameter indeed - let body_hash_prefix_position = body_hash_position - BODY_HASH_PREFIX.len(); - for i in 0..BODY_HASH_PREFIX.len() { - assert(headers[body_hash_prefix_position + i] == BODY_HASH_PREFIX[i], "body hash prefix mismatch"); - } - - assert(headers[body_hash_position + BODY_HASH_BASE64_LEN] == BODY_HASH_END_MARKER, "body hash end marker mismatch"); - - let mut body_hash_base64 = [0 as u8; BODY_HASH_BASE64_LEN]; - for i in 0..BODY_HASH_BASE64_LEN { - body_hash_base64[i] = headers[body_hash_position + i]; - } - - // noir team switched it up. encode = decode - noir_base64::base64_encode(body_hash_base64) -} - -unconstrained fn locate_body_hash(headers: [u8; N]) -> u32 { - // we don't care about the sizes here because it's unconstrained - let needle: string_search::SubString32 = string_search::SubString::new(BODY_HASH_PREFIX, BODY_HASH_PREFIX.len()); - let haystack: string_search::StringBody16384 = string_search::StringBody::new(headers, headers.len()); - let (result, match_position) = haystack.substring_match(needle); - assert(result, "body hash not found"); - match_position + BODY_HASH_PREFIX.len() -} diff --git a/src/lib.nr b/src/lib.nr deleted file mode 100644 index ebca7fd..0000000 --- a/src/lib.nr +++ /dev/null @@ -1,61 +0,0 @@ -mod reveal_string; -use reveal_string::RevealStringPart; -mod body_hash; - -use noir_rsa::bignum::BigNum; -use noir_rsa::bignum::runtime_bignum::BigNumInstance; -use noir_rsa::bignum::fields::Params2048; -use noir_rsa::RSA; - -global PUBKEY_LIMBS_LEN: u32 = 18; -global SIGNATURE_LIMBS_LEN: u32 = 18; - -type BN2048 = BigNum<18, Params2048>; -type RSA2048 = RSA, 256>; - -global rsa: RSA2048 = RSA {}; - -pub fn assert_verify_email_signature( - headers: [u8; HeadersLen], - body: [u8; BodyLen], - pubkey_limbs: [Field; PUBKEY_LIMBS_LEN], - pubkey_redc_limbs: [Field; PUBKEY_LIMBS_LEN], - signature_limbs: [Field; SIGNATURE_LIMBS_LEN] -) { - let signature: BN2048 = BigNum::from_array(signature_limbs); - let pubkey: BigNumInstance<18, Params2048> = BigNumInstance::new(pubkey_limbs, pubkey_redc_limbs); - - { - // verify that body hash from header matches body - let body_hash = std::hash::sha256(body); - assert(body_hash == crate::body_hash::body_hash_from_header(headers), "body hash does not match"); - } - - { - // verify header signature - let headers_hash = std::hash::sha256(headers); - assert(rsa.verify_sha256_pkcs1v15(pubkey, headers_hash, signature), "invalid email signature"); - } -} - -#[test] -fn test_email() { - let pubkey_limbs = [ - 0xe5cf995b5ef59ce9943d1f4209b6ab, 0xe0caf03235e91a2db27e9ed214bcc6, 0xafe1309f87414bd36ed296dacfade2, 0xbeff3f19046a43adce46c932514988, 0x324041af8736e87de4358860fff057, 0xadcc6669dfa346f322717851a8c22a, 0x8b2a193089e6bf951c553b5a6f71aa, 0x0a570fe582918c4f731a0002068df2, 0x39419a433d6bfdd1978356cbca4b60, 0x550d695a514d38b45c862320a00ea5, 0x1c56ac1dfbf1beea31e8a613c2a51f, 0x6a30c9f22d2e5cb6934263d0838809, 0x0a281f268a44b21a4f77a91a52f960, 0x5134dc3966c8e91402669a47cc8597, 0x71590781df114ec072e641cdc5d224, 0xa1bc0f0937489c806c1944fd029dc9, 0x911f6e47f84db3b64c3648ebb5a127, 0xd5 - ]; - let pubkey_redc_limbs = [ - 0xa48a824e4ebc7e0f1059f3ecfa57c4, 0x05c1db23f3c7d47ad7e7d7cfda5189, 0x79bb6bbbd8facf011f022fa9051aec, 0x24faa4cef474bed639362ea71f7a21, 0x1503aa50b77e24b030841a7d061581, 0x5bbf4e62805e1860a904c0f66a5fad, 0x5cbd24b72442d2ce647dd7d0a44368, 0x074a8839a4460c169dce7138efdaef, 0x0f06e09e3191b995b08e5b45182f65, 0x51fad4a89f8369fe10e5d4b6e149a1, 0xdc778b15982d11ebf7fe23b4e15f10, 0xa09ff3a4567077510c474e4ac0a21a, 0xb37e69e5dbb77167b73065e4c5ad6a, 0xecf4774e22e7fe3a38642186f7ae74, 0x16e72b5eb4c813a3b37998083aab81, 0xa48e7050aa8abedce5a45c16985376, 0xdd3285e53b322b221f7bcf4f8f8ad8, 0x0132 - ]; - let signature_limbs = [ - 0x5779c85587e51cb8de5c29d7fdfeb0, 0xcd7ea8b6119f76f117ecb5042f8fc0, 0xeb7ac32b81d5a87bc2046fa0004e27, 0x62708c43b0c07a8fe8bdc97c479138, 0xc1e90d184f22a80be4a484a6ebd462, 0x39f3ff00e47728aaf74802d2d1d07b, 0x0f39de2cf99bf20dab7b8ae9240acd, 0xf4875cb76ce2538f255d70476136d6, 0xde151a5005ca614d6af7dd01e2a083, 0x6fe12b286f3195cae005fd7d2a1766, 0xd6e43a3060eccc555f2ee1e2929932, 0x0d5fa7cc79c794ae80310b491a1b40, 0x9cff415204cbc05c772ede05903440, 0xe7190ccff38575ae70dd055cd892d2, 0xf34bb777c0c842b0e88738eafdf634, 0x21040437e1e945a201ff58e542be68, 0x12f254fa4a0fb776ffe8759eb9eefa, 0x12 - ]; - let headers = "from:runnier.leagues.0j@icloud.com\r\ncontent-type:text/plain; charset=us-ascii\r\nmime-version:1.0 (Mac OS X Mail 16.0 \\(3731.500.231\\))\r\nsubject:Hello\r\nmessage-id:<8F819D32-B6AC-489D-977F-438BBC4CAB27@me.com>\r\ndate:Sat, 26 Aug 2023 12:25:22 +0400\r\nto:zkewtest@gmail.com\r\ndkim-signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=icloud.com; s=1a1hai; t=1693038337; bh=7xQMDuoVVU4m0W0WRVSrVXMeGSIASsnucK9dJsrc+vU=; h=from:Content-Type:Mime-Version:Subject:Message-Id:Date:to; b=".as_bytes(); - let body = "Hello,\r\n\r\nHow are you?\r\n".as_bytes(); - assert_verify_email_signature( - headers, - body, - pubkey_limbs, - pubkey_redc_limbs, - signature_limbs - ) -} diff --git a/src/reveal_string.nr b/src/reveal_string.nr deleted file mode 100644 index 2519f61..0000000 --- a/src/reveal_string.nr +++ /dev/null @@ -1,12 +0,0 @@ -struct RevealStringPart { - from_index: u32, - part: [u8; N], -} - -impl RevealStringPart { - fn assert_matches(self, haystack: [u8; H]) { - for i in 0..N { - assert(haystack[self.from_index + i] == self.part[i], "invalid string reveal"); - } - } -} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..e0033d3 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "ES2022", + "moduleResolution": "NodeNext", + "module": "NodeNext", + + // compatibility + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "verbatimModuleSyntax": true, + "maxNodeModuleJsDepth": 1, + + // lib + "sourceMap": true, + "emitDeclarationOnly": true, + "declaration": true, + "declarationMap": true, + + // strictness + "strict": true, + "forceConsistentCasingInFileNames": true, + "noUncheckedIndexedAccess": true + } +}