From f96c2bb9a20595bc5aad43f3c587ffb47435b4b0 Mon Sep 17 00:00:00 2001 From: Joe Blau Date: Tue, 13 Oct 2026 19:44:22 -0700 Subject: [PATCH 1/2] refactor: move CLI to packages/agent-cli workspace --- .github/workflows/ci.yml | 2 +- .github/workflows/docs.yml | 2 +- .github/workflows/e2e.yml | 4 +- .github/workflows/install.yml | 2 +- .github/workflows/release.yml | 12 ++-- .github/workflows/version.yml | 2 +- README.md | 24 +++---- docs/PROGRESS.md | 4 ++ package-lock.json | 71 +++++++++++-------- package.json | 67 ++++++----------- .../agent-cli/CHANGELOG.md | 0 packages/agent-cli/README.md | 68 ++++++++++++++++++ SKILL.md => packages/agent-cli/SKILL.md | 0 .../agent-cli/eslint.config.js | 0 packages/agent-cli/package.json | 53 ++++++++++++++ .../agent-cli/policies}/agent-trade-only.json | 0 .../agent-cli/scripts}/build-binaries.mjs | 0 .../agent-cli/scripts}/check-commit.sh | 0 .../agent-cli/scripts}/e2e-relay-hook.mjs | 0 .../agent-cli/scripts}/e2e-testnet.mjs | 0 .../agent-cli/scripts}/finalize-build.mjs | 0 .../agent-cli/scripts}/generate-docs.mjs | 10 +-- .../agent-cli/scripts}/generate-skill.mjs | 0 .../agent-cli/scripts}/package-smoke.mjs | 7 +- .../agent-cli/scripts}/sync-skill-version.mjs | 0 {src => packages/agent-cli/src}/cli.ts | 0 .../agent-cli/src}/commands/audit.ts | 0 .../agent-cli/src}/commands/cancel.ts | 0 .../agent-cli/src}/commands/config.ts | 0 .../agent-cli/src}/commands/deposit.ts | 0 .../agent-cli/src}/commands/events.ts | 0 .../agent-cli/src}/commands/fund.ts | 0 .../agent-cli/src}/commands/init.ts | 0 .../agent-cli/src}/commands/leverage.ts | 0 .../agent-cli/src}/commands/logs.ts | 0 .../agent-cli/src}/commands/market.ts | 0 .../agent-cli/src}/commands/modify.ts | 0 .../agent-cli/src}/commands/order.ts | 0 .../agent-cli/src}/commands/read.ts | 0 .../agent-cli/src}/commands/revoke.ts | 0 .../agent-cli/src}/commands/rotate.ts | 0 .../agent-cli/src}/commands/run.ts | 0 .../agent-cli/src}/commands/skill.ts | 0 .../agent-cli/src}/core/account.ts | 0 {src => packages/agent-cli/src}/core/audit.ts | 0 .../agent-cli/src}/core/builder.ts | 0 .../agent-cli/src}/core/config.ts | 0 .../agent-cli/src}/core/hlclient.ts | 0 {src => packages/agent-cli/src}/core/http.ts | 0 .../agent-cli/src}/core/logger.ts | 0 {src => packages/agent-cli/src}/core/nonce.ts | 0 .../agent-cli/src}/core/output-schemas.ts | 0 .../agent-cli/src}/core/request-context.ts | 0 {src => packages/agent-cli/src}/core/retry.ts | 0 {src => packages/agent-cli/src}/core/risk.ts | 0 .../agent-cli/src}/core/router.ts | 0 .../agent-cli/src}/core/skill-content.ts | 0 .../agent-cli/src}/core/trading.ts | 0 .../agent-cli/src}/errors/index.ts | 0 .../agent-cli/src}/errors/mappers.ts | 0 .../agent-cli/src}/funding/amounts.ts | 0 {src => packages/agent-cli/src}/funding/qr.ts | 0 .../agent-cli/src}/funding/relay.ts | 0 .../agent-cli/src}/funding/signatures.ts | 0 .../agent-cli/src}/funding/status.ts | 0 .../agent-cli/src}/funding/store.ts | 0 .../agent-cli/src}/runner/events.ts | 0 .../agent-cli/src}/runner/health.ts | 0 .../agent-cli/src}/runner/lifecycle.ts | 0 {src => packages/agent-cli/src}/runner/rpc.ts | 0 .../agent-cli/src}/runner/subscriptions.ts | 0 .../agent-cli/src}/wallet/approval.ts | 0 .../agent-cli/src}/wallet/expiry.ts | 0 .../agent-cli/src}/wallet/policy.ts | 0 .../agent-cli/src}/wallet/privy.ts | 0 .../agent-cli/src}/wallet/safety.ts | 0 .../test}/__snapshots__/qr.test.ts.snap | 0 .../agent-cli/test}/amounts.test.ts | 0 .../agent-cli/test}/approval.test.ts | 0 .../agent-cli/test}/audit.test.ts | 0 .../agent-cli/test}/builder.test.ts | 0 .../agent-cli/test}/cancel.test.ts | 0 .../agent-cli/test}/config.test.ts | 0 .../agent-cli/test}/daily-loss.test.ts | 0 .../test}/deposit-signatures.test.ts | 0 .../agent-cli/test}/deposit-status.test.ts | 0 .../agent-cli/test}/errors.test.ts | 0 .../agent-cli/test}/events.test.ts | 0 .../agent-cli/test}/expiry.test.ts | 0 {test => packages/agent-cli/test}/fixtures.ts | 0 .../agent-cli/test}/fund.test.ts | 0 .../agent-cli/test}/health.test.ts | 0 .../agent-cli/test}/hlclient.test.ts | 0 .../agent-cli/test}/leverage.test.ts | 0 .../agent-cli/test}/lifecycle.test.ts | 0 .../agent-cli/test}/logger.test.ts | 0 .../agent-cli/test}/logs.test.ts | 0 .../agent-cli/test}/mappers.test.ts | 0 .../agent-cli/test}/modify.test.ts | 0 .../agent-cli/test}/order.test.ts | 0 .../agent-cli/test}/policy.test.ts | 0 .../agent-cli/test}/privy.integration.test.ts | 0 .../agent-cli/test}/privy.test.ts | 0 {test => packages/agent-cli/test}/qr.test.ts | 0 .../agent-cli/test}/read.test.ts | 0 .../agent-cli/test}/relay.test.ts | 0 .../agent-cli/test}/retry.test.ts | 0 .../agent-cli/test}/revoke.test.ts | 0 .../agent-cli/test}/risk.test.ts | 0 .../agent-cli/test}/rotate.test.ts | 0 .../agent-cli/test}/router.test.ts | 0 {test => packages/agent-cli/test}/rpc.test.ts | 0 .../agent-cli/test}/runner.test.ts | 0 .../agent-cli/test}/safety.test.ts | 0 {test => packages/agent-cli/test}/setup.ts | 0 .../agent-cli/test}/skill.test.ts | 0 .../agent-cli/test}/smoke.test.ts | 0 .../agent-cli/test}/subscriptions.test.ts | 0 .../agent-cli/tsconfig.json | 0 .../agent-cli/vitest.config.ts | 0 .../agent-cli/vitest.integration.config.ts | 0 121 files changed, 222 insertions(+), 106 deletions(-) rename CHANGELOG.md => packages/agent-cli/CHANGELOG.md (100%) create mode 100644 packages/agent-cli/README.md rename SKILL.md => packages/agent-cli/SKILL.md (100%) rename eslint.config.js => packages/agent-cli/eslint.config.js (100%) create mode 100644 packages/agent-cli/package.json rename {policies => packages/agent-cli/policies}/agent-trade-only.json (100%) rename {scripts => packages/agent-cli/scripts}/build-binaries.mjs (100%) rename {scripts => packages/agent-cli/scripts}/check-commit.sh (100%) rename {scripts => packages/agent-cli/scripts}/e2e-relay-hook.mjs (100%) rename {scripts => packages/agent-cli/scripts}/e2e-testnet.mjs (100%) rename {scripts => packages/agent-cli/scripts}/finalize-build.mjs (100%) rename {scripts => packages/agent-cli/scripts}/generate-docs.mjs (80%) rename {scripts => packages/agent-cli/scripts}/generate-skill.mjs (100%) rename {scripts => packages/agent-cli/scripts}/package-smoke.mjs (81%) rename {scripts => packages/agent-cli/scripts}/sync-skill-version.mjs (100%) rename {src => packages/agent-cli/src}/cli.ts (100%) rename {src => packages/agent-cli/src}/commands/audit.ts (100%) rename {src => packages/agent-cli/src}/commands/cancel.ts (100%) rename {src => packages/agent-cli/src}/commands/config.ts (100%) rename {src => packages/agent-cli/src}/commands/deposit.ts (100%) rename {src => packages/agent-cli/src}/commands/events.ts (100%) rename {src => packages/agent-cli/src}/commands/fund.ts (100%) rename {src => packages/agent-cli/src}/commands/init.ts (100%) rename {src => packages/agent-cli/src}/commands/leverage.ts (100%) rename {src => packages/agent-cli/src}/commands/logs.ts (100%) rename {src => packages/agent-cli/src}/commands/market.ts (100%) rename {src => packages/agent-cli/src}/commands/modify.ts (100%) rename {src => packages/agent-cli/src}/commands/order.ts (100%) rename {src => packages/agent-cli/src}/commands/read.ts (100%) rename {src => packages/agent-cli/src}/commands/revoke.ts (100%) rename {src => packages/agent-cli/src}/commands/rotate.ts (100%) rename {src => packages/agent-cli/src}/commands/run.ts (100%) rename {src => packages/agent-cli/src}/commands/skill.ts (100%) rename {src => packages/agent-cli/src}/core/account.ts (100%) rename {src => packages/agent-cli/src}/core/audit.ts (100%) rename {src => packages/agent-cli/src}/core/builder.ts (100%) rename {src => packages/agent-cli/src}/core/config.ts (100%) rename {src => packages/agent-cli/src}/core/hlclient.ts (100%) rename {src => packages/agent-cli/src}/core/http.ts (100%) rename {src => packages/agent-cli/src}/core/logger.ts (100%) rename {src => packages/agent-cli/src}/core/nonce.ts (100%) rename {src => packages/agent-cli/src}/core/output-schemas.ts (100%) rename {src => packages/agent-cli/src}/core/request-context.ts (100%) rename {src => packages/agent-cli/src}/core/retry.ts (100%) rename {src => packages/agent-cli/src}/core/risk.ts (100%) rename {src => packages/agent-cli/src}/core/router.ts (100%) rename {src => packages/agent-cli/src}/core/skill-content.ts (100%) rename {src => packages/agent-cli/src}/core/trading.ts (100%) rename {src => packages/agent-cli/src}/errors/index.ts (100%) rename {src => packages/agent-cli/src}/errors/mappers.ts (100%) rename {src => packages/agent-cli/src}/funding/amounts.ts (100%) rename {src => packages/agent-cli/src}/funding/qr.ts (100%) rename {src => packages/agent-cli/src}/funding/relay.ts (100%) rename {src => packages/agent-cli/src}/funding/signatures.ts (100%) rename {src => packages/agent-cli/src}/funding/status.ts (100%) rename {src => packages/agent-cli/src}/funding/store.ts (100%) rename {src => packages/agent-cli/src}/runner/events.ts (100%) rename {src => packages/agent-cli/src}/runner/health.ts (100%) rename {src => packages/agent-cli/src}/runner/lifecycle.ts (100%) rename {src => packages/agent-cli/src}/runner/rpc.ts (100%) rename {src => packages/agent-cli/src}/runner/subscriptions.ts (100%) rename {src => packages/agent-cli/src}/wallet/approval.ts (100%) rename {src => packages/agent-cli/src}/wallet/expiry.ts (100%) rename {src => packages/agent-cli/src}/wallet/policy.ts (100%) rename {src => packages/agent-cli/src}/wallet/privy.ts (100%) rename {src => packages/agent-cli/src}/wallet/safety.ts (100%) rename {test => packages/agent-cli/test}/__snapshots__/qr.test.ts.snap (100%) rename {test => packages/agent-cli/test}/amounts.test.ts (100%) rename {test => packages/agent-cli/test}/approval.test.ts (100%) rename {test => packages/agent-cli/test}/audit.test.ts (100%) rename {test => packages/agent-cli/test}/builder.test.ts (100%) rename {test => packages/agent-cli/test}/cancel.test.ts (100%) rename {test => packages/agent-cli/test}/config.test.ts (100%) rename {test => packages/agent-cli/test}/daily-loss.test.ts (100%) rename {test => packages/agent-cli/test}/deposit-signatures.test.ts (100%) rename {test => packages/agent-cli/test}/deposit-status.test.ts (100%) rename {test => packages/agent-cli/test}/errors.test.ts (100%) rename {test => packages/agent-cli/test}/events.test.ts (100%) rename {test => packages/agent-cli/test}/expiry.test.ts (100%) rename {test => packages/agent-cli/test}/fixtures.ts (100%) rename {test => packages/agent-cli/test}/fund.test.ts (100%) rename {test => packages/agent-cli/test}/health.test.ts (100%) rename {test => packages/agent-cli/test}/hlclient.test.ts (100%) rename {test => packages/agent-cli/test}/leverage.test.ts (100%) rename {test => packages/agent-cli/test}/lifecycle.test.ts (100%) rename {test => packages/agent-cli/test}/logger.test.ts (100%) rename {test => packages/agent-cli/test}/logs.test.ts (100%) rename {test => packages/agent-cli/test}/mappers.test.ts (100%) rename {test => packages/agent-cli/test}/modify.test.ts (100%) rename {test => packages/agent-cli/test}/order.test.ts (100%) rename {test => packages/agent-cli/test}/policy.test.ts (100%) rename {test => packages/agent-cli/test}/privy.integration.test.ts (100%) rename {test => packages/agent-cli/test}/privy.test.ts (100%) rename {test => packages/agent-cli/test}/qr.test.ts (100%) rename {test => packages/agent-cli/test}/read.test.ts (100%) rename {test => packages/agent-cli/test}/relay.test.ts (100%) rename {test => packages/agent-cli/test}/retry.test.ts (100%) rename {test => packages/agent-cli/test}/revoke.test.ts (100%) rename {test => packages/agent-cli/test}/risk.test.ts (100%) rename {test => packages/agent-cli/test}/rotate.test.ts (100%) rename {test => packages/agent-cli/test}/router.test.ts (100%) rename {test => packages/agent-cli/test}/rpc.test.ts (100%) rename {test => packages/agent-cli/test}/runner.test.ts (100%) rename {test => packages/agent-cli/test}/safety.test.ts (100%) rename {test => packages/agent-cli/test}/setup.ts (100%) rename {test => packages/agent-cli/test}/skill.test.ts (100%) rename {test => packages/agent-cli/test}/smoke.test.ts (100%) rename {test => packages/agent-cli/test}/subscriptions.test.ts (100%) rename tsconfig.json => packages/agent-cli/tsconfig.json (100%) rename vitest.config.ts => packages/agent-cli/vitest.config.ts (100%) rename vitest.integration.config.ts => packages/agent-cli/vitest.integration.config.ts (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6d10f1f..d242ef9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 24 cache: npm - run: npm ci - run: npm run build diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 69a3401..d9b2584 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 24 cache: npm - run: npm ci - run: npm run docs:generate diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index e3ca238..0a34f3d 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 24 cache: npm - run: npm ci - run: npm run build @@ -28,4 +28,4 @@ jobs: if: always() with: name: testnet-journals - path: artifacts/ + path: packages/agent-cli/artifacts/ diff --git a/.github/workflows/install.yml b/.github/workflows/install.yml index 30b844e..b719a37 100644 --- a/.github/workflows/install.yml +++ b/.github/workflows/install.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 24 cache: npm - uses: oven-sh/setup-bun@v2 - run: npm ci diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 41f482b..dafbd6f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,21 +15,21 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 24 cache: npm registry-url: https://registry.npmjs.org - uses: oven-sh/setup-bun@v2 - run: npm ci - name: Verify tag and package version if: startsWith(github.ref, 'refs/tags/') - run: node -e 'const p=require("./package.json");if(process.env.GITHUB_REF_NAME!==`v${p.version}`)throw Error("Tag/version mismatch")' + run: node -e 'const p=require("./packages/agent-cli/package.json");if(process.env.GITHUB_REF_NAME!==`v${p.version}`)throw Error("Tag/version mismatch")' - run: npm run build - run: npm run lint - run: npm run typecheck - run: npm test - run: npm run test:package - run: npm run build:binaries - - run: npm publish --provenance --access public + - run: npm publish --workspace @bloxwap/agent-cli --provenance --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - uses: softprops/action-gh-release@v2 @@ -37,6 +37,6 @@ jobs: with: generate_release_notes: true files: | - binaries/* - SKILL.md - CHANGELOG.md + packages/agent-cli/binaries/* + packages/agent-cli/SKILL.md + packages/agent-cli/CHANGELOG.md diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index 389fe60..ebb0109 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -11,7 +11,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 24 cache: npm - run: npm ci - uses: changesets/action@v1 diff --git a/README.md b/README.md index 2aa03ea..877a82e 100644 --- a/README.md +++ b/README.md @@ -12,21 +12,21 @@ or current Bun. No postinstall script. Publishing is release-gated. ```sh npm ci npm run build -node dist/cli.js --help -node dist/cli.js config set privyAppId YOUR_APP_ID -node dist/cli.js config set privyAppSecretRef env:BLOXWAP_PRIVY_APP_SECRET +node packages/agent-cli/dist/cli.js --help +node packages/agent-cli/dist/cli.js config set privyAppId YOUR_APP_ID +node packages/agent-cli/dist/cli.js config set privyAppSecretRef env:BLOXWAP_PRIVY_APP_SECRET # Set BLOXWAP_PRIVY_APP_SECRET securely outside the CLI/conversation. -node dist/cli.js init --network testnet --master-address 0xYOUR_MASTER_ADDRESS +node packages/agent-cli/dist/cli.js init --network testnet --master-address 0xYOUR_MASTER_ADDRESS # Sign returned EIP-712 approval externally, then submit its 65-byte signature: -node dist/cli.js init --network testnet --signature 0xYOUR_SIGNATURE -node dist/cli.js fund --network testnet --amount 10 --origin-chain 42161 +node packages/agent-cli/dist/cli.js init --network testnet --signature 0xYOUR_SIGNATURE +node packages/agent-cli/dist/cli.js fund --network testnet --amount 10 --origin-chain 42161 # Show QR/address and exact origin token/fees to user; complete any deposit steps. -node dist/cli.js status --network testnet +node packages/agent-cli/dist/cli.js status --network testnet # Continue only when active deposits report settled. -node dist/cli.js run --network testnet --detach -node dist/cli.js market --coin BTC -node dist/cli.js order --json '{"coin":"BTC","side":"buy","size":"0.001","price":"20000","tif":"Gtc"}' -node dist/cli.js events --follow +node packages/agent-cli/dist/cli.js run --network testnet --detach +node packages/agent-cli/dist/cli.js market --coin BTC +node packages/agent-cli/dist/cli.js order --json '{"coin":"BTC","side":"buy","size":"0.001","price":"20000","tif":"Gtc"}' +node packages/agent-cli/dist/cli.js events --follow ``` Testnet onboarding/trades require Privy sandbox credentials, an externally signed @@ -65,4 +65,4 @@ committing. Unit tests mock services. Credential-dependent tests are gated: `npm `npm run docs:generate` creates [command schemas](docs/commands.md) and a static site in `site/`. [Docs index](docs/index.md), [security](docs/security.md), -[error catalog](docs/errors.md), and [SKILL.md](SKILL.md) explain operation. +[error catalog](docs/errors.md), and [SKILL.md](packages/agent-cli/SKILL.md) explain operation. diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 204bd44..16c8885 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -47,3 +47,7 @@ | #42 | done | Final packaged flow audited and corrected (network/config isolation, exact loss/exposure/receipt checks, trigger preservation, readiness and stream errors). Skill shipped/embedded in npm and compiled CLI; Claude/Codex installation with CODEX_HOME, version synchronization, idempotency and overwrite protection. | Final local verification: supported Node 22, strict build/lint/typecheck and isolated offline tests. Sandbox/testnet scripts skip without credentials. npm audit reports zero vulnerabilities. Bloxwap builder defaults to f=10 (0.01%), with config/env overrides. + +## Workspace and Fumadocs migration + +- Workspace migration: done — CLI sources, tests, skill, policies and release tooling live in `packages/agent-cli`; root scripts delegate, publish targets the CLI workspace. diff --git a/package-lock.json b/package-lock.json index a0afefa..509def2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,40 +1,20 @@ { - "name": "@bloxwap/agent-cli", + "name": "bloxwap-agent-cli-workspace", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@bloxwap/agent-cli", - "version": "0.1.0", - "license": "MIT", - "dependencies": { - "@bloxwap/hyperliquid": "^0.6.0", - "@privy-io/node": "^0.35.0", - "@scure/bip39": "^2.4.0", - "qrcode": "^1.5.4", - "ws": "^8.22.0", - "zod": "^4.6.7" - }, - "bin": { - "agent-cli": "dist/cli.js" - }, + "name": "bloxwap-agent-cli-workspace", + "workspaces": [ + "packages/*", + "apps/*" + ], "devDependencies": { - "@changesets/cli": "^3.0.3", - "@types/node": "^26.6.5", - "@types/qrcode": "^1.5.6", - "@types/ws": "^8.18.2", - "eslint": "^9.39.5", - "marked": "^18.1.1", - "prettier": "^3.9.10", - "tsup": "^8.5.1", - "typescript": "^5.9.3", - "typescript-eslint": "^8.71.2", - "viem": "^2.57.5", - "vitest": "^5.0.4" + "@changesets/cli": "^3.0.3" }, "engines": { - "node": ">=22.12.0" + "node": ">=24" } }, "node_modules/@adraffy/ens-normalize": { @@ -43,6 +23,10 @@ "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==", "devOptional": true }, + "node_modules/@bloxwap/agent-cli": { + "resolved": "packages/agent-cli", + "link": true + }, "node_modules/@bloxwap/hyperliquid": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@bloxwap/hyperliquid/-/hyperliquid-0.6.0.tgz", @@ -4983,6 +4967,37 @@ "funding": { "url": "https://github.com/sponsors/colinhacks" } + }, + "packages/agent-cli": { + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@bloxwap/hyperliquid": "^0.6.0", + "@privy-io/node": "^0.35.0", + "@scure/bip39": "^2.4.0", + "qrcode": "^1.5.4", + "ws": "^8.22.0", + "zod": "^4.6.7" + }, + "bin": { + "agent-cli": "dist/cli.js" + }, + "devDependencies": { + "@types/node": "^26.6.5", + "@types/qrcode": "^1.5.6", + "@types/ws": "^8.18.2", + "eslint": "^9.39.5", + "marked": "^18.1.1", + "prettier": "^3.9.10", + "tsup": "^8.5.1", + "typescript": "^5.9.3", + "typescript-eslint": "^8.71.2", + "viem": "^2.57.5", + "vitest": "^5.0.4" + }, + "engines": { + "node": ">=22.12.0" + } } } } diff --git a/package.json b/package.json index a508694..2e86675 100644 --- a/package.json +++ b/package.json @@ -1,57 +1,30 @@ { - "name": "@bloxwap/agent-cli", - "version": "0.1.0", + "name": "bloxwap-agent-cli-workspace", + "private": true, "type": "module", - "bin": { - "agent-cli": "dist/cli.js" - }, - "engines": { - "node": ">=22.12.0" - }, - "files": [ - "dist", - "SKILL.md", - "policies" + "workspaces": [ + "packages/*", + "apps/*" ], "scripts": { - "build": "node scripts/generate-skill.mjs && tsup src/cli.ts --format esm --clean && node scripts/finalize-build.mjs", - "lint": "eslint .", - "typecheck": "tsc --noEmit", - "test": "vitest run", - "docs:generate": "npm run build && node scripts/generate-docs.mjs", - "test:e2e": "node scripts/e2e-testnet.mjs", - "test:package": "node scripts/package-smoke.mjs", - "build:binaries": "node scripts/generate-skill.mjs && node scripts/build-binaries.mjs", + "build": "npm --workspace @bloxwap/agent-cli run build", + "lint": "npm --workspace @bloxwap/agent-cli run lint", + "typecheck": "npm --workspace @bloxwap/agent-cli run typecheck", + "test": "npm --workspace @bloxwap/agent-cli run test", + "docs:generate": "npm --workspace @bloxwap/agent-cli run docs:generate", + "test:e2e": "npm --workspace @bloxwap/agent-cli run test:e2e", + "test:package": "npm --workspace @bloxwap/agent-cli run test:package", + "build:binaries": "npm --workspace @bloxwap/agent-cli run build:binaries", + "test:sandbox": "npm --workspace @bloxwap/agent-cli run test:sandbox", "changeset": "changeset", - "version:packages": "changeset version && node scripts/sync-skill-version.mjs && node scripts/generate-skill.mjs", - "test:sandbox": "vitest run --config vitest.integration.config.ts" + "version:packages": "changeset version && npm --workspace @bloxwap/agent-cli exec -- node scripts/sync-skill-version.mjs && npm --workspace @bloxwap/agent-cli exec -- node scripts/generate-skill.mjs", + "pack:cli": "npm pack --workspace @bloxwap/agent-cli --pack-destination packages/agent-cli" }, - "devDependencies": { - "@changesets/cli": "^3.0.3", - "@types/node": "^26.6.5", - "@types/qrcode": "^1.5.6", - "@types/ws": "^8.18.2", - "eslint": "^9.39.5", - "marked": "^18.1.1", - "prettier": "^3.9.10", - "tsup": "^8.5.1", - "typescript": "^5.9.3", - "typescript-eslint": "^8.71.2", - "viem": "^2.57.5", - "vitest": "^5.0.4" - }, - "dependencies": { - "@bloxwap/hyperliquid": "^0.6.0", - "@privy-io/node": "^0.35.0", - "@scure/bip39": "^2.4.0", - "qrcode": "^1.5.4", - "ws": "^8.22.0", - "zod": "^4.6.7" + "engines": { + "node": ">=24" }, - "description": "Agent-native Hyperliquid trading CLI with Privy custody and Relay funding", - "license": "MIT", - "publishConfig": { - "access": "public" + "devDependencies": { + "@changesets/cli": "^3.0.3" }, "overrides": { "esbuild": "^0.28.1" diff --git a/CHANGELOG.md b/packages/agent-cli/CHANGELOG.md similarity index 100% rename from CHANGELOG.md rename to packages/agent-cli/CHANGELOG.md diff --git a/packages/agent-cli/README.md b/packages/agent-cli/README.md new file mode 100644 index 0000000..41bc8b8 --- /dev/null +++ b/packages/agent-cli/README.md @@ -0,0 +1,68 @@ +# agent-cli + +An agent-native Hyperliquid trading CLI with JSON input/output, a persistent +signing runner, Privy managed agents, Relay funding, and a packaged agent skill. + +Install: `npm i -g @bloxwap/agent-cli` or `bunx @bloxwap/agent-cli --help`. +The requested Hyperliquid SDK declares Node **22.12+**; use that supported runtime +or current Bun. No postinstall script. Publishing is release-gated. + +## Testnet quickstart + +```sh +npm ci +npm run build +node packages/agent-cli/dist/cli.js --help +node packages/agent-cli/dist/cli.js config set privyAppId YOUR_APP_ID +node packages/agent-cli/dist/cli.js config set privyAppSecretRef env:BLOXWAP_PRIVY_APP_SECRET +# Set BLOXWAP_PRIVY_APP_SECRET securely outside the CLI/conversation. +node packages/agent-cli/dist/cli.js init --network testnet --master-address 0xYOUR_MASTER_ADDRESS +# Sign returned EIP-712 approval externally, then submit its 65-byte signature: +node packages/agent-cli/dist/cli.js init --network testnet --signature 0xYOUR_SIGNATURE +node packages/agent-cli/dist/cli.js fund --network testnet --amount 10 --origin-chain 42161 +# Show QR/address and exact origin token/fees to user; complete any deposit steps. +node packages/agent-cli/dist/cli.js status --network testnet +# Continue only when active deposits report settled. +node packages/agent-cli/dist/cli.js run --network testnet --detach +node packages/agent-cli/dist/cli.js market --coin BTC +node packages/agent-cli/dist/cli.js order --json '{"coin":"BTC","side":"buy","size":"0.001","price":"20000","tif":"Gtc"}' +node packages/agent-cli/dist/cli.js events --follow +``` + +Testnet onboarding/trades require Privy sandbox credentials, an externally signed +testnet master approval and testnet collateral. Relay HyperCore testnet routes may +be unavailable; the e2e suite mocks Relay. The placeholders above must be replaced +with addresses/signatures from your test environment. Never paste a private key. + +## Architecture and custody + +```mermaid +flowchart LR + Agent[Agent / CLI] -->|private JSON-RPC| Runner[Persistent runner] + Runner -->|P-256 authorization| Privy[Privy managed agent] + Privy -->|EIP-712 signature| HL[Hyperliquid exchange] + Agent --> Relay[Relay funding quote] + Master[External master wallet] -->|one-time approvals| HL + Runner --> Journal[Events / audit / logs] +``` + +Master custody stays external. Privy owns the separate agent key; the CLI holds +only an authorization key. Hyperliquid agent permissions deny withdrawal. +Privy policies restrict signing domains; local checks enforce configured risk +limits. Read [custody limits](../../docs/custody.md) before using a funded account. + +State: `~/.bloxwap`; config: `~/.bloxwap/config.json`; IPC: +`~/.bloxwap/run.sock`; env prefix: `BLOXWAP_`. All local state is private to the OS +user. The default Bloxwap builder address is +`0x71b09A08257078A4d642F7Dd7315e656c837329a`, with `f=10` (0.01%). +Override via `config set builder.address` / `config set builder.fee` or +`BLOXWAP_BUILDER_ADDRESS` / `BLOXWAP_BUILDER_FEE`; init requests builder approval. + +## Development and docs + +`npm run build`, `npm run lint`, `npm run typecheck`, `npm test` must pass before +committing. Unit tests mock services. Credential-dependent tests are gated: `npm run test:sandbox` and `npm run test:e2e` skip without the required environment. The master-key testnet harness is CI-only; unit tests never access the network. + +`npm run docs:generate` creates [command schemas](../../docs/commands.md) and a static +site in `site/`. [Docs index](../../docs/index.md), [security](../../docs/security.md), +[error catalog](../../docs/errors.md), and [SKILL.md](SKILL.md) explain operation. diff --git a/SKILL.md b/packages/agent-cli/SKILL.md similarity index 100% rename from SKILL.md rename to packages/agent-cli/SKILL.md diff --git a/eslint.config.js b/packages/agent-cli/eslint.config.js similarity index 100% rename from eslint.config.js rename to packages/agent-cli/eslint.config.js diff --git a/packages/agent-cli/package.json b/packages/agent-cli/package.json new file mode 100644 index 0000000..cee0cce --- /dev/null +++ b/packages/agent-cli/package.json @@ -0,0 +1,53 @@ +{ + "name": "@bloxwap/agent-cli", + "version": "0.1.0", + "type": "module", + "bin": { + "agent-cli": "dist/cli.js" + }, + "engines": { + "node": ">=22.12.0" + }, + "files": [ + "dist", + "SKILL.md", + "policies" + ], + "scripts": { + "build": "node scripts/generate-skill.mjs && tsup src/cli.ts --format esm --clean && node scripts/finalize-build.mjs", + "lint": "eslint .", + "typecheck": "tsc --noEmit", + "test": "vitest run", + "docs:generate": "npm run build && node scripts/generate-docs.mjs", + "test:e2e": "node scripts/e2e-testnet.mjs", + "test:package": "node scripts/package-smoke.mjs", + "build:binaries": "node scripts/generate-skill.mjs && node scripts/build-binaries.mjs", + "test:sandbox": "vitest run --config vitest.integration.config.ts" + }, + "devDependencies": { + "@types/node": "^26.6.5", + "@types/qrcode": "^1.5.6", + "@types/ws": "^8.18.2", + "eslint": "^9.39.5", + "marked": "^18.1.1", + "prettier": "^3.9.10", + "tsup": "^8.5.1", + "typescript": "^5.9.3", + "typescript-eslint": "^8.71.2", + "viem": "^2.57.5", + "vitest": "^5.0.4" + }, + "dependencies": { + "@bloxwap/hyperliquid": "^0.6.0", + "@privy-io/node": "^0.35.0", + "@scure/bip39": "^2.4.0", + "qrcode": "^1.5.4", + "ws": "^8.22.0", + "zod": "^4.6.7" + }, + "description": "Agent-native Hyperliquid trading CLI with Privy custody and Relay funding", + "license": "MIT", + "publishConfig": { + "access": "public" + } +} diff --git a/policies/agent-trade-only.json b/packages/agent-cli/policies/agent-trade-only.json similarity index 100% rename from policies/agent-trade-only.json rename to packages/agent-cli/policies/agent-trade-only.json diff --git a/scripts/build-binaries.mjs b/packages/agent-cli/scripts/build-binaries.mjs similarity index 100% rename from scripts/build-binaries.mjs rename to packages/agent-cli/scripts/build-binaries.mjs diff --git a/scripts/check-commit.sh b/packages/agent-cli/scripts/check-commit.sh similarity index 100% rename from scripts/check-commit.sh rename to packages/agent-cli/scripts/check-commit.sh diff --git a/scripts/e2e-relay-hook.mjs b/packages/agent-cli/scripts/e2e-relay-hook.mjs similarity index 100% rename from scripts/e2e-relay-hook.mjs rename to packages/agent-cli/scripts/e2e-relay-hook.mjs diff --git a/scripts/e2e-testnet.mjs b/packages/agent-cli/scripts/e2e-testnet.mjs similarity index 100% rename from scripts/e2e-testnet.mjs rename to packages/agent-cli/scripts/e2e-testnet.mjs diff --git a/scripts/finalize-build.mjs b/packages/agent-cli/scripts/finalize-build.mjs similarity index 100% rename from scripts/finalize-build.mjs rename to packages/agent-cli/scripts/finalize-build.mjs diff --git a/scripts/generate-docs.mjs b/packages/agent-cli/scripts/generate-docs.mjs similarity index 80% rename from scripts/generate-docs.mjs rename to packages/agent-cli/scripts/generate-docs.mjs index 1e1c339..f91cf96 100644 --- a/scripts/generate-docs.mjs +++ b/packages/agent-cli/scripts/generate-docs.mjs @@ -13,15 +13,15 @@ let reference = '# Command reference\n\nGenerated from `agent-cli schema `. Do not edit by hand.\n\nGlobal flags: `--config PATH`, `--network mainnet|testnet`, `--pretty`, `--json OBJECT`.\n\n'; for (const command of commands) reference += `## ${command.name}\n\n${command.description}\n\n\`\`\`json\n${JSON.stringify(invoke(['schema', command.name]), null, 2)}\n\`\`\`\n\n`; -writeFileSync('docs/commands.md', reference); -mkdirSync('site', { recursive: true }); -for (const name of readdirSync('docs').filter((name) => name.endsWith('.md'))) { - const content = marked(readFileSync(`docs/${name}`, 'utf8')).replace( +writeFileSync('../../docs/commands.md', reference); +mkdirSync('../../site', { recursive: true }); +for (const name of readdirSync('../../docs').filter((name) => name.endsWith('.md'))) { + const content = marked(readFileSync(`../../docs/${name}`, 'utf8')).replace( /href="([^"#]+)\.md/g, 'href="$1.html', ); writeFileSync( - `site/${name.replace('.md', '.html')}`, + `../../site/${name.replace('.md', '.html')}`, `agent-cli${content}`, ); } diff --git a/scripts/generate-skill.mjs b/packages/agent-cli/scripts/generate-skill.mjs similarity index 100% rename from scripts/generate-skill.mjs rename to packages/agent-cli/scripts/generate-skill.mjs diff --git a/scripts/package-smoke.mjs b/packages/agent-cli/scripts/package-smoke.mjs similarity index 81% rename from scripts/package-smoke.mjs rename to packages/agent-cli/scripts/package-smoke.mjs index 9b21ffe..2abb45a 100644 --- a/scripts/package-smoke.mjs +++ b/packages/agent-cli/scripts/package-smoke.mjs @@ -9,8 +9,11 @@ try { encoding: 'utf8', }), )[0]; - if (!packed.files.some((file) => file.path === 'SKILL.md')) - throw new Error('Package missing skill'); + for (const required of ['SKILL.md', 'dist/cli.js', 'policies/agent-trade-only.json']) + if (!packed.files.some((file) => file.path === required)) + throw new Error(`Package missing ${required}`); + if (packed.files.some((file) => /^(apps|src|test|scripts)\//.test(file.path))) + throw new Error('Package includes development files'); execFileSync( 'npm', [ diff --git a/scripts/sync-skill-version.mjs b/packages/agent-cli/scripts/sync-skill-version.mjs similarity index 100% rename from scripts/sync-skill-version.mjs rename to packages/agent-cli/scripts/sync-skill-version.mjs diff --git a/src/cli.ts b/packages/agent-cli/src/cli.ts similarity index 100% rename from src/cli.ts rename to packages/agent-cli/src/cli.ts diff --git a/src/commands/audit.ts b/packages/agent-cli/src/commands/audit.ts similarity index 100% rename from src/commands/audit.ts rename to packages/agent-cli/src/commands/audit.ts diff --git a/src/commands/cancel.ts b/packages/agent-cli/src/commands/cancel.ts similarity index 100% rename from src/commands/cancel.ts rename to packages/agent-cli/src/commands/cancel.ts diff --git a/src/commands/config.ts b/packages/agent-cli/src/commands/config.ts similarity index 100% rename from src/commands/config.ts rename to packages/agent-cli/src/commands/config.ts diff --git a/src/commands/deposit.ts b/packages/agent-cli/src/commands/deposit.ts similarity index 100% rename from src/commands/deposit.ts rename to packages/agent-cli/src/commands/deposit.ts diff --git a/src/commands/events.ts b/packages/agent-cli/src/commands/events.ts similarity index 100% rename from src/commands/events.ts rename to packages/agent-cli/src/commands/events.ts diff --git a/src/commands/fund.ts b/packages/agent-cli/src/commands/fund.ts similarity index 100% rename from src/commands/fund.ts rename to packages/agent-cli/src/commands/fund.ts diff --git a/src/commands/init.ts b/packages/agent-cli/src/commands/init.ts similarity index 100% rename from src/commands/init.ts rename to packages/agent-cli/src/commands/init.ts diff --git a/src/commands/leverage.ts b/packages/agent-cli/src/commands/leverage.ts similarity index 100% rename from src/commands/leverage.ts rename to packages/agent-cli/src/commands/leverage.ts diff --git a/src/commands/logs.ts b/packages/agent-cli/src/commands/logs.ts similarity index 100% rename from src/commands/logs.ts rename to packages/agent-cli/src/commands/logs.ts diff --git a/src/commands/market.ts b/packages/agent-cli/src/commands/market.ts similarity index 100% rename from src/commands/market.ts rename to packages/agent-cli/src/commands/market.ts diff --git a/src/commands/modify.ts b/packages/agent-cli/src/commands/modify.ts similarity index 100% rename from src/commands/modify.ts rename to packages/agent-cli/src/commands/modify.ts diff --git a/src/commands/order.ts b/packages/agent-cli/src/commands/order.ts similarity index 100% rename from src/commands/order.ts rename to packages/agent-cli/src/commands/order.ts diff --git a/src/commands/read.ts b/packages/agent-cli/src/commands/read.ts similarity index 100% rename from src/commands/read.ts rename to packages/agent-cli/src/commands/read.ts diff --git a/src/commands/revoke.ts b/packages/agent-cli/src/commands/revoke.ts similarity index 100% rename from src/commands/revoke.ts rename to packages/agent-cli/src/commands/revoke.ts diff --git a/src/commands/rotate.ts b/packages/agent-cli/src/commands/rotate.ts similarity index 100% rename from src/commands/rotate.ts rename to packages/agent-cli/src/commands/rotate.ts diff --git a/src/commands/run.ts b/packages/agent-cli/src/commands/run.ts similarity index 100% rename from src/commands/run.ts rename to packages/agent-cli/src/commands/run.ts diff --git a/src/commands/skill.ts b/packages/agent-cli/src/commands/skill.ts similarity index 100% rename from src/commands/skill.ts rename to packages/agent-cli/src/commands/skill.ts diff --git a/src/core/account.ts b/packages/agent-cli/src/core/account.ts similarity index 100% rename from src/core/account.ts rename to packages/agent-cli/src/core/account.ts diff --git a/src/core/audit.ts b/packages/agent-cli/src/core/audit.ts similarity index 100% rename from src/core/audit.ts rename to packages/agent-cli/src/core/audit.ts diff --git a/src/core/builder.ts b/packages/agent-cli/src/core/builder.ts similarity index 100% rename from src/core/builder.ts rename to packages/agent-cli/src/core/builder.ts diff --git a/src/core/config.ts b/packages/agent-cli/src/core/config.ts similarity index 100% rename from src/core/config.ts rename to packages/agent-cli/src/core/config.ts diff --git a/src/core/hlclient.ts b/packages/agent-cli/src/core/hlclient.ts similarity index 100% rename from src/core/hlclient.ts rename to packages/agent-cli/src/core/hlclient.ts diff --git a/src/core/http.ts b/packages/agent-cli/src/core/http.ts similarity index 100% rename from src/core/http.ts rename to packages/agent-cli/src/core/http.ts diff --git a/src/core/logger.ts b/packages/agent-cli/src/core/logger.ts similarity index 100% rename from src/core/logger.ts rename to packages/agent-cli/src/core/logger.ts diff --git a/src/core/nonce.ts b/packages/agent-cli/src/core/nonce.ts similarity index 100% rename from src/core/nonce.ts rename to packages/agent-cli/src/core/nonce.ts diff --git a/src/core/output-schemas.ts b/packages/agent-cli/src/core/output-schemas.ts similarity index 100% rename from src/core/output-schemas.ts rename to packages/agent-cli/src/core/output-schemas.ts diff --git a/src/core/request-context.ts b/packages/agent-cli/src/core/request-context.ts similarity index 100% rename from src/core/request-context.ts rename to packages/agent-cli/src/core/request-context.ts diff --git a/src/core/retry.ts b/packages/agent-cli/src/core/retry.ts similarity index 100% rename from src/core/retry.ts rename to packages/agent-cli/src/core/retry.ts diff --git a/src/core/risk.ts b/packages/agent-cli/src/core/risk.ts similarity index 100% rename from src/core/risk.ts rename to packages/agent-cli/src/core/risk.ts diff --git a/src/core/router.ts b/packages/agent-cli/src/core/router.ts similarity index 100% rename from src/core/router.ts rename to packages/agent-cli/src/core/router.ts diff --git a/src/core/skill-content.ts b/packages/agent-cli/src/core/skill-content.ts similarity index 100% rename from src/core/skill-content.ts rename to packages/agent-cli/src/core/skill-content.ts diff --git a/src/core/trading.ts b/packages/agent-cli/src/core/trading.ts similarity index 100% rename from src/core/trading.ts rename to packages/agent-cli/src/core/trading.ts diff --git a/src/errors/index.ts b/packages/agent-cli/src/errors/index.ts similarity index 100% rename from src/errors/index.ts rename to packages/agent-cli/src/errors/index.ts diff --git a/src/errors/mappers.ts b/packages/agent-cli/src/errors/mappers.ts similarity index 100% rename from src/errors/mappers.ts rename to packages/agent-cli/src/errors/mappers.ts diff --git a/src/funding/amounts.ts b/packages/agent-cli/src/funding/amounts.ts similarity index 100% rename from src/funding/amounts.ts rename to packages/agent-cli/src/funding/amounts.ts diff --git a/src/funding/qr.ts b/packages/agent-cli/src/funding/qr.ts similarity index 100% rename from src/funding/qr.ts rename to packages/agent-cli/src/funding/qr.ts diff --git a/src/funding/relay.ts b/packages/agent-cli/src/funding/relay.ts similarity index 100% rename from src/funding/relay.ts rename to packages/agent-cli/src/funding/relay.ts diff --git a/src/funding/signatures.ts b/packages/agent-cli/src/funding/signatures.ts similarity index 100% rename from src/funding/signatures.ts rename to packages/agent-cli/src/funding/signatures.ts diff --git a/src/funding/status.ts b/packages/agent-cli/src/funding/status.ts similarity index 100% rename from src/funding/status.ts rename to packages/agent-cli/src/funding/status.ts diff --git a/src/funding/store.ts b/packages/agent-cli/src/funding/store.ts similarity index 100% rename from src/funding/store.ts rename to packages/agent-cli/src/funding/store.ts diff --git a/src/runner/events.ts b/packages/agent-cli/src/runner/events.ts similarity index 100% rename from src/runner/events.ts rename to packages/agent-cli/src/runner/events.ts diff --git a/src/runner/health.ts b/packages/agent-cli/src/runner/health.ts similarity index 100% rename from src/runner/health.ts rename to packages/agent-cli/src/runner/health.ts diff --git a/src/runner/lifecycle.ts b/packages/agent-cli/src/runner/lifecycle.ts similarity index 100% rename from src/runner/lifecycle.ts rename to packages/agent-cli/src/runner/lifecycle.ts diff --git a/src/runner/rpc.ts b/packages/agent-cli/src/runner/rpc.ts similarity index 100% rename from src/runner/rpc.ts rename to packages/agent-cli/src/runner/rpc.ts diff --git a/src/runner/subscriptions.ts b/packages/agent-cli/src/runner/subscriptions.ts similarity index 100% rename from src/runner/subscriptions.ts rename to packages/agent-cli/src/runner/subscriptions.ts diff --git a/src/wallet/approval.ts b/packages/agent-cli/src/wallet/approval.ts similarity index 100% rename from src/wallet/approval.ts rename to packages/agent-cli/src/wallet/approval.ts diff --git a/src/wallet/expiry.ts b/packages/agent-cli/src/wallet/expiry.ts similarity index 100% rename from src/wallet/expiry.ts rename to packages/agent-cli/src/wallet/expiry.ts diff --git a/src/wallet/policy.ts b/packages/agent-cli/src/wallet/policy.ts similarity index 100% rename from src/wallet/policy.ts rename to packages/agent-cli/src/wallet/policy.ts diff --git a/src/wallet/privy.ts b/packages/agent-cli/src/wallet/privy.ts similarity index 100% rename from src/wallet/privy.ts rename to packages/agent-cli/src/wallet/privy.ts diff --git a/src/wallet/safety.ts b/packages/agent-cli/src/wallet/safety.ts similarity index 100% rename from src/wallet/safety.ts rename to packages/agent-cli/src/wallet/safety.ts diff --git a/test/__snapshots__/qr.test.ts.snap b/packages/agent-cli/test/__snapshots__/qr.test.ts.snap similarity index 100% rename from test/__snapshots__/qr.test.ts.snap rename to packages/agent-cli/test/__snapshots__/qr.test.ts.snap diff --git a/test/amounts.test.ts b/packages/agent-cli/test/amounts.test.ts similarity index 100% rename from test/amounts.test.ts rename to packages/agent-cli/test/amounts.test.ts diff --git a/test/approval.test.ts b/packages/agent-cli/test/approval.test.ts similarity index 100% rename from test/approval.test.ts rename to packages/agent-cli/test/approval.test.ts diff --git a/test/audit.test.ts b/packages/agent-cli/test/audit.test.ts similarity index 100% rename from test/audit.test.ts rename to packages/agent-cli/test/audit.test.ts diff --git a/test/builder.test.ts b/packages/agent-cli/test/builder.test.ts similarity index 100% rename from test/builder.test.ts rename to packages/agent-cli/test/builder.test.ts diff --git a/test/cancel.test.ts b/packages/agent-cli/test/cancel.test.ts similarity index 100% rename from test/cancel.test.ts rename to packages/agent-cli/test/cancel.test.ts diff --git a/test/config.test.ts b/packages/agent-cli/test/config.test.ts similarity index 100% rename from test/config.test.ts rename to packages/agent-cli/test/config.test.ts diff --git a/test/daily-loss.test.ts b/packages/agent-cli/test/daily-loss.test.ts similarity index 100% rename from test/daily-loss.test.ts rename to packages/agent-cli/test/daily-loss.test.ts diff --git a/test/deposit-signatures.test.ts b/packages/agent-cli/test/deposit-signatures.test.ts similarity index 100% rename from test/deposit-signatures.test.ts rename to packages/agent-cli/test/deposit-signatures.test.ts diff --git a/test/deposit-status.test.ts b/packages/agent-cli/test/deposit-status.test.ts similarity index 100% rename from test/deposit-status.test.ts rename to packages/agent-cli/test/deposit-status.test.ts diff --git a/test/errors.test.ts b/packages/agent-cli/test/errors.test.ts similarity index 100% rename from test/errors.test.ts rename to packages/agent-cli/test/errors.test.ts diff --git a/test/events.test.ts b/packages/agent-cli/test/events.test.ts similarity index 100% rename from test/events.test.ts rename to packages/agent-cli/test/events.test.ts diff --git a/test/expiry.test.ts b/packages/agent-cli/test/expiry.test.ts similarity index 100% rename from test/expiry.test.ts rename to packages/agent-cli/test/expiry.test.ts diff --git a/test/fixtures.ts b/packages/agent-cli/test/fixtures.ts similarity index 100% rename from test/fixtures.ts rename to packages/agent-cli/test/fixtures.ts diff --git a/test/fund.test.ts b/packages/agent-cli/test/fund.test.ts similarity index 100% rename from test/fund.test.ts rename to packages/agent-cli/test/fund.test.ts diff --git a/test/health.test.ts b/packages/agent-cli/test/health.test.ts similarity index 100% rename from test/health.test.ts rename to packages/agent-cli/test/health.test.ts diff --git a/test/hlclient.test.ts b/packages/agent-cli/test/hlclient.test.ts similarity index 100% rename from test/hlclient.test.ts rename to packages/agent-cli/test/hlclient.test.ts diff --git a/test/leverage.test.ts b/packages/agent-cli/test/leverage.test.ts similarity index 100% rename from test/leverage.test.ts rename to packages/agent-cli/test/leverage.test.ts diff --git a/test/lifecycle.test.ts b/packages/agent-cli/test/lifecycle.test.ts similarity index 100% rename from test/lifecycle.test.ts rename to packages/agent-cli/test/lifecycle.test.ts diff --git a/test/logger.test.ts b/packages/agent-cli/test/logger.test.ts similarity index 100% rename from test/logger.test.ts rename to packages/agent-cli/test/logger.test.ts diff --git a/test/logs.test.ts b/packages/agent-cli/test/logs.test.ts similarity index 100% rename from test/logs.test.ts rename to packages/agent-cli/test/logs.test.ts diff --git a/test/mappers.test.ts b/packages/agent-cli/test/mappers.test.ts similarity index 100% rename from test/mappers.test.ts rename to packages/agent-cli/test/mappers.test.ts diff --git a/test/modify.test.ts b/packages/agent-cli/test/modify.test.ts similarity index 100% rename from test/modify.test.ts rename to packages/agent-cli/test/modify.test.ts diff --git a/test/order.test.ts b/packages/agent-cli/test/order.test.ts similarity index 100% rename from test/order.test.ts rename to packages/agent-cli/test/order.test.ts diff --git a/test/policy.test.ts b/packages/agent-cli/test/policy.test.ts similarity index 100% rename from test/policy.test.ts rename to packages/agent-cli/test/policy.test.ts diff --git a/test/privy.integration.test.ts b/packages/agent-cli/test/privy.integration.test.ts similarity index 100% rename from test/privy.integration.test.ts rename to packages/agent-cli/test/privy.integration.test.ts diff --git a/test/privy.test.ts b/packages/agent-cli/test/privy.test.ts similarity index 100% rename from test/privy.test.ts rename to packages/agent-cli/test/privy.test.ts diff --git a/test/qr.test.ts b/packages/agent-cli/test/qr.test.ts similarity index 100% rename from test/qr.test.ts rename to packages/agent-cli/test/qr.test.ts diff --git a/test/read.test.ts b/packages/agent-cli/test/read.test.ts similarity index 100% rename from test/read.test.ts rename to packages/agent-cli/test/read.test.ts diff --git a/test/relay.test.ts b/packages/agent-cli/test/relay.test.ts similarity index 100% rename from test/relay.test.ts rename to packages/agent-cli/test/relay.test.ts diff --git a/test/retry.test.ts b/packages/agent-cli/test/retry.test.ts similarity index 100% rename from test/retry.test.ts rename to packages/agent-cli/test/retry.test.ts diff --git a/test/revoke.test.ts b/packages/agent-cli/test/revoke.test.ts similarity index 100% rename from test/revoke.test.ts rename to packages/agent-cli/test/revoke.test.ts diff --git a/test/risk.test.ts b/packages/agent-cli/test/risk.test.ts similarity index 100% rename from test/risk.test.ts rename to packages/agent-cli/test/risk.test.ts diff --git a/test/rotate.test.ts b/packages/agent-cli/test/rotate.test.ts similarity index 100% rename from test/rotate.test.ts rename to packages/agent-cli/test/rotate.test.ts diff --git a/test/router.test.ts b/packages/agent-cli/test/router.test.ts similarity index 100% rename from test/router.test.ts rename to packages/agent-cli/test/router.test.ts diff --git a/test/rpc.test.ts b/packages/agent-cli/test/rpc.test.ts similarity index 100% rename from test/rpc.test.ts rename to packages/agent-cli/test/rpc.test.ts diff --git a/test/runner.test.ts b/packages/agent-cli/test/runner.test.ts similarity index 100% rename from test/runner.test.ts rename to packages/agent-cli/test/runner.test.ts diff --git a/test/safety.test.ts b/packages/agent-cli/test/safety.test.ts similarity index 100% rename from test/safety.test.ts rename to packages/agent-cli/test/safety.test.ts diff --git a/test/setup.ts b/packages/agent-cli/test/setup.ts similarity index 100% rename from test/setup.ts rename to packages/agent-cli/test/setup.ts diff --git a/test/skill.test.ts b/packages/agent-cli/test/skill.test.ts similarity index 100% rename from test/skill.test.ts rename to packages/agent-cli/test/skill.test.ts diff --git a/test/smoke.test.ts b/packages/agent-cli/test/smoke.test.ts similarity index 100% rename from test/smoke.test.ts rename to packages/agent-cli/test/smoke.test.ts diff --git a/test/subscriptions.test.ts b/packages/agent-cli/test/subscriptions.test.ts similarity index 100% rename from test/subscriptions.test.ts rename to packages/agent-cli/test/subscriptions.test.ts diff --git a/tsconfig.json b/packages/agent-cli/tsconfig.json similarity index 100% rename from tsconfig.json rename to packages/agent-cli/tsconfig.json diff --git a/vitest.config.ts b/packages/agent-cli/vitest.config.ts similarity index 100% rename from vitest.config.ts rename to packages/agent-cli/vitest.config.ts diff --git a/vitest.integration.config.ts b/packages/agent-cli/vitest.integration.config.ts similarity index 100% rename from vitest.integration.config.ts rename to packages/agent-cli/vitest.integration.config.ts From 20e3544d7c79997c9ad8f4cb614a190542352012 Mon Sep 17 00:00:00 2001 From: Joe Blau Date: Tue, 13 Oct 2026 19:52:39 -0700 Subject: [PATCH 2/2] docs: add Fumadocs site at apps/docs --- .github/workflows/docs.yml | 53 +- .gitignore | 6 + .prettierignore | 7 +- README.md | 27 +- apps/docs/AGENTS.md | 9 + apps/docs/CLAUDE.md | 1 + apps/docs/README.md | 48 + apps/docs/app/docs/[[...slug]]/page.tsx | 33 + apps/docs/app/docs/layout.tsx | 16 + apps/docs/app/global.css | 423 + apps/docs/app/layout.tsx | 24 + apps/docs/app/not-found.tsx | 23 + apps/docs/app/og/[...slug]/route.tsx | 26 + apps/docs/app/page.tsx | 48 + apps/docs/app/search.json/route.ts | 5 + apps/docs/app/sitemap.ts | 10 + apps/docs/components/copy-button.tsx | 41 + apps/docs/components/install-command.tsx | 51 + apps/docs/components/provider.tsx | 9 + apps/docs/components/search.tsx | 26 + apps/docs/components/site-footer.tsx | 40 + apps/docs/content/docs/audit.mdx | 25 + apps/docs/content/docs/commands.mdx | 2539 +++++ apps/docs/content/docs/config.mdx | 51 + apps/docs/content/docs/custody.mdx | 19 + apps/docs/content/docs/errors.mdx | 28 + apps/docs/content/docs/events.mdx | 15 + apps/docs/content/docs/funding.mdx | 21 + apps/docs/content/docs/index.mdx | 37 + apps/docs/content/docs/meta.json | 17 + apps/docs/content/docs/quickstart.mdx | 75 + apps/docs/content/docs/runner.mdx | 58 + apps/docs/content/docs/security.mdx | 29 + apps/docs/content/docs/skill.mdx | 131 + apps/docs/fonts/Bloxwap-OFL.txt | 93 + apps/docs/fonts/BloxwapSans-Black.ttf | Bin 0 -> 445740 bytes apps/docs/fonts/BloxwapSans-Bold.ttf | Bin 0 -> 447224 bytes apps/docs/fonts/README.md | 12 + apps/docs/lib/layout.shared.tsx | 18 + apps/docs/lib/og-card.tsx | 104 + apps/docs/lib/site.ts | 6 + apps/docs/lib/social.ts | 38 + apps/docs/lib/source.ts | 4 + apps/docs/lib/structured-data.ts | 13 + apps/docs/mdx-components.tsx | 7 + apps/docs/next.config.mjs | 14 + apps/docs/package.json | 38 + apps/docs/postcss.config.mjs | 1 + apps/docs/public/.nojekyll | 1 + apps/docs/public/404.md | 3 + apps/docs/public/icon.svg | 1 + apps/docs/public/llms.txt | 20 + apps/docs/public/logos/bloxwap-icon-green.svg | 1 + .../logos/bloxwap-wordmark-white-greenx.svg | 1 + .../public/logos/bloxwap-wordmark-white.svg | 1 + apps/docs/public/robots.txt | 3 + apps/docs/scripts/check-content.mjs | 15 + apps/docs/scripts/check-export.mjs | 98 + apps/docs/scripts/generate-content.mjs | 24 + apps/docs/scripts/hig-tokens.mjs | 46 + apps/docs/scripts/prepare-public.mjs | 9 + apps/docs/scripts/preview.mjs | 28 + apps/docs/source.config.ts | 4 + apps/docs/styles/hig.generated.css | 67 + apps/docs/tsconfig.json | 42 + apps/docs/vendor/hig/LICENSE | 5 + apps/docs/vendor/hig/manifest.json | 151 + apps/docs/vendor/hig/provenance.json | 11 + apps/docs/vendor/hig/tokens.css | 35 + docs/PROGRESS.md | 2 + docs/index.md | 4 +- package-lock.json | 9652 +++++++++++++---- package.json | 13 +- packages/agent-cli/README.md | 12 +- packages/agent-cli/package.json | 6 +- packages/agent-cli/scripts/check-commit.sh | 1 + packages/agent-cli/scripts/generate-docs.mjs | 27 - 77 files changed, 12601 insertions(+), 2001 deletions(-) create mode 100644 apps/docs/AGENTS.md create mode 100644 apps/docs/CLAUDE.md create mode 100644 apps/docs/README.md create mode 100644 apps/docs/app/docs/[[...slug]]/page.tsx create mode 100644 apps/docs/app/docs/layout.tsx create mode 100644 apps/docs/app/global.css create mode 100644 apps/docs/app/layout.tsx create mode 100644 apps/docs/app/not-found.tsx create mode 100644 apps/docs/app/og/[...slug]/route.tsx create mode 100644 apps/docs/app/page.tsx create mode 100644 apps/docs/app/search.json/route.ts create mode 100644 apps/docs/app/sitemap.ts create mode 100644 apps/docs/components/copy-button.tsx create mode 100644 apps/docs/components/install-command.tsx create mode 100644 apps/docs/components/provider.tsx create mode 100644 apps/docs/components/search.tsx create mode 100644 apps/docs/components/site-footer.tsx create mode 100644 apps/docs/content/docs/audit.mdx create mode 100644 apps/docs/content/docs/commands.mdx create mode 100644 apps/docs/content/docs/config.mdx create mode 100644 apps/docs/content/docs/custody.mdx create mode 100644 apps/docs/content/docs/errors.mdx create mode 100644 apps/docs/content/docs/events.mdx create mode 100644 apps/docs/content/docs/funding.mdx create mode 100644 apps/docs/content/docs/index.mdx create mode 100644 apps/docs/content/docs/meta.json create mode 100644 apps/docs/content/docs/quickstart.mdx create mode 100644 apps/docs/content/docs/runner.mdx create mode 100644 apps/docs/content/docs/security.mdx create mode 100644 apps/docs/content/docs/skill.mdx create mode 100644 apps/docs/fonts/Bloxwap-OFL.txt create mode 100644 apps/docs/fonts/BloxwapSans-Black.ttf create mode 100644 apps/docs/fonts/BloxwapSans-Bold.ttf create mode 100644 apps/docs/fonts/README.md create mode 100644 apps/docs/lib/layout.shared.tsx create mode 100644 apps/docs/lib/og-card.tsx create mode 100644 apps/docs/lib/site.ts create mode 100644 apps/docs/lib/social.ts create mode 100644 apps/docs/lib/source.ts create mode 100644 apps/docs/lib/structured-data.ts create mode 100644 apps/docs/mdx-components.tsx create mode 100644 apps/docs/next.config.mjs create mode 100644 apps/docs/package.json create mode 100644 apps/docs/postcss.config.mjs create mode 100644 apps/docs/public/.nojekyll create mode 100644 apps/docs/public/404.md create mode 100644 apps/docs/public/icon.svg create mode 100644 apps/docs/public/llms.txt create mode 100644 apps/docs/public/logos/bloxwap-icon-green.svg create mode 100644 apps/docs/public/logos/bloxwap-wordmark-white-greenx.svg create mode 100644 apps/docs/public/logos/bloxwap-wordmark-white.svg create mode 100644 apps/docs/public/robots.txt create mode 100644 apps/docs/scripts/check-content.mjs create mode 100644 apps/docs/scripts/check-export.mjs create mode 100644 apps/docs/scripts/generate-content.mjs create mode 100644 apps/docs/scripts/hig-tokens.mjs create mode 100644 apps/docs/scripts/prepare-public.mjs create mode 100644 apps/docs/scripts/preview.mjs create mode 100644 apps/docs/source.config.ts create mode 100644 apps/docs/styles/hig.generated.css create mode 100644 apps/docs/tsconfig.json create mode 100644 apps/docs/vendor/hig/LICENSE create mode 100644 apps/docs/vendor/hig/manifest.json create mode 100644 apps/docs/vendor/hig/provenance.json create mode 100644 apps/docs/vendor/hig/tokens.css delete mode 100644 packages/agent-cli/scripts/generate-docs.mjs diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index d9b2584..fcf4e68 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,23 +1,54 @@ name: Documentation + on: + push: + branches: [main] + paths: ['apps/**', 'packages/**', 'package.json', 'package-lock.json', '.github/workflows/docs.yml'] + pull_request: + paths: ['apps/**', 'packages/**', 'package.json', 'package-lock.json', '.github/workflows/docs.yml'] workflow_dispatch: + permissions: contents: read - pages: write - id-token: write + +concurrency: + group: docs-${{ github.ref }} + cancel-in-progress: true + jobs: - docs: + build: runs-on: ubuntu-latest - environment: github-pages + env: + NEXT_PUBLIC_BASE_PATH: /agent-cli + NEXT_PUBLIC_SITE_URL: https://bloxwap.github.io + NEXT_TELEMETRY_DISABLED: '1' steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@v7 + - uses: actions/setup-node@v7 with: - node-version: 24 + node-version: '24' cache: npm + cache-dependency-path: package-lock.json - run: npm ci - - run: npm run docs:generate - - uses: actions/upload-pages-artifact@v3 + - run: npm run docs:build + - run: npm run docs:check + - run: npm run lint + - uses: actions/upload-pages-artifact@v5 with: - path: site - - uses: actions/deploy-pages@v4 + path: apps/docs/out + + deploy: + if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' + needs: build + runs-on: ubuntu-latest + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - uses: actions/configure-pages@v6 + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v5 diff --git a/.gitignore b/.gitignore index e50b39c..b9ad226 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,9 @@ site/ artifacts/ .bloxwap/ binaries/ + +.next/ +.source/ +out/ +*.tsbuildinfo +apps/docs/next-env.d.ts diff --git a/.prettierignore b/.prettierignore index 2ef7ba2..2fccbe4 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,7 +2,10 @@ node_modules/ dist/ site/ binaries/ -src/core/skill-content.ts +.next/ +.source/ +out/ +packages/agent-cli/src/core/skill-content.ts docs/issues/ docs/commands.md -test/__snapshots__/ +packages/agent-cli/test/__snapshots__/ diff --git a/README.md b/README.md index 877a82e..964c3e3 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,8 @@ node packages/agent-cli/dist/cli.js config set privyAppSecretRef env:BLOXWAP_PRI node packages/agent-cli/dist/cli.js init --network testnet --master-address 0xYOUR_MASTER_ADDRESS # Sign returned EIP-712 approval externally, then submit its 65-byte signature: node packages/agent-cli/dist/cli.js init --network testnet --signature 0xYOUR_SIGNATURE -node packages/agent-cli/dist/cli.js fund --network testnet --amount 10 --origin-chain 42161 +# Fund only with a supported test origin chain/token; inspect schema fund. +# Chain 42161 and the default origin token are mainnet values. # Show QR/address and exact origin token/fees to user; complete any deposit steps. node packages/agent-cli/dist/cli.js status --network testnet # Continue only when active deposits report settled. @@ -63,6 +64,24 @@ Override via `config set builder.address` / `config set builder.fee` or `npm run build`, `npm run lint`, `npm run typecheck`, `npm test` must pass before committing. Unit tests mock services. Credential-dependent tests are gated: `npm run test:sandbox` and `npm run test:e2e` skip without the required environment. The master-key testnet harness is CI-only; unit tests never access the network. -`npm run docs:generate` creates [command schemas](docs/commands.md) and a static -site in `site/`. [Docs index](docs/index.md), [security](docs/security.md), -[error catalog](docs/errors.md), and [SKILL.md](packages/agent-cli/SKILL.md) explain operation. +The npm workspace keeps the publishable CLI in `packages/agent-cli` and the +Fumadocs app in `apps/docs`. Use Node.js **24+** for repository development. +The published CLI still supports Node.js **22.12+**. + +```sh +npm ci +npm run docs:dev # http://localhost:3903/agent-cli/ +npm run docs:build # static export at apps/docs/out +npm run docs:check +npm run docs:preview # previews the export at port 3903 +npm run pack:cli # packs only @bloxwap/agent-cli +``` + +The site defaults to `/agent-cli`; override `NEXT_PUBLIC_BASE_PATH` for another +host (use an empty value for a root deployment). Pages CI builds and checks pull +requests and deploys main. Command schemas and the skill guide are generated +from the CLI with `npm run docs:generate` and before docs builds. + +[Docs index](docs/index.md), [security](docs/security.md), +[error catalog](docs/errors.md), and [SKILL.md](packages/agent-cli/SKILL.md) remain +available as repository Markdown. See [docs app README](apps/docs/README.md). diff --git a/apps/docs/AGENTS.md b/apps/docs/AGENTS.md new file mode 100644 index 0000000..643577d --- /dev/null +++ b/apps/docs/AGENTS.md @@ -0,0 +1,9 @@ + + +# This is NOT the Next.js you know + +This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices. + +This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean. + + diff --git a/apps/docs/CLAUDE.md b/apps/docs/CLAUDE.md new file mode 100644 index 0000000..43c994c --- /dev/null +++ b/apps/docs/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md diff --git a/apps/docs/README.md b/apps/docs/README.md new file mode 100644 index 0000000..224471d --- /dev/null +++ b/apps/docs/README.md @@ -0,0 +1,48 @@ +# @bloxwap/agent-cli documentation + +Fumadocs + Next.js, statically exported for GitHub Pages. This npm workspace +mirrors [`bloxwap/chart/apps/docs`](https://github.com/bloxwap/chart/tree/main/apps/docs) conventions and shares the Bloxwap brand +used by the Hyperliquid docs. Docs dependencies stay out of the published CLI. + +From the repository root (Node.js 24+): + +```sh +npm ci +npm run docs:dev +npm run docs:build +npm run docs:check +npm run docs:preview +``` + +Development and preview use port **3903**. The default base path is `/agent-cli`, +so open http://localhost:3903/agent-cli/. Set `NEXT_PUBLIC_BASE_PATH` to override it, +including an empty string for a root deployment. Set `NEXT_PUBLIC_SITE_URL` for +canonical and social URLs (default `https://bloxwap.github.io`). The static preview +reads the base path from the built artifact and needs no Next.js server. + +Edit MDX in `content/docs/` and sidebar order in `meta.json`. `commands.mdx` and +`skill.mdx` are generated from the built CLI and packaged SKILL.md. Run +`npm run docs:generate` after CLI changes. Dev/build also synchronize them; +`docs:check` rejects stale generated content, checks sidebar/local MDX links, +verifies HIG provenance, and checks Next.js/TypeScript types. + +Build output lives in `out/`. The postbuild checker validates local HTML links +and assets, base-path containment, social metadata and 1200×630 PNG cards. Search +uses a static `search.json` index in the browser. `llms.txt`, robots, and sitemap +are generated for the configured deployment URL. The Pages workflow builds and +checks PRs and deploys only main. + +The design mirrors Chart's dark surfaces, green accents, typography, navigation, +footer, and HIG controls. `app/global.css`, `styles/hig.generated.css`, and +`vendor/hig/` are copied from Chart, including the upstream license and provenance. +`hig-tokens.mjs --check` verifies the pinned hashes and adapter; update vendor files +from the upstream source rather than hand-editing generated tokens. + +Bloxwap Sans and Mono are self-hosted by `@bloxwap/font@0.1.2`. The social renderer +uses local Bold/Black TTF instances; see `fonts/README.md` and the font license. +Brand marks in `public/logos/` are supplied artwork, never typeset replacements. +Every MDX page receives a static social card via `app/og/[...slug]/route.tsx`. + +The workspace pins `mdast-util-to-markdown` to Chart's 2.1.2: version 2.2.0 +changes attention handlers in a way incompatible with Fumadocs 16.15.14's +stringifier (bold text recurses during structured search data generation). diff --git a/apps/docs/app/docs/[[...slug]]/page.tsx b/apps/docs/app/docs/[[...slug]]/page.tsx new file mode 100644 index 0000000..daae32f --- /dev/null +++ b/apps/docs/app/docs/[[...slug]]/page.tsx @@ -0,0 +1,33 @@ +import { notFound } from 'next/navigation'; +import { DocsBody, DocsDescription, DocsPage, DocsTitle, EditOnGitHub } from 'fumadocs-ui/layouts/docs/page'; +import { source } from '@/lib/source'; +import { getMDXComponents } from '@/mdx-components'; +import { repository } from '@/lib/site'; +import { socialImagePath, socialMetadata } from '@/lib/social'; + +export default async function Page({ params }: { params: Promise<{ slug?: string[] }> }) { + const { slug } = await params; + const page = source.getPage(slug); + if (!page) notFound(); + const MDX = page.data.body; + return + {page.data.title} + {page.data.description} + + + ; +} + +export function generateStaticParams() { return source.generateParams(); } +export async function generateMetadata({ params }: { params: Promise<{ slug?: string[] }> }) { + const page = source.getPage((await params).slug); + if (!page) notFound(); + return { + title: page.data.title, + description: page.data.description, + ...socialMetadata({ + title: page.data.title, description: page.data.description ?? '', + path: `${page.url}/`, imagePath: socialImagePath(page.slugs), + }), + }; +} diff --git a/apps/docs/app/docs/layout.tsx b/apps/docs/app/docs/layout.tsx new file mode 100644 index 0000000..fb917b8 --- /dev/null +++ b/apps/docs/app/docs/layout.tsx @@ -0,0 +1,16 @@ +import { DocsLayout } from 'fumadocs-ui/layouts/docs'; +import type { ReactNode } from 'react'; +import { ArrowUpRight } from 'lucide-react'; +import { organization } from '@/lib/structured-data'; +import { baseOptions } from '@/lib/layout.shared'; +import { source } from '@/lib/source'; + +export default function Layout({ children }: { children: ReactNode }) { + return + Open Bloxwap +
AboutContactPrivacy
+ , + }}>{children}
; +} diff --git a/apps/docs/app/global.css b/apps/docs/app/global.css new file mode 100644 index 0000000..c018f5f --- /dev/null +++ b/apps/docs/app/global.css @@ -0,0 +1,423 @@ +@import 'tailwindcss'; +@import 'fumadocs-ui/css/neutral.css'; +@import 'fumadocs-ui/css/preset.css'; +@import '../vendor/hig/tokens.css'; +@import '../styles/hig.generated.css'; + +@theme inline { + --font-sans: var(--font-bloxwap-sans), ui-rounded, system-ui, sans-serif; + --font-mono: var(--font-bloxwap-mono), ui-monospace, monospace; +} + +/* Keep Fumadocs surfaces and states on the shared Bloxwap palette. */ +:root, +.dark, +.dark #nd-sidebar { + --color-fd-background: var(--bloxwap-black); + --color-fd-foreground: var(--foreground); + --color-fd-card: var(--bloxwap-black); + --color-fd-card-foreground: var(--foreground); + --color-fd-popover: var(--popover); + --color-fd-popover-foreground: var(--popover-foreground); + --color-fd-muted: var(--muted); + --color-fd-muted-foreground: var(--muted-foreground); + --color-fd-secondary: var(--card); + --color-fd-secondary-foreground: var(--foreground); + --color-fd-border: var(--border); + --color-fd-primary: var(--bloxwap-green); + --color-fd-primary-foreground: var(--bloxwap-black); + --color-fd-accent: var(--card); + --color-fd-accent-foreground: var(--foreground); + --color-fd-ring: var(--bloxwap-green); +} + +html { + scrollbar-gutter: stable; +} + +body { + font-family: var(--font-sans); +} + +html > body[data-scroll-locked] { + margin-right: 0 !important; + --removed-body-scroll-bar-size: 0px !important; +} + +::selection { + background: color-mix(in srgb, var(--bloxwap-green) 25%, transparent); + color: var(--foreground); +} + +:focus-visible { + outline: 2px solid var(--bloxwap-green); + outline-offset: 3px; +} + +#nd-page { + max-width: 52rem; +} + +#nd-page[data-full='true'] { + max-width: 73rem; +} + +#nd-page h1 { + font-family: var(--font-sans); + font-size: clamp(1.875rem, 3vw, 2.5rem); + font-weight: 600; + letter-spacing: -0.035em; + line-height: 1.2; +} + +#nd-page > p { + font-size: var(--type-body-size); + line-height: var(--type-body-line); +} + +.prose { + line-height: 1.5; +} + +.prose h2 { + font-family: var(--font-sans); + font-size: 1.375rem; + font-weight: 600; + letter-spacing: -0.02em; +} + +.prose h3 { + font-weight: 600; +} + +.prose a:not([data-card]):not(.not-prose a) { + text-decoration-color: color-mix(in srgb, currentColor 35%, transparent); + text-underline-offset: 0.2em; +} + +.prose a:not([data-card]):hover { + color: var(--bloxwap-green); +} + +.prose [data-card='true'] { + box-shadow: none; + padding: 1.25rem; +} + +.prose [data-card='true']:hover { + border-color: color-mix(in srgb, var(--bloxwap-green) 40%, var(--border)); +} + +.prose [data-card='true'] h3 { + font-size: 1rem; + font-weight: 600; +} + +#nd-sidebar { + border-color: var(--border); +} + +#nd-sidebar a[data-active='true'] { + background: color-mix(in srgb, var(--bloxwap-green) 8%, transparent); + color: var(--bloxwap-green); +} + +/* Fumadocs' sidebar icon-link bar ships as a stroked box; with GitHub its only link, drop the box and keep the icon. */ +#nd-sidebar div:has(> a[href="https://github.com/bloxwap/agent-cli"]) { + border: 0; + background: none; +} + +.docs-sidebar-footer { + padding-top: var(--space-xs); +} + +.docs-app-link { + display: flex; + align-items: center; + justify-content: space-between; + min-height: 2.5rem; + padding: 0.5rem 0.75rem; + border-radius: var(--radius-full); + transition: background-color var(--duration-fast) var(--ease-spring), color var(--duration-fast) var(--ease-spring); + font-size: 0.875rem; + font-weight: 600; +} + +.docs-app-link:hover { + background: var(--card); + color: var(--bloxwap-green); +} + +/* + * Buttons: plain-UI's .btn family (www button.tsx: pill, h-12, text-base semibold, pressed scale). + * The primary fill is brand green with black text, as in www's .nav-cta/.submit and the app's CTAs. + */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: var(--space-sm); + min-height: var(--control-h); + min-width: var(--control-min-w); + padding: 0 var(--space-xl); + border: 1px solid transparent; + border-radius: var(--radius-full); + background: var(--bloxwap-green); + color: var(--bloxwap-black); + font: 600 var(--text-base) / 1 var(--font-sans); + white-space: normal; + overflow-wrap: anywhere; + cursor: pointer; + text-decoration: none; + touch-action: manipulation; + transition: + background-color var(--duration-fast) var(--ease-spring), + color var(--duration-fast) var(--ease-spring), + border-color var(--duration-fast) var(--ease-spring), + transform var(--duration-fast) var(--ease-spring); +} +.btn:hover { background: color-mix(in oklab, var(--bloxwap-green) 90%, transparent); color: var(--bloxwap-black); } +.btn:active { transform: scale(0.98); } +.btn:disabled, .btn[aria-disabled='true'] { opacity: 0.5; pointer-events: none; } +.btn svg { flex: none; width: var(--icon-md); height: var(--icon-md); } +.btn--secondary { background: var(--card); color: var(--foreground); } +.btn--secondary:hover { background: var(--muted); color: var(--foreground); } +.btn--ghost { background: transparent; color: var(--muted-foreground); min-width: 0; } +.btn--ghost:hover { background: var(--card); color: var(--foreground); } +.btn--sm { height: var(--control-h-sm); min-width: 5rem; padding: 0 var(--space-md); font-size: var(--text-sm); } +.btn--ghost.btn--sm { min-width: 0; padding: 0 var(--space-sm); } +.btn--icon { width: var(--control-h-sm); height: var(--control-h-sm); min-width: 0; padding: 0; } + +/* Chart-specific layout on the scale above; typography, surfaces, and states follow workers/docs. */ +.brand { display: inline-flex; align-items: center; gap: var(--space-md); } +.brand img { flex: none; width: 28px; height: 28px; } +.brand-product { border-left: 1px solid var(--border); padding-left: var(--space-md); color: var(--muted-foreground); font-size: var(--text-sm); } +.hero h1, .principles h2, .start-grid h2, .guide-links h3, .not-found h1 { + font-family: var(--font-sans); +} +/* Same box as the Fumadocs header (max-w --fd-layout-width, 16px padding), so content lines up with the nav. */ +.home { width: 100%; max-width: var(--fd-layout-width, 1400px); padding: var(--space-5xl) var(--space-lg) 0; margin: 0 auto; } +.hero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: var(--space-6xl); padding-bottom: var(--space-5xl); } +.hero--single { grid-template-columns: minmax(0, 1fr); max-width: 47.5rem; } +.hero-copy { min-width: 0; } +.eyebrow { display: flex; align-items: center; gap: var(--space-sm); color: var(--color-fd-muted-foreground); font: var(--text-2xs) / 1.5 var(--font-mono); letter-spacing: .09em; } +.status-dot { width: 6px; height: 6px; border-radius: var(--radius-full); background: var(--color-fd-primary); } +.hero h1 { margin: var(--space-xl) 0 0; font-size: clamp(var(--text-5xl), 4.4vw, 4rem); line-height: 1.07; font-weight: 600; letter-spacing: -.04em; } +.hero h1 span { color: var(--color-fd-foreground); } +.hero-description { max-width: 35rem; margin-top: var(--space-xl); color: var(--color-fd-muted-foreground); line-height: 1.5; font-size: var(--text-lg); } +.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-md); margin: var(--space-2xl) 0 var(--space-xl); } +.package-install { width: fit-content; max-width: 100%; margin-top: var(--space-2xl); } +.install-tabs { display: inline-flex; max-width: 100%; gap: var(--space-xs); padding: var(--space-xs); border-radius: var(--radius-full); background: var(--card); } +.install-tabs button { + min-width: 0; height: 2rem; padding: 0 var(--space-lg); border-radius: var(--radius-full); + color: var(--muted-foreground); font: 600 var(--text-sm) / 1 var(--font-mono); cursor: pointer; + transition: background-color var(--duration-fast) var(--ease-spring), color var(--duration-fast) var(--ease-spring); +} +.install-tabs button:hover { color: var(--foreground); } +.install-tabs button[aria-selected='true'] { background: var(--muted); color: var(--foreground); } +.install-command { + display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--space-lg); min-width: 0; margin-top: var(--space-md); + padding: var(--space-xs) var(--space-xs) var(--space-xs) var(--space-xl); border-radius: var(--radius-full); + background: var(--card); font: 600 var(--text-sm) / 1.5 var(--font-mono); +} +.install-prompt { flex: none; color: var(--muted-foreground); user-select: none; } +.install-command code { min-width: 0; overflow-wrap: anywhere; user-select: all; } +.install-command .btn { margin-left: auto; } +.install-platforms, .install-feedback { margin-top: var(--space-lg); color: var(--muted-foreground); font-size: var(--text-sm); line-height: 1.5; } +.install-feedback { display: block; } + +/* Hero code window: zero-stroke fill card with the Bloxwap code palette (as on the Hyperliquid SDK site). */ +.code-window { min-width: 0; margin: 0; overflow: hidden; border-radius: var(--radius-xl); background: var(--card); color: var(--foreground); } +.code-toolbar { + display: flex; align-items: center; justify-content: space-between; gap: var(--space-md); + padding: var(--space-lg) var(--space-2xl) 0; font: var(--text-2xs) / 1.5 var(--font-mono); color: var(--muted-foreground); +} +.window-dots { display: flex; gap: var(--space-xs); } +.window-dots > i { width: 6px; height: 6px; border-radius: var(--radius-full); background: var(--muted); } +.code-language { color: color-mix(in oklab, var(--bloxwap-blue) 60%, var(--foreground)); } +.code-actions { display: flex; align-items: center; gap: var(--space-xs); margin-right: calc(-1 * var(--space-md)); } +.code-toolbar { min-height: var(--control-h-sm); } +.code-window pre { margin: 0; overflow-x: auto; padding: var(--space-xl) var(--space-2xl); font: var(--text-xs) / 1.85 var(--font-mono); tab-size: 2; scrollbar-width: none; } +.code-window pre::-webkit-scrollbar { display: none; } +.syntax-keyword { color: color-mix(in oklab, var(--bloxwap-pink) 70%, var(--foreground)); } +.syntax-string { color: var(--bloxwap-green); } +.syntax-type { color: color-mix(in oklab, var(--bloxwap-blue) 60%, var(--foreground)); } +.syntax-muted { color: var(--muted-foreground); } +.code-status { + display: flex; align-items: center; gap: var(--space-sm); margin: 0; + padding: 0 var(--space-2xl) var(--space-lg); font: var(--text-2xs) / 1.5 var(--font-mono); color: var(--muted-foreground); +} +.code-status > span { width: 6px; height: 6px; border-radius: var(--radius-full); background: var(--bloxwap-green); } + +/* + * Entrance: three attention layers ~200 ms apart on one curve (MOT-2), as on the Hyperliquid SDK site: + * headline, then its copy and actions, then the code window, then the playground. + */ +@keyframes landing-rise { + from { opacity: 0; translate: 0 8px; } +} +.hero-copy > *, .code-window, .hero-preview { animation: landing-rise 600ms var(--ease-spring) both; } +.hero-copy > h1 { animation-delay: 60ms; } +.hero-copy > :not(.eyebrow, h1) { animation-delay: 200ms; } +.code-window { animation-delay: 360ms; } +.hero-preview { animation-delay: 520ms; } +@media (prefers-reduced-motion: reduce) { + .hero-copy > *, .code-window, .hero-preview { animation: none; } +} + +/* Search (header and docs sidebar): a zero-stroke filled pill at the small control height, with key chips one step lighter than the box. */ +button[data-search-full] { + height: var(--control-h-sm); gap: var(--space-sm); padding: 0 var(--space-xs) 0 var(--space-md); + border: 0; border-radius: var(--radius-full); background: var(--card); color: var(--muted-foreground); font-size: var(--text-sm); + transition: background-color var(--duration-fast) var(--ease-spring), color var(--duration-fast) var(--ease-spring); +} +button[data-search-full]:hover { background: var(--muted); color: var(--foreground); } +button[data-search-full] kbd { + display: inline-grid; place-items: center; min-width: 1.5rem; height: 1.5rem; padding: 0 var(--space-xs); + border: 0; border-radius: var(--radius-full); background: color-mix(in oklab, var(--card) 80%, var(--foreground)); color: var(--foreground); + font: var(--text-2xs) / 1 var(--font-mono); +} +.hero-preview { + min-width: 0; + padding-bottom: var(--space-6xl); + scroll-margin-top: 5rem; +} +.preview-intro { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-lg); margin-bottom: var(--space-2xl); } +.preview-intro h2 { margin: 0; font-size: var(--text-3xl); letter-spacing: -.04em; line-height: 1.2; font-weight: 600; } +.preview-intro > p:not(.eyebrow) { margin: 0; max-width: 25rem; color: var(--color-fd-muted-foreground); font-size: var(--text-sm); line-height: 1.7; } +.preview-intro--section { align-items: center; text-align: center; } +.preview-actions { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-xs); } +.preview-intro > .preview-actions:not(:first-child) { margin-top: var(--space-xs); } +.chart-preview { + overflow: hidden; + width: 100%; + border: 1px solid var(--border); + border-radius: var(--radius-xl); + background: var(--bloxwap-black); + color: var(--foreground); + font-family: var(--font-sans); +} +.chart-frame { + display: block; + width: 100%; + height: clamp(320px, 72svh, 900px); + scroll-margin-block: var(--space-6xl) var(--space-lg); + border: 0; + background: var(--bloxwap-black); +} +.chart-preview:fullscreen { display: flex; flex-direction: column; height: 100%; border: 0; border-radius: 0; } +.chart-preview:fullscreen .chart-frame { flex: 1; min-height: 0; height: 100%; } +/* Cards, not rules: zero-stroke fill cards (plain-UI .card fill, --radius-xl, --space-xl, no border); hover shifts the fill. */ +.principles { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-md); padding: var(--space-lg) 0 var(--space-3xl); } +.principles > div, .guide-links a { + background: var(--card); + border-radius: var(--radius-xl); + padding: var(--space-xl); +} +.feature-number { color: var(--color-fd-primary); font: var(--text-2xs) var(--font-mono); } +.principles h2 { font-size: var(--text-base); font-weight: 600; margin: var(--space-md) 0 var(--space-sm); } +.principles p { font-size: var(--text-sm); color: var(--color-fd-muted-foreground); line-height: 1.7; } +.start-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-6xl); padding: var(--space-5xl) 0 var(--space-6xl); } +.start-grid h2 { margin: var(--space-xl) 0; font-size: var(--text-3xl); letter-spacing: -.04em; line-height: 1.2; font-weight: 600; } +.start-grid > div > p:last-child { color: var(--color-fd-muted-foreground); font-size: var(--text-sm); max-width: 25rem; line-height: 1.7; } +.guide-links { display: grid; gap: var(--space-md); } +.guide-links a { + display: flex; align-items: center; gap: var(--space-xl); + transition: background-color var(--duration-fast) var(--ease-spring); +} +.guide-links a:hover { background: var(--muted); } +.guide-links a > span { font: var(--text-2xs) var(--font-mono); color: var(--color-fd-muted-foreground); } +.guide-links a > svg { flex: none; margin-left: auto; width: var(--icon-md); height: var(--icon-md); color: var(--color-fd-muted-foreground); transition: color var(--duration-fast) var(--ease-spring), transform var(--duration-fast) var(--ease-spring); } +.guide-links a:hover > svg { color: var(--color-fd-primary); transform: translateX(2px); } +.guide-links h3 { font-size: var(--text-sm); margin-bottom: var(--space-xs); font-weight: 600; transition: color var(--duration-fast) var(--ease-spring); } +.guide-links a:hover h3 { color: var(--color-fd-primary); } +.guide-links p { color: var(--color-fd-muted-foreground); font-size: var(--text-xs); } +/* Full-bleed rule; content inset to the header's box so both edges line up with the nav. */ +/* The bloxwap.com footer (monorepo workers/www), inset to the header's box. The home page ends with it. */ +.site-footer { margin-top: auto; padding: var(--space-5xl) max(var(--space-lg), calc((100% - var(--fd-layout-width, 1400px)) / 2 + var(--space-lg))) var(--space-4xl); } +/* Page end: Edit on GitHub as a quiet ghost pill, prev/next as zero-stroke fill cards (the landing's card style). */ +#nd-page .edit-on-github { + align-self: flex-start; height: var(--control-h-sm); padding: 0 var(--space-md); border: 0; border-radius: var(--radius-full); + background: transparent; color: var(--muted-foreground); font-size: var(--text-sm); + transition: background-color var(--duration-fast) var(--ease-spring), color var(--duration-fast) var(--ease-spring); +} +#nd-page .edit-on-github:hover { background: var(--card); color: var(--foreground); } +.page-nav > a { + padding: var(--space-xl) var(--space-2xl); border: 0; border-radius: var(--radius-xl); background: var(--card); + transition: background-color var(--duration-fast) var(--ease-spring), color var(--duration-fast) var(--ease-spring); +} +.page-nav > a:hover { background: var(--muted); color: var(--bloxwap-green); } +.footer-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: var(--space-2xl); row-gap: var(--space-4xl); } +.footer-brand { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-md); } +.footer-brand p { margin: 0; color: var(--color-fd-muted-foreground); font-size: var(--text-sm); } +.footer-lockup { display: flex; align-items: center; gap: var(--space-sm); } +.footer-icon { width: 36px; height: 36px; border-radius: 10px; } +/* The wordmark's box reserves descender room for the "p"; shift it so the cap height (not the box) centers on the icon: (143/2 - (149-74.6)/2) / 223.6 of the viewBox. */ +.footer-wordmark { width: auto; height: 32px; transform: translateY(15.3%); } +.footer-col h2 { margin: 0 0 var(--space-md); color: var(--color-fd-muted-foreground); font: 700 var(--text-2xs) / 1.5 var(--font-sans); letter-spacing: .14em; text-transform: uppercase; } +.footer-col a, .footer-base a { transition: color var(--duration-fast) var(--ease-spring), opacity var(--duration-fast) var(--ease-spring); } +.footer-col a { display: block; width: fit-content; padding: var(--space-xs) 0; color: var(--color-fd-foreground); font-size: var(--text-sm); opacity: .8; } +.footer-col a:hover, .footer-base a:hover { color: var(--color-fd-primary); opacity: 1; } +.footer-base { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-sm); margin-top: var(--space-4xl); color: var(--color-fd-muted-foreground); font-size: var(--text-xs); } +.footer-legal { display: inline-flex; align-items: center; gap: var(--space-sm); } +@media (max-width: 860px) { + .footer-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: var(--space-xl); } + .footer-brand { grid-column: 1 / -1; } + .footer-col a { padding: var(--space-md) 0; } +} +@media (max-width: 480px) { .footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } +.docs-sidebar-links { display: flex; align-items: center; gap: var(--space-lg); padding-top: var(--space-lg); font-size: var(--text-xs); color: var(--color-fd-muted-foreground); } +.docs-sidebar-links a { transition: color var(--duration-fast) var(--ease-spring); } +.docs-sidebar-links a:hover { color: var(--color-fd-foreground); } +.not-found { max-width: 37.5rem; padding: 7.5rem var(--space-2xl); margin: 0 auto; } +.not-found h1 { font-size: var(--text-4xl); margin: var(--space-2xl) 0; } +.not-found .btn { margin-top: var(--space-3xl); } +.not-found-links { display: flex; flex-wrap: wrap; gap: var(--space-sm) var(--space-xl); margin-top: var(--space-3xl); font: var(--text-2xs) / 1.5 var(--font-mono); letter-spacing: .09em; } +.not-found-links a { color: var(--color-fd-muted-foreground); transition: color var(--duration-fast) var(--ease-spring); } +.not-found-links a:hover { color: var(--color-fd-foreground); } +@media (max-width: 800px) { + .home { padding-top: var(--space-3xl); } + .hero { grid-template-columns: minmax(0, 1fr); gap: var(--space-3xl); padding-bottom: var(--space-3xl); } + .hero h1 { font-size: var(--text-6xl); } +} +@media (max-width: 600px) { + .home { padding: var(--space-3xl) var(--space-lg) 0; } + .hero h1 { font-size: var(--text-5xl); } + /* Share the row when both fit; otherwise each takes a full-width row (app pattern: full-width primary). */ + .hero-actions > .btn { flex: 1 1 auto; } + .install-command { gap: var(--space-sm); padding-left: var(--space-lg); font-size: clamp(var(--text-xs), 3.4vw, var(--text-sm)); } + .principles { grid-template-columns: 1fr; } + .start-grid { grid-template-columns: 1fr; gap: var(--space-3xl); } + .start-grid { padding: var(--space-4xl) 0; } + .chart-frame { height: clamp(320px, 72svh, 600px); } +} + +/* HIG type roles and adaptive targets; the dense chart keeps compact controls. */ +body { font-size: var(--type-body-size); line-height: var(--type-body-line); } +.hero h1 { font-size: clamp(var(--type-title-size), 4.4vw, var(--type-display-size)); line-height: 1.0833; font-weight: var(--type-display-weight); } +#nd-page h1 { font-size: var(--type-title-size); line-height: var(--type-title-line); font-weight: var(--type-title-weight); } +.install-tabs button { min-height: var(--control-h-sm); } +.install-feedback, .copy-feedback { color: var(--destructive); font-size: var(--type-caption-size); } +.btn--icon { min-height: var(--control-h-sm); } +@media (pointer: coarse) { + .btn--sm, .btn--icon, .install-tabs button, .docs-app-link, #nd-page .edit-on-github { min-height: var(--control-h); } + .btn--icon { min-width: var(--control-h); } +} +@media (prefers-reduced-motion: reduce) { + *, *::before, *::after { animation-duration: 0ms !important; transition-duration: 0ms !important; scroll-behavior: auto !important; } + .btn:active, .guide-links a:hover > svg { transform: none; } +} + +@theme inline { + --color-background: var(--background); --color-foreground: var(--foreground); + --color-card: var(--card); --color-card-foreground: var(--card-foreground); + --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); + --color-border: var(--border); --color-primary: var(--primary); + --color-bloxwap-green: var(--hig-action); --color-bloxwap-black: var(--hig-background); + --text-3xs: 0.625rem; --text-2xs: 0.6875rem; +} + +.search-error { color: var(--destructive); padding: var(--space-lg); } + +.install-command .copy-feedback { grid-column: 1 / -1; padding-inline-end: var(--space-lg); } diff --git a/apps/docs/app/layout.tsx b/apps/docs/app/layout.tsx new file mode 100644 index 0000000..95fea6e --- /dev/null +++ b/apps/docs/app/layout.tsx @@ -0,0 +1,24 @@ +import type { Metadata } from 'next'; +import { BloxwapSans as sans } from '@bloxwap/font/sans'; +import { BloxwapMono as mono } from '@bloxwap/font/mono'; +import type { ReactNode } from 'react'; +import { Provider } from '@/components/provider'; +import { basePath, siteUrl } from '@/lib/site'; +import { homeSocial, socialImagePath, socialMetadata } from '@/lib/social'; +import './global.css'; + +export const metadata: Metadata = { + metadataBase: new URL(`${siteUrl}${basePath}/`), + title: { default: '@bloxwap/agent-cli — Hyperliquid trading for agents', template: '%s · @bloxwap/agent-cli' }, + description: 'Hyperliquid trading with JSON commands, Privy custody, Relay funding, and a persistent signing runner.', + icons: { icon: `${basePath}/icon.svg` }, + ...socialMetadata({ ...homeSocial, path: '/', imagePath: socialImagePath() }), +}; + +export default function RootLayout({ children }: { children: ReactNode }) { + return + + {children} + + ; +} diff --git a/apps/docs/app/not-found.tsx b/apps/docs/app/not-found.tsx new file mode 100644 index 0000000..465bd69 --- /dev/null +++ b/apps/docs/app/not-found.tsx @@ -0,0 +1,23 @@ +import Link from 'next/link'; +import { ArrowRight } from 'lucide-react'; +import { assetUrl } from '@/lib/site'; + +const RESOURCES: [string, string][] = [ + ['Documentation', '/docs'], + ['llms.txt', '/llms.txt'], + ['Sitemap', '/sitemap.xml'], + ['Markdown version of this error', '/404.md'], +]; + +export default function NotFound() { + return
+ +

404 / PAGE NOT FOUND

+

That page is missing.

+

The page you requested does not exist on this site. It may have moved, or the URL may be wrong. Head back to the documentation to find your next step, or use one of the machine-readable indexes below.

+ Open documentation
; +} diff --git a/apps/docs/app/og/[...slug]/route.tsx b/apps/docs/app/og/[...slug]/route.tsx new file mode 100644 index 0000000..6d48896 --- /dev/null +++ b/apps/docs/app/og/[...slug]/route.tsx @@ -0,0 +1,26 @@ +import { source } from '@/lib/source'; +import { renderSocialCard } from '@/lib/og-card'; +import { homeSocial, socialImageSegments } from '@/lib/social'; + +export const dynamic = 'force-static'; +export const dynamicParams = false; + +export function generateStaticParams() { + return [ + { slug: socialImageSegments() }, + ...source.getPages().map((page) => ({ slug: socialImageSegments(page.slugs) })), + ]; +} + +export async function GET(_request: Request, { params }: { params: Promise<{ slug: string[] }> }) { + const { slug } = await params; + const key = slug.join('/'); + if (key === 'home.png') return renderSocialCard({ ...homeSocial, category: 'HYPERLIQUID · CLI', home: true }); + + const page = source.getPages().find((entry) => socialImageSegments(entry.slugs).join('/') === key); + if (!page) return new Response('Not found', { status: 404 }); + const category = page.slugs[0] === 'api' ? 'API REFERENCE' + : page.slugs[0] === 'guides' ? 'GUIDES' + : page.slugs[0] === 'playground' ? 'PLAYGROUND' : 'DOCUMENTATION'; + return renderSocialCard({ title: page.data.title, description: page.data.description ?? '', category }); +} diff --git a/apps/docs/app/page.tsx b/apps/docs/app/page.tsx new file mode 100644 index 0000000..ba195d3 --- /dev/null +++ b/apps/docs/app/page.tsx @@ -0,0 +1,48 @@ +import Link from 'next/link'; +import { ArrowRight } from 'lucide-react'; +import { HomeLayout } from 'fumadocs-ui/layouts/home'; +import { baseOptions } from '@/lib/layout.shared'; +import { InstallCommand } from '@/components/install-command'; +import { SiteFooter } from '@/components/site-footer'; + +export default function Home() { + return +
+
+
+

HYPERLIQUID · AGENT CLI

+

Trading tools.
For your agent.

+

JSON commands, a persistent signing runner, Privy managed agents, and Relay funding. Keep master custody in your wallet and give your agent the tools to trade.

+
Get started
+ +
+
+
init → fund → status → runShell
+
{`agent-cli schema order
+agent-cli init --network testnet
+# Complete external wallet approvals.
+# Fund using a supported test route and show the QR.
+agent-cli status --network testnet
+# Wait for deposits to settle.
+agent-cli run --network testnet --detach
+agent-cli events --follow --since 0`}
+
+
+
+
01

JSON in. JSON out.

Discover input and output schemas for every command. Handle stable error codes and exact decimal strings.

+
02

External master custody.

A separate managed agent signs trades. Master approvals and funding signatures stay in the user's wallet.

+
03

Track every intent.

Replay events and inspect a hash-chained audit connecting intent, decisions, signature digests, and fills.

+
+
+

FROM ONBOARDING TO OPERATIONS

Build a trading workflow.

Start with a test account, set risk limits, and monitor your runner.

+
{[ + ['/docs/quickstart', '01', 'Quickstart', 'Initialize, fund, confirm settlement, and run.'], + ['/docs/config', '02', 'Configuration', 'State, environment variables, limits, and builder fees.'], + ['/docs/custody', '03', 'Custody and security', 'Understand the signing and policy boundaries.'], + ['/docs/skill', '04', 'Agent skill', 'Install the packaged guide for Codex or Claude Code.'], + ].map(([href, number, title, description]) => {number}

{title}

{description}

+
+
+ +
; +} diff --git a/apps/docs/app/search.json/route.ts b/apps/docs/app/search.json/route.ts new file mode 100644 index 0000000..1eb4b9d --- /dev/null +++ b/apps/docs/app/search.json/route.ts @@ -0,0 +1,5 @@ +import { createFromSource } from 'fumadocs-core/search/server'; +import { source } from '@/lib/source'; + +export const dynamic = 'force-static'; +export const { staticGET: GET } = createFromSource(source); diff --git a/apps/docs/app/sitemap.ts b/apps/docs/app/sitemap.ts new file mode 100644 index 0000000..79391fa --- /dev/null +++ b/apps/docs/app/sitemap.ts @@ -0,0 +1,10 @@ +import type { MetadataRoute } from 'next'; +import { source } from '@/lib/source'; +import { basePath, siteUrl } from '@/lib/site'; + +export const dynamic = 'force-static'; +export default function sitemap(): MetadataRoute.Sitemap { + // Every page is regenerated on each deploy, so the build time is each page's last modification. + const lastModified = new Date(); + return ['/', ...source.getPages().map((page) => page.url + '/')].map((path) => ({ url: `${siteUrl}${basePath}${path}`, lastModified })); +} diff --git a/apps/docs/components/copy-button.tsx b/apps/docs/components/copy-button.tsx new file mode 100644 index 0000000..e921ddf --- /dev/null +++ b/apps/docs/components/copy-button.tsx @@ -0,0 +1,41 @@ +'use client'; + +import { useEffect, useRef, useState } from 'react'; +import { Check, Copy } from 'lucide-react'; + +/** A quiet icon button that copies `text`, with a check mark and a screen-reader status on success. */ +export function CopyButton({ text, label }: { text: string; label: string }) { + const pending = useRef(false); + const [busy, setBusy] = useState(false); + const [result, setResult] = useState<'copied' | 'failed' | null>(null); + + useEffect(() => { + if (result === null) return; + const timer = window.setTimeout(() => setResult(null), result === 'copied' ? 2000 : 5000); + return () => window.clearTimeout(timer); + }, [result]); + + async function copy() { + if (pending.current) return; + pending.current = true; + setBusy(true); + try { + await navigator.clipboard.writeText(text); + setResult('copied'); + } catch { + setResult('failed'); + } finally { + pending.current = false; + setBusy(false); + } + } + + return <> + + + {result === 'copied' ? 'Code copied to clipboard.' : result === 'failed' ? 'Could not copy. Select the code to copy it manually.' : ''} + + ; +} diff --git a/apps/docs/components/install-command.tsx b/apps/docs/components/install-command.tsx new file mode 100644 index 0000000..4162eb6 --- /dev/null +++ b/apps/docs/components/install-command.tsx @@ -0,0 +1,51 @@ +'use client'; + +import { useId, useState } from 'react'; +import { CopyButton } from './copy-button'; + +const managers = [ + { name: 'npm', command: 'npm install -g @bloxwap/agent-cli' }, + { name: 'bun', command: 'bunx @bloxwap/agent-cli --help' }, +]; + +export function InstallCommand() { + const id = useId(); + const [selected, setSelected] = useState(0); + const { command } = managers[selected]; + + function select(index: number) { + setSelected(index); + } + + return
+
+ {managers.map(({ name }, index) => )} +
+
+ + {command} + +
+

Node.js 22.12+ · Bun

+
; +} diff --git a/apps/docs/components/provider.tsx b/apps/docs/components/provider.tsx new file mode 100644 index 0000000..e3c02a4 --- /dev/null +++ b/apps/docs/components/provider.tsx @@ -0,0 +1,9 @@ +'use client'; + +import { RootProvider } from 'fumadocs-ui/provider/next'; +import type { ReactNode } from 'react'; +import StaticSearch from './search'; + +export function Provider({ children }: { children: ReactNode }) { + return {children}; +} diff --git a/apps/docs/components/search.tsx b/apps/docs/components/search.tsx new file mode 100644 index 0000000..11d05a7 --- /dev/null +++ b/apps/docs/components/search.tsx @@ -0,0 +1,26 @@ +'use client'; + +import { useDocsSearch } from 'fumadocs-core/search/client'; +import { staticClient } from 'fumadocs-core/search/client/orama-static'; +import { + SearchDialog, SearchDialogClose, SearchDialogContent, SearchDialogHeader, + SearchDialogIcon, SearchDialogInput, SearchDialogList, SearchDialogOverlay, + type SharedProps, +} from 'fumadocs-ui/components/dialog/search'; +import { assetUrl } from '@/lib/site'; + +export default function StaticSearch(props: SharedProps) { + const { search, setSearch, query } = useDocsSearch({ + client: staticClient({ from: assetUrl('/search.json') }), + }); + return ( + + + + + {query.error &&

Search is unavailable. Use the documentation navigation or close search and try again.

} + +
+
+ ); +} diff --git a/apps/docs/components/site-footer.tsx b/apps/docs/components/site-footer.tsx new file mode 100644 index 0000000..92b448e --- /dev/null +++ b/apps/docs/components/site-footer.tsx @@ -0,0 +1,40 @@ +import { assetUrl } from '@/lib/site'; + +/** Link columns mirror the bloxwap.com footer (monorepo workers/www), so both sites point at the same places. */ +const COLUMNS: [string, [string, string][]][] = [ + ['Product', [['Home', 'https://bloxwap.com'], ['Web', 'https://bloxwap.com'], ['Pro', 'https://bloxwap.pro'], ['App', 'https://bloxwap.com/#app']]], + ['Social', [['X', 'https://x.com/bloxwap'], ['Telegram', 'https://t.me/bloxwap'], ['Discord', 'https://discord.com/invite/cEfkcg6JHT'], ['Reddit', 'https://www.reddit.com/r/Bloxwap/']]], + ['Company', [['Blog', 'https://bloxwap.com/blog'], ['Docs', 'https://bloxwap.com/docs'], ['GitHub', 'https://github.com/bloxwap'], ['Contact', 'mailto:support@bloxwap.com']]], +]; + +/** The Bloxwap site footer: brand, three link columns, and the legal row. */ +export function SiteFooter() { + return ; +} diff --git a/apps/docs/content/docs/audit.mdx b/apps/docs/content/docs/audit.mdx new file mode 100644 index 0000000..7661230 --- /dev/null +++ b/apps/docs/content/docs/audit.mdx @@ -0,0 +1,25 @@ +--- +title: "Audit trail" +description: "Connect user intent, risk decisions, signatures, responses, and fills." +--- + +```sh +agent-cli audit +agent-cli audit --intent YOUR_INTENT_ID +agent-cli audit --cloid 0x11111111111111111111111111111111 +``` + +Trading actions accept `intentId` and `intent` (or `--intent-id` and `--intent`). +Use a stable `cloid` to reconcile retries. The journal at `~/.bloxwap/audit.jsonl` +records intent, decision, signature digest, response, and linked fill stages. +Entries include `seq`, UTC `timestamp`, `intentId`, optional `cloid` and `requestId`, +`stage`, redacted `data`, `previousHash`, and SHA-256 `hash`. + +`audit` verifies the complete chain before filtering. Each entry hashes its payload +and references the previous hash; sequence numbers are checked. Appends use a +private lock and sync the file. Raw signatures are never recorded, only digests. + +The chain detects edits to a retained journal. It cannot detect deletion of the +whole journal or replacement with a newly valid chain without an external +checkpoint. Back up checkpoints separately. Same-user malware and root can change +local files and configuration; see [Security](/docs/security). diff --git a/apps/docs/content/docs/commands.mdx b/apps/docs/content/docs/commands.mdx new file mode 100644 index 0000000..ef60959 --- /dev/null +++ b/apps/docs/content/docs/commands.mdx @@ -0,0 +1,2539 @@ +--- +title: Command reference +description: Every registered command, with input and output schemas from the CLI. +--- + +Generated from `agent-cli --help` and `agent-cli schema COMMAND`. Do not edit by hand. + +Global flags: `--config PATH`, `--network mainnet|testnet`, `--pretty`, `--json OBJECT`. Inputs accept flags, JSON arguments, or a JSON object on stdin. Unknown object fields are rejected. + +## Help and schema + +```sh +agent-cli --help +agent-cli schema order +``` + +Help lists registered commands and global flags. `schema COMMAND` returns that command's input and success/failure output schemas without calling a service. + +## config + +Get, set or validate local configuration + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "args": { + "default": [], + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "args" + ], + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": {} + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## init + +Create agent and emit resumable master-wallet approvals + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "masterAddress": { + "type": "string", + "pattern": "^0x[0-9a-fA-F]{40}$" + }, + "validUntil": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "signature": { + "type": "string" + }, + "builderSignature": { + "type": "string" + }, + "qr": { + "default": true, + "type": "boolean" + } + }, + "required": [ + "qr" + ], + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "object", + "properties": { + "masterAddress": { + "type": "string" + }, + "agentAddress": { + "type": "string" + }, + "expiry": { + "type": "number" + }, + "policyId": { + "type": "string" + }, + "approved": { + "type": "boolean" + }, + "requiresSignature": { + "type": "boolean" + }, + "approvals": {}, + "deeplink": { + "type": "string" + }, + "qrAscii": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "masterAddress", + "agentAddress", + "expiry", + "policyId", + "approved" + ] + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## fund + +Quote funding with address, QR and transparent fees + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "originChain": { + "default": 42161, + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "originCurrency": { + "default": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + "type": "string" + }, + "originDecimals": { + "default": 6, + "type": "integer", + "minimum": 0, + "maximum": 30 + }, + "amount": { + "default": "10", + "type": "string" + }, + "qr": { + "default": true, + "type": "boolean" + }, + "qrPath": { + "type": "string" + } + }, + "required": [ + "originChain", + "originCurrency", + "originDecimals", + "amount", + "qr" + ], + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "object", + "properties": { + "depositId": { + "type": "string" + }, + "depositAddress": { + "type": "string" + }, + "originChain": { + "type": "number" + }, + "originCurrency": { + "type": "string" + }, + "minDeposit": { + "type": "string" + }, + "expectedReceived": { + "type": "string" + }, + "expectedReceivedHuman": { + "type": "string" + }, + "fees": {}, + "builderFeeRate": { + "type": "string" + }, + "builderAddress": { + "type": "string" + }, + "expiresAt": { + "type": "number" + }, + "state": { + "type": "string" + }, + "signatureSteps": { + "type": "array", + "items": {} + }, + "qrAscii": { + "type": [ + "string", + "null" + ] + }, + "qrPath": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "depositId", + "depositAddress", + "expectedReceived", + "fees", + "builderFeeRate", + "builderAddress", + "expiresAt", + "qrAscii" + ] + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## deposit + +Resume deposit steps or submit a master-wallet signature + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "depositId": { + "type": "string" + }, + "stepId": { + "type": "string" + }, + "signature": { + "type": "string" + } + }, + "required": [ + "depositId" + ], + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "object", + "properties": { + "depositId": { + "type": "string" + }, + "steps": { + "type": "array", + "items": {} + }, + "complete": { + "type": "boolean" + } + }, + "required": [] + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## status + +Read account status + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "object", + "properties": { + "balance": { + "type": "object", + "properties": { + "accountValue": { + "type": "string" + }, + "accountValueUnits": { + "type": "string" + }, + "withdrawable": { + "type": "string" + }, + "marginUsed": { + "type": "string" + } + }, + "required": [ + "accountValue", + "accountValueUnits", + "withdrawable", + "marginUsed" + ] + }, + "positions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "coin": { + "type": "string" + }, + "size": { + "type": "string" + }, + "entryPrice": { + "type": [ + "string", + "null" + ] + }, + "unrealizedPnl": { + "type": "string" + }, + "liquidationPrice": { + "type": [ + "string", + "null" + ] + }, + "leverage": { + "type": "string" + }, + "marginMode": { + "type": "string" + } + }, + "required": [ + "coin", + "size", + "leverage" + ] + } + }, + "agent": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "approved": { + "type": "boolean" + }, + "revoked": { + "type": "boolean" + }, + "expiry": { + "type": [ + "number", + "null" + ] + }, + "daysRemaining": { + "type": [ + "string", + "null" + ] + }, + "warnings": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [] + }, + "policy": { + "type": "object", + "properties": { + "id": { + "type": [ + "string", + "null" + ] + }, + "version": { + "type": "string" + } + }, + "required": [] + }, + "deposits": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "enum": [ + "awaiting_funds", + "pending", + "settled", + "failed", + "refunded" + ] + } + }, + "required": [] + } + }, + "approvedMaxBuilderFee": { + "type": "string" + }, + "runner": { + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "balance", + "positions", + "agent", + "policy", + "deposits", + "approvedMaxBuilderFee", + "runner" + ] + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## balance + +Read account balance + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "object", + "properties": { + "accountValue": { + "type": "string" + }, + "accountValueUnits": { + "type": "string" + }, + "withdrawable": { + "type": "string" + }, + "marginUsed": { + "type": "string" + } + }, + "required": [ + "accountValue", + "accountValueUnits", + "withdrawable", + "marginUsed" + ] + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## positions + +Read account positions + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "coin": { + "type": "string" + }, + "size": { + "type": "string" + }, + "entryPrice": { + "type": [ + "string", + "null" + ] + }, + "unrealizedPnl": { + "type": "string" + }, + "liquidationPrice": { + "type": [ + "string", + "null" + ] + }, + "leverage": { + "type": "string" + }, + "marginMode": { + "type": "string" + } + }, + "required": [ + "coin", + "size", + "leverage" + ] + } + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## orders + +Read account orders + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "coin": { + "type": "string" + }, + "oid": { + "type": "string" + }, + "sz": { + "type": "string" + }, + "limitPx": { + "type": "string" + }, + "side": { + "enum": [ + "A", + "B" + ] + }, + "cloid": { + "type": "string" + } + }, + "required": [ + "coin", + "oid", + "sz", + "limitPx", + "side" + ] + } + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## order + +Place limit, IOC market or TP/SL order + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "coin": { + "type": "string" + }, + "side": { + "type": "string", + "enum": [ + "buy", + "sell" + ] + }, + "size": { + "type": "string" + }, + "price": { + "type": "string" + }, + "type": { + "default": "limit", + "type": "string", + "enum": [ + "limit", + "market", + "tp", + "sl" + ] + }, + "tif": { + "default": "Gtc", + "type": "string", + "enum": [ + "Gtc", + "Ioc", + "Alo" + ] + }, + "reduceOnly": { + "default": false, + "type": "boolean" + }, + "cloid": { + "type": "string", + "pattern": "^0x[0-9a-fA-F]{32}$" + }, + "triggerPrice": { + "type": "string" + }, + "slippage": { + "default": 0.01, + "type": "number", + "minimum": 0, + "maximum": 0.1 + }, + "intent": { + "type": "string" + }, + "intentId": { + "type": "string" + } + }, + "required": [ + "coin", + "side", + "size", + "type", + "tif", + "reduceOnly", + "slippage" + ], + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "object", + "properties": { + "result": {}, + "builderFeeRate": { + "type": "string" + }, + "builderAddress": { + "type": "string" + }, + "cloid": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "result", + "builderFeeRate", + "builderAddress", + "cloid" + ] + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## cancel + +Cancel by oid/cloid, coin or all + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "oid": { + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "oids": { + "type": "array", + "items": { + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "cloid": { + "type": "string" + }, + "cloids": { + "type": "array", + "items": { + "type": "string" + } + }, + "coin": { + "type": "string" + }, + "all": { + "default": false, + "type": "boolean" + }, + "intent": { + "type": "string" + }, + "intentId": { + "type": "string" + } + }, + "required": [ + "all" + ], + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "object", + "properties": { + "cancelled": { + "type": "array", + "items": { + "type": "string" + } + }, + "result": {} + }, + "required": [ + "cancelled", + "result" + ] + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## modify + +Modify price/size of single or batch resting orders + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "oid": { + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "cloid": { + "type": "string", + "pattern": "^0x[0-9a-fA-F]{32}$" + }, + "size": { + "type": "string" + }, + "price": { + "type": "string" + }, + "modifications": { + "type": "array", + "items": { + "type": "object", + "properties": { + "oid": { + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "cloid": { + "type": "string", + "pattern": "^0x[0-9a-fA-F]{32}$" + }, + "size": { + "type": "string" + }, + "price": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "intent": { + "type": "string" + }, + "intentId": { + "type": "string" + } + }, + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "object", + "properties": { + "status": { + "type": "string" + }, + "response": {} + }, + "required": [ + "status" + ] + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## leverage + +Set market leverage and cross/isolated margin mode + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "coin": { + "type": "string" + }, + "leverage": { + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "mode": { + "default": "cross", + "type": "string", + "enum": [ + "cross", + "isolated" + ] + }, + "intent": { + "type": "string" + }, + "intentId": { + "type": "string" + } + }, + "required": [ + "coin", + "leverage", + "mode" + ], + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "object", + "properties": { + "status": { + "type": "string" + }, + "response": {} + }, + "required": [ + "status" + ] + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## run + +Start persistent signing runner (foreground or detach) + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "detach": { + "default": false, + "type": "boolean" + }, + "daemon": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "detach", + "daemon" + ], + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "object", + "properties": { + "pid": { + "type": "integer" + }, + "startedAt": { + "type": "number" + }, + "network": { + "enum": [ + "mainnet", + "testnet" + ] + }, + "ready": { + "type": "boolean" + }, + "existing": { + "type": "boolean" + } + }, + "required": [ + "pid", + "startedAt", + "network" + ] + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## events + +Replay or follow JSON-line runner events + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "follow": { + "default": false, + "type": "boolean" + }, + "since": { + "default": 0, + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 + }, + "types": { + "default": [], + "type": "array", + "items": { + "type": "string", + "enum": [ + "fill", + "order_update", + "position_change", + "deposit", + "error", + "agent_expiry_warning", + "runner_state" + ] + } + } + }, + "required": [ + "follow", + "since", + "types" + ], + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "seq": { + "type": "integer", + "minimum": 1 + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "type": { + "enum": [ + "fill", + "order_update", + "position_change", + "deposit", + "error", + "agent_expiry_warning", + "runner_state" + ] + }, + "data": {} + }, + "required": [ + "seq", + "timestamp", + "type", + "data" + ] + } + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## logs + +Read/follow redacted JSON-line runner logs + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "follow": { + "default": false, + "type": "boolean" + }, + "level": { + "type": "string", + "enum": [ + "debug", + "info", + "warn", + "error" + ] + }, + "since": { + "type": "string", + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" + }, + "requestId": { + "type": "string" + } + }, + "required": [ + "follow" + ], + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "description": "JSON-line stream of redacted log objects", + "type": "object" + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## rotate + +Approve new agent, hot-swap signer, then revoke old agent + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "signature": { + "type": "string" + }, + "revokeSignature": { + "type": "string" + }, + "intentId": { + "type": "string" + }, + "intent": { + "type": "string" + } + }, + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "object", + "properties": { + "oldAgent": { + "type": "string" + }, + "newAgent": { + "type": "string" + }, + "swapped": { + "type": "boolean" + }, + "oldRevoked": { + "type": "boolean" + }, + "requiresSignature": { + "type": "boolean" + }, + "approval": {}, + "revokeApproval": {} + }, + "required": [ + "oldAgent", + "newAgent", + "swapped", + "oldRevoked" + ] + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## revoke + +Disable local agent and prepare master-signed exchange revocation + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "cancelOrders": { + "default": false, + "type": "boolean" + }, + "signature": { + "type": "string" + }, + "intentId": { + "type": "string" + }, + "intent": { + "type": "string" + } + }, + "required": [ + "cancelOrders" + ], + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "object", + "properties": { + "agentAddress": { + "type": "string" + }, + "locallyRevoked": { + "type": "boolean" + }, + "exchangeRevoked": { + "type": "boolean" + }, + "requiresSignature": { + "type": "boolean" + }, + "approval": {} + }, + "required": [ + "agentAddress", + "locallyRevoked", + "exchangeRevoked", + "requiresSignature", + "approval" + ] + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## audit + +Verify and query the hash-chained trading audit + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "intent": { + "type": "string" + }, + "intentId": { + "type": "string" + }, + "cloid": { + "type": "string" + } + }, + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "seq": { + "type": "integer" + }, + "timestamp": { + "type": "string" + }, + "intentId": { + "type": "string" + }, + "requestId": { + "type": "string" + }, + "cloid": { + "type": "string" + }, + "stage": { + "type": "string" + }, + "data": {}, + "previousHash": { + "type": "string" + }, + "hash": { + "type": "string" + } + }, + "required": [ + "seq", + "timestamp", + "intentId", + "stage", + "data", + "previousHash", + "hash" + ] + } + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## skill + +Install packaged version-matched skill for Claude Code or Codex + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "args": { + "default": [ + "install" + ], + "type": "array", + "items": { + "type": "string" + } + }, + "target": { + "default": "codex", + "type": "string", + "enum": [ + "claude", + "codex" + ] + }, + "force": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "args", + "target", + "force" + ], + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "object", + "properties": { + "target": { + "enum": [ + "claude", + "codex" + ] + }, + "path": { + "type": "string" + }, + "version": { + "type": "string" + }, + "changed": { + "type": "boolean" + } + }, + "required": [ + "target", + "path", + "version", + "changed" + ] + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + +## market + +Discover market asset, precision, leverage ceiling and current mid + +```json +{ + "input": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "coin": { + "type": "string" + } + }, + "required": [ + "coin" + ], + "additionalProperties": false + }, + "output": { + "oneOf": [ + { + "type": "object", + "required": [ + "ok", + "data" + ], + "properties": { + "ok": { + "const": true + }, + "data": { + "type": "object", + "properties": { + "coin": { + "type": "string" + }, + "asset": { + "type": "string" + }, + "szDecimals": { + "type": "string" + }, + "maxLeverage": { + "type": "string" + }, + "mid": { + "type": "string" + } + }, + "required": [ + "coin", + "asset", + "szDecimals", + "maxLeverage", + "mid" + ] + } + } + }, + { + "type": "object", + "required": [ + "ok", + "code", + "message", + "retryable", + "details" + ], + "properties": { + "ok": { + "const": false + }, + "code": { + "enum": [ + "INSUFFICIENT_MARGIN", + "POLICY_REJECTED", + "AGENT_EXPIRED", + "AGENT_NOT_APPROVED", + "DEPOSIT_PENDING", + "NONCE_COLLISION", + "RATE_LIMIT", + "INVALID_SIZE", + "INVALID_PRICE", + "UNKNOWN_MARKET", + "ORDER_NOT_FOUND", + "RUNNER_NOT_RUNNING", + "CONFIG_INVALID", + "NETWORK_ERROR", + "UPSTREAM_ERROR", + "INTERNAL" + ] + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "details": {} + } + } + ] + } +} +``` + diff --git a/apps/docs/content/docs/config.mdx b/apps/docs/content/docs/config.mdx new file mode 100644 index 0000000..1c35e81 --- /dev/null +++ b/apps/docs/content/docs/config.mdx @@ -0,0 +1,51 @@ +--- +title: "Configuration" +description: "State paths, environment overrides, secrets, and builder fees." +--- + +Default path: `~/.bloxwap/config.json`. `--config` selects another file. +All command JSON objects reject unknown fields to catch intent-changing typos. +Version 1 is validated on read and write; versionless config migrates to version 1. +Unknown versions fail closed. Writes use a private temporary file and atomic rename. + +`BLOXWAP_NETWORK`, `BLOXWAP_LOG_LEVEL`, `BLOXWAP_PRIVY_APP_ID` and +`BLOXWAP_MASTER_ADDRESS` override stored values in commands. `config get` shows +persisted values; `config validate` validates them without overrides. +Secrets use `env:BLOXWAP_PRIVY_APP_SECRET` and `env:BLOXWAP_AUTHORIZATION_KEY` +references; authorization keys may also use `file:/absolute/private/path`. + +The default builder address is `0x71b09A08257078A4d642F7Dd7315e656c837329a` +(Bloxwap), with `builder.fee:10`. Hyperliquid uses tenths of a basis point: +`f=10` = 1 bp = **0.01%**. Override with `config set builder.address 0x...` +and `config set builder.fee 10`, or `BLOXWAP_BUILDER_ADDRESS` and +`BLOXWAP_BUILDER_FEE` (environment overrides stored values for commands). +Fees must be integers from 0 to 100; `builder.fee:0` disables the fee. +`init` requests an external master-wallet `approveBuilderFee` signature for the +configured address/rate; submit it with `init --builder-signature 0x...`. +Each order checks the master-approved maximum before attaching `{b,f}`. +Fund and order JSON expose `builderAddress` and `builderFeeRate` (`"0.01%"` +by default). Funding reports the trading builder rate separately from Relay fees. + +## Defaults and limits + +The default network is `testnet`, `logLevel` is `info`, and `runnerFallback` is +`true`. `allowedMarkets` defaults to an empty list (no market allowlist). Local +risk limits are optional until configured: + +```sh +agent-cli config set allowedMarkets '["BTC","ETH"]' +agent-cli config set limits.maxNotional 100 +agent-cli config set limits.maxPositionNotional 500 +agent-cli config set limits.maxOrderSize 0.01 +agent-cli config set limits.maxLeverage 5 +agent-cli config set limits.dailyLoss 20 +agent-cli config set limits.maxOpenOrders 3 +agent-cli config validate +``` + +Limits are local checks, not independent Privy checks of an action hash. Agent +expiry must be within 180 days; warning thresholds default to 14, 3, and 1 days. +Use `config get` to inspect the current persisted configuration. + +`--config` changes the config file only. Logs, events, audit, nonce and runner state +remain in `~/.bloxwap`, including `run.sock`, `events.jsonl`, and `audit.jsonl`. diff --git a/apps/docs/content/docs/custody.mdx b/apps/docs/content/docs/custody.mdx new file mode 100644 index 0000000..fb6fef8 --- /dev/null +++ b/apps/docs/content/docs/custody.mdx @@ -0,0 +1,19 @@ +--- +title: "Custody" +description: "Master-wallet and managed-agent trust boundaries." +--- + +The master wallet approves a separate Hyperliquid API agent. Its key stays in Privy; +the CLI holds a P-256 authorization key, never the master private key. Hyperliquid +agent permissions prevent withdrawals and master-only user-signed actions. + +The versioned Privy policy permits only EIP-712 Agent messages in the Hyperliquid +L1 domain (chain 1337, zero verifying contract, correct network source). Unmatched +RPC methods are denied by default. User-signed withdrawal and approval messages +have a different domain/type. Local dispatch allows only trading operations. + +Privy sees the L1 action hash, not its preimage: it cannot independently distinguish +an order from another L1 action or enforce notional limits inside that hash. +Local limits and exchange agent permissions supply those checks. Do not describe +this policy as independent server-side per-action/notional enforcement. Confirm +policy behavior in the credential-gated sandbox before production use. diff --git a/apps/docs/content/docs/errors.mdx b/apps/docs/content/docs/errors.mdx new file mode 100644 index 0000000..a10bcd3 --- /dev/null +++ b/apps/docs/content/docs/errors.mdx @@ -0,0 +1,28 @@ +--- +title: "Error catalog" +description: "Stable failure codes, exit status, and recovery." +--- + +Failures always have `{ok:false,code,message,retryable,details}`; successes have +`{ok:true,data}`. Codes are append-only. Retry only when retryable is true, using +bounded backoff. Exit 2 means invalid configuration/input, 75 means temporary +failure, 1 means a permanent failure. + +| Code | Meaning | Retryable | Agent action | +| --- | --- | --- | --- | +| INSUFFICIENT_MARGIN | Account margin too low | false | Reduce size or fund | +| POLICY_REJECTED | Local or custody policy denied | false | Adjust intent | +| AGENT_EXPIRED | Agent expired | false | Rotate | +| AGENT_NOT_APPROVED | Agent or builder unapproved | false | Complete init | +| DEPOSIT_PENDING | Deposit unsettled | true | Poll status | +| NONCE_COLLISION | Nonce reused | true | Generate next nonce | +| RATE_LIMIT | Upstream throttled | true | Back off | +| INVALID_SIZE | Invalid amount | false | Correct size | +| INVALID_PRICE | Invalid price | false | Correct price | +| UNKNOWN_MARKET | Market absent | false | Refresh metadata | +| ORDER_NOT_FOUND | Order absent | false | Refresh orders | +| RUNNER_NOT_RUNNING | Runner unavailable | true | Start runner | +| CONFIG_INVALID | Invalid input/config | false | Correct configuration | +| NETWORK_ERROR | Transport failure | true | Back off | +| UPSTREAM_ERROR | Unrecognized service failure | false | Inspect redacted details | +| INTERNAL | Unexpected local failure | false | Inspect logs | diff --git a/apps/docs/content/docs/events.mdx b/apps/docs/content/docs/events.mdx new file mode 100644 index 0000000..7aa43e2 --- /dev/null +++ b/apps/docs/content/docs/events.mdx @@ -0,0 +1,15 @@ +--- +title: "Event stream" +description: "Replayable JSON lines from the persistent runner." +--- + +Each JSON line is `{seq,timestamp,type,data}`. Sequence numbers strictly increase +across restarts; timestamps are ISO UTC. Types: `fill` (upstream fill with tid), +Fill fees additionally have exact 8-decimal `feeUnits` strings. +`order_update`, `position_change`, `deposit` (id/state), `error` (normalized +failure), `agent_expiry_warning`, `runner_state`. Secret fields are redacted. + +`events --since 12` returns events after sequence 12. `--follow` is an explicit +streaming exception to the one-document command contract: each event is one JSON +line. Filter with `--types '["fill","error"]'`. Save the last processed sequence +and replay it after reconnect. Shutdown flushes the queue before releasing state. diff --git a/apps/docs/content/docs/funding.mdx b/apps/docs/content/docs/funding.mdx new file mode 100644 index 0000000..2c0d685 --- /dev/null +++ b/apps/docs/content/docs/funding.mdx @@ -0,0 +1,21 @@ +--- +title: "Funding" +description: "Relay quotes, exact amounts, external signatures, and settlement." +--- + +Run `fund --amount 10 --origin-chain 42161` and show the returned QR/address to the +user. Inspect the origin token, minimum, fees and quote expiry before sending. +Amounts are decimal strings; HyperCore perps amounts use 8 decimals, EVM USDC 6. + +Some routes return two master-wallet signatures: a Relay nonce/deposit mapping +and a Hyperliquid deposit authorization. The exact payloads come from the quote; +never synthesize them or sign them using the trade-only agent. `fund` emits +`signatureSteps` with payloads and `requiresSignature`. Query `deposit --deposit-id ID` +to resume; submit each in order with `--step-id ID --signature 0x...`. Completed +steps are persisted immediately. Relay signature submission keeps the quoted +POST body intact and adds the signature as a query parameter, per the +[step execution contract](https://docs.relay.link/references/api/api_core_concepts/step-execution). Retrying a completed flow is harmless. + +Poll `status` until the deposit is settled; a bridge status alone is insufficient +without the corresponding Hyperliquid balance increase. Testnet uses Relay's +testnet API and may require a mocked quote if that route is unavailable. diff --git a/apps/docs/content/docs/index.mdx b/apps/docs/content/docs/index.mdx new file mode 100644 index 0000000..98c721a --- /dev/null +++ b/apps/docs/content/docs/index.mdx @@ -0,0 +1,37 @@ +--- +title: "Overview and installation" +description: "An agent-native Hyperliquid trading CLI with JSON input and output." +--- + +The CLI combines a persistent signing runner, Privy managed agents, Relay funding, +and a packaged agent skill. Master custody stays external. + +## Install + +```sh +npm install -g @bloxwap/agent-cli +agent-cli --help +# Or run with Bun: +bunx @bloxwap/agent-cli --help +``` + +The published CLI requires Node.js **22.12+** or current Bun. It has no postinstall +script. The repository and docs use **Node.js 24+**. + +## JSON contract + +Arguments can be flags, `--json '{...}'`, or a JSON object on stdin. Ordinary +commands return `{ok:true,data}` or `{ok:false,code,message,retryable,details}`. +QR output and logs use stderr. `events --follow` and `logs` stream JSON lines. +Global flags: `--config PATH`, `--network mainnet|testnet`, `--pretty`, `--json OBJECT`. + +```sh +agent-cli schema order +agent-cli market --coin BTC --network testnet +``` + +Start with [Quickstart](/docs/quickstart), inspect the [Command reference](/docs/commands), +and read [Custody](/docs/custody) before operating a funded account. + +Local state always lives in `~/.bloxwap`. Environment variables use `BLOXWAP_`. +The default Bloxwap builder rate is `f=10`, **0.01%**, and requires master approval. diff --git a/apps/docs/content/docs/meta.json b/apps/docs/content/docs/meta.json new file mode 100644 index 0000000..707f5c1 --- /dev/null +++ b/apps/docs/content/docs/meta.json @@ -0,0 +1,17 @@ +{ + "title": "Agent CLI", + "pages": [ + "index", + "quickstart", + "commands", + "config", + "errors", + "runner", + "events", + "funding", + "custody", + "security", + "skill", + "audit" + ] +} diff --git a/apps/docs/content/docs/quickstart.mdx b/apps/docs/content/docs/quickstart.mdx new file mode 100644 index 0000000..b7b7359 --- /dev/null +++ b/apps/docs/content/docs/quickstart.mdx @@ -0,0 +1,75 @@ +--- +title: "Quickstart" +description: "Initialize, show the funding QR, confirm settlement, and start the runner." +--- + +Use a dedicated testnet account and Privy sandbox credentials. Replace address +and signature placeholders with values from the external wallet. Never supply a +private key, seed, or mnemonic to the CLI. + +## 1. Initialize + +```sh +agent-cli config set privyAppId YOUR_APP_ID +agent-cli config set privyAppSecretRef env:BLOXWAP_PRIVY_APP_SECRET +# Set the secret securely outside the CLI and conversation. +agent-cli init --network testnet --master-address 0xYOUR_MASTER_ADDRESS +``` + +Show the returned EIP-712 agent approval payload, deeplink, and QR to the user. +The master wallet signs externally. Submit the resulting 65-byte signature and +complete the separate builder fee approval: + +```sh +agent-cli init --network testnet --signature 0xYOUR_AGENT_SIGNATURE +agent-cli init --network testnet --builder-signature 0xYOUR_BUILDER_SIGNATURE +``` + +Continue only when `approved:true`. The default builder fee is `f=10` (0.01%). + +## 2. Fund and show the QR + +For a **mainnet** account initialized with mainnet approvals, an Arbitrum USDC quote is: + +```sh +agent-cli fund --network mainnet --amount 10 --origin-chain 42161 +``` + +For **testnet**, use an explicitly supported test origin chain/token and its +`originDecimals` from `agent-cli schema fund`. Chain 42161 and the default origin +token are mainnet values; do not send real funds to a testnet example. Relay +HyperCore testnet routes may be unavailable. If no route is known, stop funding. +The CI lifecycle harness uses mocked Relay and pre-funded test collateral. + +Show the returned `qrAscii`, deposit address, origin chain/token, minimum, fees, +expected receipt, and expiry. The user transfers only the quoted origin token. +Some routes need two external master signatures. Resume the stored steps with: + +```sh +agent-cli deposit --deposit-id ID --network testnet +agent-cli deposit --deposit-id ID --step-id STEP_ID --signature 0xSIGNATURE --network testnet +``` + +Submit each exact payload in returned order. See [Funding](/docs/funding). + +## 3. Confirm settlement + +```sh +agent-cli status --network testnet +``` + +Wait until all active deposits report `settled`. Relay success alone is insufficient; +settlement also checks the Hyperliquid balance increase. Stop on failed or refunded +deposits. Use bounded polling and report a pending deposit when the budget expires. + +## 4. Start and monitor + +```sh +agent-cli run --network testnet --detach +agent-cli market --network testnet --coin BTC +agent-cli events --follow --since 0 +``` + +Before placing an authorized order, inspect market precision and leverage ceilings, +configure local limits, and use decimal strings. Preserve `cloid` for reconciliation +and attach `intentId` for the audit. A resting order is not a completed fill. diff --git a/apps/docs/content/docs/runner.mdx b/apps/docs/content/docs/runner.mdx new file mode 100644 index 0000000..c9ba5b6 --- /dev/null +++ b/apps/docs/content/docs/runner.mdx @@ -0,0 +1,58 @@ +--- +title: "Runner and JSON-RPC" +description: "Persistent signing, private IPC, routing, and shutdown." +--- + +```sh +agent-cli run --network testnet --detach +# Foreground mode: +agent-cli run --network testnet +``` + +The runner owns signing and nonce sequencing, subscribes to account updates, +maintains a heartbeat, and records events. State is `~/.bloxwap`; Unix IPC is +`~/.bloxwap/run.sock` (0600 inside a 0700 directory). Never expose it on a network. +Windows uses a home-derived named pipe; deployment must enforce current-user ACLs. + +The CLI routes market, status, balance, positions, orders, order, cancel, modify, +leverage, rotate, and revoke through the runner. A config/network mismatch fails. +`runnerFallback:true` (default) permits direct mode only when no runner is running. + +## Wire format + +Each UTF-8 line is a JSON-RPC 2.0 request or response. Requests require `id` and +`method`; `params` defaults to an object. Frames are bounded to 1 MiB and queued +serially. Send a newline after the object: + +```json +{"jsonrpc":"2.0","id":1,"method":"status.get","params":{}} +``` + +Success returns `{"jsonrpc":"2.0","id":1,"result":...}`. Failure returns JSON-RPC +error code `-32000`, with the CLI failure envelope in `error.data`. + +| Method | CLI operation | +| --- | --- | +| `market.get` | `market` | +| `status.get` | `status` | +| `balance.get` | `balance` | +| `positions.get` | `positions` | +| `orders.get` | `orders` | +| `order.place` | `order` | +| `order.cancel` | `cancel` | +| `order.modify` | `modify` | +| `leverage.set` | `leverage` | +| `config.get` | Read persisted config | +| `runner.shutdown` | Graceful shutdown | + +Short command names are accepted, including `rotate` and `revoke`. The RPC config +operation is read-only. Unknown methods and unsafe inputs fail before signing. + +```json +{"jsonrpc":"2.0","id":2,"method":"runner.shutdown","params":{}} +``` + +Shutdown returns `result:{stopping:true}`, flushes queued events, and releases +runner state. Client timeout or disconnect leaves mutation results uncertain: +reconcile exchange state before retrying. [Events](/docs/events) are read through +the CLI journal, not a socket streaming method. diff --git a/apps/docs/content/docs/security.mdx b/apps/docs/content/docs/security.mdx new file mode 100644 index 0000000..621a628 --- /dev/null +++ b/apps/docs/content/docs/security.mdx @@ -0,0 +1,29 @@ +--- +title: "Security" +description: "Private local state, secret handling, and custody limitations." +--- + +State is always `~/.bloxwap`, directory 0700, config/auth keys/logs/events/audit 0600. +P-256 Privy authorization keys are PKCS8 base64 in private files or environment +references. The CLI does not import master keys, seeds or mnemonic phrases. +External master-wallet signatures are accepted only as 65-byte signatures. +Every CLI and RPC input is scanned before schema parsing so unknown fields cannot +smuggle key material. Hex 32-byte secrets and BIP39-like phrases are refused. + +Trust boundaries: master wallet → one-time Hyperliquid agent approval → Privy +managed wallet → restricted local signing runner. Read [Custody](/docs/custody) for the hash +preimage limitation of server policies. Anyone controlling this OS user can use +the authorization key and change limits. Socket/file modes exclude other users, +not same-user malware or root. Windows named pipes require current-user ACLs; +use direct mode in environments unable to enforce private IPC. + +Logs and error envelopes recursively scrub sensitive fields, long hex values, +Bearer tokens and known secret environment values. Signature hashes, never raw +signatures, appear in the audit chain. A hash chain detects edits inside a retained +journal; it cannot detect deletion of the entire journal without an external +checkpoint. Back up checkpoints separately for stronger evidence. + +Never put secrets in command args, repository files or issue reports. Environment +references avoid plaintext config but do not protect against privileged process +inspection. Revoke and rotate after suspected compromise. Unit tests use service +mocks; real signing tests require explicit testnet/sandbox environment gates. diff --git a/apps/docs/content/docs/skill.mdx b/apps/docs/content/docs/skill.mdx new file mode 100644 index 0000000..6f7daf0 --- /dev/null +++ b/apps/docs/content/docs/skill.mdx @@ -0,0 +1,131 @@ +--- +title: Agent skill guide +description: Install and use the packaged SKILL.md with Codex or Claude Code. +--- + +The npm package ships `SKILL.md` and embeds the same content in the CLI. Install it with: + +```sh +agent-cli skill install --target codex +agent-cli skill install --target claude +``` + +Codex uses `$CODEX_HOME/skills/agent-cli/SKILL.md` (default `~/.codex/skills/agent-cli/SKILL.md`). Claude Code uses `~/.claude/skills/agent-cli/SKILL.md`. Reinstalling identical content is idempotent; replacing edited content requires `--force`. + +The following guide comes directly from the packaged skill. + + +Use `agent-cli` for the user's authorized Hyperliquid account operations. Obtain +command schemas with `agent-cli schema COMMAND`; arguments can be flags or +`--json '{...}'`, or a JSON object on stdin. Ordinary commands print exactly one +JSON object: `{ok:true,data}` or `{ok:false,code,message,retryable,details}`. +Logs/QR appear on stderr. `events --follow` and `logs` explicitly stream JSON lines. +Use `--network testnet` during testing; never silently change to mainnet. + +## Onboarding sequence + +1. Configure Privy app ID and secret reference, e.g. `config set privyAppId APP` + and `config set privyAppSecretRef env:BLOXWAP_PRIVY_APP_SECRET`. The user sets + the environment secret outside the conversation. The default Bloxwap builder is + `0x71b09A08257078A4d642F7Dd7315e656c837329a`, with `f=10` (1 bp = 0.01%). + Override with `config set builder.address` / `config set builder.fee` or + `BLOXWAP_BUILDER_ADDRESS` / `BLOXWAP_BUILDER_FEE`. +2. Run `init --master-address 0x... --network testnet`. Show the returned approval + payload/deeplink/QR. The user signs in their master wallet; submit only the + resulting signature with `init --signature 0x...`. Submit builder approval + separately with `init --builder-signature 0x...` for the configured 0.01% default. Continue only after `approved:true`. +3. Run `fund --amount 10 --origin-chain 42161`. Show `qrAscii`/deposit address, + origin chain/token, minimum, fees, expected received amount and expiry. On + testnet, do not treat the default Arbitrum mainnet chain/token as a test route: + use an explicitly supported test chain/token and `originDecimals`, or the + credential-gated CI harness with mocked Relay and pre-funded test collateral. + If no test route is known, stop funding and report the missing route. The user + transfers the quoted origin token. If `signatureSteps` require signatures, + show the exact payload and submit each via `deposit` in returned order. +4. Poll `status` until each active deposit is `settled`, for at most 12 polls + or 5 minutes, whichever comes first. Start with 1-second delays, double to a + 15-second cap, and stop with an explicit pending report if the budget expires. + Settlement requires Relay success and Hyperliquid balance receipt. Stop on + failed/refunded deposits and explain their status. Do not place orders while + any deposit is awaiting funds or pending. +5. Run `run --detach`, then monitor `events --follow --since SEQ`. Persist the + last handled sequence; replay after reconnect. An unfilled or rejected order + remains incomplete: do not claim the requested trade succeeded. A fill updates the trading + plan, an error follows the catalog below, and expiry warnings prompt rotation + using external master-wallet approval. + +## Commands and example envelopes + +Examples show representative `data`, not live balances or service promises. +Full inputs/outputs are discoverable with `schema`; amounts/prices are strings. + +| Input | Example output | +| --- | --- | +| `--help` | `{"ok":true,"data":{"commands":[{"name":"status","description":"Read account status"}],"globalFlags":["--json","--config","--network","--pretty"]}}` | +| `schema order` | `{"ok":true,"data":{"input":{"type":"object"},"output":{"oneOf":[]}}}` (actual schemas include properties) | +| `config get network` | `{"ok":true,"data":"testnet"}` | +| `config set limits.maxLeverage 5` | `{"ok":true,"data":{"version":1,"limits":{"maxLeverage":5}}}` | +| `config validate` | `{"ok":true,"data":{"valid":true,"version":1}}` | +| `init --master-address 0x...` | `{"ok":true,"data":{"approved":false,"requiresSignature":true,"approvals":{"agent":{"typedData":{}}},"qrAscii":"..."}}` | +| `fund --amount 10 --no-qr` | `{"ok":true,"data":{"depositId":"...","depositAddress":"0x...","expectedReceived":"100000000","builderFeeRate":"0.01%","builderAddress":"0x71b09A08257078A4d642F7Dd7315e656c837329a","state":"awaiting_funds","qrAscii":null}}` | +| `deposit --deposit-id ID` | `{"ok":true,"data":{"depositId":"ID","steps":[{"id":"step:0","requiresSignature":true,"payload":{}}]}}` | +| `deposit --deposit-id ID --step-id step:0 --signature 0x...` | `{"ok":true,"data":{"depositId":"ID","steps":[]}}` | +| `status` | `{"ok":true,"data":{"balance":{"accountValue":"100"},"agent":{"approved":true,"daysRemaining":"179"},"deposits":[],"policy":{"id":"...","version":"1"},"runner":{"pid":"123"}}}` | +| `balance` | `{"ok":true,"data":{"accountValue":"100","accountValueUnits":"10000000000","withdrawable":"96","marginUsed":"4"}}` | +| `market --coin BTC` | `{"ok":true,"data":{"coin":"BTC","asset":"0","szDecimals":"5","maxLeverage":"40","mid":"20000"}}` | +| `positions` | `{"ok":true,"data":[{"coin":"BTC","size":"0.001","entryPrice":"20000","leverage":"5","marginMode":"cross"}]}` | +| `orders` | `{"ok":true,"data":[{"coin":"BTC","oid":"123","sz":"0.001","limitPx":"20000","side":"B"}]}` | +| `order --json '{"coin":"BTC","side":"buy","size":"0.001","price":"20000","tif":"Gtc","cloid":"0x11111111111111111111111111111111"}'` | `{"ok":true,"data":{"result":{"status":"ok","response":{"data":{"statuses":[{"resting":{"oid":123}}]}}},"builderFeeRate":"0.01%","builderAddress":"0x71b09A08257078A4d642F7Dd7315e656c837329a","cloid":"0x..."}}` | +| `order --json '{"coin":"BTC","side":"sell","size":"0.001","type":"market","slippage":0.01,"reduceOnly":true}'` | `{"ok":true,"data":{"result":{"status":"ok","response":{"data":{"statuses":[{"filled":{"oid":123}}]}}}}}` | +| `cancel --oid 123` or `cancel --all` | `{"ok":true,"data":{"cancelled":["123"],"result":{"status":"ok"}}}` | +| `modify --json '{"modifications":[{"oid":123,"price":"20100","size":"0.001"}]}'` | `{"ok":true,"data":{"status":"ok"}}` | +| `leverage --coin BTC --leverage 5 --mode isolated` | `{"ok":true,"data":{"status":"ok"}}` | +| `run --detach` | `{"ok":true,"data":{"pid":123,"startedAt":1700000000000,"network":"testnet"}}` | +| `events --since 12 --types '["fill"]'` | `{"ok":true,"data":[{"seq":13,"timestamp":"2026-01-01T00:00:00.000Z","type":"fill","data":{"tid":1}}]}` | +| `events --follow` | `{"seq":13,"timestamp":"2026-01-01T00:00:00.000Z","type":"fill","data":{"tid":1}}` (one line per event) | +| `logs --follow --level warn` | `{"level":"warn","requestId":"...","message":"Risk rejected","time":"..."}` (JSON lines) | +| `rotate` then `rotate --signature 0x...` | `{"ok":true,"data":{"oldAgent":"0x...","newAgent":"0x...","swapped":true,"oldRevoked":false,"revokeApproval":{}}}` | +| `rotate --revoke-signature 0x...` | `{"ok":true,"data":{"swapped":true,"oldRevoked":true}}` | +| `revoke --cancel-orders` | `{"ok":true,"data":{"locallyRevoked":true,"exchangeRevoked":false,"requiresSignature":true,"approval":{}}}` | +| `revoke --signature 0x...` | `{"ok":true,"data":{"locallyRevoked":true,"exchangeRevoked":true}}` | +| `audit --intent ID` | `{"ok":true,"data":[{"intentId":"ID","stage":"decision","data":{"allowed":true},"previousHash":"...","hash":"..."}]}` | +| `skill install --target codex` | `{"ok":true,"data":{"target":"codex","path":".../agent-cli/SKILL.md","version":"0.1.0"}}` | + +Before an order, query `market --coin BTC` for `mid`, `szDecimals`, asset and +market leverage ceiling. Compute size/notional with decimal strings/bigints, +using the user-approved limit or the bounded IOC execution price. A valid schema +alone does not establish that an order is tradable or within the budget. + +Use `--intent-id ID --intent "reason"` on trading actions to connect the user's +reasoning to the audit. Keep cloid stable when retrying a known order intent. +For TP/SL use `type:"tp"|"sl"` and `triggerPrice` with size/price/reduceOnly; +market orders use an explicit slippage-bounded IOC, not an unbounded market order. + +## Error recovery + +| Code | Action | +| --- | --- | +| RATE_LIMIT, NETWORK_ERROR | At most 3 read retries with exponential backoff; for uncertain mutations, reconcile order state/cloid before retrying. Stop and report unresolved results | +| NONCE_COLLISION | Retry using a newly issued nonce; inspect a stale lock if persistent | +| DEPOSIT_PENDING | Poll status until settled; stop on terminal funding failure | +| RUNNER_NOT_RUNNING | Start runner or use configured direct fallback | +| INSUFFICIENT_MARGIN | Reduce exposure or request authorized funding | +| POLICY_REJECTED | Stop and revise intent within limits; do not bypass policy | +| AGENT_EXPIRED | Rotate with master-wallet approval | +| AGENT_NOT_APPROVED | Complete init/approval or explain revocation | +| INVALID_SIZE, INVALID_PRICE | Correct input using market precision | +| UNKNOWN_MARKET | Refresh metadata; use an allowed market | +| ORDER_NOT_FOUND | Refresh orders before changing intent | +| CONFIG_INVALID | Correct configuration/input; never insert secrets | +| UPSTREAM_ERROR, INTERNAL | Stop, inspect redacted details/logs and report failure | + +## Gotchas + +HyperCore perps USDC uses **8 decimals**; EVM USDC uses **6**. Preserve strings and +bigints. Some deposits require **two distinct signatures**; resume stored steps +rather than restarting the route. Agent expiry is at most **180 days**. Never +ask for, paste, log or import a master private key or seed. The managed agent is +trade-only; local limits include markets, size/notional, leverage, daily loss and +open orders. Privy sees an L1 action hash, so it cannot independently inspect +notional/action contents; Hyperliquid agent permissions and local checks enforce +those boundaries. State is always `~/.bloxwap`, env prefix `BLOXWAP_`. diff --git a/apps/docs/fonts/Bloxwap-OFL.txt b/apps/docs/fonts/Bloxwap-OFL.txt new file mode 100644 index 0000000..5acdf82 --- /dev/null +++ b/apps/docs/fonts/Bloxwap-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2026 Bloxwap, Inc. (https://bloxwap.com), with Reserved Font Name "Bloxwap". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) and the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/apps/docs/fonts/BloxwapSans-Black.ttf b/apps/docs/fonts/BloxwapSans-Black.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2b61bf16eebb03411f41c932c17fb5f88488a675 GIT binary patch literal 445740 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 z zNj95g>KuaVnL=k&GV`%9M=apjnp|sw{YWq9{={A#n$sDNDCwbyz#QM+F@OC;FACu@ zasB)|XpY`d?jcPA58;Aj3BB?|t+~0@_sGi5Z2UZ;Epv@qUoe-!zYwy3{)stySCUpf zSZ?f~yCg`fG^ap>euj-L0CQ|--LPi)9nxqyjV-T#XRMr_&&%(MmD8N^^82V90{`B` zFUU=KiRl`~c1|2i^HuLqxsvguWquu8>}4wDLv+uszv*WX-QSm%_!V|OJL3;N&##zU z`_#APFUj|St-c_!fj;+wRTJEX^t}1&d!4-wBDcHF-cIlOFg$|qi*O0WhU+)-@EbDn z4c~1PgF3>Z^SQ43Uj1A4egX=~wzI!l$=e&@bpH`V$}^UI`PcXrQ_Xyy*;Fr!sXoT0 zdc6D&X|$ZCn%BQGR!&pO%kLBA3g(q>)9vi}cSzVwm}(*qSBdR44ww#i5bdmWZ?3p^ z|2JC~QG8B<15kX*w|5Z;ETb0(NH*zqmAi# z9OlQ7M$BLMU|@$lH7NrI@q$rEDc|x;J;ho+qUa-{0H9Ka(S%`KWpP4##qmx@UyTTg zKsgC=;x95(KfJW&%cTpN6lP+pX%@4&WW~+zX*RcPX=WWb62gE6W1ynyHX@2bm_szL z-=+^Ybq`s76V?q#T5o1E3T50~`a@^;TBI~!maEz4dC?B#|! zUo=|1a=DjNqp>c287 ze>{~#*HSojfAS)rbLZe^`QpUiCGH%u)HHo~4X2pIeazjE%0qRBNnIXsY{lmjac&Jt zby^>Ije52MD1tACs4UdsKbBeQ@!yCJlF*+sTVcI-%*gT{X0#}Dklhb?$=42$-SYVE_{_e{D@=n)*VjK~|09|vpm!AXASsT$K zx#ukTJOUVzOi4+YmZdZn$9^)!l5tv2(9y?(p2Pf%nB^4g2roDSC|bRo&!@R>UAL_% z(U*9ebXdjb%UR5}CCQF!F;tlmP# zm0JvCg+Q(5MxFR*7l4yW$bGEFgKQUE zD<#8SAlqzroX>ZMWUN_!X{?-f2d{sGm!BG77c|)};N_Qz`VyXc4}1QP`SX$2hqwR> zoRKtAekm_M^(QDlo}}mV`bR|hb5Z`=?D@R>GAd^X-}@2y^$~X3UY+>4b1+~LaU5CW zd^-&Nnnie*=#XIh(51bmWbnScA|kR%^&Wg!X+h&Om}8Ea@J+!z`KI9hcu#|v58o45 zoM;K=C=~yQOKbL{zE-ba>~Fum-`_#ZcD2{PZn1Hms=~Wht)HiAwTA4MZ3_v74z&<1 z8$nT=QpvHFtNgx#XdY#9SFtG{ir)ePi~ODyI2rSM6T(zdN(8%XJ6GEG{OReV?zObS zuFcn`rhmSh4NAdm?m~XS%rI}GB+C^m*DQ8XwY|1YeQ*N^ zatY1~9X7SR{4!C_VCU@lSFz_`DuJWJ6aa|~%;N*h-xt9ME<3|E4P9C?>k2;*7m>d$ zoXl6pAP`RGECvDG)H{elfDBy>=rmixmhQk!onjDtAhc^p`yaDA)!;3(DU-|ee(Kbz z`vJ)h*qHILxs1jJbHWu9ufP~{#l&}o;s9b5Vr6^}<($nqCfE>O|4mW-yGQFMyHWk) zQT;lQKVJ>&15*T$JlpdB_Tl=kNpP(vbt_ zMkXrr`gg|a)7s(nkHqQ|@6YSs8>>%j7q5RJR-a@DUjN}({o(Vk5cNq`_&wGh5EqD} z4@*}^{rV8lVSR!|qWmHGO0eXVQ}2HHa^?q1PJd4y7v486T0$~n+KCI?$k+)7NX-B4 zP|OcwXgpSLIOz$1$wU0F_OV`QT)iZ%Q?6S1Zm3$p_}Ofoaz^2pU=(n>e}I_p!F9A+<-PPi zB2lj$to5U`_-GO05TOQ6vyHlsIGGz`R-s1|%Rp>M(de=Js?mME`(x2XRG)L&*>lGi^T)<0F3-p#fct1n-d_!e72Wt3kp--qX1 z%-VBZ;!S*Ou=dcB=Fh*EX-CP0CXu*<0WQX7E%KIS3xWH?lDY>H^(M9y0fdUrb1MRC zfZNAwRBC0bQAo;*3tR!RycDT=q}S05Ge3ypCGF;+fWkdlRE7w~;KH&R`Euzn9gi$a zI=lzJ*w|AlZ?&8XP{EVrc}fzZUdREQoCcmzF-)`NVGETJU*fM=xQbb1fVg11?Th1W zClLf?iwoRiYI$jt`xW+G_MIre1wtGk60oLk_Wc931=>yviUimjyjioMFU}XkkQ5_> z%DT}FmK|?0pJ%ZtfZWRF3c7r=h)uCYTtOk=ZY)26QI07=Azn$-d+M9$-V2HHNq^6# z{Yc_nY}&VgG9j2SrX9X5porHvdIL9Vf_-_br zg*bvRS}sR;@ZrB?0rBhyxNE`atJEO z)P4`jFBRoCL5YVmaB!Fc6^HfFQ*1$$%Y(y-yID_JefgTiO?+hVoF6ip&7c2}G%eqb z`k=wmOBgT0pZ^fjMap4&hR=uR408C1`tKb+ALV}rZV35WFp~QtnmtCb0#X#DqKVC6fET+v@PZ#GrGxNKq`RdnSoj4A`x z`t&$Wj{js7JNqq27wIaM@3X9t;%7L^a)eSuu2`?<7d{~JyVwNH@`(^O2UrK{>B~Ia8tl>5YZ> zFm^uoA|#*;1!H0AWjYq|8j-Pid4D3VR*uWg!blnNaQtLi^G@DNL%!qM*)4lYf#(IK zJzHk4-9cp+-MnMRv%9^SnO^tVJ9gZR2&GioTjDh433M}HIR&I`?C;OgyL2_Z%U>d8 zziF9$q;9O&p|tJeh87`yVt;Sq84C-~nCKzfY;f|I=`b5HWzrYdGB162YH|!3NTk5zlY`$u?u;i9Rx0;Ks)jK7ts89bqZ-W@*#kM2x$jT zEcmmVD%Xa4U0B|dnG*ZO3)<}qSe(N$a#k!=DhH#Gc63faA@wYFPAszRd4~ky3FSB^ zq}Q`^;xe{9FD2^?)yH{&@Zs22tUk^OQ6C39g1?}g*S{vL&z?`hBY*zGqP~vjzn2Mv zy#5uUJ`35++Ot)(r^SAkMRH;7d7Nm^zq4{)pPtX_hj<2FpW4IgA4!P%(EcMNcvv4e z3h{h^Vi74Os()=*ALMI^opb#8q3}EY{3}F#vMwNGHlDM@+Ig)6MvcfIo{v~5C8D@1?fAm9=dhabW&- zMBl<~>I8>aW=rTUVI$|dT2i-j-Rn^y@ALX34D$Nl9j(t!C|>_qtUjGky#C#z_1Ou< z>xcRZ_Iw6p;`JYh)qiEwp2x?YPbV6$|DdSvVJmq_I??#^FOTZiDV};*ANm}ajo55qEi(vcrZ@pgp%}EPOl{0xOl?x-7akoSqL6p zSj(@a+Gn|e&l+CXphN6S^u~J{DoM{4O7?6@ROuO^YaUmkVJyD{_KcFdy?$IG8j_D< zWQXM3+R*7Dv|EN4fk&I(Eg8-|k0`-d!yy86QMxf4TE?B-P3hk#XM$14O;+tajk{Yj zGp)PRDGiu>tODZxGqS=;@8Rj+3}O^!OQj21_t2=`1GtBpqr`)h{;i-Lf-5R_zPS^7w3SGPBv$+R4ITcvVA!*VUBjGVq` z{F&3?xu&(P*}8fLp!ACEB)8N%>GXWPy4`c(PiVsD3t4)0_Rf+MZ{|t;{)Iugol-Q{ z6`f4T|G=Vo51WrZgw$ze>?$|0J!K$)y3 znzyMF%;Z=vsVO;pO_zULba|V<&@?Lq`9SE&^+xl?nz7vq+>7jjDN;5hw+Nzg%|?)v zekV#;urA^Nv}wN|qD}k#A=(rXI|SOa==aKRUhjrqANcfjr`yHMRw4Z)(tE9pkBR7A ziwm(5CxmO?{Uk;O2P_DVNHq8p>W)Y>_yziVM12w^YZ!blr2d0DLhLitBRY2E{{opg zk$76fV-77?e3^mkX#G+t}GH3)ZhZPTtkjd-GdIMRSGWb_n$mFi@keM zP--EH%lSwd`2w0r8Xb&`fsug{6v2UB3Th>SAHh|N+*nuBs`zn=3kw`To zaTr3}u%V?VL&=8G#Vc}ykORHd=^Q}Bfs77sencptEbP#XBL^)a2GJNaFDxN`z2O4u ziKFgNv$WzDXW^~(UHZ`SK+0KKFE|leCfo$`8Cm8doo(9|f|Q(Brd;jINbloW7V`5P zm9Ihs5w%iHVfcV9Lvkc!bpT+DLR%(joDea7(gSw}e{CGdl=MhJc&|;j&}Y!VAve4Y zpn~pbN(#AtkurkI%FbjVA7nvj(9oc`w?;Xp07tPC$x~m0u5KE;rNy*GLy<=e_mK4n zm2u8m+8+!$jWzTN{jJElH0c%h*Hq#lk@6KF&~%b(c>*dLe2<2QnfrM9qLa^EL(e8( z5bl^kJWJ-J?1Q0Q0uL4DBMA@R%o3zRzCl(ow-ho9Ey1fJIv|?NWX5J5_8J)QQbiVQ z^t?)g8rlFu2_=M_3XtC3_s=Uc{pky+^#EMr{qH^f2R@w^>K0o8O%@cse;SWm)F z&$f58JJ-$`zEy|6UyZuXQhtWVc5R0Tw}0Kpk_WwH5em;pZ+Ll^rMRzsxVwxZUark$7@Rz1vZ|pPfF}+58zwtVXOX-uFU}igN#qSP zRV-i#ax?*eELIF-(dU8+eBen?5rI_WrkkOlLVJE}xrJ6sMh~Pv3~l_Mp`Ra1i8}Zo z75+25jhvoQa;9O9D5)EsqtFgfcGCX`XGA`+jX)Vgv6lKjG!U-rmQer_j~6=zK-npV z-W;tDL<$f|J;yVbUTW;66iK%m&3vx8$@h?+q=G;LbM4L?MoKc0C08xh1`pX*y>`I5 z9bV4${q{)f2h#!Uz=*7WWog>fYH*9qA#G*Xq_Ah%3}}g}SEv61nF_N%-(P2EH-a-UtC0MXaET%%YN1v=XiJ}C3EZ4B98QlLS{YVnNSy$l@xONf|C9g5 z+Ha3pvPks`@*8G%g;Ew)qi6@6?$}{*X6R5FF>fsMWgGFZf<}ZEqsN*;^oO)~r1#SM z2DmZ}z8+E+(qRK#q9yl0k;Y7O@>8H*{5@U{K;#=y&P{Dkk^V-yN9d~WW~A}}9q6Yc zlwuTzr#GlHM|Xrn6^+$7ieDe?92re2d!+MG8kUb13XsLKU=QIF4xzm80V-XOzGZ#c zW=|`Ag>c?S071BjMXWi)vWS@abA?8 zttPSJ(48MWbmMjp0jdkP5D#i1POl{{%Lu1IZUuQJHGc4VdY7Kd{yv7Ze~o?SM|k!> zo(k|I#Im?+CuY2!WdbY>zC)=1tza)5Y>2G=9hN6B;AEerPOTHP2c&|I*;W|H8Go}S zF6Jt3PnN#VTJ)W?l|-<8jfgWq1~t<;zxAh~%*~CyN-ATR%?YAc)$KvBU^=Z)8!uz1 zPfEAp=-f(B=%@2m;HM|JG`F@yFoz@51G)p1Ne8y_^wu&5Qm3}N1$XzTt`NS z&L_Nv>w={!L#{yIG#wb14a-MjEgeC{Gg+DX*SyGgyYSU?EOT35S;Z(_R^l`?$ zZYKzDJPPj$mrh7Ofo*d}_B8_wJ=^xt*<6JNF)>lgy{fU7x5aj8fTE2??GX zG2MPL=N7AjM5PK=z9LJlYTd~Ow&)k8g~ZM!L42PQZ7)G=CpdY<`oZ#AIlX%=6jl9+ z8Ck?rn~@iZxCqb75q;jz5ZREPLGKrP2P>7V{{tTv#oI?ki~SSz#(9?Q`uoECKC$OoA1Yfj=*6m+}tGcz#zt7KD@Lc}|T9G)^ z;o5t!S>Fd-t5L91GBTH%C9}3dnN*ODkbG?wC692-hE;@a0O2;V>5zyw@h!&JkA+u` zas)h$CZ8wO#S);zy&nkWfGha=6zq7M{zu>cYDn!z9`wk)BM&8(^l~JTh_V46iaj>T zce+@W{@2%gTxQmPuH*}Vn2-j(Doxb zLmSoqdbpFk`eMDYSg$WO@P~90bw!${_mdw(LHHr4{}wnjevg@)doa~bBzDMeBhzs9 z;p7*XX_!9$WoD}8pFfd*E?<%SU2Zx)b$`ldpTk^*?>|un9vY~NE0Xj4``~2nU?y`s z33O*ldPtN{CQXLV=H-`&@=cJpDkCt`OQdx8oYbGO=P(pxVhTaT7)s{UWby~>IlTN5 zQ4a85avv*a=*Yw+GJwM9FLzBM({-EoGv=B^rfZzv)PCWbBtxhijk58uz@x+PAM+W# zBEq8+2#=o6ICr2-ZeYJlB29&j6X)Eo5TH5^iJZP4|ltf z@4tK1_tEZ=?;lw8eYBsxf9hW`4u6``#P^l#zoWmmq5QqzHhw92h4>zo+n5J#rLX{x zW62qA2;4%=HP-Uy_zwp!FJ=1(Ts_gF5U@`w zD&`t=Sd?1~_MSggPjVC&+jnpwe75-Ay8J&G+KlhJ>!eSF<;n9RumF+#l%Z^1x`@7meTxiAtUrkdseF}V!WE%o0?}Va*NDC< zoc`iDjP8z(BGp_%csvR{uj(E?+8v&%^UMT_-3PwNJ^O=D<(t9boWz$i*zV$YxC&ll$mERfPm+4Fxa+W#{4{5;Cv z$ez#Z4^HDJbye(KqV}`>f$<5~Ih{*G@b(kLxkT+81&0q}^=W+ge!5E3=jc{?K1ZLP zkmS7E9$?VjSsJXm8j3pNqRm%Cr^rV(!jZ4u;=r0 z@(H8oBpV-Ie-JxYsr|hERieHIwCyNb^%^l>3edKrXw_>X^y%Rk`t+I*GKc!3=+kQm zeahsL|0%a2aqUdJ1WX*~;l=SZDq=;)6A4sd8n8&7gfyJV2*Y6{R<1hJ1m`a-GOJjB z|F84|oo-XlwqXo{J+V|jgw!HrA5s9c+sABPpo?#2v&- z&iO`xG+X6`X>ZD~n#AgAGBV zdSjD|?2E`Hou(8*WE68qo)3DEG_x$6QRY-vx*Kf6uCos}@+x!oy`7n-841PrMOZkX zpb>)BS%-U7+HNsxVziZpVN5#Cf?wV1m<;*a+pTLcK8^ln!_NdB>SX-V!m|QU+hjSxz>IphrqpfeJ%O8`4c|v}+Xl#Y4)1 zz{n#=Jo&%fs2h{)ZB@tVL~qk+Do)<)Q$IHX>B*&hb403B~PRo`8CWFY2UczY^Y9v z>LI3mh;r#5o_HUxNNekjc^w(Sj-YpCuYIUeL!K*WSo&KrOnK<<{BomEDP`7nGAeeL z@{X@6IRqd)uYB?t@oe%R%dpNUsdNfbDKb*D90=(aDC1=i(kWKQi#E)%teZE|qM1d%b$N+dW*XZMO;CXK%074tL!$(2|rr22silqwJ2| z5ALJkfl`V^MA9f-3G7iMurl0a`N9^DoRqhvH^XiPOXTiqb+_kl(lulJ{&k46h0wVa zUm0%%w-~#ZSca}Y0GJiLH9#mC#Ogw{`9GkM{)6fc9-j=@kS#@jM->BY)6p%zdZPzg z1PKjwmHnX`?imI;Q$G-t;ArBy2v1fD4%El*DHIv{jBM)YHG;X*J=PBH5vokpzs;5* z_IHL-1WFksK1<6q&W5HTiO=q8WsgVENe$`wh*;luoRw0r;s1jAtnl-oQVJ|8VF~dmE`~czQoYwtU?Qza1`LacnINp;Cg7tU))H z&NV^1Bq?$h>8h}r!5BcnjBEN+6m{=Y!HR7o+YbD<)HY&N2Gwmwsh837=j`WryPgHy zLqd2pgovhPPsuhZgZV}U$gXBmsas!Yq*o@-yf85(S$56#2JJqh3RCKyS6Xjm*EB^VjO z$$)cI7%Ov>NQ{z1p3TN)k7F?09`YN>DUnH8X*UWjO%0g8eG$|uYk63b`BU!(TARYq zfC~>1kg-EIrh~yjjT0;4UHJhGYKn5axCKEZ^A)i~V%hM_Qq%VvKy05C zv|V&vhFNbCW_|F5+=pF>V|p7wG!5PRC1%|sMLG5YD5!J?#Hu4_5~?zMW%Bo71~aid`63N% zkKijg-uy3f`!LcuCCC>h9B)^pc|kFl))Cn@mn-SIk1&yN=BDQJ0;Jfc0-XMsvt$l) zo7J+0bgB+se`_6?*6gm9ciaLbAAfrpd5WBFp-_gU182VWS~{9vi$c4L%}M=4mQ<7f@f{1)1iO_4ak`t}bomk_mc>^wUa4bTl0xe7|ik`UF0l#F7FQu&AmI zM3ofd2!Z2>?jZ$$g99oxg+Y~mxz@-kOLeQ4&zF&P2)Rl~wDcg{8Ffu_kXA=gb5~Ly zukO228FE|Otpayi$u zo4)iyUf#K=R)gSQEFu~ufWw_lBh4qJ-~Se=I1*3iKz$KIGcxNgqbG{|HocA<^4h~% z9ky`&Vagp}*B{b%;i6qtUd-i!vV0N0o_uvV$RUF~?%5ULbGP6i@NgW4NK~j^huBD3 zBLa&mhG7gO6C;4wFE|fY#4#9&u2+$AML2bQh5gNjXz&yE_f{IHukvF~D&#Pf&D;oW zjIgR}g&63J9cxJh1Ae#ch-2;9INrHMacDvjoKl8vT>kAPXA!3U*xEc_iqw=Y8T9VBviWjxj>!ZRog(v}hKx zi=JlOd;}L?L~PA=AK`Op1tGiEEW+pZ+lZ|RjJ0!{h|ZZ;mC<;)3Q`nmh~%72563N& z$TsHaFa}x$!>0D4xI8uu%-iM`RelL4!o5`i%g23SueJt1jF`0i+)-;U3nRoR{^`QF?t_Bw_cfd&eom6w2URj0w zOi?m#Vc^47Rewy*J@^BrJWISN=UQA-ZCf_?FtrKub|mecH_iUwO7yQ4|Zf#meQ`3 z(sInK`xjA%co469C{WS1-d?w}sJjj5U3OG!B^5yTBz&X%mien8tOLux2CddfEdMze zAYP1SpH5telu=mA^a`nPFX|Io&OaJbo=DnQagqBNuQsU1@(L5fMmStf;g>yWw}_M8 zG>s|8p7UB4mMG$!$y_#&aTm_gnq|NSAS;7^3QTjc6zr*0cNdE=dAsl|LpJR_)n$Z9 zC!xW(jodg89wohuP%p?p$-GKZ$j7E3Qn?Bxr2HBtV$?0@v25rEi5(_o-$S(UAA-ji zbZAg80HG*n|Djr3vdsoU-XUchGz*Kx;#M2-KU~pr*`|S{s?dA^)CiFVx-@W-83_(v z&~>2&^dF`ABuz~bW1UY>+|)6_L>UfS#LhfAg1wP(QrR})tLo;*Oi(Zc6BvT|;SfYT z9toyPD`#3u;h?MxCEU}kq>MK~D~7l~37&t9#3Fn#141Ao`3yxQ=Oos!Z{vF$IbT6y z0Ud*x2q~H&A>fE&TV7};SboV383Iaeu>ff9hC{)N5f+Q@u;EFK4aWRq{t+r#^h#eH z5`r8mp|m|~NQe*6z=mElArzc@(QE(|{ASvC@*2)I5I2EvkRHU!Ilc~YGom}f_PE*@ zCU}?7jre0Ke0{rGrfC^lJa4JkJ60|sv7|wkF7i?@E+Tt@X>}B}*X{08Vd=_bRo917 z1ehH5AMzQevIsj*9=_7A)@!-!GE^6k%%KS%S6x7xVI#+@Qv>5!uaVpebK7bq2&jh4 z^lNXF2Ix4nv1e8KK>G@#A(U;A`gLKMN!3JR!K<-_F^Vf45}jzwR&PS--$@s=U*)04Ix<#nXCVjlGc+Fl2}r15;<*o$P7`+m-5O=quI*lEBQ*0txpD}Wv-glltNo8 zZugfk%Fq_EQQi_@l!L7v(-xgYJtQlVq*1&K(#R@WcVFw0$x>CxY$;70Z(lfN^va=% z78;VEo5@?_6CiX)j3gfe_s7GmBkti(fotXm-@u#6io^mhh7B0Fkc`d3{~1tZ;!0vJHL1a zLdKb>%!=?h;Zpu5sGI!AJKCiP{xk4K!2N8ca=bqaz@X{OWHp32*smqsWCrmN8h{q& zk*b3>H_k!WMB!}@KZor7bf9toAs1(x$hxp>StZK6QmaBSdp^s&QqCl`Ot#Aq5!G7G zg8c+6Q8w#RfV-f}V%8x!wt`@Gjja*?JT@->KeAFpe@L?Ra*h0WruBaf6g^xTKNAxK zQV*cWqr{vFP2*gc3~QplFad6#FDJp_N2`-X(IDl?#sXBO^J%T+;aLo07A(e6Nuh%B zc}70S0Q*WgvUY4ZiuEW#PLMlEN^1o}hoW1hja$rX9kbPUr!Ayc*C~!G2%q$CIFI)d zluew-KrGQ7Wo8)Sv^&qb~YK-rq9x_8Wz&=KwRO_ z03`Qz;ensj5tO6b>1aydGA3Pn#;@-u#DU?#H)ye3Iv{<42j$2VB%D8FC53#2*#gfZ zbSwyN)if=Tqj|*ohD8>i0TtAK9_@L|E8+(ro^}fO4hTmqqm!PlS1B}#-2-0%5J3T0 zAIDiP1>0bqfJy^nPfQ@;sMy$_9=0ZEA;}c9UHC|4mMAM6(bJIYd-PZ;F$p13i@*DFyrM{*3KT z8dhHbs$hS{lsZKSCk(s+oCZ>aThg1Wz^`GP+Q3-RsOHp`Y0i88f@L;yIgOSrO#+Q8 zQfWahl_0~)QsFP?6FjTyINQLDIix5mVEDny2~br%t;703A}lZ*0J33(E7(^n`<*b0znEb?vnP&1V15X={j5yyHJB%qut7+zo+3qf)B?X)$L2RsDyQuz5^Xm+i|v+%G+EUL`p|Msclup4KXuy1)3*N zK{&l_wScqCsq6rmls?J;6Eh=LE<9OT12PdueB8|R> zg=H6H24W$5GSr9C$#){_5^J{qjamQDmAJ9+cS2?1jy{hM2Jd)4@y?>zsuR82$U1@nU9OgUK9inu<_oWneiG z1~ipqKupBknh%g#bMuwW=1!Z;9QMv;^UBG}4*2`OhRm?fV4MB_xVwtJ?1CZyQwhK9 z2Cz$(=>Tm>>x#fNms9GM%Y7uTt>>~T%q7dU>cyST#nsv}%qQSZ%7YKnfk6L&ddMJn zup+k@%=Ph!YoVrIt=C`0gq}X!$=2u?5XK!5onevdqe8TiQrhOZ2&QUTh~?%Y%tYxt z*V~ME?Pgxz?78QaXdk0H#MUOE#e`*EK@W+!!3U?bW~;SJ{Ua5Zo$6au*wLG~+tq9} z)oTza4(!p4=gk0!#F2r>E6VRFJ?XELgbIy4*k-6vz$~r0|JTX_MyWD5zcQc0wNlRJ z<}1=iaLq1MFk}b`j@UMQ$ex_|1uUR*7&6yG{6QfrVDr%{GL48Ko2$#hBsPNt6&dW) zmEB3``S3Mmt{_V}8Y~PRU{?q-hrwDkc-ZF{D~uNY2!{?x9yWLnI3|T_D$nlf+GeeG z!0zsvDND=tfm+?LJG*Df_zNKP^2}~&Cm%}$Aec3+a4aoz7J&-D<6|rl!;8ie)QnV8 z_?!OWFOW$wwh2Ucf*9A{eSEgKVifdX_V}*OKLvWhSSijP-`x(N4qOg8yN+X1HgQCy zSk@cBLH31aXp(_Kqx2fQL9Wv&_aZ~XT&kO zTl*eSo#8sfaYwJE7HtGAnaVjOK0?7(*Pk`)hF~oJIO9M`BBzO$geAk(@(YBcFww7r zY_qZyRq=iaK$18EScR$9$5$qWs&0@%j zhFuGFCc{pHL4|#UQi8V$+ajG$3^x61(B=0_+Zmbyu?nGzaJQHE7K8Qz3J;Ju2-oQ( z-#;ui`u)@{z+(Z2opEvASY7aRR0a+deium24KWgp;EV&XI!sHGVmtK5!-;*JyydDHfs7tJjbBmu8AnX1>?T=xrFB z^t7E%S*_l*1GgbK@WC%A2hX~)J2K?M7{bp9bQ6cj;KzY(n9IR)Xnla+M2L?=%?6ZL zP=JLYJ}h{UA;bq#P}3O*PJ+ky@DZmQ*byvdggZzc6DQB}$Il+YJ)hz1*&1p8!V|rB zT4pgkuU3CYesj1ncseI>URAaii;Jd(ymoMvf=sIFu4!nBV}h0sJ~`cJBE%v;+0ImR z)U5q2LFb+3EFEkarJOeru}K_kk`B@cUQ$l!`HWpIY(J;kV2_%oW=00{<^NT~8BfRg z(;eLZ8{rSW%(w%F9{6bv^WfF=JMvZZj`d67My_B!Jo^%_8sGS*_u>hi8eOi=9ua@i zV*n-)5OAM(jY#*a&+66B8P8DWY_aMW*J+_Hn09PQo2udxdm`;-OInTBgt*Rfneh_} zI~XChQsHh0zdCYutUdN2E3>{OK3MyRAOCVfW>GpX!0W%(cJ1PNd7JOgA+#->A;jEfRWomB89uUnZLXE$a&V5E-^8h7$Sh1g zV=-2jj+ry9w$q+@Yjk*g<;0nHQnJ9;P$?59Q3e8xjNn$-V=RavtIN?$;ev=W^Mj|X zVeFP}8E18QLeAwOw=?AKsmpOn6OXwXbwhe$$Z8A}LMI+{r6;-?ffYxV?SK&u-r@^-$ef4-x%>tYX z+!U}=P{6_Dq(l~EGp{MX!B~I;PI4&WsU+`Uiwswy)aaJ+OD6Ns&yH}G^r+~ zv||HeI?5@W4Ot3)oVV!#IPVVI6tPNcv|s^&mJj?j=ny)x34+5L0Wxll zbi@+a+BG0X;|I$cu;WdqZ|Xayn~muZc`TO25P2+?#aa!0@GO%<0x6`n7qSy_9h#A^ zQX45shv%&XEYK!mNn{mZb$ALcX|D%g_%H<*?3a{*i8HTob^Zq~VSL zovyExD+m2|^2-RNXTmLvNgZ-pE|3><2i7E#VaOIsKKcdxL#n7$@^k(++e&-yz{SpZ z)KMs!Ou2^BH|}W6G-blb9m;5Y z3OdRzqcnsif?3rmVM~j5UrKvv%iiX{!^?nj`dBx4Y=CdVBm$;(4d_J%=BA|~G$!m; zWPj>}ad;u8&dsf*{Md>f;{^o)pZts$iL|Sf-VqNheNJluf}u${cwlEOn=)iz4Z{5r zzO&h6wsAfzNpNAT+2(xF-&WqGRY;Ak6q6al=CD0`!Z7=Jv#)1--Plv#WxBcw{Q~e2 zctSRntM4xs;qHm(l!ZBp!t8Caoy~^Xkv_pi*`x{v2+C5ZualA{vCIi@W_0p}DGF^< zTrl(i+-F`wZYaN+uY+G=Yb%+AlY-D))pCWh%aho(RlQ@70QsOgm0+afH#rsWhUOj6+S zk+gk(ouw5CldnH_^;SQ5bC@ZG)Isn@=M6jXXqzS?8qskC#{3)_%5a3=B}QlcO_qL* z=7Cl}Yy2_kR>TXSga^a({IrKql5228Ls>L{wGW+fhyRmrTH|<;-Ws)pSj$J`|G{YI zK8m~+SH6$)7N8^GF7TpMGt?Suwenry%0idKSHyS^Q;l=;^x-(~KKL@@BR|F7*O02? zjC`oP7~|acL|x?Qh6Cs#LJC~Q2QrdrNgoK}(Vq{&C9w4g!oU|rNJoYQGa7<0UK3k4 z^?kMpV=jD_@t>}d;xL<2vK77u&YMA91c5f6skbqdj=<4=|Oncwsvc`(q)(a4sCa{Ro8E27wu`4 zg`8TdNWadngTs}Qnp>cIc4bDrhm-qZ)C-+#$9`*qpNv9Zx)^JR68kKH!rJJdI; zjTSC%&~`N&Rqeg}@_N16Z0yqCqg5NtUD_Me9Zgs+-%OW=dU<(1n?)OcpI=iYIQ7q$ z2ftQEaeE2MW72}kZzsK4?)^^co;q)t=)Bw}prM;D3 z-mfDncU?y~cXoX$1}Ix9OTWplgF}@-C2!=%^DDTIEGA^L+zUy+4;%J}$=Ybxe;9H4AAp$<2E!loi?l)p!j(g)Jn4c#HwKeP^w4tF7^E=ODq=x~LPEc+m*LaBX1$ZXQ?*5nH z+29YB1#%Q;RZ8Khg}iy3(|X>;xhl)5#J4nU*=HeP0J0bjZsgZzQJDcO5j@}QvP9Td zS)#1~ZEPuDfCe0!17|aLBYQhM4XbRxpR&$=K5Dm+Gk5xvN?JpFJjA>MX@lnn;y=4V zzN}|g8jZ;FV>4n$#XUdHJPhaV-+{@e2zz&lL3#2z2L&XaUL!;tiaJkT=6I~~bO4007F1M0y3JGf!S>VWv}KcHQfPd0SsUU z2>yJ@cB@EZhV=rnPeD5VzY>syEP>zQ!B;{@DK?qNe2@VF!YexR#KaSShoe6{_W0Zn zq18hM{~Kz*+uf^X4Mb6aES5!xM}&r;_$q+YA`DF_mt$CXaQp?3WnO?FI8#AzezO8s z_6ejKl)Lq<*=(a8xT;3ZsOfZ0)t!P4ZzV_9%LSurJM#e#zJe$$ys!YU?tFj@Wj+D8 zoxBFU*cL|YhB=AgOL{Jdli@IgQqB-@0t!t-LSsOjoG(4rtVBQ8MV8oIUH-lSd5OLq zJ*>M6!$6`h=LYsCerc7VBjS&T^UW8+P{wbsWHKvTX$=S}zaGUvDCuy;z&v2EaaF+k ziYt!YM^3wfuJi%`58v0Coo&5ON@jrphiC(EX*$WuZmXSVRyJqzCUWZ`*WS+ZZKO1~ z4PixLnM7zW35mwXwFC%g(=y?3te8`_+SC=jSE=-|o^p~zEK~}{d4&5$Sw5R@>+YYi4}_IF_>`8O;N2 zIOzq-?p}9NNw;hp(A!;D_;9x;?ddvTa0DQ%)*jclT|nOC6b;rhh~~-{*V~!&LcKU| z8dW%HBT1-ZS*_ywz;L9GU9lVlgVhvyaP5eSnbucZ94nj0*H>K6ACDy!EePp?Q2#r4 zJ2jVOq8gdfQ5FB-KZw-REU{_Xig=UvL8k)&Y^dB73pkQDBFRLEfh>#?h+QbdP}p90 z0|8Yw3MctHY82eNI)SmP9zc--j396Z~%1wWujdOyICj)-!K!mn6bSiW-dGkdpe z*|%@Ymc2ry)3xUVeY353;MtMR5uyq_WjauGQK&pP5-5Q1>39YfGaz<$%68uw3-jj2Y;B+gciC?#oF;|n;NTBZ$S=^IDqbB5-R z=8;k9nFwUPvF@e(3 zT~UyPw^69S;sYk`;)H4=!*8%$u-pe`@b7GKF`?s0G4YcTADP*@2EX%|gLM4w@CX`2 zC_CxixUdQx47^8@Jh^E&_8pdcj!bik_EVbQ4U;k%5Ft4Yy>&A&lX&|G zvqCX{5Trjko5C$P5u-OfezK4H(9$7xCPPlh{jBX4zb>N$Uc}j0{yAB0GwQNXgF}qIl5MppLyNp z^Pr#uBw2)b5SEeEApfCg3b}g;i+-NmlsoOMU}-$O{ybzS^=`S;(=z#n>TPxVEu#$$ z!8FzgB)%-xB`8Kp`Y_?Pq!*VuozmdnJm@An!Dg-4%;XI^7O^xvMJqx`s~mS|&Qh+~&xIU5WSVsL@5>S)lwnrBa7AUzhJXhdx?~2NHjuydlv@ zOpUB$&NxQ;0E$%IM$(N@S?N4#Jo3e-m6^aKp4GHl7(7XS{YD{0zFEuAeS^(@UMoB#W$F~8^4YF?)_l@B^f!GnjxTu}5#Ly(mVR+ji{ z>G_f^|BGl&1W%?#IBwqyQ9GT55IXeIbv1_%3v15r(nPgIbA06Kh?*l6Y~CCLkobRr z=@WL_$U=oZO|R7r2oXAS{du>)xK>okSF@FMnt{@({qXsK?#LpdYr*(lfO}kCK61u} z{wka2FXa#xUg~0&p@a2RtyLgR6sGruY&@C8bl3$N(TGb~Sq3d6)d{x89CiqOh_S~B zIov{GNkTC-0hs-iVb3#s@AovE#7VbCIFjw zCN6&39+`?=)Nry#zzv9y-BOCyE8Llae15{rSrd63X>D@vw9<(5V_$El0KBnb5X+)_ z)AIM3*vVQb(uYL{mlNV+uJsMVLCpoeK$MQUlNIANMfVt9~u#)6kM?flVugp;XLm=b48 zAzx7)`8&ZB93TQHS<%q{m%TTEljADyMZ2ok>h7xQ+N;;;Wu|9F8fo?!?Xu)evL#!_ z0UNNv7?80s1ah&B9kYf6NVsfvOn|Ul6Ce;Effzdm5+D#rSe;-Mk86gyx;vjyVW&SUEOugcfRxO3kgga3>*aqvRTA*dTOy<;&X!o03K_^ zz4}G9T|)eh-bBrHR7xrrE5NwCe7W?_B$We&oBHAm2D^lk?<7wguPub2Le?WMrQD&+g) z^~uTlFX&CazU6!Ew&%A9iRH@@zf2wlBmyL+X=9Wx*LV75wR9OBin@H0jXpKo?PuG0 zwYZ%M%tyZ%GyZ*7FP8nC`eh}R4)R_0c9eg>7q_Fwh|0(m5$=q<0dgr? zs}1RqiOUjb5P1V%NKK}_iY4vm)d`T28|hqSp;j#`d0R*M8dO6(Oc-()jen?KhGzP+ zu9M4c@m$|?5gG%w*7E%p%4XDcebRKdY{4US`8YO{!h%;go1rMZW#*#7W7&(+_ozc1 zputB)k^^=^06>h0ocMD~9bA2VVX<0u(Kb3~`Guyck3h0SY0PvE^g`k;8h%IGpgYhF zB)CHXAtX~a2!nhJLUNR?Zr;h3@~8}wO63vW1E~U{A^R8k7!jPQB)ooEB;*s{Mj9Z| zh{wVQb3s5OGUI)AALpjGs>|sAuAavaUy7Z{&vTG*xXpPs4uvWAhS(Xg?F1SI$=^qi z{C-~DAi%Jw-y5KzS4d7h>cucSZ;=TY9Td@L(YMZ4OHYZ%NuojM;U2KXfNES!B05+03LXp>{$xJ4wN# z(904ZWO`Y!DTP)R>R3?)3STg#>!n9SWWPGJxPlM>P*gx_DLVrb1))9Q!%;AVXa{iO zAO$*7Ai?Y$r#^7Sz&OD%F(5ku(C2Xv{f=}2QWMdGT*^!EV&zfg0HrnYUn=PcR_&5i zpfy&nsP%lImZsa6^0F$!pRDBxzktR-ABL=MQZZ=MUqw4rj6Ja9VkFM!r08 zPav$Exq+~9c_5{%5mt728w)Ga>YRK$@i|V!&)kTJQ_LkJ?$`_2;Y56f5%Gf{(G{=2 zNpwrqnt4!SM#NE%E=!`Ow9Xw_BJ=Eyhe^Yw)qV2yiNEL4(3znwM{e$$he|`M=gU_l z-p^%|Gr7`D@#-g(P2N9QuT3K7yf2*8>XWA^oUGmk;pCdN!pSv5gp=Nn&}!OX_j-xM znGsP&WQ4Lg>^cNu~KSnkkU6RbONL>7?GQGzrX zPJOeP<Y;oB_oKLK_mjbu*9P z_`LiB(@v%8Cir@}gg%kkQcWF2FQ9w@0Wf*Eyg_hvq?>p2d8m50wrr@50Es?;4RlWOFjFUD zMznKCe5Zf%YyDQszk%Koa&JX`Y+@yxd5oT>V`np}St&0=$YKZSn%JrQK4%+hIXE}C zQ_un+Y(>v7s_3>3HVMbvsBi#Tl*O6_IGousIb<6TZgoB%6OvUG@&NJ*p<_&#G`$p1 znxZta6vwlA3n26R$)6@%YMd#w4tt+0mU&4_itt;uWf7IqUC5Ldx97Gx6j`1#Y^{sf zjx*?={MiOfw30sm)XNM#o9&pz%Fc5Ry8Od4@TlLFFG)Nt`2+qaLB|#}8QYe2Y-V3_ zIRFBtKkQL=1dmESkL;SkqjGJtSluBWg)k8|t4lDe_@nGba-6T-_SmGJMp46>ZD7Zk zuCq0_eX*RmFa9L=;5j?0MJk=C8<#zGUYBT6^dxEZRjcnw{BhzPq_CgMc_8CM8Am9L zj5@)|P+3Na&q~FypbHSbSp^6EpbI4wmV-ir=6KoU7FwMxkc~jn@XNRL?oV8^`T^1g zFNpvqB)ESSDuca;diSFXDcuTsdv4_BD7~HC&#CHuX&Ll(Kb-|X5t3VZ^;x~U5-(f* z9M>x!c|r=s>cn$J4qZH91P}DeIpi6rm29a5X^?UeVrP&`Gt}r6>J7=L!QXQbChJ8jzZrj4{a4Xuu|D(FPDyLV$jZtC5W_#ir- zz!HBImr8{e*=Io=wpqzE%d7@rjOgKlSFJ3;(5k6*6w5{YXWKyI+9O1Jj%3jn0HA;o zNY_SXcM2uh9NW^>x^7ID;TwdStrW>Nf)>zu6jRUV{gO6~0sY}>Bk>uoRA0r(^2SQ_ z!F84D4qB&gMyX!?!0L{~IjbKhLMo6_;CV<$UqM)0;dFHMw^sKh-nIIVT(B4WW2iyv zk+qpjx>>ujK9kPiP-~_$Gqoqynwj)W{cqD%&l^vd_~DB5xaU=I#twkOkySHs2ZjU( zjadFo2}gId%YFx$ZCc5;OB&o@=oHmPJQ^%F=;t!cEH|ZV?OF}qBQgvkrw;s-&e4Kg zEmJkQETZhyE`~6-swO_S`gi1oI9EuiOc)KxIMetL7CFy|1LL5XA%+HoNs^&K$fyNW z+AECeq%4t$nxdo}DTO2pB>Hd}b%Q%T#_b4>X%!)3|{W!h-JsDi+A8yaAZb>|}`lpfGMU2ZGbf@$bdjC@7 z{#RqWK0R?>rYe zT13*yQEmT7!_%cHe(e2686nj3WjV)>w2=Q-sv95Zy({s))lVcE;SO&EW0aQ&6+`sCns#E{bOZi!z<_}i!1^_lo}{0_f= zSN!_wL&*o}e)%=g>#JSVhP#LQs>^SuQRja4yX2apUY2*uU&N>(OyYbS0->MA)~AEJ zWOgpG{%;VMZs1@Q)-(}8FLw6VNzf#@j77^zO}52J=9Bl(dsx(sqGj>J_lW+P6l~3x zPB`d9-B4kDjQ6zs5-NVSMhf3TP8~ZS(QYr!MyM!gkF`jXb$ae1vg45DCm-a;m2b18 zHae#yx9ZB{gIEhOVQMR%NuaGf&S`LGvvXMK#pf?$=NKvr_5GRrO=O>R66aD8oCAY4 z!M-6nF!(L4Up2KKvYLz$ZRy6jtGnHUj^q1|bFkaJdT##e?%0|9{LHcL)$%H%;i{F-gwI&iqh>9J7 z;(sOc-0lQGSO~fNLjWY&UO7yO3-WrF5S+q-l0st~6d`E!crC`UkY&7~+3 z?iRy@s+%M-?0a1#W5F4&>6(nXlcurd-)IBBmbS%1^!7S>dqQnFpRd+u&u`SX8s=6T zZEnZT_PjcvdG;9E-r8GDV{5%}{%jrHKbC8Y7dM;Rbv-G!7AxhprWTNG)-G2TTQVNH zz1h6@wqPd($JN!t6zl$mSkM+}qze?D{SIx`Z}+w8cQNu1i*M|C{J~ zen;Y$!FB1I?D|{8^`ElqNI!Ks|YR@h7TBCoxLxEm{`pbF-#w)KvhjeFt08 zp%pOeDxh11LLq~I8|o@xjr#s54oVh5EHFD4ES)#y{isYnI9|gA2Em4=Z@17Gd<(#T zG>LFdL<~JG@#@5zLB)q`@HHC%L7kA=@mjli`XGlTLu`{isi0p1VFXI& zu+$|PvN;<6qKPj$K_CLjsFlh##T@0))8USis%`iEL#>J5YL4tS4G;a`m+JKk$2#X# zs|zLF{_7w^Pd;DOtRnRqfo4tL#;$@V8>2vD5MG7JM`kBgX2M`69cO11t(Dv@XsRZ9 z$5wmy>`-BP$Wz;#Y*te>l(wyCWi+it47pM$T6%4_%bGD^6!X=}Ijxa{Wn^^gHp&J~ zdEVYy?{-G^zCb1{5bezB4ml@R!Iwv|nlZi`gs#CABM1Q5E}gwRaIeN?)!pp}2QvVe6v*bb9vF-76Qd4K-}fioC-3=ZjCD zL@PSfg-it@A`JP+|Luj9?i+Fkn8iCawUN9S;GSetC)cq2AUe77@`ThWfR`sk`9T!+ zrE-Kh>IXs@6ev%~8oSbYhG=c)XxT@jCar<+gsslDg?6LqDXoz#C-G_5lyat9-qJ2v zS;=xTIi$-f@@A?RV%H+Bg;y`677PRDw-7BZo5mug^1B@m0U-#(L`;b0>2*f_Ra0Tc zo20Cj4F`>oOXy!hyc_!QH$fAJb{&K1b_pSo!3LcZHkb&A2e$Xa?>hDcUh)ck4^WQA zu&8$e989eIe@0^UUn;vDbZ{U$Z(-85c9xMCiXu~`u}{(hARwJKw=B^7epHI zsD(2-qpd;~uDC6hx!tLs;rp}b(u4Xh==FT2^vN)j0ik&;b`?#>GU%>^2NP)3JSCyd zP_GB0h2Mprml7bJL7&kMhV>prYA6;5|057Z&Zp|NJoOyw3kdQc8Db~}WfB$4$nb1uSm-Y&nj}?im+|4!@(Tzk62r~Q z^>fRz;`~R+!m}&SC0kwLIOF zpB(5RSJhCPU}vrOmgYt0mNZ|Z*h^~RU?AQR{cI7jm_sBqK!d1E81Jcp8!CvQHWVC= z<+g1eI!^IvjH%01+!c=70ad?Gb_V!IP)c}h&w?<0mRGgjMCqqUcJ1)8tt&rdB-0$I z_5>PcfrgdA5l>17;9&=0nS{)I822tX=Tb5*8oE=LR(!-wqx7db?pH3I+KTfDlmSKg z&k3AwMNKx%MS~v{OL8?>+EQ|n&ha14i}J;^qHiQoAt_JQD(6jfFQ1;iygPATr8YHq zev72)lOxTuCnr(Xd{S4X!SmkV2FfSQXjJ(BLL@b}fVx8Xp+e&*c0a^qh|2${5{yV7 zG&jym3?m`AI8&PDiEQt?QS6vP-w44Fn+1Q+4E2H?hgkVDJca9y12_^dC79(LY_Njj z`IN<7GVU~>4;sc#)LOH-zj!4-M3%qzP2~4zi~g^CO+%ZI_f+Qdh!nr4vOou*ssc5q zB1+x|%u?c>!YtPUKnOAS>|V7p(%i2}%W4HrQvcaGvsTO7Uw6)`;voNVd7)5nD=V+( zN8MEnW7&Ji%aw4zW1wkD53u>d7#8Qr!kfM?DYPhClS@hqoLG5To(}mp@&Z(2ySI7- z?#9AF=_8dn1ddjFH}GSU*Py!O4<0w4BD_u=`0ZPmR7`Y;%K7g}ymAdC;#PMG4$a^t zVy7uGjY|eZYNGLd;yT^SZU^O}*U3;X`oZXLMo8FG7=@x9Y3U@nT2czDnp8W(wn1l$ z*cDXRPocXMAw`2OD`=3A-wds59xD4J0iZkgHgxCi(>umq@jU7g2QM%ManN3HG!=An z&hr;-l!aE!9$iEx3|RG;uOT3Wns#r3E?Szp&2@KI+tdlnvT8y>s>)rMbWm{$i)5~@ z$k&UVuy=5g;_CCf*pEnInHiqKaxL3}FQ@n3gMkYDeEK7a0*T0DAtBLotVMk*!xbpYT=5N$b$ z2s2P2Po1`H5pF5zOQMT<9?|2ul7)=2dZs9{K3rc!^kzL(0C7f8NZz-dZ8a10xtQG)YD34GEBpKEqlfE_-L~7JN}o!8l#!jE z$-9Bkrx{NMj4P$FV^!45Vp9C}3i>nRyo^20qwV3?s15g+x2pgo5V`v6obcYM>A$+YV zf--WMRh={XdmU65GO}5uh@w$M*dV=mPy2b!bj)f&ri;@f%&T`A9P0W~t1c}0-=KnM`BhQWml z)N2NVTy}I1#b|Wt3U<`A10y4z-g~poj?()p3s8T`D{tjT`8Ig4)rHE+Tlos=XnG6iPU&IeVWoQli>==tPUEuEoL)G}jx-%V<`JjD8^JLZy60<3752U*n8& zWdXazD5_{-xLoGeOE!obGR?Fh$E zYkez2q&G}>69^HNjm<#wL8rYGY-})@qHHYkXJoY4MJ58W^{_orYN42v#tHv=Umm~E zvCwX?0HYhqS)Wm>?|0p;WbrGi+kF4LR_m}JUhgEpf70-=peWOa{Z}Zez9Bt<0(_wI zQ@(7Hwtj25>^F+JGzo%}WoLhD*CC{`x za;Wh0QprQaCEvJm*F!z|px@^*b=n#@zXfJa5W<%0!YY8!X&7JQ=dqR(ywt}eqk0Dt z*8z2gvBVHZ`fdBdtx9qgUZDOUjd(3?dV3?;4fYeZy%}SbnU=Bg41rKYmypN;or88d z!azlrzt$noMkzkj;-ITA(j#pAaI1c%>tg?-Q3JR#73W9cJkT|mZ8HP>_?vcJ*I4v8 zq&7t>UP~x;EmR3~+|J%*n13wq)&=&ujaUoWA_^WIZoI7ja@;bTcHml&&@PLNK-d4Hev zlg-!l!uSqg1(+{)De%g5_&6(g>AR*|&FPAcg7o!WPI_dbl_}JeXCcx97Vl>%r9uYD zPHE)5+pv$N{>5hMeDBTnS)|=dFRFCA6@OMWtEj?_D%n|WhuizQC~(|#9gUuXgkKpv z;|7oE{Jm%MBU6~J2o)x?BKcz7>gIDL*k|gN)z{E0s}A;$z7k`-uy?7zpBq@P4E$a= zr(hW;`A={ye~sjr+x@$$kyiwbec~Xaid!j$7v*Wl5&4C* z6>QW%UR_u;?9f^etQ7|b>v##Nk^m$+4cE=;e!F|Lv1hS7Z|a@037yM9t=GeJ&tZi` zpJb|7l(LpFwyiZ@Y*@)+vL6%Eiv;oXc2aMh>H6+cxsyTdo)j8?SI4a0huzr{s*fuw zne)jJgXSM;=|J96N#ubxuPE?!qy!u#2FI^3IDSP!q5(%o8SqAqH5wxH3o^h37tAkk z!7(5J9YaK14-4ZcC|_1iS8L~&J&^BGxrsjIh=;%ngtt{LIeOLi&#zU}Wd{wy&TY+I z)g3#4w0+OE4~%xNnrog5n_G{?S-pkr#^-u_96RMXg-j~Xbdl-D?x7Z4$-_dLDN1M4-=9WbhRQ5@qnetAYAffpKh3V9BsuyP zL7GCe1O8Npi5A>maRW&`^9Xk#)Psu+x$@nkWJ0k}IL7n#)a}|{7mj+(Vy-5n*TD;} z**ZDeA+m9CDESHjH^iO9T}*MKsX!@^cTVLZU}>bh<$4laxe62|FzyN*A6YQ34_m1}r`d0z^P~SoG!xB=P-V72TIa6h1oxs&Q zoLO$SC(@5g<1m^2D*~_dWcq|HyZo<&?<N+E{Hkg@o!VCGskK%rwY@66 znXVGf2#AFtfOz4kAI`V1bK$uyR&4~>jz4`Zya(cJLJPs zwosPdR7P?3CBOGeDwA!Mdw*X+)o`=&t?~kF^S<;(e@RpIa_=XUcC$zyn}y;cd15o* zspmtSIGFf-(7AX7CKgiQ{`x#EWNB^A^}-5jYrYy-5~#w`k_%;@{dOR!^*vLa59bed zMn?eIeFBA>EiewYS-(5%_y4_=q z21*}Lzw%wwue`RmTt=aO_=GijWzH5t2{_MhJ>nA|I#%u8RyY%v=6{*bYVC)v|wZ1c74yH2RK$A9;us zbLxwT{Hs%6_-rZ*E`{g=3vpzKLVz_x5G91Z2UdnSs>RvrSj=E8za!Wzy)Zginnb8} zO*4DTbkwZ~vPAjem=9%P*<1M-KZ;H84o2ZQ<^PVL{0P*KP{d!$*&5Be*xRbm$EH>0qv2sQcz?fq48pU!GMn-<(y{u0BOpc8~Jyu_>iNDonUW5euS zf`E;NVeV6_6h`qewTh?;RsKsJp0RQlKgw!lp5iGG;INR#kqbgBHeXH5QnpNdwGo{* zNFRbt4#L08Y=E1|osqsDu>8l&9-o*z;!}=`e`Ipv`0QN#e6BrTEw?mEanV}k>U_Jk zP@y1wI&W4g3lUh$Ft{$&8^^k!1@$GEVF%A|Mf55{^lOe&L!dr{XK>=^xq^j=N9Hqe zC#i;8^`yidPl$uujI=J!$Wycl9uw@0$b_QEGfdne-4Muu+$S8*ShH4vGcwRl!j%$M zMYs?K2(o;3z^zz^S+C^nwnvYS)OUN81=B%8TByx(x(GF*Rxg&J3uhvu{iE{OSb3qj z$E6YI3nZ$@nUr+9cy_IK(kF$J+ex$XAWZGsm(Dyt4|Hi>QgkUPYurM6z78RlQrkMz>pP{Jco## zf>?p4fa8En4Urnj{3Ub=Qb2%;?}DAGmV%wCT07L7yJ`$}D$DmRhuNuGWT$eDg9{hUmf3E~KnVfD;mwg6-HW5qT^Dx;&-3U3 zYam4ffq(|O!sZ9gFDGVY>806P{lbYCq7fh3@x8#RnjM4!$@^-KwX0q~-02*y*LPV? zZSedSL_7iGCd%arV4IRl4xZmeUaTjLU)XLR^vhe68nh~u5U!3YEgug>X2^YOJvAIKnuQuFD-f9xq&Wo zcTnH1QP}*oLT1#{7b|yAm$^HT4>UFFXbhJF?a z5y+c>#|BYevc!;%$BZ%+f;A&8O>KKNPa=$j}%&=EkB+ zLuWQKr<@%Vjy7*Big)*sFAc=x-qnGa#CEg9EN;Emb1Tsf99mn_e@H`=ECMMv7Im1h z=xb|@MbcNvNHkUJeYDn2!D#gTh^>gUMw9K;bFf#rt*91hKfIo;NaTQ}V`25eRwQ&b z;WHEjO8Q+GsXY`KwiNxn@46v0lE&Y>0u6foVQ zo8!Vrl+@6zJMW;{KFSWV&6)!--G zhddoL0jKVesG|#)t6Y39eS|KeUCUlVuU*SVrD_c~p+@VN1uK!#Xk>LNyo;|PyAm~+ z5#~ciCRvcSxo{T^Y|XfMDog>wJQ;3O>5>4Wdap*LMYU*4mr%roU}Svb#@ZYnB`c21X~$r9-zsIJ)zIBm-p%I-LE^1 zkprcdmz^%7M%376d^8+PlLg zJ%KerP!17(6Qq=KVI~Bk^e@2@ue_8;v3^(c07v~hWI=W{cJN~0d^S-*4%#{oZS6gi zjL2qL`VxZ>P z(?jr-%<2L~mct167(9j8>h`3=@{Fjp+s%ppHRyvm*`|5}*%XnW-{ro5O$7(BH$rp$ zTquQaDyLlfUa+Mk$_nzzhnk}olqtjyMm%I2l`j}Y){wUi5$;IfM~ovvPm$)B*AU|i zQjW^^s7Z(*2?ccVP7ufF4Owc$7Ty4Uf`oDe&6m$@jb4B#VuYCT_~8piTj#Pk)DjDb z;}Ov4$j1`CbP_#== zdCJD0pXk@I!sxGq@`@F#Ffv#feK;<^WwZ1lZUytWfF!bWX65_|LjYIfA*ebQ} zT;*skeUA~W^L=*eCjtdpYcd2-)~83b*N&XH}=3LXwW0O{cuJeHYQTyY#XSAsB2G(sL$Fa0SPz zZW^v}QI!iW!okspYctR$rSPwn;{;pzj17oNjM#-h#@-%ZJ)Zp2$OuoHt#QK<_ic^; z$%g*XO%8o!hzuW>Fz_6?Ho5m4T>%sE$g=S-`M2y^1rNKHh5iJ~JJ z0J$g0*9NM9V1}RW&+nv_&AGMnOUIBcTr4)dmkv(vr8K>l#-}HJGyq9tb8LEcZ|lnf zLKS>S%x^%VJGIq|&*$xf^LabX=k4+NoXRXPba=I;Uj{LoQQIOgs;~c_ywb5oeIZRa z&_tSszRhtKy|H7JGNovN!A&9Ubvo3~xmrRitJp)QRyUSv%*220TZQYNCINOK_nGVCQtjvA~-gUSj({`U|n6Y4Uq^0VY#z-Aru zBT#Ta73-VO0)OAhn;*lam#@@e5JTo*cQBK%OPPhLrr!boI#LBuYzA2&{Q@CKJH|Qo zVXpTGLX^wsErK2&M}AX%hiO%-mbs&j{HDQkZ_Gr69?Bv_#U69a8#td2WKHbs{Ay47 zZhvRTy(Fi@`Y3%j5QEs(elB#(Ji201i~w{@Redf^?zxSFzCXvRYG`x5f3R`PJ-brL zx^HpMs#G&>WbVxRh=r!^HCY{9`!X;YC276UIB3kYmVDh`vaC_W2ljq~E_3KL_a+C2 zWom}TEE>t92<=*d)RC2sNIFTit36mcnk=!2U%!~H6Iow9B0rwVosUewcpV4M+7MkZ zd3tRaqr0~FMBjr!J4~7m)EZHX!kRJ~=QS#5nKy&vzoBuuX|k*3ODeh{*?O{&yPLKY z3x{Ta6MdM^q5fyP+I!9BOx|>m&s5d)Ik$K1&@kOw2kKTxp~V_tgis;9hJo={42(w; z|BfRo2m_%m9zIT{#qRjfkX^>|P9l6fZsnIA6yf942p5SFL}O4`g(6lol=05FHVPA` zvXTfNA2mv#So1`&`ZcsbvHS(pNH3L|y?Y60oEW{MzLZny4U}^MY7HSXAU-)+gpVUo z(*$)IBv`B~P;vY_0Wkv9sGRJ5Om+G#rb<-+v!Al;gYy^?UJt1L2_az;m2`oe7bjjU zRIX^20uSk}u^n4YoN7pKp!WBL41v0R>r`MT9>Th%djlNp{g|M}T7vgj5Ze%2fyC;Z z-ZRJo@1bwrvn~q^mC*Ig3bUJ)WVis6L>@LcK{bIW*SG)^Hz^4;+bEtl0AJ9?a6Y8@ zk`#jGtwh+QpI7$6Y6-ClQWdI+?5*?^em!NP)l?EWfH;_`2!)GE%1oR=IhJwLn6h=0 zD>BDXrG=0xgPJE<-PBDDWL~1!Dl!IfV#T_Bo&>R?r8XWWVWMe2EIRZNCXk)6A>AR% z8_^x)h|&%@Dq#Fh<3d&Awxa z+;9D5A8ua>aABR*?S*0Kp9@`13P;Oa2zRwu zxV>%|It#aN-9=mTE?5Bi;kwZKdmp3AQjOj@Utw8&C*#(CYd{VKy6$7Vb%@H;=ZWjn zrNBB9s7!N%D${%bem2WntE4gs;|o-#>a8@9TTvw}qBBXE-a~ZxyZuQ%iSV*_aI>@~ zsx^tQyVG5#LI5XN%xh+kkB#oPEzh&;{i9>YX9v%{5yu%pjUxO*e8dz^5>RNjspLeluoO)Tlo+j_T=8kD<;0B z;1xVGQycdm*`A$kKhmryDa~>m`FE?c*=()4au+|QcqwY>rL}o?x|VOa6Sdkn5?kDf zt@9AmvZz{nlsPa!Cf6C(;Hbo)+Eg{_B?>#dp}4=soV}3f9h@Gsl?VVXWW2_U=QdZ@yW(n zRX?$aJBoSHmnX5^o}>3+6YhP62py4WPNJp%6hhN_j}{Xikj*D!q?gUO_f>l4m%;}R z%=wEE*02p~*IqH@H8Df+DX&$+h+%A$C%MG(BxmDF$uPwD;?ziU%GbSRqkVQ|al4D2 zXd|Af7N=ZicjYh%affqMx)J`*VliDnQN(gJS5~EbawuSLCbR9f+OqB=OH!pQ$xN+n z_Wo(8`n9asDy6O_lPLCqBuTHCC7TG6 z+!u#n?K24^Rn1!{j_k6xjGCirVZ1pUB(9fttF4Nc_EAA2D&B@z{!;?Ts6Sh@D#(3D ziN|EpX?wpK29IBvRhB(zJ zo=N+Fm7 z`+r9gQSVyfi?0&Q5z7zv9m{YJudhAz|p`@uWmGW~Z%@$^2|UnZ7MfY_ifMo7Tei#afM$v=d2&b<^m*-7t|&Xnc+z4y{8x1hw7bqbNGUY(7+m zinLVjeG>sTn(p`R<;V6A3c>uA@@rz`boiWxlG2Ul6!P5-!-QC&hJb;rrH30v4vh_& z5GDMu?6+`{hEHcGGwn-ZB!O&lQIzR+Yi6d^o{or1y%Q{jw7=Hv)?Qy5AFnYxPBap0 zjU7iI)zAf4M?l{YIMs(nb8>2RY@Oongh--D- z{37eNVSPw)P@{%QkaRI#zF3fTxvmPEkgi7V@n^L~11?~$ZwF(5PT`2}`4A-XgOFznKv5VatvESW+;Uwh2Fms z3S1Ws?{CB5Z3M=TMMekvLh{bgr1H!`Wja1Oq1gy~QeU$a$WmxV2W_a%Qm^Tcm1Bp?oj(;O1;(f}gT=?e&0d7uv+l2(q3 z)W4w(4#n&QP4D}}*6Kk#y81=51D+C$n$hmKhA_N|8;&( ztJTbhHAke6SLbrMO0_pd4XP?t>DSdtE;mQ#m7FqLeKVQNUq&f=kn_dR`g&B{#S$M( zpP$fR;*Kq!E3ZH1()^E^j9(Imw*+2`PY~_rKP-4H4FzL$t6Z-`fYS=*TP7 z(iYD-6E)8_64c&G`iEvopXaq>R^DT2Xa#CY_n;dZT7sTKLwo@Z7WP>>j4h7v`Z4lh zexw$l1%Kr(ejFJprD3%4i)88;9Y|?BiRGk6`)4#t)s_xfNMcg0-n6aKD5b-eTC1I9 zokb&zZ}pCsFX=lx_oEGNG33APevBrZr?Ht5$t`Uz2szT6aM&#znHBrf#F7mM=4`J!yL z_z4S>8=}YX^*X6~D7~FSaFH{gYnhx$!AzH*7y=Y!xM9-8MiA(GC^nstu^tGx4zl?i zjozORnLm#K3d-ADaN^k`!jfLpy@D~dH3e?^EgWPUlEt_q@MgxLax0no?TRo8z^SLe-Ru>8PFW9P+Quj_fw7 z+0&MtZAT{o^ACJQthbX%<$CDYLH zRzd&NqFSsXlD*Vzqm@85RX8}>=@fEXU3m^ zYhJmGsF{2oy-TdaMSEwZ(o#{Tf>+}h8{LcGB^~`{P@Ny8pKA)*EjsAlU_+_yl>Nh9 z^fuo9Sagc^D;@MoK4)z7((8k5D&m~~G*oIf3mTF0EprG}BgT%Go;Gy{J}2{al0kk5*BRo$?Q6bk$h-41>vi?7dEyfZidc zQVyjBgD|EJ_4du78z8*xrMv*mXf{(wW-7=wKpkXc8=#&HvJZT;+^JU1x+a7SHa5hw z0BI1z^P5K-4tx>b^P57V=L8uHryrYoFYN1s4198cSWi0%@SP%R_305~3cn#lyD)^_ zX~($US3~H5f+12WS|b}ieAG5&Wgh=GC|Wl69qFqgEcjQ+8ifU;gDMXTeie=gD?^0M z)8sEOX?;z_+yM_|Xr$!CEFy~$A*cE(qKy!2SRvI6ZLMe72dh=ZmS(6nLEi3dCvD^V zO;iF$HgIXEp%3{kNB~afqZIxXZVrY2T|umrW7V{SvjZRP5eMXtwXI?MJ0i6onXSoTE%G z#N~2+Cd|4I^4Wf$4w&qNG+6`9Of9rge8I5Ez5rbmS&JQ(L4HNDE_9n+i9-q08j4FD zadvcqa-QO5+BG0R<7>rnMvz2zUFYPAe@aY6ei@Nyrh20G>lV|TWqnn0D9M^a51|MW zga*p>3xuu&1o}MMEmvB=u`&v7kiLP6JZRP`aRAAGDGa-(4xk`0;v@lda>XYk7O=Ys z2yw(2fY7i46(2q^ggANNMN?VNm>W3j5fXRMIWx>CTtfzu0bO7?6Ow|T6Lk!;x@c#J zsKV6G>4Z7HBFjxYd*vC!uwB|7_`Jm4=EW;cX{_V1v4%dFTbRT-tW(4-G}giT7Btr0 z=&-Tg6AqP}iB}}Oh}GeeL8*DD)j@2%xKekbjTi!befQ!Y(L`8C9`@a&WzITu0cnP) zOBLI9!<}G#cjHETZG82LSTU57nsVHzwc(T(GD9;|2K4E z!cjZ->9S|UcT-&dJ9+JPiDt~~XROpKp?PG_os^!tzC9zN@tzKQ#zqi01r2yT5S$i! zMuzS3FGP0v*@-7_yw61qAYsW3qK>%v^dz_owm`V+<>P@Q`s)X^@<{UxRa($^&+U2b zjFDzp>wT6VrRNbsY{X%rns$^FpnQ9=;8a#VTv;d-or-)z#VJ7T#<^20EL5&IF{8;q zFuNkTGxV{N33GF>8d@*ulhj65z=by>TVv{}& zjvy`t2m}8(R|R0yfkkJz&xM3W5DGql#Ya@Nn_0K2-BSrkq-*K@uySuUe%!GUslM%OLO#X%P_8&S6Kk{hOnPD$vbTj;x1pUOg9{oZ}> z4Z@=l5S6yB|q%;{IPoem~EW~3|saS+)6F@tg zS#m`C88=KaeHe=nw=@p3?@M3jiy-GwZWo0{6j-icONKpJ22k@7L0PKoa@=j00_BdO z?M&H06UQxR;`n9yR91^9fP?x#sO*7nsH$%l&ZYPxM} z`mB$lrqV#$$0RDDQF&1m@u1wXDR2O^BZk3y)^%o3@~?+Qb3jf(scU za6WDj6q38(t0youNnazkvmw$BnNQ<9N;^dCUyp%u!%i~tAFOXMkk1V~&g+|w#Pq1f z=;@taU?`G)d)?{1lTB~qI;6Y<`fwwIbW41G!wf%+Ph2Sf3+uEv$LJkuP0AiC)56=t zA&EQr4f%`ki|t^a)A>QUh4V{62T8X*lKh|$nsy~#`0(tCp*sV_4zDnA^W>sS<;Mq# zPVe~)h+UE$de0}lc5SyI=`$2FIgsdzXj7i(8pAk5n}&I=vXYGG$OA^UVGS71dRPgt z9MC}tmtBb$tOIDlXx7fpR^ zAU1Wh$YN86z}chZS+o{N`MG##>HwIBq4d^MPphRIpp%Gchm&lM0O9B;-zjj3*9^?nlbAxE9LXK234ay)Zvv?$q(^q%%o` zF+*@pBVepdaO~qBk$^rLA>xd-WxU5GU0FANDQeFNH{8m{0@F<-NcN-?Nj5)$z9nWb z+KiQMCUP@m0&DFo;RJd&44FVOk&|we{x$hn5uz9*I*TAxVNnuA`-R*hDD129bJdEk zyh)j_RQ>#$6u(lPSKgTStCe}>_WI;x{o{?v$%b^hgO=M{Ty$`xuP*m8F zp6YDLWi7Y&rnc|5=^sRmap`91y~#^4mIDb`J}%}&T6kFc!KUl`AluZ^Vu@U?7eBDhY_@pP6JDu|0(Q>&{M3-_+ z9V=zD(NeC4vNR)TL7kKoDTSiX83@ht>*z``S7;QB3B71ep#KLXV)`zgtmKRNY%-62 z8BhfXc%Ndx+kYyc0}vP(2ylZyxTxXsOXMYENN?| z23yN^&)-wm>U+=&22whWIh9lWT1#tJ%P4?B37i=7O>E3T{QEjfP7J1x0Bg_Ui}nE$ zdOtv8d|UYTVY;?vl$~;U^xb&Ff|NUV(h%tiNp%?6715E2P!@rVVPQ-r+IxZOI^;}( z$(J4td}5;t-}unzbj{HA&>(0q?+J$X{@@DfeA4yO$C8gjm=^p-f#NMHEM^gr<+<1( zLHL0kmZ1*yk#)4c`0kee!jWBfA5<$%*A3OD;$XgNpyoI#)+Lj)N6`3ZoP6)?!xcgf z!vJzrDu+7moMlZsi(JhY5%iO7bIvejvzSKPYP~wr9UH0XS?nE@H^J^WN+3UKZPD~< zE}Mr=K3gvDZ;b5s5wKKppd)*|`vWKl67lhHT?R-*+*260e1{k!DZzsD{*$2pT6&8j zM(+*%UHaX~qjjLfeBWE0z_Y*ZCi2YAGFpaGL7JV|K3AEC^H-xAtfkIy|U5w|# zd~@;INCWIvVN=AicjrZ?@x_l2vCrp}5p;#EFdCLGX_d;JQU+CWfiOjevi@ zH*H$us%nE8RaIw3Q;SXxVF6ekC2vz_%yICD4@P)IY?H=wfU~itFCoykBE8I;yhfK-Jj1bSaY3-;nxTe57#0#4a~Wlt4QasC51z*!c=q+1+AQMNk0*E%R;w$%~);7j38Vs>_rC#*>WnHS4iaydA)*DsB+E!HaR__gnASo)$`~=ke21rqd`tn^IluYi6 zt!qe4&?1$nRFq7KLYm#5qg{cwwMYe}i(5UkGXUrDwyH&4FRC~{r&R!YlyV4JL?Ji) zA3aMx&P8vUa(Q2)vCl7~Lye1bbi1K**!yw*>{KpimPW?A%@R5mr&2Jfm73l05uD|y z#FB&Qya_<9h+p%ZjQ<`BtvWT08K6;|eXf+W?9P0(~-{&t__GGbWzL2uQj}kdUO}*HZnf;Kx>n1ba~&*a62%+gFKXO{ry=$Tb}^j(n&`%r z1vD69J+%r~vU77%FOB3CO;hqCC4JHq+m#@yCLXp>(jJh^uJe~olzE1EFrOc_%w_*N z;x^YImlLuR+G&u)71{8NwxV2NyM#)rsy$T#Bnlc40myO+`jF|6@RDq2-6Xw74Eg9F zDd>}VzS!%;{Y50HbqFG(O2^B~wmkua1~O0B_Hy|+P2o6sY%=(dyf|BpyzA{K{hpEc z+#RJg6T-^Ep1BPZLJebdWGWKBf*})4yH!wsEZ809c370H+puS~9N)7yORo}?BXIEv zkv^W%cL{N;9}^XuCg#OVr2kF;V;t(fJ}pg1i3WDg2k@iQ09e4I`f>;Z$9mY_ATm_Q zX-YPq&njB3Kp4wy<$J5OJ-i(`=TzTy3>}7G^s3Sg=esnJ?|Kk6x*URC5=J1pDbkJd zD?)BX)I3J9y-Wssa#?6No!Do~vCs5Oty-DRK0RBnRHw7g&&^gV<=o4a*$NKN%ayB@ z+1$%>tqTyE>!BAL&Y)Z=A z0T~d5wYS>VlwN9~7AWh`r%ze!5(ElVJucjW+QjJPC$&LtAyVK!^e0PYiVAchs87%H z{Y-XixmZK1_+$>-v#En{yq<9D^`zTC1(Kxva|{DL>0NkM;LRx)i({qIm|FCyXHF*L zPeAuS+zX!pd*Lsb|79r$fYyPW*F*ry9ofQ<1Q;?AiXbUaln@t^6o9>u8OPOS zVT%nQA4<~UcbDxhye#whRscZO1`gRA1mFb#c=n$KK+6RNP;cHanjD~8L8SwLzTYh7 zF}o?tnkwmSqNPN!1VBNlv&CCwXr6#4Qa3m>soO`UfX+dH!2JZyDPOI@okZY7w>Evk z3c-oyZ~~lNv{`^S9)c6+1K@;qyB<6Z!1G4HQ%%ez;NujUkpN$IBMj^#;5eY(?zDk> z8LqQ%m;>k_7SfG@#4LfhcT97^tL!pO>NrOZ91|j~w_utb5dT}#>0BB%(j>f0X~ak4 z9q1+FVww}n2MCuQeZbmM(wiWP7U}_*XrbqAN8b|_rwm40tb&q*mnelUc$V*3`CJ+< zBUB|UFotlw^z!60G2JPeZd^9Rh9h*D3k7d#{YR#UHWnWLZ-6}^;(Z|SQ=nxJ>Pf;| z2I-t8lf`6`xPX>?w{k!%dX=3PAx=K8C}_&Iv*ImsKnT`wGf~BF9N^PQrZFAQ$8@my z*mU4zgWrq5prZc^T0L#IP*I$NK`(8wFkMnFuVd4Vu5Mt2IUTEeU7&zPSC{PutZtJO zmSA;n0glq@qRWF=UHY3=Hxr-lDKD>_AZ)$?*nBkc*btY)MI6LWpy$j$$AXXutfdrj z4OGIs8&f&zSV3+{(!dB|vuQbH=!LYEL=sY?rer!AC`4_fvdc1vNY0U;GZVEsl_&68T`-)`<8X)(~l3{l&Kd|W=dIVAoD2GQ41Urn0Y=532Xt1YN?P^!XYskg9HF;1MksMjUXYH2ol+C zUMU6%AU~%8>p+5d@SX&M9YVi4_x^M^$E3g}#xa@oIhbbz2?Vd@69+Yz3HU4&1!5DM zz$EFB`D(qsoKNa9A{fY>O?-|1r7|>kbBnHn?dmG1qOMJv^-8f;C^lFnf&yq5F+|*| z6!KZ5dT^+wYbx-o+Hj~fE<|9xP#85!)AGChDJAFnSry+QHj$lFsAFB zLeT@;MVq>Gy0V`>N-&t#OEtfvEvNtk6Iy8sWfYqbz&oY)4l3~C=gQAl)qAT4jpM|(2QuCe}jwFx>xG`nT&LG{1 zNw7BDs!UXZppbr6?S^aCOy2=X*8UUKUwga*`l6L znP_Wke1cZ#6G=@1;e|k!Mh)m}XR|kg))L#HZEzB%lR;)ATDJ;{{0S0~h(Qn&B@t=x zJcSrV82$3VXX0pmsOCe3ONwNC02`&PIywF68G>E)Q||Hs9_B@zUs>j_IAed^*Mc^ht$y2*va z2nBEonZSThz;z5E$_2mjeEORt6YP{WM({iGcNlRAMj!}*ApC1EE7au{y0e@~Q~$w5y#9BL zP~@{}gNOhOf^GD1A|j9hlg;LHj0VW>qCxa&z$iMaavG4f(6(OxBz^qJqzX2fK8VZY6CZLBU4vQ4%Ap{gg4l|=f4jIfg zz7K1hlb$18C4U=hjBsFKukl<=w>vHjHJJH0%r=I?9L!fKWpX!P#hlN|ab+H+8AX1b zJDJPc?gRWFd9Iz!P2!XtureJGsXt^}m#H?PrHa_lUU?I$+VY0Vo)ebUA(NzG4pr6+ zGFjfbzM>a_Gij|Gt8442c_7Fp=6WqB$U=Ul;u2(#7-SD{Sx5(Z&dTqJJkNLPv=*^Sm9#n#6(knEx-zlMu6%+SDTt?hGNl}IhxDEP=y zg(O*LwjreBjhp6nqSvIj+fW1%_g}+I4QU@U?>sG()Yq9QSPZ)FB7#-e%x32R3i_X6 z7NCI5!?=|f;Z*@`BiAn9ks(8quFP>zNC+^_GNvO;5Se64R$zaYp>{(+$hda8sFzBa zZNS=0$uRZYWTP~p)^t6W&imQY7X6gK1P`hV`vC1uY&$*gOl+BRyi9u3S=zR(rfn(Y zN|j387|EJtG{;*Hf-)?o*GrcISD3c5p1m=m(lNmfNQ2kx0Ru1iGAIwz8S=?pyN9^?Eg*X%zGIVx?|QY6y0KX+EEC>G~Fv7zPYI6xECAl69|G z$jZ7x*PZQ#Ia(;_S|Q&tN(c?E6&rCjW=vo`F|U;8DOmQ7K>sm^e`V?JLARA#5te?KWqhIgfT6ayov52b25fdO) zFT340h@lu}i-1A{_)}(oVEnQ7NzcxE*+QKLU_+%*ir3Sh^bbV$|JV26qB#xv9*_x| z^W_7A5OiKzL@Tge)3Vaat`!nGeL)ELxA>{R=vZLfpKDBZx23}-V3CjnvppoC0wke6 z`|rJoNtI^E*qK7KkuXFXpq;#iF?M8<2;(UuAcN%&Ej|@CldrSU0sa1v@azTjrfzSx zwr_7Ww{x^-QrVrrF(xKTW6kaCbMOO_7fTG|LunBeIN0oi9Tz~SO&DGPPJ=wAh>oP% zBU-yq^f?#4Cu6ZKO;5?C&|I`@0HG_=&50GZ3{kav=#={ILK6SJ6j-%?haPnyP3pq% zugI*z@Sg{X=Fr12t1(HJR4Dt%I1HrlneJ@hbcl)J-Ni9_5<=8qT`SQON=8@J8aYKx zE;51pTtt{j68$w0y$OVkmAVNXz@4(95}By^HAb7Zx^O9jJC#J~`N#>2B6JYmVHskS-!1GvIDQ!Pu-K@@+=ln9fYR8=Uh_;BFIs*l^EOoMxIODUL}*R z3UP+pt1w9mWaTclL6J4N$?a*ZPk2zlZeX{)J=|@fmT5!bZk5_FjSeGGh?6C@BdIV} z4c|!pN%dCN5Hbjc@i|iX+Rf6d*CW_{TO%hZ zL|E$08!3*)@?7ReV&+fRLv6fts`n8_C|2nmteFVK6CmWzqoPH?CJ;)LTD^6wsIbU8=s?F>b!{YHa7Y@0Svp-T9c$OshEgb%3JPLs z+Q&*o1a0InGm4(N4n!CU=HWsyQK;{B6($S8bwUafv3z2a&}*?l%$J;3KpupZuy6>> zB`wn|tZh2aW?+u?1>ajl7z$iqoT=Wb7ZH2_9T{)1>>c9{M4AAcRaI3T)sNYerBVxd zuR4UrQfZPxa$~kTVQUheH+UQ{q-87yrjwN(w}J6a`gF{A*Za<(@va0aek?-8gPq1! zI8G0f!s*4Ieg#eZ%_On1DByR|_CKT|i`!6N&kuYFX`Z3PEuCk>mM~>MXlr@IA+sH& zORp8rKNg~(&?v@ZPh3+R!+`=aBjSSwM0G6ef;&6o&Rvi+USDR*IraX;tpe;Zd=XKZ-A3)-S-9UV`u_1b@^$HI;lzE0L5% z!LOQhb_ic27Kkmj@%&D~p7uCe2sX_F!5S?2nC%ix|Hio0%t{xcRx?duRnXNeGd`I;OZ}9dpy^F`KMo`eY$%M66?gKoK;4M@v4--w|5 zuGj5$aKjqc)}v{z?to>!pNrx1axTC#N1!c9t4nWA@>d^a+lyNNcd`0xZ?7AK+h?xJD?xPFjdkCerE z8dZ(}zo$waKas$3@H-Qzlrfj=;X0zj+4XI>hRPwm`%!1}p5T7@@xlGLK8JEX;(lC* z%Zct^-50z6>fnA{kKTW^xL@tvBj1qxC;ZMRo;xl-Q37Gb^S?qz{2qOtNFK%KXNk{I z!2^{rj!HPv^HAR6Ha4Fz_Pw7-PvGCfd^|Rvv&D5YoX>4+KJ0#sTilQNcx*oGeq1-h z`9$x(I=CP6iQa#8a6iTyz5j{9{kR^z|B1o<_?_te$AkL^e*buIKj!PCo(Fhz2_Cuo zr52mteK_7p@WQ;!R2iS6j1k~@jLH!KUPo~JjDXj$?|1m*_v3o>{;Pxgd;f>L?|_%2s`Bot&Y^PX-2J-y zb@!W>^W?-Z?udY4g%uMf#IP7pK+K}9uJHpEb&ad2U|JQC1p@|L*~67s_Ncz&OP_sbI(2J7m%YwKS&zXbB_d0LOlz; zUqpV(p1+HiQ#1**?}r4>_=(`V9G>_p@-}w;^SFL^^h0_KWAE{4{yUhu`DDgRbvm&!1xT zxhD{riiJI+DFl0dk=F-weII*1gU9pF%pTu2)}m~_;Xi* zKUcuBNLH~IpMZRME`IN{fN$x*W<h&Pu93Sw{GK2@>#qb){T1-k zAH{to-1k;C4$yn3zv4Z3-)`@I@KNx6d%gFe{{`Q-SHM%GG8VZjGSA*~j~LgI2zz)3 zYtJd{`6osG%-RVTVtD}(Z#o#TmUcl-DMEpY$0{QI~0_n#KHpE6Uh`Z9XWv*)w=GP(uo z?YEQg>A#<~R{=kuaTCu~miA%%CcZh9mt*{9<-iYeub`a413v;D__!gx~AIgI+=Sy{o{Vy9)fd0=|LzT*~UR$ng4j3H=WB&!M~^S5O~>jRd|Q zFZ789^rImB-wXI5l*a<_fA7O@3BjN1!*2<}d-`Gn{BS9gPgEb0Pb3Fu{M^mt%h1vT zaGfLhMD-&1WU~70!ja?)zyDRZ&hP()xc^T$l6;YHe+wHLz5AJ-g!Y|``$@h~*v=0} zUxDk`+=chvEuF#ekpP`z(KO02e+B#r@Yf?eC4i?7v+5ucd+ zLBuCK{|@P1_8b=ZiOC;|{6zZiyZrK>2H@{p1%6iup7@SG|4$)!l0W?UC$9p3&noaI zdGHt)DPom)KH4klk8+A!?9>4K@sWEtJm|>#AA=9|*Y7ia=kR+xc)!1L_+Wnx!tWLEBY+R;v3t25yYvOf zkDmqP$Dc%h<$UroAJ3->JSPy@F%_k9-riG1q(TcVs1*l*m^x7TZqe!afER(JGcD1=U}d0e?NkC36Js?HQkM>P(o(!=5YmdVhr zC2UX5Avg#R0sLJUHcZ-nOzU2-O(Gsd{N)8BM=1*b6BZztgZ9!TJZqwm-%>4abX`O~ zWL}xDW~O1gP^c=|L^3LRbA6~vNO4=2JPyH|e|JeZiT>rK=S8Z}w)V)QB;S?@$} zW2aNO9SwC1>m0^fd6p-ejnpU z{`{W?;6Kgykw5<@0eFY;BZvQa0N!Nu;P5~5;0d2mlIjFc^x#_L54`&buZ$n*KDw^q z2q`b_$EYA(%kayr2C4gn)!;`c?=t-Ufx(|bvwy+g*D|e%!GphVW#!PmBliZZ40|Fk z^Wf#LFs*o+J!cQidiZnXGLt7v%R#+tUJkl`h1G|_gWduj>`Hy0Z8F0R8ZO>aXGZ z+3cM7gw>z=ZMgnycFy?-_ir7%pW{*R*&g}YW%qmhHaH8|Ls~QL8v@>gTD@mwW?DAm zPtvlJ;7KV>wT18@BaJ4^(Xp-?`N|U!V}tk6q_A{>(6E6D z`$3;Ro{wVm3E%JGn`^l@ep% zEk*v~^_x(6f|oD-jlp9TMZn9Vd}*LODV{^g4}#B+t@8YIsQfSf^P{Vjr$o60tKyI3 z+hSe$Qi-j@paoYhy%m@%EW473yqI0Fm;M&}4P-v*get6UA-UTJQokH(Ti*gIr+zqS^FB!z|vMWA*5g_?UhToSA z;&<5w_pE^1@D&fYknXX^ zin3v6-!f8iaiPu`E#s|moLZvz?A_0qhDwEzkE6V2d)J0 zj|}T1qb^^L|A8w3{73hSx-G;1z?FdPfG$R|`~#vt_&QLiJki&UP)@Rg!^^9bCqw1^ z=f_qlPm6ME>AvW18LqAv#P6~zK7N<(i~WV)Gl<`1SA6{9%J;=RgR*(>iih74#wBKj zlCKxIGT68`Se_88cW8^OFaw=qlwYQC@)T;JkaK zz^#WtT#0cGy;5M%!xLTMe0ZhcLk}C&+c~#gDRFM|c&ZFaX^f{nF7WgQhNr>ugcK|% zp5pNGD&@&gIq?*SkF8Rk4wVz0IDB-K@{}mImi`)Z7;jv?j0Xp=co?*o{u*!cdzSIw z;1v(IbWcRwGsuI3SA49aZl4o%8|dT9u6Xp|`kJqQ$;XBCqZ07K^tjBre!28>#^tDn4_;8}TQ9WNI$pWvCim5*bR)n-zdpjl~V9V?}} z2jmT&9h6T5&EycC&C7WoqGz){0r+4aC3sd2cwWwVlHeI{06xf*1kcI=&&!qG2Lifj zm+QWm8(rvo427>V9k_pe>2K_QdLQAun`XLj;QG?Qb*2;duVW=A{CuVx2d)p+kLk$E zu2Wy&?`OL5ey%f}IdI+TeITSe69%9=Gl)H`mlu{nus#xiuzMc}Y0SU^Y0Lo#JYxWY z^_c(!JtL@Fci~M7-8uk4&j>@XJ`{j30TI--yJ@Ct?-zpgsQ^TG-yH#c64)RfXV;5M zlh79iuQR+;5ySY1NRR;pXr%nf&lrH{^F#j`L9H~%5B+C^A^QBlA&4J> z`fHFMR)gsC1BWQ1wf(V=_yKZ*;Y-Msf$MAxTz1`)M}&!$?(bh`W8$*=y|Iz7u+shg z>uii%cE2}P5@Iz=U4f2Eki~)!~KlGmw z99x6@(0@i4qR$T;g7_gg)&}`uHHbbxa0ov3V(oyBvGR%iF;;#Sd3K2M-ClWE{`0Y# z;deX39+U56V;1*?#~m84-bVeHkLAJpFpfTpY+B;J3qtSn%DXZv58MZfNbCu0PI0O9 zKE}x>M!vChJtP}ld9JwfMRsL(KP&XB9(lv*)v?AN18#asr z;?aMh1ncOz(!WL1$lMwX--?F8ogOQ+>_ag|DIF2EIPqm$YCjfou{aAPun!_Dv}PAu zD7_)OP%gU&jhC_t*&#)%XESy(nL{8%+98ynxC0y_ZV*HrkrM<&8m{8l{Xr1&m9B~K z;cmuB>J$Yk7Rw;Q5oNNVErIw8T&4g@(JVq_N3lnRUBrTPTYeHusP~~+Cq^g{W+H)V zqE-FK8KI^jyu*H)HjAcFgT)3sMrg5*l>NRp*q}g@S%ZR2UWSxFljB>*$G2=5AKxk+ zPv3MFeSw1wUE^-rNg4=kkc?uNPoSBEgcPp2%Wy3UMWfa}>p_wdTmw+F^{Xw1=#tT(=7u%F^e zQCtc3Q@Z1NR({zEcf3Yi3EnY*p3OXj<;z6R#yANE8J5qK8_`|p+3m>8>U}%TBl~oD z>}8R>n-Tq*R&PB-rVG+A0)V3X`q~ z2rH!PVs^1q&S&EWHb7<@3L^Gog}{-cNr)0j3UyBk=>v&`go+4iND>K-&+_}2`~^Bz zLB$sX^5%fW(MJSbVL|*dn`6>w%x9h_GE3hlsg#YyymU7!bx`_~=xH8o>d&mSgVKNR z+Z9vyu~Ke9q@Ko~Z~-fQ3SeIqz0WI6-Aknrvcl{TR=R-^6<5v@R|ZB@42GX)z3cMj z{Z4+XxZ?La^sg@ZSABW^au>1Ji1(>UIni0Ydv%F{GiIq_W|19XGHbP}t|I-4^(*a6 zT`3mU>Hjvsz_OCohRhDqUz+toOvz1Cnu!_xBZHCVY-d)FG`LsV|aqRLGnpiRxq zNmuZ0wSjlCeFH2tSh)l3T?3U1gtJ8_3J=x?*STI4ZdBH!MvXoUo$DPBf{BNzb49r6 zg*q2Ey_^^{y|C`Z%XjngrT0T6y_j_{R-XE^DE~Cd&t+YVm*3|XiJw7l`LX@cbt0mi+nmigGe_@{W1spsI^2yklM|E$f(3-Z8IS z-Z7)RV_r$ljlQZ&-TzsvlfNctghiJfh0b(e^fWj%7BTF2v4mF``hvQT^cQr=!g}5% z*K2R{^bP61J$*+0LTHpbZ$K}>i)Z9BQzg6;$p(a3x@@cj|4d!M$rV<6F*|an+%z78nG}gb* zGwWfRG&sFwrfcFEZVtR4be~sFs#JJdY~#M)F)@6_ARpk$*Tj_|AHetdRPa+70xL_!>2AiLH$b_|etjj~;{{iQFFj{7UdIB1rk? zgYX%^|7a!nClO?HC=4%0MwccrtmRPuawKvZN1PYvCUo{A%KJ)xQp5XoIc?~TGWXX9 zKHmQwk(a*PJ6HPM(%s^zd@sAeOE^d51U*wam;7pb*YmW5bD7>E3&vSgqd~Rr3slKuaefjBr5qC}rA=GyZkw3gwrz4^oAgn7x;lT} zV@)-gY#G_o`Xdf=C$_Qcc#|bb)4C&e zIQ=#$(pF$E+$Osg?Fz*zIu~e?Lda8XGZ{~r4w7_D&KHw+ddTBVat}LVeJN|Sl1bHk z?0NI5*CfgC87vaiTk!8^c2`YUSufqTCxHwh*ZoW_6W|Zf-PBzRYXg`Kk0r;p6Bro8X|ah zWlmbDA%Ya*KGu+>o$?~%GSQHgI88Jp#C?xMLsn+g{c&%AB;aB&7jbczBtcGYa4H3h zS^?$`5@aPt=L8|{Poz!99cA4A7>^8n&RV%25J6Vy8$LlG%9b7@eNtpqkL=`?6H+%E z>qFY?3ESI9I{r6(v4|fs%ahR`Sr8K^@J#IJ+TT;7q39wjy@S1I)wlHuff20`d8d?@ z-ics%lq-h}d=%)3rWdZ1Z*CZFZD=+(w1zh{rDkhG%llv`9F4qK>PTORWHEFmItyrj zo?;qrp&0K!PN!dv6k$>Yslr~BP_Yj>Qo?*P7P%9ieRvc61vTbDjevzvPM;6v&T^gL z;#Ei;B>TNSH4pbY+D@v>#!Dmbj(h=Qkr%0FFaVE; z)05|>K%PsdgD^hKEQ;Vfuz-q029ns@atKdC4iZ>&D7Y`iDSSLjs~0V3f3 z2jVsijHyJL0tu$Q-)ZTDgSbh)!&b6QqcyUoWi$}W+sWk`Mr+MT%V;9g!P$saXt<@a zYosV^2Y#1J?DxJ87o1FbrYP^`$KH3tH-;a|A0uuJKJx5?x+{_<-icqdjCa`fm;d+q z=l>Vp`~QYv50cHLh%0?8@__t9nk}7-crTQkg=@{*W5Y9rR#$sWcA`{t&2%VAhXtSd&fxnn z90I}8U2Fr8%!WfbazBm~<|!h50dnS)$P*$L0FNB|Y$GIE<{SO|kWQ!?#q7fezi7;0 z#+yaJvQJ`xBA5e3`0zC?fQt~SUUcTbi2J$pw&CG!nud{K)7o6B?{wXfY*s~twR|Sw zrjkfd1M7NJ%H&#&p%y}%TL>gxk?qNLWfCMqpnXV2L0(aap!v7B?{Og5gG{R8=?DmIlw`a#E)h#X53F1%AtSy2#b#II~5kIOjNsa_@jd zD40XREGuyL$O)wA8g|;Xl8Qjw3AI#fJHxfIl8_+>T8KdXc@|U~Zbjjst-*Qsr#%}% zY=zL-7kUA+qX_>$3e0?u^>*mR;mB{oWFT~J5$8_qFg~)-Y!>dOuUNA{heC62cFeMJ znHz9G$|&jS72B#*EW1*$%Vk?Sj#lbjj)Db0P zqHii`YX~7cjgH!|Qn^G@Nw-ZCxz%aMGv!;$WfHMu63s55+2?^H>xg4;w&2N7bI=;J zhsDRHMxhZrK5DpeYq^2K73n<~5OqXg%e$2lXyM8K=1v-&JY`JIcZ^BbnKC*qow*%j z%2Aap+L+8Ls3F2K!@D4NMMiVoiL4BzRMnAuT1{mLb-A?LLHe_5x$0yq@_aUB*3e$F zqts1G%w*P;j)~US%v5$y0y$c<*-VOa2c&2!)w)1vdN&k#`}D1R+M|)9F#$)>3^!?SM2%wawngbR>Cd z7_eNBG3k|$GM!Fpm0U~L zT1r_@ruR_Z7H|`MKq$E;ejpy?B9gi{G^9uEY7L9#m~@8xpmdholT2iDs)`8^{^jTw z_Thtx6(Dj?fQiX_CBU?UeYDGy@Uf{K%NfD~{^s2z_XX%6>a5S*;9eS22D1$!O4YTwfWVjKm z+h^zRm~F&pWK4_@@F~@>uOLZBOx$)e7)(=wiO-P^m#GBi}rQu$|BpiE0|4xh+s`O%Mr~KR%s}M4C97S(u_xHbK zyp!H*SKjDV234p=eir#`v`qVEPKID2^^NB4;3Lp}Vg9JZXd$0Zw%f^kzA%~?lkc^x zc%o^Y_w=WqXEoyq%lgOXzW|SM@t7OMV>tc!+#LKvfuF15_A&7|`A!RIk1gxs7d-zT zEh`ac4@3izeNehcBpDbO4*NJ>D~1eImU^ovAeY4}4`&kevSI~e8wV1ENuLZS2;)ft z`|-(F3A%1Cogv>!rK`O&3CV3}3L<$!XX<@EQ1c9!;55{HZ3NNg!ZjB>O7U7y^A?Td5QSa>)9JuK z-?xSK2O)M3=1y#y0s{E*lnLEV>tbcvvN8VV3zbT(J*3r+gzf50C5sU=TR}0OvjTxq>LdzO6oC%?*+HGXI8g4Zkj-JgPS6&{GWsdMX0*WH7)h zCAq$RAg3oFfCQ8czWq@j`UK}S#!gl&bkNw$0Putn{s_Mo{Ys7 z!+I&#S%sEL^9|BXvrG&0^i|SQfyg}p7XE)yOU;GV(lA3G(oAdVJ<{P=AX9wZ1|L4OJ+ac#Mt5d`vuM1r4>#G}Pqi zXp$?uQq@;)FZNYlu%EN^P5H#A961(|^q%ayMPY>QcCgq54#&r_NioHT8!pxgy_#Qy z3efG)ht24r-f;Z};1XADM3z*sSSHTo4US%~A8o5TP25b&u*$idq9AvnW!NSrNw{Di zU9am-xnW?+Jnv4O-56SD7?x!iYlj+VPr36pW~R;F4`QRmVl8%6oDOj_bS6K!w9zn> zqM4%sL(y85%BFUEQ>D^U6$~aw^HWp|V`HgV$mJ8sbhA`As?#}ha`Mbh=cq!dnZ_1? zTyftsokA?ybmW`)ao^hTIi~F6Fzn5XCE+y``th8Qve{RKXb29gc43zqX}z~(dx0*Y(R0f+rC=Ea~MZ)`@>!Mjxm>=YW#i1R8}2!V(aQIp#~cn`JhZ)3 zUNo%=?9-)OY2ORI#!Ktb@k{M;OF;M)}HMM8VxVeaBKQJhklC>GgVM$?(6K7cp4vXg46Ef1$^Qp6p2iq280l1OUu7Z6leg!&2H{)W466efY^aWQL7GiK_qD+NmVQ?SoSEAG*P!iEn!g1 z=AgWy#=X0Wi;7|(Z})*Nx<=>bT=96yd$5 zln}2H_vla^UePl!bxBQxXI~uFx_r0AT<$Ng?>*VD&9lPMp zSge%acW1ssM>$`KMcaA#@%-5P{ZO6+0QDU414BAIqUG!5vyc=E175$^pex{mxhyd? z@wI1&;cVMM$D#fMd(xa|{o{bRh3Gua4}9&F{`&lQVXYPBuJ;+&3C>eSBK64JS)(VOH%QdKpmbyZDOlSn2OPg4Jurab=IcabNo zpz@TH~DCRpkx+kuoC!+*;hzhuZm$Y^wQ9Uk*hE7=}exp z%%P#9EM}yaVp-Ui^RNzOa~Vj!bT%$A1HN_C(2!{rDryI|5_|m2YGqng4P8^GD%CT` z?P*#nsrHT_Wc`rv_Cxx0GyRgETH2`VT1n4fNjR2Mhbz^s?e^Acd00j6u~;gjm5?53 zW2v5pXHqiVE*FmMw9lBFJiSedRR@Zdo6FzlVJbANp>s|KhUo!SDy&6{0ZYiJc1RzW z#y$2qIlFaesG56wZc77)?4tgjI5 z_O!t76{a&;GcS$uWAC=`xxCp|{S@M3t`GLUk=87$n|@kKr9MHmUpMGx#GjemE*MI#!F4%8HKXIu;P5?v=rqrG^d_uW0t7)dGX|t8`3BxDR#gm}? z=U|pgLI`4kL{UD>dg_blyZ8M5?*NsU-s|exT&Z|iy?$7+G^gn^$fGY9kubZ>Q$i3Fo3dZ?W~FFVTJtU zMTED*=76#wDz$rP6Aasn5?VK$9aa zrClr@*`>aD2Kr{P*fwA@?w#lJ)emX>jE>SbIHwYk&lg6a;7Zr;KzM;m1mO43Z1iK z@3|gz`-6QH8Ds8~*Fgk76R~$+4ULD_mksq0wEe-}k3hc4q!)gli|7lWIRC6fcaKN> zUcr{d6Z`8Mzs~Jw4G-m#4YFI?i-p<_8g{fiVvbJ~i^nyQ01>?+4N;N6x}vR{aA82= zINa50%j1&t$RKN_SzgR8z1-o=r;6VW?czqvX*_ zIg?qen$RNh$z&Q?1&1wbZLzwwSe(_3f}BcXOsHDO?}uEaWbH~}+kUl_&a9<-NWf!x zA&cCm>r3^+N~L+jEXdRYwUU8=@92N=XgraQOV=!y_cG}7W_bg;Aq|m!C+v0}jsbF@ z({)Un4T)%9LW<|o8V!lm>k7J>LB31!fXLC1Xj}Ojtu@a%<7d?>Gb*~Bs!dmFXHGbC zSbqEa{pC`$7?JOvy}}>+TjiKY-D@_wmN0g*<>af)m^1lKiaj+aCB4B6|FIj+3I)l)0hnBrLp`> zHmB!%-wU4yhQ@uD5Q(uIoXV*AV!?9Mh!j{xoU%jJ-cgLi6d<*K5PeUbj(GZB3sqS9Y~pyDH^* zU9+hSt3t5*Y50c&{LDY<;e@s4f!fwWVMV(s?5lEPJL$~Kd$6-J*SN43p?xQ5bK_k!XhmQ zObZA25lelZN*_yK&mh742l@(-kZCuTs=z^VeW|qGamN+aVpN6M0|_ToRYwQFFyDKl zx1r;C-T(;C#H~xuk+(-rg<85j@~p^AEaw7or3)=UDJ(OHz6nS69q{$KbqjbVcgp8 z=4!QL+!R z1uC+NpgT&bm@&;w#r&A6nvFu?sBY)1sj0I%-J=SH2J*j*!9aqgqbO|$AzFy3{mH)7 zsIN#8a`EwH=KkmrHa>?nMxjTGiT=UjT>5Be7AEDWOZ5Is^5-u4Is}C7`%ZuI*__6o-5u>Uq_Zf28 zY6bNOJb|Geke}3!Xf{jQ)cG@OPB_d#xEL!>4zmjU)1y%p+Ab-mFzdkbmTwp_oMpEU z4-bQ()2V2oQ!HySvHHwEJR#k4yN1*u-`u4L~=B@(Dm(@#3x~P8d%E^th(x6 zGnxT;-n_G(YY!J2;Ze}H)=SrTf_mSV4Wm}wVMy1AHYr&y!y+Y2Wyed`@K(@>9sgN8ohxCn7k-1jAZl;5l8GEHN6bhK?W zuySH#vkjv?Iy#K3(m8#P6iexLzF_I;SS+nug**)GF{yWf?=^^h&r9ErPRV~kkKTa* zV$Z`&6!yR?mauCV-i`3`XxS#}JEi|NWNq*0tx4jU7{j8&siq z%-GoZYX{Fqb~JW$9sKL!$4KaGrcuZ@8u>zF9UV3}Q#$!ZWztp)lf{ixwh^vVUGBN1NW8Gn#FWrJqNK(aiHQqi8U0Pr;XnEB z18On0@@PwcWwA~Y6zc@%NCeChCnsn=j&n-v_{o@tP$E#im~$r*Y0Gbq97m~2w)58a z%|4uA2h4|Tm)gMoUY}dRu3%{Tgs1rO8)#|)XU~#l7Hqp-RU|d$24JHd;G-Y<6%}a4QJnXXoQz;W#7lrY=3C3Sg0vjo6jk= zLUC@WK3yo(u*8IYAdcfYn_Z;C%P3{n*)iNYeSGY+=I{>Jt<_w2$8htsfAFk>m})^6 zlH<|i1gk8dKd;0lLgf$ZH9|fzgX+apwbznLa=JH{I*QennFrSS!G2!uz4~Yx4SN4b z-^X~0hWt|z@&_!OMdZ&n1uT`Eg+s>p?jrDw0Uy!_6ZfzWaNoMYn4QZ8_{oxNz=jbz zNWAbty@jQ-X(Z#DK=@8Fu?eJiKb`7ggBgye_je+}uNV%+nO)qyxc4E?3AE}tP7ZkF zK{X9-PQwH+yL4~#BR&F-#x|Z;M&1bWJY*Dr5xe-$S#+(im4ZRNk?YX+OB^U7zZ>3B zL1*5Up(%%URp1}F4#D9URLv<@WOc`#%pfQi)GgX1l;)d+`2LDYrQ+l&y}ukd5w3Vd zyxpP$Buoy_zt&uf5qO=i=W|zmZ0*ivK z_AkLZ@qeW65N#~(4#OtDc<&y7hI#mDs1MRSHP^WA=ts3y>uhxbeD*5xLQx^RBog;|2 zN5tWy1Al%g3T+07S%p9U$?i1MS=B7GdSk*K?X;`9Y;b>mLl^%1iCCg{_JPwl{mASA zc-;V9VI=@vUyto)wEyE-k@rPz1XV+{0;L$O(4ElLAZgbIrT}c|C_LTzpQH4_?LU#O z>XW}x9~Rp=l0<&7og?vJ|O>Et$ zV1L0oRasF+)ORLf{xdafzQc}}WbX^!nEEJj1Rs*$s1?W(Aj=XH3vtq`B&iXphS;FRM2@~reJLUy6ymAUgXcG@@ z=6QlSZRkD;X(JCvn6U*3*+w3pgb8>k1W9%y)Y-DcuLgZV6R9$Vr zT;#IY?Lr0STk=*i;BXy@U;xkLd2nxkrzIwH!gTw{@W3OzX->M07-VqUmxxcW;?~EM}{D9{8= zEht*bpdlnpHCTZ$_(<-cOZP*R97-&iZ#+7zlVY>zkNc9D%v~>px$B<~NV`5rhB(+b zD`8dc!R?6O$8MFDn^u&x+tRVkgQB$18H>`=kH*rE&=TI`8jjKe@j-D}auicXL}=-q zc;KSpMUTQJ**7nf6QtK&C-k~k!d&u2>=6CcqpaEek21?6t@Fv-9xMhBkNnf;x-fU) z%!>hph(O>l+CLqP0n|GwtT;S!n&9-q!=Ya2A+e2{LJal84h?c>ij8FN3XNnR#7Oqt z|7~O0!y~#L#*ytA;b>D~F6?vLLzQtN;uOg^&VgLUJ=~)lHni{%R)-cU;DC6HA{yTt zeT|4hwh`O;o+(y%LfTSz`oUtoGNU6i;&b~xERW2(zZMHxs|0d;c=&`(O!z`rI2sy{ zIOdOK6m3n6Y#8SdTL3e=I2_^o^hdy#Zk`PN`K~eT=5gjl9GlMj;~6ak@i7k4W|DLo zFO*|nw+Vz_OTh_$`@=)XftU~b7Zx$-E)U4x@pTvMs(9#&bYef$LtSrKJn#{|cTafu z#bP+te5Gpk{3MJsB4x4rU@U z>|K|yV%OXJ9Ba2nvhzuHjws=gd*wd?{up+iz?yRm$yO5Bp2*%8kr8{cgmdg}$MZ)3 z{{#8IalVV4)B7UGVVQ^=?w{w`^_}dz3x}%HkOwajIUaX%%l%uSUbNv2^qk0t5&a?H zZ^_nHxZMY4ANpYJ3)Ua{JfyWT06y9)H8&R52G`8i7E9stQap+^G+H-9QpFhkX6tE) zfha8ag+jT?0y3qu6p*Q@O*=cuhJb)f@oXYZ0hzM2fRoCw&{+t`q_^x8U=fhX79;oF@#Z0f!cVw0Gm9v$!K8;OlAfHY8V7A`O2`7uzJF+%F(0 z{EEmUY3-MoFGG{Q@3%G=3JL3)Ypg_}u-W>oVMrOzfm@oi5@12B9AWLxd!zIU&xhhiHoeULtlMh2pS9_Q_DhZ>p9$$E z`hJBKhZ`O)<02gM;?_&>vi&qom^oRTdhf-T^qclpze%4JjqEq=CxI4yR^6|38(74=Fg`03gZELSU%8yff zncM8+d2=r{j7xcQ&*&|QA7}WN`WSeZ#b|md(ezS=0qczSh~pW7YjF1dJJ35N=#7d# zIK{n5tyYj5yOzz4jaZLK|kKj$wHCnP(NL8xG6ngs#scPle{Km0*eavy|Qh|~zee);z z&2ZQ&NYTP38};k`m0}o5`4XZQIcFuaj zWEkh0yc=+V^nwgH(o1;jdi!|mB$lYE_e;?_d6+j3?+Z0g%CqKSm>gRAJ!II+Vx7dP z81|C#`O>tsF;tG>)hh=&hL*kn_-)t_bR^ukJuQ>QJ$yVDZVHn?>SQ2}g6|Q(s${$j zJN21 zhM1Y|7^m3&UAWvWD6Or(ar3?K{1A<2p5lU*UBOc=mac3D^BqeCf?p{mTZc z&l|O@sk|d%9Pou^YNZye)Y4rm2vrc!jHDpv-VVY-9})yS1q7Upj9_p5=P+dTg^EYF z=5o3vd3R<5m?v1|Ns_)S+(I&%VljN4i6{*DF--3N)lTLyzl}wRS5XBiUPeY&PG>T1**HAA^eZ6nQjWmwgFC@}#)q>F>k?w_ z719KxOAe%h@*>0FLDo==r`|61***q4U9P#VU189hJrD|u3O;la4@FLuw<6m9_6UT| z$y~@KTnzN=Lug|kQ9)D_r{2~6?rUCsd`p!20X@%CeE`0;DX(j{XA!>#n~;?(!cJp{ zpoaY%vW%SCh&HAu?a6q2W4m>1u{aJ#Z8=&rjCGaT?&0BMOT|ezcuQ}0x4>E9@(Ybz z2^;EP2mfwMI;XZqmM7|F3H$KDPw>q~L_b9>m}VIzX>4$gP1kGfSgdNAi{;XeT74UK zE@JO>G+Hr@g>vaI>3N1}&YBmz!kIx-Xy>D*<7(jg22iriL&l-Cifd4@Q}U$MEp*?pg)W)QV9V2pBIGk8QO##^aN1 zLKb$zBHk7dh7FlOmWsIRcu?>C@GINm-e5&#^>xOkVku`_D4kiKkmWTsZ2K-R7-j|g zR#gSNG`H1jJ191nS&hZowfb}n@kY{!T~Id70qwFhrbI8wq&!(@Ji zCI%)Iz1R2K^Yvx5|E=E+uZ1hN=ad!d{>MN&yf%`GfDvXJ8(}W&k1#ayVCH|k{CbQ$ z2pS|to})tWPxs4DfucJUY2Z08gN8+99$4t>J6zD%yAoD@ORfHE_-h~WrfR(FU4}}1 z_cOVi^jwc*Klgq}-*O-rX54Ro+noV}JNHmDl1OyvPf)ziXNotgPgwC5dr8FJ*?0my zbJ3f4k!b36C5>b!{oUvN=snfljQv>odz@O$xhF31MyrHYC%W zGiU%c=1fyE-f(~@T7gLz&kvyJ5+6065y)BzMgJ5)%{>BL%TXjoK{02GdTKFqNfTji z*w!7$YRIO1UP2zl0TfBEUjap8GPjp-BwbB7>apJ|;3x)#=V@R&N+=wb7D8!&pu)KI=l$Q4res>P#w!hcW-XjNq4zTJ;|cyHwCA|U#nDsc(;0DCa7>|Qi)oXm z#Bq5Y-jgL#Sc)DOb<4xU<$b>{wcDj>ecpzScD=z4z2CxEV$bV0u!Hf5;S#}=hNU;v z9BQ3YJ6Vsb${65diaKiCppPjk-93tMRoEg75b3$}jq1*zx*LMk4F|zk>nX(;YTbNZ zj51sijfY(ApGI|%UHYC0Rqw=5-KDGj+AestJtb5>v?@^d@jz{p*r)U}`J3`jeB{zL zm$R`WiSxLatgiKDFKl9#4E53QwE@?q(0zhXV!ACIqh(xoPL&jXoTGMrgub={^Ei~+ zTj=nKP|-FzV^H(zoagqI zA{J7T^b1K!vdG|-LNuQweq@#AvE|aNO7cmaEtQXLwvH{8XEfC`Rc)qRI(EKzOr?@2 z8kkjYE_Y9@Ru^>5qFuj;!fzqg4-yik4QT-g#X60xYfcV(6Uos!fgcVM>9D8=(JL)P zmn-DARI6L^23O_rcE{651@R?lm_AdAK5M8As>AUxR_InNc{mFiLU_)|$r~4ng4QRdo zp7(g9wRDACi;_8~9N`f+54w(E02)69(;irjzn>T@7R&Lw;$tNo9%}uMwDa*;%ZVPv zkE}a=58df+K>U$3b%PLpQ2u1gArHdmq6d0XWtvzEkzv3W`h2x|YIpD)TOU<;CL`tq zV>@tO==>Ued%b3B(m(T~{1WgGf=C?IY8_Rrt~agX;Q5uC3=K6l z)1lGWl=1ip)5uh6wuA_0bS&??yEKcv$7T7jGCNXLAmrZQcLPs>7Hr?%K79*MG=xcsMaVf_g9P#@4tb=VPDnhxdupw=sOy%c>x;G8sok$I)DF?Nd_IX@ z%s4H>#K!BUX;_$@6HYN#CxOD40l}UMy|;K10-*AUrMpo3ud>>oz!-cLlix$Ff4J8k zY-_GfZD=-z(;wxBgK676 z3-QXbP-wkV7<=&FDc!2o4m18}*f{9=VYQl#6C5mE_M5UolP0`wDL+tLP!+wjJ|vC)zXeLuYHjp&eY}|Cyg_9fRuSwQX1w@3UJ&?JQ-xgydMp13$>^!Ku)(P@Pi^&5na|DEVhHykvo$99bN)DEdRLY1iPiO) z?M8FfnIDZ0FRUL=H@2x+GoD3Wr>wfIkse>aFdQG9cV?T$_8Gk{#i*6dT6W9K(4w<- zt7>)DRCGD6DAi`Oswi<;udL}<>ej8!;?T^NY^_PXLCw}@wV@4oN31n7-RPLwm@_sr zgD=hOG^S@-F}z{JkTzS-s$fke^7Lo~*gKMi8s+`dANHDL0P*qUD^I|Wuk<703Azsd zczEjwfA?k609c>qJWSI_#boBd^T9zaFW9y+-E2%JV!2FINhK`Fa%Rib1;<%mZXRY; zM-$M)o6RX)&&n#U%eFmRsVq1yT{o+vNmY|iBnVYYj8?6~n&tHfPG2q0I(QT^i$*iK zSYo=-oYvIjXw{_auCq|7%-Xh$>#Cf^b?KA}_HveL>4Gk&V=((~X|=Z(iqnqbOsTbv z?t@=-H`dfCfKL|-+uN-zXkRQX>xFc!ME9hi?R$#<+Tv25cI_L#VOumG^ zd!Mp)R4b|_y@DS-0Xdw{YWiY9`ei<+YikSW(4$L}ksn3TL<*;jw~a-1%M0?~@wZ(Z z>cC-@@H@FJ6rB3~IToY({kiJU(3ac>=&&{S!V*QHE=w2jWA9VtxlB4=k}l%M!PkVN z`G?iLwV?-pAoNn{e*V1PE5!5PBi{E4euP-qge8h$`DExuUcmgm(&kSD1QYhT+2_tb z&=7<`o|A}X)My~C5f)i=DoY?LDsnU+v^pXb!BX`$8Z>XNY{uMB(;Y{rFnXISH?vZN z#AJcVhwn`25XCYC6?AnuZB2>`4Lra%x z#EoojYeVf|$87>}Z2_@U=K$IeLKj7m$imDhTZgnxCgUWs^4F18MR6-pWX4DsQY@D% zHTK;$wZ>kf8XcsJFcONf96}xqK|m)cg3*tZE0Js@Pt$R+UdyDOu!OPS!7wj>-ZnA0 zjk1ADCwn=;|7F_*rS6{CcD~5qjjIewvN`Cs<*yR{kq7-M>BHjDqBh%luN5yvSB7>L z`6cr%grER1yOGby>!n{ILsDq}J}I1Bi1Y6mK{oR4TSO5B$pDRgF%GiggP3q^3{58P z;DPCEC+{c=mC{-jft2G}Bs!-|=f#9oiDfjzU1rhi_75cG$}Id`t3G7sYECYLj5x(~ z8d6@8(n>UI7pe~ifM$2Gq_dta>0E_ob8iq@qUlD~qx@Pn>wjV&1!yJO8N$IV=i5F4 zR=_~hYrarpgf1I4*9g=k^V!mnHfiOj6>RlHkT|SLN=7W2p`g-nj+y-K&0g(U=W52Bnc*d7Lj<%Ax!{AteoLwefGwD&ZDbG?wQ zDcX$VOezRj9arPXxEPhJSVD&rMK;Be{%8S7|H>&*L-_1eO2;a+ok|!<#A?KXGSW<> zvuYn8nI-@ynJ~c}3G^X=NQi^p`^baC1Rk^UdqVx=TA#wyKPDq}%+X%XM*4n=dcoIW zQzHlpB6?=L;2bT$ogd4>?o!Wuf*+(;dra25-_t(kN~JWcLDKE~$m*~jb-2*0!@xW- zG@16@35KuD$Li~iE|$jP4KN!v*O>^!=t* zvDl(N`B}6Cgy`eL!-z5NEeQqBFG*&djx$y&jp2ZBMWM6XtF~RGzZ>WveU-i+DZGT& z#u}kD{X@dbbG2DGGilNkKlYxX!4rO#&e`!0QPjIuPbj$&LpqEfjgg#^(0iZdNA&R; zCXR>6=dlrRz!Veq`1nW0*H5GG$I-l;{ygSoE1A;mWVwd;`(orjrMF05z+BXi#!8bD z=`G&uQaXjtGPhxW*A$#4u9NTbM_}v%J1sQquMIhJbh*oi*kjQOtv`gFDW1Ws*uST5 z-wQ&~Q;svI-_H-{k{LUNvpF2JoaZW0_1qZdnQOzP^j$Yb6(wm%mVq=)3DbbH>8R2B z9Y59yqW3~_fdE3MrS;fw$6ah9Le~;%&04POppTOFDa~8+rYT#$=Z8O9vT4p+e=ylW zK30`mhbeO73Q^l_r}w~>wp(c3d=g>skC?=+DW>j_QMM5>4di(={0`a;7*>WCZYB4+0v zu(=yFIR(2(XSU=Glg+kK4|;ZZxwQZIrHl zCkSsFDm*plS!@rWKJEp=ekS*8pd=V zMD%j`m3|#PPp*)^nc#S#CWM8LsJEDTibW$>2B_=D`OH(CiIGGsFGZiNrX6=q`>K|9 zojGlu8qm||+m~U?ZAkZePOzd7h=q z%r)48ZTyxWT(7lE$n{1-{#$typ?gQo->`$RS0_I`{cHT7lbaq+*a4`T0IK#bN0o@K zDH<78D!R;8=q(Tnr#FE{fd|0_`$N^cSmS{y)_CUf2CM`z#eCj+I+e|72&Fymp;dak zF=sn*;}$|#!sva^h&%S2af^{4$3^K_1EE;fn7`!**W(c8>BceTd%rp6C_)_rlpU_y z52lFm3s{i)&&Ybu3*lj@#Ela|h`xoy7|aDz zOAkO??1i2(4$MWCZS)a*)8IjM!weI4V3j{jl}5(7wr#I3?fVNg1mTKRBa_?rbKZ6S zMYyp3nRlJ{vx6ZszsK+8rz~q2A+1SPrZc8pco+8teLtuA2e_Z;`$f-?BOOeC@0Wjv z-8JOF(x+aMl&8k$I*VAkn>8k)`;BUb1><`b5^X;kQJ3O;RsZQ`jR@FPKfYGqR@Rw9G;+ZRn}$J)W;C47ngg!T{+{ zeay&7jlvpiG{IJ#HHF4WBabXI$!r~k{!Jd z3wq6<)xSfl`K07Pd;(UTl7w3>y?XlWc6+;H7mK#Dz1=>0div~6dz<4FkiBJFyL0yR z&`f#0Zs@vEpD)i0)n`jM!@v4`Y4&j*-^w4Zy7?XL_8AkCXAF0CxcLh59PQ`~pD{Uc zM!UTu?^d6z>GgFrq!8R%TRVizf%?$e8uIFHsjaK)+S3DVmLkV5{Veh|v>B@vV&O$h zn7)SBq0f}sd4iYUN#87{!N;RdkCyz2+xg%RZvmrkAn>@uS9Tt3>K5J;v0_Ah&lLK( zO&3i~?k<;VwNiQaK*ZD+Y>$ved^SWfXl_aEQ*yWG@L~=ow7> zQgR-cvDpPG7l~n3hzczo3SOV7PFr?TvrDB~y^)_cJ8lM^!Nr^PY0MIguV&)$Oj<<= zZ428-X#V}ffa_oB2uat~T}@A?)J(pukJ+_K)xBPoRi&%_pER74k+cgr(Xr&vyDpTa zr;q*TMn3WgVIKq_&5y6%(G&)%gFnS_yPZRc2YZObLNxUh+;~dW`j9mO>5$DB*|gn4 z+NfPbmt9C3tfXk4V_MO%uP>8jv3(z#pEKJIB6nnS!$|b)j;~o$r)V70hGvS-#GI>bKoa|CnEbqp7RI)$28*-T4A$htP1C8!G_Ex2Yn2;73qs8J-^dJ`3@*?b4| zN4_AXm`bLxMNl14zzE2#j@-4Wlxu3~nEc4eudsR_Ha&^$yPg&1Q2N>Xi9Gx0OZE~T z?9Gl@*s%U(emF$b_gpWSdA%>kTpc;gT6*uN*ngdF=_?@djSo{7@;V8dF@<%(gAZzZ zNPXpM!u1{W)%&f7@w0i%Vg!Y^CM`seLX4>_LSS~y8T9IQiw7ys7mGzmJR~hl=F(Zc zP&!1)-0Y1W(=>>Dov1Uc$ePwwvKCe{5xo&n>P>5nM)|U^JvrSrP2@z2#S=*dkq^`y zWeXi3-4hX&=-m$w>7xF4BLp6402qy!0su8|wSZu2`DDNi$ix1|6O325l_%hG4~dKu z`59|XA){%T!WwHPpPw<;6v+HgSYyuQu~P*SBF*-!AmBgp#%ot)G}oQT%E@R3TL=u& zvx)i&-M(0?SL^v)^$-c#`)M|94S|WwHEP46RF_smU4zuQ+K`pb?t!@&J4>`oY6G$$5M$H|5qR4yKF+q!4zU=uvJRVGN| zI3&`%i8|L0=xc$;aQapTxj6OoA)@!|-gxgtW_!J^q>?-F?hBIyKC4#7SK=pIy{%LSv*@r zw{@_IFYVyWLJYtbB;p<2gF}r9p~cl&~siL8tuaZFf1HF zOTs9lr4Wp75DBo7$a`sGQ=Xp9HVeh3lFg4=3&nb^mRAm09RA}YBMvFNWnbGTad5RW%$g4`n8ksaFN34#b<_AvqAY@>^(l8s9e3q6M z0wHyUylMsryiW>u*xs*uWyOKso>$TGCg#I!3`?cFSs8n%-YVvc)@!vm*=b%2ubzydWZ(xXOR;$Ghn|MEBF*0u z`QiUK%^`;|6BY8>v*1i~xx88mJlx|Oec;eW|G`8krT@XCK5pxfxa757>W9_(^EYxx zvxFc_mYpw^wPr4dXaYGkkidp*r29C4P>ctIEO`%O8C%hr4MNks2B(b+c9jgR2n(Zu>-f3Yt_^WG5`|) zK<;N$Ge#MXiK$*pWm+avRqHLakt^v)F9j`D*G6)=xK7EJDGzfzVQ3gKr2jp`#M;nM zkRKQ{7Qu&}5%-Xo=IY=up~}Wt`h>+m#l;`>6m??L`Aw=kYG;xO3$D{%mDa>I7 z;|a9DL!vSU5TYQ4`hdC@r1EuinOU~J?SYw&-C=&({o=ttG!oyN-M1n zOR{`OvMt$`C2Y&L0TW{aL=NT(hcSd0_{^Pr378`R5+GlU`3#tt!v=?djRVBtN*uxw zFkl=^Aok9F|5sH#(=%Gh!j?($`?4BMO;=x4uU@@+@6|iTdQ@M3N?1`vz!!BWn=qo0 zgqkqR#cHioHsL)u5Y2#EfM&$PVWj&?AOJOzo`W`oqpM=gA3yM(o%m?G}N7Lf;a=pgW9aJeD;E;q62iWhw5oNamWvFKzHK#z zl|+r-G{f3UiHNc|CqzH@TAxH*Af!eqICR$xuE68eWIjFygZ;$o<7;eNkNqY{!?2$N zZmXfiVojs{_gXfJ{0pJPDq;l9^*cik{KiM-3C{M%*9r!bY=E@{o9XZG)}Pe+(cuz~ zHsTNKEwyC8<2GiLRAg=p9vRq^3*(O$@>kd#Q>z9k5sa!jW^lPXeH}XF~yZ$Tq-7(h9sTV zlft{lUw3*}n%-5Yv)W+Qkt@)Dk#*Xah&iBNU^Br|E*$&6}QxjgAcN*Xq;JGv3%B!Ti3zV2XPqfxFKc{l04 z9)iX*?M77+kJafM*MHIxX+z3XiIf- z%fer4b9Kv5iyuKdPDj_~YPH;1Zms67tL3Q3)#_ArEB$tci={PdO2uL2#}&^zZDjbe znVHLmM^5v+O8@csra5#{W7p{DuEt42CjNp)?RyI*aeHQAf{MR03k7q+uVNo44)gc) z?YBMy*`ZI&9F!Xd4sC~H;^70K5+oKMYzkmz(&up!1w9#4lkwtu(?Ik@aKgzltZR#f zMN_XN5~)-oQPIuC0wO+|X;n>|i2WFgBnor|D?@qR} zeH%{Px1zD@!*|e${rZf4-z^UfeE88bapKiDaj$=(roWo)6lcPralB)czavJTLi^@s z>>2rg{OW`FNAILRJaioI9p&%k*B-_z{D0zF-VSODZ%-KQxd82XE^g&F?8k${^8bDO zq3`;|FWBqFe_ZrxTz+rx@|w-iZ~BiGi>I=k!FvWmO|*Zu(|$y>3HE?`(%f?j|L6Au zJ;7b*$!w=5xGUHf>XUz0Pmg%72GFZr=+!G^uW)m)U(`R*H{L-ucFQgPf4ukAxb@!N zTf2Si>nHUW&+zZ25`Ik>Vu=$m>MQQ1fo9jYUvLZcu&pTnXL*l*o$MicSJS)K@jkUr zR~}m)z=c4K{s$6*+|ypmcJ@4xU)cM^&V{{?3=ta2G2xgSMjP4n=u5DL{3`!>gvb6> zM?UP{;KLYo=3au%5s$k!__*$My$`&PW)+_c5`wiJ2>S4&Ip$wQ@ata1AE!LJ93ki( z`LGU9sCn{fuRii=oy&rc!;F^`7;U3D-v~fXJ`1zIdkw+Ozo!2|V#3P@Q3twE3p}cG z6+NnZRq$aP=X_YKhI5?CNZjQO99-7s%{|I( z0&gV3wgV_8Z<84AH%m0X1AKu(t2fKm_9QT=Ba=c;U~LK>HOW?(@k%27Q$oCA&$N`J)c#`;Vh;0z-}h`&DjYxPiBWPsUY2 zAH0jdi0B!pznEd{8Fm)Ss1k}5vk-$VWR5`Dg z)beJ?<(RK>)Qll{F^C=~&HTBia`H@6_lSGw;W6HPPAEI%{8UK?p>1H97|-emu(BOC1Ztg{3F z*nuSgv(5)L2OUkI9$+7%&2$6(TLspBdjfBgt@hi~)9e5dmUA-z=it-~(rO>lG!=ZX zby1`{orCxIpbp;C0d@QIE{*Hlv?_KV{o(Xrq7@uVR$n{#oaiD9HOZ$H0tt^szq)Pm z?-ADrDDQxnah<1wCG>~aZ`}*<~L)idOp+Y%OG?G?%L!l309jS>2ax4R;Dd#Q!8J_k2!-pR|d>D^=E*97C z$^qnWC9&wahhK4+OO6tPoHLY9l8ju0&nzjEh=oi%vwd+`f9$7tDW2R}Rs-B0e?I$e zyMT9y$wjoD)B6E&Pv=Ek%)^QaS&Jr^yz_@Y6!!*Sr#Q<$6w58UzH>XLcGOP6MYUhR zWs~4-@|N$)!INB)|1LE0#?=}LcQ@!x$e;m0$|jOT_VPELO0Mq_WlnB5R$Iv_e2CjcJ9fBOaaOuN^yC&1XBQKZ@F-oE^2KYT^cG4=p7^+aXn)-f|r7B14c4_{gwYV>=k!w`?92xE*|mAHlMi z2w7VQRS3jF1sIVfz1YVNDtQM4ya`VPUh`gbpw97n`HBFJbKN8#e-#r2hCzt;+t6n> zDKj(5d9!0XM{k)s|GJZBnL4_2to;sl(aG1HKS!EQniwF$xCzagE-U;lgq5A83vR*1 zSSjdEx(838TciqwZoy9S{2ZEWsY;^}c+02h#*5nTkZFSb#x!#|`?v5NcR%Lc9sa&(Js(M2a@Gv98w{r}Z)d`Hhzq2k z7QO?%Y?wvjDK&nfd=`Hoze7B;^I-IGjIT``m+>161zva`d%C0}p?&D~eYdcu(|imu zxLm&Z7J)74s_rM`M)XZsfZ9LYxa zJ*^|HjJ=E9!&?F&{K$t1{`x*reLO_$H2T2724n&NF+c#$S$HKtC;=*_&&qr0%sBw4 za^6F4ezQO1hz(BF{Dz0vSolBwB+@HrSp&g_ zN0CKyCbSURfFNDlC{6b{lCBY99()qNFQdQqHN05CJM?{l-q5Yw!!4v4x(3PR9kfP$b$ewW>f|0!(n|HrYDHmvOf_nO7d;4S{6}(ru z=;`>^ejYED|NKN8{p2G4ciD+7h@b1=+v6kE>0-JMc0fHd_hfz(1volF^`7H%;5d*= zUP3c9JklX*oOFdph;}KNPKPnUz~yB8smGV$u`Z2bV{(lUb5fk>%t@boVU>{dfJi5Z zxgee0RgY#Xr;=Qq1u_XDN_2@opzks~!c)Y8BA!D$6jrvr%ZR#>zJQ2s=V_~5$XhF^ z2t7)^ShQWVRgj>q@}kvS&(C%qxbKax@Nr+;=lfkzR`F8Hllaflh8{4KY<{IS$r^8hxQ91kA9(;GG6&R$U&AFo_QU;M67cCPXw|1N4YfsV}9 zmnLf0RVOE_*VQJJiQ2?Ot-XuBannNRLiRoOAn}#^=Hb$UcxU{U*22fklTI?PG1QsX zKecAECi_UuacXx}w~vo+ucEutp=%XGnL-3;5QxJ_C_+X>CIU%va4*DWw!I;NFsWmS zH)x(W-v0Jj-h0Rz{u+aAaL#JqS1;r51!HKz`p_M0k^RLgEqG;WcsRW!ov7ws>Q)nJ z_WO1wV_#zrmrBDn@9zuQ7nCu6<1EZ3TnBLn;D$%t-B!DkntNw$+XVY8HUApk8#6o8 z;zM;Q`&VTLQUlu@TVQqJxDj#-lJUCig{8dXOqncPt+toVDaXmbZ|ME(Y^#Q3aq0Kl zwVM6@G+du*_s`~eOTNNJ*jH9-NpZw_j-{&j8Y!|jq8q6#Y3fxfQFS@^Kf%7IoJM!T z7mhoGw1(haG(W>$(wb3?ZnKrs0QbB6G3XzFeT3~~8cg;iVK^bU4fhSKKJIzi8xmuP zR-1T(?&a?rwv?%Ix!%5y27ygr5MCpO;86_04|w}~Tk)$L08cGOv(aMq1AzV-e;9cC zU&!tfV{o_yrzilD<7#y1YT49@iS5;u4)8fD^^d^igRqic5NVbPWif_B?i@SRUanMF z*hE^4JVs;ffuZLGAaAw*oR7wX`B}7MedsG}NRB{nJDw(?Un-4QtkQu!VN{9_-7aMQ zIiF7&8L6D&lT&c={rUWd@~7fIFPM`*1=(rw;RWx*2IWd*G~^Th@*(O2=KM795Qv0% zP!GEcLrndYrhUpA9m(IJ>v!ZwM#uK!?<Ull?7e5EL~ryRQC^$?5}i>EBi+*Pd9Q%{E9TN zIYaj>)5AAqf=#Dz#@m@2_PpVo_*PzuxbYjR<=w5;?s9d5Y3BQnUje)Pylsyb3Zu52 zhmC&!@t<`bmK%m`NDOh;hn4#}(JuYKgfa$aZ<4FLfPBQXO#&V=EJ*WSNM` zw|j7Kce%3BL{zW7SSM{9#^OZu{Ny!g@CoR7`{}IR={m8; zZ(<);Ow3s%PT1G6LOs$5wciG{H*B_uzWrE!(W0!FnG9vcv=;M)^*ByZ6zdd@*B278 zxJE}Bg0@l65&8}1amCa#>6XPqHJMf`jR;nK$Ipc0ujv#Dj+vz358dBD{E1KkImvDh z)q%6fd*TwSO8gRvC^#nkYGL^$-U-D5yCH7H_YEY!rv<1$*}T1%lcA+Wfe2?x@hu#qzU+)X!LiGD&YQP^mQ3i$+AQ!iTAQ_UHNopF%qGd zpB;J;ve z_aL0~a3&Z4*`9De@75y}yZQzC01Ev&5zhEKJe;xqBw*0~C`C0M(0)fBQBmBc4XBw> z?H~046%oOoDgZGty=4l}-c%b;7(ng&1Wed0N?5nFuM#ny*(?SBp4FZVkj~I4Lb}do zLMXFx@D;}@+(=mp$(0zgmGDY?XE@7m}HD{q#u^|dH zuKZD|nEDZ8?PWxY*s%8OnVEgl)B9#-&R*MoOq8PTy_r<_X>2chS~!(qpJP8t;U>E0 zWiw|_PoF(AP2baj-|efiX?6h5{nK<7v|~7QFl;J6g3bTaLZQnADiDnzf-%$*kz%5P zB6IQ20l~m01_z3mKeKQlCKUgWP6($tmmfW zHfoQrogTMFHK!cQW@BaNQ4t;fKb%T5n~hc+ZNwg*UOR4&fV|V3({01DOk4NJy~%sF zK!yLv)f*HDA`y!r<~EO`uNUKn5ijcYLVjUge!;#?pviyWcpa*2|GbDJF78CEfkr)t z-8vf2Pr?Byi~Uj(2Tmonv~SS*j{65S$gcANo?iXu8XMiTX>@GU*VAb})EMh@T6xBxe{XYR`wRR*xJN#Y-;dwru}%E$ zb_t{Ydl>bXVAN@fRKscILlRLj?seoxnPamqb7BxedeE}JN9?0O%=VAi1Y_fjZCSi{ z!-h-NufJr&hKm>5U&hhmC5u#d@#1JI#cUuiu4?}sV{b(jPHd#_je+0be%7x1yRu#R z2U1fI_hUju5k`~3P+72As+9VdboyUVd^eR+?$)&SXS6l+rLiUaKyQXtzRey`9>Rn_ zofHd~3yDew1(%EpkW&0ZAwF~nEEXs~PY6HdQivR&t@zLckU}}Z$xUr~?- zHyuMnrF?1m=k;Bf3yu0N)1rXqfCqxYKgJ2*5H`iY75Bn~^+1Tp>53Wb$V>;kzk^YD zZ9#EGI^J&I*=Kwxw3h;1VP6g$EI(kHly6V;Z-^*nyTbd*e=mP9(B5X?_rr?ySu?y< zF+Xcj;N!8Ce+*w4(3EWJu%vR$>dX5f`XRG4NY6d#+!vI-+3S-SA2Zp0uP7HOXuNU@ zeXmcNNNqxAOyo96#>$pmjv<;rE!N5xTCGC9rF_UlSf3$l`9+8@6JKMV;%D|a)f!5~ zvzGF5a}Aa4ck7;~4^XhvH`1N>4@93_`6>Gt@(4jOi(ExOa?0n1wSjaxq{?1kJEIZh z3^wqdbR^pTNo;`sMmS65{)Cch|MfsR(S9+0u~P?9Nl@=GB&YtepHAv>pB~ddx-uM? zT-Mo^OvZ6$GH*xFJVefW3vw}8agDv4Cu7pyYYeASN%Jel2vjO&``?g&08A-^Bta!# zCHCSy&*B&rI_7&WHNEEGndbA&+#rf)<@Z%<$vnHz+gGb4yf2rxYMNEPl^2!v!v*Ar z+MZ|65+&X<5xP)0h@7!JQ~6;rHCJU!-XYiu_C8TA|3a`8?0uqqE?6d{P{1KCk#Io; zi?Cmm5^npI7ecv-RZk`cDJyc_noxwY7No)d@Dk(zu$y0);>;CczcD*{|IO$Aj)^S>zR!VtRs+d&ao2W#hUKFX1 z4KD?jK~EJ7GoxoStz;^#Mi@?~63E({ZQ9OS1wjT8p5DwH`m5jPIkNOu-+JX9BbiE# z7_DuE!nk3Sl1@67M5HW4l3{QkPP>H>Q%xk-m}AAFZYGf;8Rv+SB;r_(^^rnhGauVMG!Dl=Tf9(f=o>E2vm8pQ5bCPF(Z55ap7Wb#vF>pW69J+3gU4rleNt=1_uj9PBRerF=4DjqKL3kNJR`J z`;NuUOr~s_BdlH7lFd4m#F>A1U17UrC5wmu`-X2~m zFS2JtWX@LyqD_A1M4sPSU*vZ()hpx9{KSQ=GiJSJEL_d!hr?0axv{*ce8kR&A?A+l zAH-u@F^IxeGaPm8HA|JP?RP_xwsQj@#&dfH&l`iV9nRZ>TPmB@Sh@C(j&UbD{}^|2 ze#i(9E1&4$hw2M#dWJcT$K{9aB7W!}vDB{@|4-U@`KG1IH*UOqY18E!+jj5Go{6haX=3q6{P`2<4!ZmE*3GoH%1c@(lBS3D#L@{Oy3$Gy_@8|UO z0Vh=|onqgs>-XBHlu9Y*eakb=<_!I3W^U2Y6Ylp-gva~7o6wEL+$Zp^3_Mklj7U&i znMMlRoxp*Ze3xW_ZjCO~>uaKWqw8uYejZ&@uP;RRMtH%B#p*z099w{*Y(J|w9vP?> z{Sxm<;5|@EiT7+3E0ugfSiVk@`vLiA6t#7DAAjvxyoj)A@nF2je*u3nUc^hhXgah% z{5|C?ya>RP*+`}ACs&e~oF05n>uZ!+QMr}Am!EGg<#JK$EpM@+x!jWZNnK}2Kl3wo zb|acLO(&-{h#;RNFYjZ&PR^#Dv3hOyb^p8bmQTv}cHj0u;3c1wF9w^B6E#tyTZB8d$=7E9HI4*D(rcb3gkT1187#;tH0BlN}L948%tS z?;sKso0X?vL@F*`We-q!pPw6(A?V}gdgIXe)MbtO2JqRoVQ#25E}I%Z)TnPZP4|{` zCXG#@l4EXgmu}6y-tmw+4%5BP5ImRP9 z`c{GEzP3eBS~<5&F}Y=OEk#dns#eSCl~8IEg2bUrm#fuH>6LV;R^60(urV{!Xn%&j zm3QSKP0!?)KPpP42t{QgN5{NW3d5!H@Nl_AMkGj=#6E{1IXiR_S|fRW4t-~)j=*dL zWyGp*@u3AkexP|KX%L!cXJ|Gk9j!8C%yM9fi_FRxGWOT;R&#K3BBsV@uZ=~N7=n?2 zxy6c#UvVdzbmMUYDFYg{S_6_IWFi}kRDz}H`zHE&i-*mT!6XIU zPYz;p#4A&68E{8v)d<4mLe>ojCerc?{G7GyOroS3_E2+PG;yHNUY2nlS=MA)0Ilo(;kFES7{9;PijtNZd zIEQ_o-?wT#Fsi(AJu8P#Axz#UNRPClz&vkZ+5^9?Om1y9o5>pflK8PT*&G}UXG-Nn ze6D=K?U!D9`vv8>c%odo?EYsy^L{)sibqD}BYjR$ka9c^v>P*D>pZC0dARZ~fyZ1H zcsw3iVpHsC?6Vy2dl;R=G?cGt&Ca&il)naJhT1ESz~1oBLxZsK4Q%zTvY;Giz?r|! z&l_4XK|33XqGrtJ^ROK8k6}NOk0}0jpArEP(`aK5FvK z#WX6A2@nSyV2b4l3Ks7;wB}Pspkue^=5sskVlFL<%kNn zeZEGUfudbwGom~}AZTBrN063MV_QT?7`$>hyMh(}^D&qek3iTXQ2PIq$rug|Vlr-! zlkurV)T#c-*nhmrjPL#dTV+12d5SY-;>@bWo3xj}HO94No^LyF7fo7d@M zDspi0{|K`uzPbx)UnqYFE^sLv(8xlywCh$p&tj+@_^uo5BG4y4-m&joLk^Ixc+O9R$e2n z?`JrjQ97vWYsQ8_V;ne`11b_V@#TyN7+HJMw76I3Q0{4Bx>5V zg)9ewj!gAQoTIgd>W`jS^><TgBb$yz(ezmRQ=OTmKw}s} zWQVVZ<~TztfXkuY)npLdquAt;i#!3oCD@yuL@aW~-D;m!DXVsAaA@3~b(^~j`N?cX zHxebS{g1iRO2t@?)zo-A1`tF4kkU0n)6eI#@jUug+dm3Ufc}JQc^!ew~m@xCN@9NJTl!jG=4;0sM(*vM@HnOcp`12$;|j)F_*9 z(r$v@>Vs*d!aJT@=K*&I81WR^zX%Q>qo@OBoy-vuB;+l9QW)Nq;t-8O?dS>Q@s_aCJ<9 ztsr!QWI~ZhsE`6RRa--+Uf$T9_a-tK4JnuB3WZZ@l^w;xI@^nuil^u7yz6NO1YJmj z*gaHJ$w)%+@)=Ddx>(4>;!xZoW&NyM-s0tFbloHJ$D*)2%9gA!UWOM!L{6rDPA77P zHcLdbu)(&GlqU<-WYcn&EHmOl(nOr~IH?b;60+9Eqol%0to(xgN^)D^zM|f#qOgfps9`n*@ne<}i(QDkKrY*Q_6xoH`HB? zwXIl6n|*-Ds?%P6XD=YI6+k)OB_N=BKH-1>se+`uA8RTnRlRGf``?(qq zK84hsNYA5C$#f-MpIP8r0B)a5G!NV(uS$^Wg`Kpjf0w=n{Ol=|rrk^@|4O83-{v#D zxvn^5^YrT3_M-Ev_;=o+JF*>kX3*v=lI6PKtZ!R{%${6iDR?&hj z#|MMn7QA2;7|0e3Eb@jNXA2ULA+87r<0lRccK`Q4L)xdfOwPk|IxK+HI1GwCEwJ>& zUrBEn&R=y!EO1d^5d;^?-C@8T1UYx&UJp^ut2=4Vu7oK06((-u60qQU*vKHq&8Tiq zz=;ELdctn%6Lzyvui0SOkz^4;0a6LDM=|2*6-{(_T@1)MJ z__XR`bX!vl70ntoEbgn4LOSiHHfc8+jjEGPB_|xqu^lY))NMF%skWp14hbAYS0<^r zjlP;0B@2NgX&_lZ2I=mREeN@TknSFN?Wx;F8r?>}lPNWuP9kv&bvp}2rz&UMMV;Z6 zR7VcC+`@EW*bD=)?r`_9ec<`%g9}I?IfCiqoOkqPe4;MWcl%jBwR&6OG(=voHx`RK ziuF^y9I|4&!5&PY$)W{c~!^IPpMVw^?Djf5mIqrSPZI-L?mI=Os~uQol5kr zeFyDO&jMAJY#m~uYHQiaTyA5rw8_m)VS5YWn2}QPU_;G<)27_(X|UrCn5k%#rK2hU zV}kLyR1yN<|nx1hzSfYH4e)1aex^r;yz8@SE4W(mOq*}#IdZ9(ko zlijEnn~C@g+s;Q6#O(FMqa zBY*|)aA2t!S^#1x*gF7F_)Dj6Okx*%Jf$SUaRHuqk_c=%!NF51lC%uY%}QsXK}}l%$#C?;Y`$JUIjf{2X&YJw{At*Ur|k^`&ZdRZSuMm|foCTS zls{&u>X_?pDi$}n?wG0?{l_;AM3Y8JQ&lZxV3FxPVoxisPiLHBB&k4u3thaSX%+jC z^4M7Uk=l+zVIJWvAdW+GLa~1-s)4KA1F-H4fdp?oUjJwgDT`*A4_E?KM|bTTiAJM< z^8zy(y9)W~EcGNioiFTa5a6cOtYJXrCcr^k4KzdI9Z1;t$wh8t$i;xf=}cJPRx0cI z_h7Pvg53*E{G{h@E|oXI(?+H7P^WUaP36*N*PF~{EdU7XO$Nar94tFRF)!91o3B3u z>?&c>)BdC=0f|vSV(ux2#8hKfzTiWmkOw6Cj*o;y4`jju1m6Tp!$y2_`@L> zN0hJiJX|vAvgJL>0KUn+Pu zHcHu_Ct}%Rx}jy8>4FwZBw|`2-OOr@bTJ!C92yvi(aus7j+&HZ5eEYU^QnYc%MO{? zc&S0=O$U!sU~`~Xhw~?~m2l5eN#udg4%zfQOLBPsDS*6#gN^`$?I5V{Mm6jj(NRMa zfCTtRN8bUdGiCTJvw=WxYr9}wOPetQd|;q4h2pVHM)?MTF4OQq=YzG8A+R12-~%A> z$5}0abY6hYz^)$v3D!9X)S^U{xOE2xu;MBr-}Qu*}JVnXK}4EuCItS?luob(V#FDXstbCh&$a zn1e#VPasJ+%r5$lug0sUyxf*@WlPSR60fG?N?9J?G!Tob;50QILOs|?%##>?I64XW zD)x;C<-tlkOR^IG1yMecB#LoVl%I4T7v)*eNAeR&J5pRE{U6$)Wlt>aAc5x*cBrd` zz(P!VgpSsM3wu5R0M#D~*h2`L0I@#Bgo%5r6PttNNpoAdsbg+j6V2(aL3&@bjW8YCaaECP@7B_4MqDePLACc%G_>d~A zgG;p7U@t(tin))cgiy7#nInb5E#94t7!s%B!^dBEn3DJJf zucd@Q+-aACRVX3+zH)uuF~G_p)iswRIQfvJF_40W)I~rE(Wi9iS4z-6e?aK~CB#uh zZ^K}r$5TSQ5$`{i5+dAwqx35}sjGwlB<7xSNSt6L#8U!^3^<2F0VTwLOG*SA%%?^h z`ag8~n7Z`L%3H&?hx16Kuru^m5D$*Q&UYwwz@-?GDnLkRp$8dhb$8hoe4^Zcf@l!P zb3bjzogh(oMl?p@O6d}OjzQJB*C-!>5Rqgu0!9KnJVYxPs4+$xf7pG9Mxx<(7>qsyS6HZRYn(JPvbC{o4R-G6 zXzNIE|D_Ynt%>AdbNYGDY;1Y?^z?bfVy#vzo;N-H@-16lHa&d+$6!y!kk`Ie+Gg8> zhSyQkHiG)0T^Km{ zg2p~cyNGYgnMueE3ZorUY!8l|+Bj*@Gz_b?y}4^*Vpnr}%Q6yLGF~p1=He+M)hLzD zotk{!h7He~oI1BuYSfFxvnMB>yS}*Sx={Su@bm%Dgrx=6>NkOu?g^bAdM0q7>(k7K z2?H$FU|K15!~ zuVF)!h6jOF))fn<)n}f$rnSSiJ-C~19~!!9rgmznv;n)fw1Yc1_f0DJp04sz?6%qp zw&$Y}Y%n(qg~di=u~2Bj>Tm!%Dv-w$FCw_Uh^!HZ(kZo)b59v+T{Jm)QETWFH&=mm zVq^KEbje3)|2E|t^wCZLd@A1FwF~L>tLW`uxW{6HP54e4pQD!kL+@9>593t-ZOfnW zZDsfl#F9du=O=gvq7w@P1Kk>8&s=-OU~@BqJ0r~V=H}oPYx|Ggifvcm=8Hf2<@Oz) zVSP1Qp8HtDXzj{|hH4FNEvA>s9-YZ^E`CeE%1l%|-bBlSg#l@$$V6d`V;O z$6a0k5O9J~F5?5RjrK=-9bviyz-f<^G6;#gHs7E%^a1ZEDGdUG2vY&VaeTU4Tbx{V zoNEq}LFl_%XOzl|Iz?yK7t5tHP(ih34py~sY-lFp_>nVHgCo({(%{gUdnY_4@5}VM4R67b(B(&mQiizLs#Z`&FfvgjM?P;N)XJ z>%qx4haNuKYlk{6^ECU-o}-6-FLMr3@kRn8{}p)cY5vRbT4_^@-o{oQQl6ol>i1Tf zf=d2X?pFF?QN$FK`sw$iH&n{`^f%HQ%awfko9RNiyfOXFRK8r!4P>S4{F#t6J9MD zRnyeWWWI1_tA1J`Ka*9>TO#oog79M@L;;ipv5RXkR3F&Q4mQ@Fs!eCdTGgZ z$5quVn8vzN;biQ+7E0?39IEQL>n@eD25ekN;TB7ny4iHyCW=Ii6mmFWP#nbJm7gOP z{|G(22lchdLClwU;UUK^8ELZ2{GwM;zI^zuy>2`9r5(iM_t!Ch3PCe&uep0={? zjA^vcAi9}iJisp_kxe66NE879;H{Tgc~F^Dc99QMcNJc35hm9Ym~Qa+p#hP%Z|PNR z5BB;ed!}u>cHTg;21?G5&Y5}v6^`khocCDHoX&ZhilYZ>wMB#Cy%>wt+QHG{rkuA{ zQS3#_Vz!3$GMUO-Hlmvi+g2VL*?3&DEo;%zN{K`oq476VD`&KZ&Ztn<01tK@C2Zsn zTI}LzvGs`|g~SP91kj?(kKcKb)n zHH>xT@~%OnxeHX;FkBjmc+#kujhvBdnl&RChcXroXW!xtCr8(XqcmQUlt|ASFA-Os z>uoYq8q?E_cAFad-Od+_)6f2vQp3JYU-bX`{tq$N*qxoW9d+>|Lf@T4bky6Hhv=pJ z>nlfl{l9kJN_%n-DyIQ6cZCiTZW7|rp!D$Zv~c?T;ndOfGJQzeyBaB@dFFXLJKIK1?p7mk@X_$<66T6P=zyL*d%8gphZ@uES5x^_YGz>Q+Z(zhrv1&pt24mJ=XPKH zYw(=5|Hl7A3HfLPKc$LhDj>8rfGlh z=jT|2C^5G4hTYuGs<$3tSu>VeDxC})q!@@@400CCrlM?x`rH0`aU*OYvziO;ud3zN zYg#H7iw=abjf~Bjyus1_XUc+dN@v9fLIcFo_q;bqXGCb6Wq7g<>^JF~3I$bXX=8J- zs8XcsY_YIK|4UH>Aklt>lTy`bhg}5s9(C6JCubHrlkSh*87c%_L!ty)?hw1Mm;3C+ z=FYqMdh|US@xXhQ9|-`uv9ioAP=3jytw})7LS@e96zMn7Uv!wSj;*-{F;6kXdP1z* zv_dSKlAE`jNmcWd57Mf>{B0#e@omEjF-`GkESJfywK-+`neyEZ9vwm1dXZQHk_my( zkE=m5zqQcmnxfN;q~TuPo3YEKO)874PN}>^<)%`}QQN;%m&zyuT@T`UF*lt~8M*d4 zQL>eskxEa~F)t;1aY3iieGorZlRJ%MukJMR0V9NOR3@2;N5a62%*r#A7t298kw$qv6y!+{Qr1iZ)r?me zDZ;oDFl6ng11+;j=N%4qx|24aA`dG~K7!jqXY~`ME*~HWir9GLG@OVi$W51WcST~k zao0~qIVt;t>d9VV7LKM^iDwJm$<;rgG5rJG0*5J#2*GDsh)@>K=eJn5qVTp_{bLLj z3lhDo_Yg|XvcMK+Kn~YHJAfU&4iE1xBO+N5 z>Qf*Pl3165HVVYF5cz`DG)|KB43;nYbobJZ~CmH7KeUitwXFG`@1#E5;o6mq5|0_6ExwNfdTl$y3amrLp})KQ=mgn$5tfEbjQm?&X5;0~JRf``mH7Bq`0Hce89 zKkB$qlcW?}4;NYzDPS9llpr^X)ealt# zQW{gXo4(KT1uJ%&zh*sk5BE#iX;r^xb0z0sFXLR?ia=1laip2mIZr|3;kYu+M7xuaSeOa6H0*@ zB+yAtd018Pp77H<%n4Ri84Fv!%N0weR8KSnagpa1dd_JHpus}?ZSiWkvXHnbxxP{^ zrtVBGmQlPRStwW5C+|!Z%jNZ{o8n0DR>hU;$|%^+z42Hq@3p7$<583Yo|}kIdhA}$ zi6a>tFQiO% zqq(Jka{1roV){B!YLpLX&S774c&{JR@p@+`6SP{2mc20? zuOb$VZKm(`ZQXghPupCi5RP|?GBA5POujPWf|Sj=?Tv`xn3>6O3h~DXJw1iFd?{yj z1oJ6kn+Dbn(Ht47UAUAGB@HP0Kxy&8DgFcTQTbxiF+r32M)et1u1`+Z5sHE6TnscU zpVijos4lD`^8*4kP@GJ2G0*sQ`9+hWXJ%qJg{aF^ms_W0fz1i*k-%vx5}s-m3oV2o zh-I`7z$j8{rqlLNp)eFd5OPH1`2ajRjKNe&d+cYeLa_xeCV0F}I3F-oUH(Q-W7#6_K5v?y6nu01~3t1m$45V_I&e;kU%Q z3wwGC4O~xe$=OQuRzSsvUNqhVJuEmr^pw9i&dvfV#|J(@1xaZ`|H_r|9{3K2dQO=& zX}2&eCNGD^*Vz1EYaXh%iCT4n-M(c)go_oL$P}e^V5%QMb^x>Tl^_&naDv1YF#E7I z0lLYxUf7@Go_``2T776Ca1H_F#p+J^S>Yo1c5izw$8vv@+d)P9GhQyY-MbqQ!Xx9N%k0I}NBqaNX6UxiPuNZU*Z#x@4Qu(=t^yCq`Cwl0#7HE8MVlg>$Qy{wezfG65vLOl_$4}l%n`(KDG^4omSgH$ z{aDFgELCIi*^)DcecV*W!rti^0<`6|L1ey-AtEwVxs;>!k^s7DlKS)Vl_ zXhjfZc_5jv*av+?4~JS{oA!cjsv%Akh;3Jyz+pj*xfJ~c6y|NzgU(>6qcpy*&%QgH z_yjoJBN+S6R@awly+novII^wJe~Z?NZ)MaZoN*Q9OWLMV(a_$eZ7vn{><(H@^5v6q zB)uUmV`dzx@zMsW-GDH!aTq0Yt6T(^k@DMb+u&%6NHjrAqB4M-J>e+(ZLz+5o0gYZ z_X;|d<(&V#NBVG3VXhCS;51-d5gG}`xnO4z8<_9%gm(|L;t>#;n6itlld*cS`xB_& z-BUl*xqeSieWFu;Mo;~^PW`@~`d4-8&!PHI6zt2-!UrYiOjL=oJci`nlVq3VZntE0 z<%%r_G2F9$OSN&Y5?LPoZ>XpW8G}7fl$Ni&Xn&YCr~CPP13p84q_&yDGq>-h9SMLU&WGSqR^~&%HROB< z5EGFPO?cJ%-7Hv7LnE%=BkETk21jUxX$VC9K6yRYcZQ#ddRkvF^r1UKC29}pK?C)> zMg7V{sDFKUd*}K+vi?J;|8n@8PW?WrmyFgmd?>eu&Irys8mr@!moXKwh_{CDuhpk( z|E159a%uUvwkrOCBtFY3?esi(0N_4}wEuy$6ysk~IVfNRdqIdQr( zDJb}A$YkZzgAY%ZIdG0j%m-xr12BTgal;B5hMfB|fxTZCDnTl=V6s264cKR~@$AkOR| z;LT3`S)KZ_@*U;WPW@#H!n(^DFv-CtsN8Nz<@kPVn7}XU_w>|Ldqn--p8D?f`@7Uq z`HAv%T%Vv}iT{Ukqw;mUSL`!V`vvtovxizz`$hd(J@s8`xwlhaR-hp7Tz?sR1Mioh z($pUDoc;28zMIGUg}9qQLm#a~J-t`dpC!>s)YE%K{obDXM>_RSll6pd+xYWgE5)Bb zj}mMw>fan#K>JX!SC!wpcnd%t(nUyko6CV%p zoXbLYqyIDwA5{K^_kUCWG_3hbGs*4-xns^hNDgmiI*OSH@v$=l+3B>{K-t%{?32oc zjmVpl&S+FeEEPCKgqJ}PNd=}K*O+}SKgUyexKJ!MVTb5YEgYk;@kU%S;`TX3KKUM0 zM)=a2m4kVZFU7;{U9=;I&TG8>5;nn+t^uHYoG;NjuiqWI$-ka<&2YV_za;c<2T23< z@&8~MWviSVf%?$l&@C(fB$Y@?2Z{QEFiRdwa$JK^tj#1f0(el?7JXbfmr&*V^ws|R z!X`sk^Y<4vBhh#v0HW^h+=tW@Hn!E@7KLaT7Fgm-#R9uqF0cd0pUEQYw$wsA?L{*I!;%+;2x(l`?A z0k_>s&-X)NgHKdpw}dm{fhfg+gbij?x6=R}QIh8?MDYZVaApthK$J(+ zpVd>pr&E6}=P4pYNsz{42am3Mdgwst%8sI{)Aer5gFKza+>b-Uw$70UeuZZcM zIeSfOj+_huzt)e_s{dM+|HRLgU^ZZ1F4W#c=0_N(&l!_ewBIhy9gL}Y_v z!U0XOR|J@f`b+$Jem$Y7sNXN^`GyOB4m3QV=DV4~pCjt&dQrc}uW#Q=8#JBzOZ|G< zxZ$gUxPHH^Cm91961YCkpMNRCYQ=Ho=gOb*Rg>3a)!Yf|SK9PDhLW^*3!|4DTuOt~ zx1sS?S|nb{*NauRHrk)>t`CxZBhFW_U1!MkPHcVdVUM973Z0GWHS)+r$1ZuNV9hjf~)z_DFt-LynJRO^#$2 z(oxP%iu%2Q5s32Vi~9XkFW2#BVfG1ozw7%W;UAy;G=)`c*4GU`QHwu0Q6;@+ZqJna zoVVU013-9o#fQiM@N<>1vC8Md;RNjepqYUM5U;tnywNC*CRAO^q{kd*Q}JG!lJ^Sp zKWH(e`Ct1!!k=sDD?k$Y96Yg>fC*nDhnA2C=A`oJ&}krW{rWS>D)>4vM+ASG#zGMj z8y6iVv`_Q+b|?4;_TnhAx(!ERO{`BNNne3t@L0%N`*`Mo@P3;vmd{y}RMU={h$yct z)*_L~Qf{rTSCfehcm~gM#)`+Z5^U{)m7rx8;O&6GQG7z5j<9b#LRBQL-3ZNTKP%K( z=%nV{>}b76Z{Ec=I(j8>hP1Pcv|4#?SqIzANR$mk&!Iv6S?7y$ieg7``Byd)X*H8l z5rxGokz$|n2jO4+A86_D%FkeVz6*#?+Mm8PTUsGO`3(pIBjtiE^}xvdwss0b1TBB; zC|m1Ww54KE%YGtLOr>W_CURut5!Pp-T0@TTNLF#JxamEpXJEBtAo3BJ6a?_F{VMoN zWTsuFnazyaLR7&*I#pBityUhXt|LfvY&YKI&SEY&KZe`VcBSE}LVi_MBbYT`6tM zL#;1p3n?oEH&#c{}ZjVN|mJ{zam07XJQZ~Nis3F zDQ^dP70k+oN|XIeE=+IW(A*lj=!p?ULY=NssbfGdw}vDt(M5z}?3^BQcXI{0df0;_ zc2s84%WbdROvrvS0w!cd?5ixoCA^L5HZpj@AV)F@35elcGt4ce04g1~1W!YXLExOUVURkcEpGr}m*BKsmfN@CHxko|y<5-pBb^Etd2I;DT_ zS8m7CMlV5lwMjfJCozl|JD5tdqIZw_HQ6P&W~k5Cvbq`{%Nye~nWG85`^5%WRHhP3`_A)C1+H6w=?vYc z9FUrBSX}eL5jq!t5NHWn;Ppc6-Y>;&=p2;qbFNzq=4A>7j}t4Z_a&|&EMHSIq}E>$q#gNd$cJ;ytb%6DC*8u<_^Di~572e&u$kFK!QCh3kdx=D<;OJqLRxQCC7e&?C8aCEA0szRsmAx?V_G z2iPDVCn2rT^`icutQV7!t{3BWKu$(cPuGk3gR(x^-qj<0UDA=VcJ)YEmvCNQK{m>_ zu^%YAz<9k7#87N2^5vzM{&hG?+R?5@*K!?{wCfPzJ`jhr*Sw=+$KbP}q>F(nM%pz8 zOz*hX!nrNIrH(wk@v4>`F|8@50Mq_KFqIi-8L}G+G%Mo{j3A)UBHOqDP0J=D>@un^ zZ@0__0*Ydj5+tmVm{n;UKsg5`@5CC>Cb-Q?;jMCtPPC536-|0(>(z zLbXJ)p%-Tp39ks*B8;>b*q(srf}>UPnN)Ouwln*+qWc+XMG@>7GtC5fBg^97eX{!_ zvvadzR9bRp+z+4Ov;JgvLd#Xx%)}p_IcCC)F+Z#6E)pKi=Dm|D{8-m=IZfxs6u>AM zjgZ+R!iYIK9g7gIIQl6q&f!Qb9gijv2N=#8VdA`KPrz}u6ib^OcND=q*;xqoTG!3_ zoHuV6wIl@vOV$iy-pkFKdL5(qT8gj)GamS7lQxpJ*TJsP0jekh6XVRvi?Blg#zs*P z))N~BFQTRJMeZ!N5@6T^lb)7o&bolRpctgR7LXnTDZa&}YC!=mm6U<&s5nI@ zN=g(RJSwN?TRBDN=fhvc^Tc_+|0T|cevIde^YlJJiT4I6Lg2Z)KJZ*FwR1`>r1mrA z=1pehFChZn0I#sKfE~gZzqPu->+$)80g9M$WToRmRD9B2V(mv0>q_NP@&}@LGEQU5 zU&^_$__(L+^^m=KA_oCD273H{&?gAMN2g9w66QpTFq_1Lj_#DRnbHia)tDjyEc%h; zCWP-!z)~dL)Qx$!xQUX|z*2+^LQ*EsX#ggujTuC4^N(S61gumLIsmq`>~+OrJU(4C zTWYq9Tu(>{3*s^D+9O)FoKD$DvjYd-=MYLh2b4%Fr_vTk8Dg|*Y0B|J`t`ILihwBm zC6Mrjj-}I%Bg7#=ReS9Oq!iYxv_$U%!`jjO@*TQkxt@JExd8jp#1BN#F9#5df24ZR z>KmtUNL@KyxfSEo44ulO2&_V1x>^Vah)1~BF-loQYm2plK3%h6*O{dt6SD6ZV)PcD zIprh^*^5dD47}#tQgJ3r!E&=R#nQQJT4$9?bDCy-09GXkplczukgEA|L7CXe`)WJ#g;@}~q76Tb^6o)jdx2sLaO!4Fr zDbKc{`WQoe0;EbpkO9OKF54_kNU;19EIFiHCvawAn5`kKAZKkKR;~o?&+yrOsGqg% z>NW(x0#ut&9F)Afigqp7d({ia6x?sD?#P4UlOaE4XWCJ{k@|n5W+9{x1e`F%70g%~ z8S=w|pA7k7&)SAH4&6ijzvG~jZuJF*d@&c#)F2WOL=3_o5>Me@yxYe zjyr-^eMj&bcLeux(`JrwM{);#;{~9bbR;*7JSuGVP8-&;i#GX!L;q_6-_96nox#0m z^J#d|YH$>{x?beN+!sxFkxRAN7dfJB{m)RFy>8@St-cYdJRSJ|)@uhxUPlA|I;UdP zZE_^H>qf=7{&}fT|!esckf>8p1q8SPD{EB^4jB4ftFy7HA)GLDMPT>Rh?J ze|XKgpjB{hV%(X$eFZHIOecb#A3_uv(0)Y{F-R3UGg>no+xuj;G~3X-5a$Q}V~HixkLCHY`K2PL3DpTJhg>YKhD z&>(;<=M#^-k*G3^kmp^08wJnpG8;Y*!yd?#Yqc#IC6dVMI@14uJ0!UXl4c^EA|Oys zf(bQaa{0$zD%y}qN3vS&Z|Nk3b>TrZxHp)ZF?5n;)0^wHYC2ZcG;GUHJ8+ytJXzJm zF7pgRwyFa*)kV4G}|IXF^RP*_@dkuAYrLvj*8rtKhVdMG0fwd+cJPg949`!UDm= zD70ATsQo?7K-wYg9#OnnSbN_i3T8w0DI+SFVU9qiLEvw3JYpJ9>C^G=!LWmjIbf3q zRypvSo$1aZ$gj91;sdm1*oY63a|kkAkNsi-!OI-rdxP|6q?^)boIKU$!%=WH5Jd2Wp8+^^ zH|ki8I)H^6=rF7s!x;WVoExLS$pQC48wQ6pg>tlJAoYEML+|*uZU=>IF74xc0}R|i z&;=9K0x#jEX(-bXATgS$%+e{+-7i02awlrI?+Z769zbHX4cwDx2@=72`kncy*<^+! zocY1nZ#^pG)ExkxBL_1#xW))#*JY-9T+tCbCFCgfY632(fuuMnoOm<6^dXdV7vDzmn z9t#}OE0vR7X9P~^3FK=~a$-E1rZ(I9(;Y_hBei!77eG--x3Cj!nADf9j5+%a^mJR#M0lHe5-U6d-u(0_!>d6 zPk|wkE*S?2+PqHiU`nMe7F5Uxc&TdBh2j~5gJ%?xG$?Dx5qrokV*{45D#znGv~czf z2(B4}MLKl{;W!ZzVnDn-Pa3V ze?t?B++CSaW&rI~1idRbHJPRF?atPm7jeEI3hvQ0RyzfHuB?VZMQ}MNf<}kd6jJqa zEL{Pcn~oT2IFm0ove=YPl6Z{xgqgG%n9SE$1BO0leTo;wiB{9PuQfTS=0kYGblak@_8-LON1F1=pQgJNK0&)HS} zDj`Gtw0}RO@L3H2j!Lxftoj$-`GIPG`JSU)1j4=iMOtRJ@WGUc(*)#1CL z0t)TxdE3*>h+{9B=ZhkIzA>p~2lVrd$*eYDgxJde!i_JMHwuiw%*J$&Wz9v~iQq7R(D=BoUsS^X{|q^Qn|wcomAY zQ+QPY!rOfQRRt%FBCI5I#~DjZCJo0POD-m`1*79=%yx`qD7-SIT)=)i{5t*;IGP{p zHEvJqFK`!iJ?_5BFXFnsh$CKnGrP`1prP~OyX|E($a znkX)?uzxgR9kx=L^n`^5q1W&^zwg&?(6ONKU30x7Kh2ngxDG_ncIkLwDQPrBjW}9`bHIdGwd=MQvJ`nY`=vW|PYs~@Y|55iH z@NpH#|8HM^cRHO;N`D zy*^rmV11E5v^qR2zi=eNSq9-F$SQQ~LfZ}+@ZX4qjgw;+*-pgDMIL@tLSd|q5yNMz z-OwB<)V0d|+^U?Cu!Viiyz)>zytf3fU^W9fWK&%Y+gNvpoje?~(7B@)EHJqrSnjHs zM)q@hkwDVE+lM3}-(=&cB^yb=Q8t#g*4MA;HBfWuS|k{)&TWVct4G+#u!FUPV-?}h zE{;G48zXskz$$Xg0tC##ZkK9U;Ybn0Fx%Pc^l`%ZnpTzF% zTU&5EM(7n#0#u1XRp)ON@xc`3JAfEaTN_R*gKcG{v7iyL3yR^`Gq*YrC<4PXUYz> zQw}NR34NqM79`7UMwYMrf}wB%6Vj3lNn*)I5+++MZftEF?IRm+RR$xm!f0L%d~4Vd zjCqr>0(~p@wmO1biIPwerV!eS0CW6EeaOi!hGhk`RxAVto6t1nQSBt|o^xvEh{$Lp zw^Z3$Bd2VovRiG)2-M0M5k+OOM~2ZYDx2#>MZe`laq0yXMSuErov0NmcWXaIhbdFD z^j$yUD}^ukk5*Vy9IJ)r^BS~mCv`x%K|7z@PEM8P8t{xPbP_^Y)M6INQquGD_~sbe zjW=+qE1>E&_aA4&(e1GEieaT;Y;o5$H`hh#bHb(CA`ZmN!}49M;`2}@)xqgAe#8V5Q!J$(J%bIef_D#WvcSngSkuBt_^2LT zT{WDkxmHOCZWW`6+)xSJ{C`l|fL-a*a1c}m%Y0PG42DbVRMt>hR~4>ug8BJD2N$9` zU!gj`<*s_B%IW|eEzr{Nfo#Tsj`T>zluy;Cktzfw0+e8|f;MDT7!H?K<%Syb@)|?A zRXA&^EiP$ftgeIw_|ANQmDDlTSQ4%Y1fUk>l)NwysDW&@le(XBgFXy+8Jp@ExeS%I z_h4AGddo&kBe6e1o9HKC#^J$^9AJz06PzMIp@&|M3k6^J!SLAPlAQ3~GEv{={baz_ z1r{XuQ4P^=!*X-WK)RuSF3Zgwc38Gl#p{c4q%Y5^?>3F3A?myJadmIDRQuhdY`<)Q z>j&UAdlj%vxMc{+S5iC{$Q8*pA@|m7dF%%ucZdpa9l5aS&suDJH+HYc7S(+0PQXZ5 z^}R+eP5SR6xNTF99IiJMMTG!I_u} zh@vMXI47`89r$vjP}3_T;i_OMqE&K94umncB8WL|1z>FsdYF>rz>O_1d(5nqB#@09Ge zLH64gVtw`xkpVd_2b4$kX5bQAPun9TWUa(9gr%)Zgo*ZT7=eVl?H3Hco1krs=G%~o zxopM7LthRYBp#9=29e=xO;z^So>B&R;@W@W$dMEIe{H2qCo1Z|`xvEMM-fYL6Y?O@5xLyBSDPBO-vynr{KpI z{~P%lDM40}Ta%UC3ejwRZIl$$<*9=T<&NuvPJ&Y5g6}gpl zb(Oj0@G}N2akzAhzoP1P2YlXp4c>=;~M4s(eT+k^Nqvo{wdX zgG1nPHx`WSD3hnMavBzNI7?Ts`%nph96fLmx6@IIxZCz=QuKFoRp5nBK69elkuk{T zbEoZgbY#6f0!mmMF3t;I-`U*U$^Y-iowloymc6D&!j@GR$*GyLQ)N?UXA^D%PPR%| z%xmfV&}<^juqE}xmt-k{xn?-6AlBki`#VPJg3pnf;W1KA42pRx7>cLe&)2BryO0($ zsq;@-M{!L}@oxMFRC7T6O8F**;Vczsw)(Lx5{$v8|Bf8j;v(i))jk;PR`FM9qUbr`c59zO^2$VDy#ILNl-pV&lpWw=4cuU)b&0ny@HP? zACz62pHtRJphi!gj8+|~?yal=*( z?jo96w;9Onfs@HDPpT^}sS8Cb>I#CRqp@&6RDc~qjFW5C$A&K#(1r~kw}tvRSxj`V zbnOzT-J{xs6JrGdOAjkyAK7v()Mkhb2hStK`;^&T>0zgB|#mgI6K zTwD?kzy2NlN}QOI)TrZ=_ft&X>={*9sWnMrH9BkVuHxi5w=e>?y4W%sVUKPrF`vzz zP|+z~XIV~ut&K&~-YZ(e%=hD|ZaNDi=*YnnD%#$Tp@A;v+p}h4=6qVg=To4dw7MV& z+xs!W{JP3$&O?JbO$|BW>ikC7-sD#mLph&nnYPIsdOi(;xaH~eRb5GOoq!(z{L#UJ zx{7Fsy_Gec?jDD!1l0S}X>fJ6cRCHKT-G||N107SB6Zl0FqakF*)#}o zn2?-Cg9L&7S(%gRts#5$)U3($?RWI*7ADjGPx^M@?~pxAW)*|HbYvSFW}lMU;>mAe z>GlcS32aly!EE!X2ZD$uP#(BnB*FWGb3Vm6dD$1f1714KNLI6Ct8iDKbwEo}t%hTp9(`WOBYQXJ+t#Su~&d90PjGt4!zYcj}fqLhcp z814uGa$f=dbKm&^Tj(3gq^pq`&Lh)NA{_+s1BOUv?6T>;d0=+#JB+xq85K-LEMRZ&fD(Zy9A@AIcytC2HsK-{;ISuYrrrW%NyF?P z&A4-ro07#NcCCXURjjfy7VWO9+jYe7-D-Khs*2}pcN<;-ciA}O!jC_cMx&!DDn`Yk zh`$6sGQpB)Y}D9PAAF6F(ao{gl5m_DDG)p0BFr`J9~a$%u%9-60+Y3eK`^ zsB~ps6!84OLwpBO8oQG3m0tn@tx6Zhid>csX>Q25ZpOJSf1A85dqjy-B4|YvR$Qex z)PaNa0h8Chys!voL*@?~HovB(tFWk?ou6uxFw4CNEy;n|Jg+am%DsqJ^P;M$vEt#} zo-Y&{UL2cRHSkPE?KK?pcwfB$v~7;EkndIWN&!mjZ-VWm4Wd(KgZ^PBto%4%vpdf?D!^0@<(;-mg`GI}T?LJe> zuny-FS~_}^9htI>NhvQ=qhnjFwP_&+cT&-&MvNRec*Lh;l`4+3HO(z6#R;Cgyio4w z(z3ZtjdRPneK zYAZvz-F2hp*3TFb9$BYO#Bt(r6%{k;>Sk0_j4LQAADlk}5fY>Mh0P@;&4u|FXB1#gX|k|HXx0P z6n*p$fu&Rc+jNkGjdyS=i~p&~t(ax-T{dKPiQhl=zp z!-g{vb{zb%v}{IgthK0UR3y@11?%hUyMhdkfdj#!;@mJ833lmN_wovOG(jxr{4$(k zEH6*i)+Wo#5hk}RU&Mmmp&}Qtpuy2(Ea-fklgDv0iUkcD-u&FpxZY`CbomajJas*%dw!NmW;PU{fTo zqM|GEXnv%ka!P(~xT~r%8a{z1u{;@teu)Sc`cW(w0V0Z76hk4mqxi~_wop!f$t$I8 zIY{m(ZbNB|6%}_NExxHFKPS{y@(Pliwo>#Vh_yB`Wv(sUB7Wai#v~&AR(|34;iSBY zFyqd9kDnjOiwry;F081S7`{j*1MlY{j_bs{kMi>17%?vrM$FMd+!RR$ff={}QNTj2 zQ8pciOAyudvEo*Ql`Q^RCig~h@B|^lrolrZtQVgu&dbSZ#Z8fb&X}9(*?$n^eX?>i zL@L=0Bxs~n7imh7BAU`#%0I3lwbN!h4b~L-NWVyiTw9_DsZ-l`1g6y0*9Xl8?nk0v zbhIj2Bpe{+1cD8PQLl>eps)VK<6Sp-1M3e z&H2sY$Y?9j0MZc9qbhb&Vr2ouV+ok(5R(UHF$3)EiVE9ltITge;Bp*zh0nV&u_)pf zc1B|`d@mVUSve9m{ehg~%Bqqam@RTMI91IV_$$9ti1Q-F(edRV53$j3$6;y#!)ho5 zb+9Wd5mgS>Vz6t1q?yD0DkDHB{B{c5zoP~q5OyiYZWr#`g&df6h$PL3eK%D@A-@r` zOZ>yDL;0zq`*k-4C)L(g2d&!tJVeoHFD{=LEgpjg;p{{lp$97h{3Ko=Hxhv7DV&#t zJEYuDESitwY!msN{2C8uE%I=HhWlbDMSx^CS~Mn-UvCC$YilP4bi)kg#7g0WBZP3R zAhs5qa1=z?73HOl?UwOS2{1mkgd3$uYYZnqBQ-d6%t;Xr1!MCJ4u0U=7MEbOFas2h zjX~s_3K8+AY;2J@jDa)21pzp%DQktN&~ljU!2kwliD9S#>Kx$l>+uC(zk1U*FuCM` z^01i5K8!&OEo1Z&f>J(PS|m%0rg<9Mh3}CF$!KI%^~i8Ae^jJ$$I8;qq8I`|m++g| z-Par^FO(Os3c^~@W={yNaxnjWp`^aPWL)ip{OXoKKI~YmvfMBtHBS~#+!=(;D7R|V zb3#TzX)eh?{B)e~FE# zs)8A(36n_%gY8@-2;{^@S5=K*YM2L;#=0?qGYnSvdv}hiZlnDt76e?9-A7AcS<{3C zfn~qReG3Ay&G4enQXF=WgqzJ>tt`F7b9?~uu{Jvb2AUuFb7X2Ik}q?MtEwi4_s_*D zzAHDAMSdI$BZOoziy(?CJl;Q0>gMDWl-^bX7Foz6XoAN3+er6KF%SgS4ZFymY3&%Bp8{VWm2+`$0ehI z2Z~z}TpB)KIrV{Mjvb7a`3uoO3aqK=d6>Nx$)1PV%}A{=SigVHc|aU7W&OOunG8N- z4yGzeg9pK_A(lnO>XM%&O|3rBbr#N>&GeOtsE{!9q{UM6Z|3}LnqN3%5shvNvl^^1~tFj!DB@Ssc~Dq$U~6^Y@RP%+pyTxZkyN=kSw!XV4T7eJ|-SxG5j2N*y*Fo|; z*Fo++q8!KkN}z&*z)*rESa}8F6qd@E@1=8KP6dVHaA22 z;jAuw>J?+Nj#M_Z9{e7xZ6{9lkLEvn`fI4~&B5LqQB^r&L}k^8IXpR^{{RQWu%^8( zMd@%jWoxu9d#5P7bz7!n>Y-JwGZ432CafTNUj5Sa~XGAo*Zfr7F6T( zZV~*^mxl6MW4?^bat^~@2Pd7U1u;FBOD+7qenK1TV)|5cZ#)uNjdpa1P}IC0zP)V6i{ z_6?Dt$Qt)kx=}kXW7I%Zw^hQHHEw9@jL7zu1iT?e5oA6-fa((8ye@{5@Wr<+!)XZJ z9kJ`fL?eVR-E8uw`HF6zYp1D0N}U7Ang4^Qjz&ov>l#vT@gc(I`r}`O7`w2dD^m^L zRdFGgSuaG$1*pNfTVtUH4-P!Y8+Y#Dsq)pfYr>&4=R{t((Bz9H>1;_fGP{?)Un7mI z-b~GVp;0|~u&Q4;2R(VPs-HdRV)I;#XO7O>MVs@jh;vF|K zmj|@W9T|&tRb0h8=PEdy=I6Sh#D)$VdXn$i6v2kYB1HOh&eSJvSuKTuw-q0b*>chk z_2{@0AEzhtpC97e@u}3P)RkteeI|*u50{h|5AHN90p*%xa}ha(k!{&z$)?z;Wxl$Y z@8Ok{&1q1F1x$DD-wJHCk*$boo^O*}gfo^X&4=HOJUJurupYL!-=>`L1cpxyxiA8puw&P)_F?Q^QD80*IbqY>9%W!sQU2 zGJGs?`4vPgJ-Wb)BrR_xmoh*tNP35A_;gB$F7Sj5dnUNigS!Y=H5KNa$_W9yCYNyM zx>A8#lB}Lp*i~BMz&|n)yD+2eLJ`58+~ALs#{=T>GY;GnR|pR33kwlMzGN)6IN{K5 z;OQbOlGj#rhfJjA0wF38YQw?t0yv7_nQ2^ukq(+omu zrxv@Ti$>*zYKyTS-i%Pcu}OSvOyXK`?hHFOgt%7W>ZXbsr!34ImSOF4RGQomoWr9| zHk7)dq6!0Ef;9N2DyhvMK!7X+o3}-kNN`-__GJN5D^=NRt^yuk;h_?trMy-#5%#i zN<~X|W(Zt~Xz6$^%RmE!3h!x+G||$^E!)@SY zJ_aA;$QpQw&)v>yVLbR*mYX0KYc-+AOe{Pe&{ikK}^pqBH%c{=! zw##UkppaU$TEg3AQRlO@py{R7W@xGLx4KD{o7!DWk#ZJEVdp$CLtiYPP*_k8XU05C za6#dO@_`yz&LeAZ=V;uefT3p)uFS>RfDqI2Lzuz^EwOMco?p<64Jkgba1ax2V+-*Y z(LOZzCJ_n-p9rCi-hnVg4j&0Wh`ij+3DE6B(i0iyNbW^|C{Go0NvM&v*&x<9 z-y-%XMkp1e4@zskw@V*H=U-^qlkqU>3CAs>hr4xWVr!khFbd{$?+XFJvlNBeY7jLH8W+Bs_wE;h30=fH@D=`(F>+IYKS^~9 zX9r8!CW5<}w4V((9cqxI)@_v6TGR4ctLYAfrfYa$@K`9C2vtrf8r@VdEH|gB2;Rv- z>)q%i-i%3b*bbM^LR{0~;2#FgW;DR;p_(`F442jFO5!<1l{!RtA*)qKJ{v+-`z%

}_` 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ℑ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%0A?}{mYXd7O%ll}s|ft}u(tqUNMPjyQo%B* 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 Ur4t&rHyC^0mC + {/* Use the supplied Bloxwap artwork (brand/marks/bloxwap-icon-green.svg); the mark is never redrawn. */} + {/* eslint-disable-next-line @next/next/no-img-element */} + Bloxwap + Agent CLI + , + url: '/', + }, + themeSwitch: { enabled: false }, + githubUrl: repository, + }; +} diff --git a/apps/docs/lib/og-card.tsx b/apps/docs/lib/og-card.tsx new file mode 100644 index 0000000..5befc08 --- /dev/null +++ b/apps/docs/lib/og-card.tsx @@ -0,0 +1,104 @@ +import hig from '@/vendor/hig/manifest.json'; +import { readFile } from 'node:fs/promises'; +import { join } from 'node:path'; +import { ImageResponse } from 'next/og'; +import { socialImageSize } from './social'; + +// Modeled on GitHub's repository cards, in the site's dark theme (the same card as bloxwap/sfx): the Bloxwap black +// canvas, owner/repo title, muted description, the logo tile top right, a stats row, and a color bar along the +// bottom (the Bloxwap brand palette). +const ink = hig.colors.text.srgb; // --foreground +const muted = hig.colors.muted.srgb; // --muted-foreground +const bar: [color: string, share: number][] = [[hig.colors.action.srgb, 62], [hig.colors.info.srgb, 14], ['#b300ff', 10], ['#ff479c', 8], ['#fffb38', 6]]; +const assets = Promise.all([ + readFile(join(process.cwd(), 'fonts/BloxwapSans-Bold.ttf')), + readFile(join(process.cwd(), 'fonts/BloxwapSans-Black.ttf')), + readFile(join(process.cwd(), '../../packages/agent-cli/package.json'), 'utf8'), +]); + +/** Lucide-style 24px stroke icons, inlined so the renderer needs no icon font or component. */ +const icons: Record = { + indicators: ['M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2'], + drawings: [ + 'M13 7 8.7 2.7a2.41 2.41 0 0 0-3.4 0L2.7 5.3a2.41 2.41 0 0 0 0 3.4L7 13', 'm8 6 2-2', 'm18 16 2-2', + 'm17 11 4.3 4.3c.94.94.94 2.46 0 3.4l-2.6 2.6c-.94.94-2.46.94-3.4 0L11 17', + 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z', 'm15 5 4 4', + ], + dependencies: ['M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z', 'm3.3 7 8.7 5 8.7-5', 'M12 22V12'], + version: ['M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z', 'M7.5 7.5h.01'], + docs: ['M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20'], +}; + +function Icon({ name }: { name: string }) { + return + {icons[name].map((d) => )} + ; +} + +function clamp(text: string, max: number): string { + const points = [...text.trim()]; + return points.length > max ? `${points.slice(0, max - 1).join('')}…` : points.join(''); +} + +/** Sentence-cases the route's category label, e.g. `API REFERENCE` → `API reference`. */ +function categoryLabel(category: string): string { + return category.startsWith('API') ? `API${category.slice(3).toLowerCase()}` : category.charAt(0) + category.slice(1).toLowerCase(); +} + +export async function renderSocialCard(options: { + title: string; + description: string; + category: string; + home?: boolean; +}): Promise { + const [bold, black, manifest] = await assets; + const pkg = JSON.parse(manifest) as { version: string; dependencies?: Record }; + const stats: [icon: string, value: string, label: string][] = [ + ['dependencies', String(Object.keys(pkg.dependencies ?? {}).length), 'Dependencies'], + ['version', `v${pkg.version}`, 'Latest'], + ]; + const title = clamp(options.title, 60); + const description = clamp(options.description, 150); + const fontSize = options.home || title.length <= 20 ? 84 : title.length <= 34 ? 72 : 60; + + return new ImageResponse( +

+
+
+
+ {options.home + ? <>bloxwap/agent-cli + : {title}} +
+
{description}
+
+ + + + + + +
+
+ {options.home + ? stats.map(([icon, value, label]) =>
+
{value}
+
{label}
+
) + :
+ bloxwap/agent-cli·{categoryLabel(options.category)} +
} +
+
+ {bar.map(([color, share]) =>
)} +
+
, + { + ...socialImageSize, + fonts: [ + { name: 'Bloxwap Sans', data: bold, weight: 700, style: 'normal' }, + { name: 'Bloxwap Sans', data: black, weight: 900, style: 'normal' }, + ], + }, + ); +} diff --git a/apps/docs/lib/site.ts b/apps/docs/lib/site.ts new file mode 100644 index 0000000..8c60e3b --- /dev/null +++ b/apps/docs/lib/site.ts @@ -0,0 +1,6 @@ +export const basePath = process.env.NEXT_PUBLIC_BASE_PATH ?? '/agent-cli'; +export const siteUrl = process.env.NEXT_PUBLIC_SITE_URL ?? 'https://bloxwap.github.io'; +export const repository = 'https://github.com/bloxwap/agent-cli'; + +/** For fetches and plain asset URLs. Next Link already applies basePath. */ +export function assetUrl(path: string): string { return `${basePath}${path}`; } diff --git a/apps/docs/lib/social.ts b/apps/docs/lib/social.ts new file mode 100644 index 0000000..9431036 --- /dev/null +++ b/apps/docs/lib/social.ts @@ -0,0 +1,38 @@ +import type { Metadata } from 'next'; +import { basePath, siteUrl } from './site'; + +export const socialImageSize = { width: 1200, height: 630 }; +export const homeSocial = { + title: 'Trading tools for your agent.', + description: 'Hyperliquid trading with JSON commands, Privy custody, Relay funding, and a persistent signing runner.', +}; + +/** Explicit PNG paths work on GitHub Pages without a running image service. */ +export function socialImageSegments(slugs?: string[]): string[] { + if (!slugs) return ['home.png']; + return ['docs', ...slugs.slice(0, -1), `${slugs.at(-1) ?? 'index'}.png`]; +} + +export function socialImagePath(slugs?: string[]): string { + return `/og/${socialImageSegments(slugs).join('/')}`; +} + +export function socialMetadata({ title, description, path, imagePath }: { + title: string; + description: string; + path: string; + imagePath: string; +}): Pick { + const absolute = (pathname: string) => new URL(`${basePath}${pathname}`, siteUrl).href; + const image = { url: absolute(imagePath), ...socialImageSize, alt: `@bloxwap/agent-cli — ${title}` }; + const socialTitle = `${title} · @bloxwap/agent-cli`; + return { + alternates: { canonical: absolute(path) }, + openGraph: { + type: 'website', locale: 'en_US', siteName: '@bloxwap/agent-cli', + title: socialTitle, description, url: absolute(path), + images: [{ ...image, type: 'image/png' }], + }, + twitter: { card: 'summary_large_image', title: socialTitle, description, images: [image] }, + }; +} diff --git a/apps/docs/lib/source.ts b/apps/docs/lib/source.ts new file mode 100644 index 0000000..507c17f --- /dev/null +++ b/apps/docs/lib/source.ts @@ -0,0 +1,4 @@ +import { docs } from '../.source/server'; +import { loader } from 'fumadocs-core/source'; + +export const source = loader({ baseUrl: '/docs', source: docs.toFumadocsSource() }); diff --git a/apps/docs/lib/structured-data.ts b/apps/docs/lib/structured-data.ts new file mode 100644 index 0000000..24db37a --- /dev/null +++ b/apps/docs/lib/structured-data.ts @@ -0,0 +1,13 @@ +import { siteUrl } from './site'; + +/** Company facts shared by the docs and the bloxwap.github.io root site. Keep them true. */ +export const organization = { + name: 'Bloxwap, Inc.', + url: 'https://bloxwap.com', + email: 'support@bloxwap.com', + sameAs: ['https://x.com/bloxwap', 'https://github.com/bloxwap', 'https://discord.com/invite/cEfkcg6JHT', 'https://bloxwap.com', 'https://bloxwap.pro'], + about: `${siteUrl}/about/`, + contact: `${siteUrl}/contact/`, + privacy: `${siteUrl}/privacy/`, +}; + diff --git a/apps/docs/mdx-components.tsx b/apps/docs/mdx-components.tsx new file mode 100644 index 0000000..6b57853 --- /dev/null +++ b/apps/docs/mdx-components.tsx @@ -0,0 +1,7 @@ +import defaults from 'fumadocs-ui/mdx'; +import type { MDXComponents } from 'mdx/types'; + +export function getMDXComponents(components?: MDXComponents): MDXComponents { + return { ...defaults, ...components }; +} +export const useMDXComponents = getMDXComponents; diff --git a/apps/docs/next.config.mjs b/apps/docs/next.config.mjs new file mode 100644 index 0000000..b1817e8 --- /dev/null +++ b/apps/docs/next.config.mjs @@ -0,0 +1,14 @@ +import { createMDX } from 'fumadocs-mdx/next'; + +const withMDX = createMDX(); + +/** @type {import('next').NextConfig} */ +export default withMDX({ + output: 'export', + trailingSlash: true, + basePath: process.env.NEXT_PUBLIC_BASE_PATH ?? '/agent-cli', + images: { unoptimized: true }, + reactStrictMode: true, + // Resolve dependencies from the npm workspace root. + turbopack: { root: new URL('../..', import.meta.url).pathname }, +}); diff --git a/apps/docs/package.json b/apps/docs/package.json new file mode 100644 index 0000000..61f4e9e --- /dev/null +++ b/apps/docs/package.json @@ -0,0 +1,38 @@ +{ + "name": "@bloxwap/agent-cli-docs", + "version": "0.1.0", + "private": true, + "type": "module", + "scripts": { + "dev": "next dev --port 3903", + "build": "next build", + "postbuild": "node scripts/check-export.mjs", + "check": "node scripts/check-content.mjs --check && node scripts/hig-tokens.mjs --check && next typegen && tsc --noEmit", + "preview": "node scripts/preview.mjs", + "postinstall": "fumadocs-mdx", + "predev": "npm --workspace @bloxwap/agent-cli run build && node scripts/generate-content.mjs && node scripts/prepare-public.mjs", + "prebuild": "npm --workspace @bloxwap/agent-cli run build && node scripts/generate-content.mjs && node scripts/prepare-public.mjs" + }, + "dependencies": { + "@bloxwap/font": "0.1.2", + "fumadocs-core": "16.15.14", + "fumadocs-mdx": "15.4.5", + "fumadocs-ui": "16.15.14", + "lucide-react": "0.545.0", + "next": "16.3.6", + "react": "^19.2.0", + "react-dom": "^19.2.0" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4.2.0", + "@types/mdx": "^2.0.13", + "@types/node": "^24.13.6", + "@types/react": "^19.2.0", + "@types/react-dom": "^19.2.0", + "tailwindcss": "^4.2.0", + "typescript": "^6.0.3" + }, + "engines": { + "node": ">=24" + } +} diff --git a/apps/docs/postcss.config.mjs b/apps/docs/postcss.config.mjs new file mode 100644 index 0000000..d1840a7 --- /dev/null +++ b/apps/docs/postcss.config.mjs @@ -0,0 +1 @@ +export default { plugins: { '@tailwindcss/postcss': {} } }; diff --git a/apps/docs/public/.nojekyll b/apps/docs/public/.nojekyll new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/apps/docs/public/.nojekyll @@ -0,0 +1 @@ + diff --git a/apps/docs/public/404.md b/apps/docs/public/404.md new file mode 100644 index 0000000..d0ab2df --- /dev/null +++ b/apps/docs/public/404.md @@ -0,0 +1,3 @@ +# Page not found + +This page does not exist. Start at [Documentation](./docs/), [llms.txt](./llms.txt), or the [sitemap](./sitemap.xml). diff --git a/apps/docs/public/icon.svg b/apps/docs/public/icon.svg new file mode 100644 index 0000000..8813b27 --- /dev/null +++ b/apps/docs/public/icon.svg @@ -0,0 +1 @@ +AAAWgmp1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAABZcanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46YzJwYTpjNzY4OTY2Ni00MmE1LTQxMGItYmUzNi1mZDcwZjAyY2NkMzAAAAADl2p1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAALxqdW1iAAAARGp1bWRjYm9yABEAEIAAAKoAOJtxE2MycGEuaW5ncmVkaWVudC52MwAAAAAYYzJzaPhTDV/lf8tO5eLR0syycHkAAABwY2JvcqNpZGM6Zm9ybWF0bWltYWdlL3N2Zyt4bWxqaW5zdGFuY2VJRHgseG1wOmlpZDphOWI5MDUwYS0wZDZjLTRjNWMtOTc0Yi00OGFjZDU2ZTM4ZmRscmVsYXRpb25zaGlwaHBhcmVudE9mAAAB4mp1bWIAAABBanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5hY3Rpb25zLnYyAAAAABhjMnNotTlKzIhLdFXskljkWHiXjAAAAZljYm9yomdhY3Rpb25zgqJmYWN0aW9ua2MycGEub3BlbmVkanBhcmFtZXRlcnOha2luZ3JlZGllbnRzgaJjdXJseC1zZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmluZ3JlZGllbnQudjNkaGFzaFggnrlpL8QpGgqRHaqJvz1W5dTeaGTl57SCi3+Uqau6liakZmFjdGlvbngdY29tLmFudGhyb3BpYy5jbGF1ZGUucHJvdmlkZWRqcGFyYW1ldGVyc6F4H2NvbS5hbnRocm9waWMub3JpZ2luLWNvbmZpZGVuY2VndW5rbm93bmtkZXNjcmlwdGlvbnhmQ2xhdWRlIHByb3ZpZGVkIHRoaXMgZmlsZSBhdCB0aGUgcmVxdWVzdCBvZiBhIHVzZXIgYW5kIG1heSBoYXZlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgdGhlIGZpbGUgY29udGVudHMubXNvZnR3YXJlQWdlbnShZG5hbWVmQ2xhdWRlcmFsbEFjdGlvbnNJbmNsdWRlZPUAAADIanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaKQaRd0e/lhHYNKx6GqcujIAAACAY2JvcqVjYWxnZnNoYTI1NmNwYWRNAAAAAAAAAAAAAAAAAGRoYXNoWCASJqU9it1zv9NY0ScCZS+kr2g8Cfr+8AJJM4DUQ7oi+2RuYW1lbmp1bWJmIG1hbmlmZXN0amV4Y2x1c2lvbnOBomVzdGFydBiWZmxlbmd0aBkeBAAAAj5qdW1iAAAAJ2p1bWRjMmNsABEAEIAAAKoAOJtxA2MycGEuY2xhaW0udjIAAAACD2Nib3KlY2FsZ2ZzaGEyNTZpc2lnbmF0dXJleE1zZWxmI2p1bWJmPS9jMnBhL3VybjpjMnBhOmM3Njg5NjY2LTQyYTUtNDEwYi1iZTM2LWZkNzBmMDJjY2QzMC9jMnBhLnNpZ25hdHVyZWppbnN0YW5jZUlEeCx4bXA6aWlkOmM2YThlNzMzLTQxYjAtNDA3OS04MzE2LTRhZGNjNTNiYjIzM3JjcmVhdGVkX2Fzc2VydGlvbnODomN1cmx4LXNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuaW5ncmVkaWVudC52M2RoYXNoWCCeuWkvxCkaCpEdqom/PVbl1N5oZOXntIKLf5Spq7qWJqJjdXJseCpzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmFjdGlvbnMudjJkaGFzaFgg1fL1E58gImGOF6msPeJ5kRfmu++VPJsjmfYQS596FY6iY3VybHgpc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5oYXNoLmRhdGFkaGFzaFgg6ii7hC96rhDJ8AeOnKwGeyOuuWDdQqci/e53lHGEDyd0Y2xhaW1fZ2VuZXJhdG9yX2luZm+jZG5hbWVvQW50aHJvcGljIEZpbGVzZ3ZlcnNpb25lMS4wLjBrc3BlY1ZlcnNpb25lMi40LjAAABA4anVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAABAIY2JvctKEWQISogEmGCFZAgowggIGMIIBjaADAgECAhRA5aAK7sI50L64g/oGQgU9Z1UTADAKBggqhkjOPQQDAzBJMRcwFQYDVQQKEw5BbnRocm9waWMsIFBCQzEuMCwGA1UEAxMlQW50aHJvcGljIENvbnRlbnQgQ3JlZGVudGlhbHMgUm9vdCBDQTAeFw0yNjA4MDcxODQzNTZaFw0yODA4MDYxOTQzNTZaMEQxFzAVBgNVBAoTDkFudGhyb3BpYywgUEJDMSkwJwYDVQQDEyBBbnRocm9waWMgQ2xhdWRlIENvbnRlbnQgU2lnbmluZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJh6CmvLUBgFFNU0vUKlOVtE6djd17L5SuwX0LemFisBM3dkd/3cyjxFA3Qo5S46fX0/ihY0VZ7mfb9KF703t5OjWDBWMA4GA1UdDwEB/wQEAwIHgDAVBgNVHSUEDjAMBgorBgEEAYPoXgIBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUzlHiBIFOZFsj+OPEz5o+nMHXXMIwCgYIKoZIzj0EAwMDZwAwZAIwMXMdFJ4BetLLVY7ORuE9noqbbAZOZn/aArXyTwFAZfKrPzxF2vPoJNf1+UCdg1XGAjBwX1zd9WGqYkqmL5SFqw1QySjr1zJfpJM9+1rdDwSPLMOPOjKuiXjoU/pUUeG9RwmhY3BhZFkNngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPZYQBgmO5OLKch7Rqn7wjXNWcTbbUSs3QcFefL7JfApIprn3dAIpN0RbHrs9acqaPinMigdUSQ7EaAuW9BhoDJo6/s= \ No newline at end of file diff --git a/apps/docs/public/llms.txt b/apps/docs/public/llms.txt new file mode 100644 index 0000000..d4eedb7 --- /dev/null +++ b/apps/docs/public/llms.txt @@ -0,0 +1,20 @@ +# Bloxwap Agent CLI + +Hyperliquid trading with Privy custody and Relay funding. Master keys stay external. + +- [Overview and installation](https://bloxwap.github.io/agent-cli/docs/) +- [quickstart](https://bloxwap.github.io/agent-cli/docs/quickstart/) +- [commands](https://bloxwap.github.io/agent-cli/docs/commands/) +- [config](https://bloxwap.github.io/agent-cli/docs/config/) +- [errors](https://bloxwap.github.io/agent-cli/docs/errors/) +- [runner](https://bloxwap.github.io/agent-cli/docs/runner/) +- [events](https://bloxwap.github.io/agent-cli/docs/events/) +- [funding](https://bloxwap.github.io/agent-cli/docs/funding/) +- [custody](https://bloxwap.github.io/agent-cli/docs/custody/) +- [security](https://bloxwap.github.io/agent-cli/docs/security/) +- [skill](https://bloxwap.github.io/agent-cli/docs/skill/) +- [audit](https://bloxwap.github.io/agent-cli/docs/audit/) + +- [Sitemap](https://bloxwap.github.io/agent-cli/sitemap.xml) +- [Static search index](https://bloxwap.github.io/agent-cli/search.json) +- [Source and packaged SKILL.md](https://github.com/bloxwap/agent-cli/tree/main/packages/agent-cli) diff --git a/apps/docs/public/logos/bloxwap-icon-green.svg b/apps/docs/public/logos/bloxwap-icon-green.svg new file mode 100644 index 0000000..ba68742 --- /dev/null +++ b/apps/docs/public/logos/bloxwap-icon-green.svg @@ -0,0 +1 @@ +AAAWgmp1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAABZcanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46YzJwYTo5NDNlYTI5ZC1iYmMwLTQyYmEtOTFjMC1jYTNkY2ZlZjgwMGQAAAADl2p1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAALxqdW1iAAAARGp1bWRjYm9yABEAEIAAAKoAOJtxE2MycGEuaW5ncmVkaWVudC52MwAAAAAYYzJzaBOFZoiiWUIkgKmWndJT9dgAAABwY2JvcqNpZGM6Zm9ybWF0bWltYWdlL3N2Zyt4bWxqaW5zdGFuY2VJRHgseG1wOmlpZDphYzUxMGY3Yi05YTc4LTQ5YTgtOGRiNi0xNDg0YjY0NGUzNmZscmVsYXRpb25zaGlwaHBhcmVudE9mAAAB4mp1bWIAAABBanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5hY3Rpb25zLnYyAAAAABhjMnNoP9ojDlInoQZOOGq7+FBxoAAAAZljYm9yomdhY3Rpb25zgqJmYWN0aW9ua2MycGEub3BlbmVkanBhcmFtZXRlcnOha2luZ3JlZGllbnRzgaJjdXJseC1zZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmluZ3JlZGllbnQudjNkaGFzaFggIEm3eE8tjKCw6V8EeCsWYyZY44AQW53VczcJZPlY0CukZmFjdGlvbngdY29tLmFudGhyb3BpYy5jbGF1ZGUucHJvdmlkZWRqcGFyYW1ldGVyc6F4H2NvbS5hbnRocm9waWMub3JpZ2luLWNvbmZpZGVuY2VndW5rbm93bmtkZXNjcmlwdGlvbnhmQ2xhdWRlIHByb3ZpZGVkIHRoaXMgZmlsZSBhdCB0aGUgcmVxdWVzdCBvZiBhIHVzZXIgYW5kIG1heSBoYXZlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgdGhlIGZpbGUgY29udGVudHMubXNvZnR3YXJlQWdlbnShZG5hbWVmQ2xhdWRlcmFsbEFjdGlvbnNJbmNsdWRlZPUAAADIanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaNfmUhSIXDMmEtqRtW1CvBkAAACAY2JvcqVjYWxnZnNoYTI1NmNwYWRNAAAAAAAAAAAAAAAAAGRoYXNoWCAMiXxILyjDUOUlAvmX0yN+Nc8fD+IW0EVgnOWKOe2ReWRuYW1lbmp1bWJmIG1hbmlmZXN0amV4Y2x1c2lvbnOBomVzdGFydBiYZmxlbmd0aBkeBAAAAj5qdW1iAAAAJ2p1bWRjMmNsABEAEIAAAKoAOJtxA2MycGEuY2xhaW0udjIAAAACD2Nib3KlY2FsZ2ZzaGEyNTZpc2lnbmF0dXJleE1zZWxmI2p1bWJmPS9jMnBhL3VybjpjMnBhOjk0M2VhMjlkLWJiYzAtNDJiYS05MWMwLWNhM2RjZmVmODAwZC9jMnBhLnNpZ25hdHVyZWppbnN0YW5jZUlEeCx4bXA6aWlkOjJlODdmMzEwLWFhOTMtNDI3OC1hZGRkLTUyODA5ZTdlZTVhZHJjcmVhdGVkX2Fzc2VydGlvbnODomN1cmx4LXNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuaW5ncmVkaWVudC52M2RoYXNoWCAgSbd4Ty2MoLDpXwR4KxZjJljjgBBbndVzNwlk+VjQK6JjdXJseCpzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmFjdGlvbnMudjJkaGFzaFggFbLtTjhdzvay8F/0bsxn9KeBBr/dcYzUmEbU5zT5OaOiY3VybHgpc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5oYXNoLmRhdGFkaGFzaFggbyV1Nov5be0xfZul5bY+CjdswDOqvmQ9orsnPRENc8Z0Y2xhaW1fZ2VuZXJhdG9yX2luZm+jZG5hbWVvQW50aHJvcGljIEZpbGVzZ3ZlcnNpb25lMS4wLjBrc3BlY1ZlcnNpb25lMi40LjAAABA4anVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAABAIY2JvctKEWQISogEmGCFZAgowggIGMIIBjaADAgECAhRA5aAK7sI50L64g/oGQgU9Z1UTADAKBggqhkjOPQQDAzBJMRcwFQYDVQQKEw5BbnRocm9waWMsIFBCQzEuMCwGA1UEAxMlQW50aHJvcGljIENvbnRlbnQgQ3JlZGVudGlhbHMgUm9vdCBDQTAeFw0yNjA4MDcxODQzNTZaFw0yODA4MDYxOTQzNTZaMEQxFzAVBgNVBAoTDkFudGhyb3BpYywgUEJDMSkwJwYDVQQDEyBBbnRocm9waWMgQ2xhdWRlIENvbnRlbnQgU2lnbmluZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJh6CmvLUBgFFNU0vUKlOVtE6djd17L5SuwX0LemFisBM3dkd/3cyjxFA3Qo5S46fX0/ihY0VZ7mfb9KF703t5OjWDBWMA4GA1UdDwEB/wQEAwIHgDAVBgNVHSUEDjAMBgorBgEEAYPoXgIBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUzlHiBIFOZFsj+OPEz5o+nMHXXMIwCgYIKoZIzj0EAwMDZwAwZAIwMXMdFJ4BetLLVY7ORuE9noqbbAZOZn/aArXyTwFAZfKrPzxF2vPoJNf1+UCdg1XGAjBwX1zd9WGqYkqmL5SFqw1QySjr1zJfpJM9+1rdDwSPLMOPOjKuiXjoU/pUUeG9RwmhY3BhZFkNngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPZYQF9Z2SesjZzBe5J+fnM/W115XR/UYdrZYyMU2yruxkcxZyNMoVZqgPpF2YgGxPsb/tpueot0rqw/SWHl/56Bd/U= \ No newline at end of file diff --git a/apps/docs/public/logos/bloxwap-wordmark-white-greenx.svg b/apps/docs/public/logos/bloxwap-wordmark-white-greenx.svg new file mode 100644 index 0000000..2e0efba --- /dev/null +++ b/apps/docs/public/logos/bloxwap-wordmark-white-greenx.svg @@ -0,0 +1 @@ +AAAWgmp1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAABZcanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46YzJwYToxZTAyNzA1My1iZDA1LTQyNWMtODViNi00MWU1ODI0YTk4ZDcAAAADl2p1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAALxqdW1iAAAARGp1bWRjYm9yABEAEIAAAKoAOJtxE2MycGEuaW5ncmVkaWVudC52MwAAAAAYYzJzaJRUm4Xh5hajxqwFdyRgTEwAAABwY2JvcqNpZGM6Zm9ybWF0bWltYWdlL3N2Zyt4bWxqaW5zdGFuY2VJRHgseG1wOmlpZDpjNTdmMTQ5Ny02ZGFiLTRiY2ItYTgyNi1lNDJiYzQzMWQyMmFscmVsYXRpb25zaGlwaHBhcmVudE9mAAAB4mp1bWIAAABBanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5hY3Rpb25zLnYyAAAAABhjMnNo6N9Vn/YN+2w7jvkQVe6nJgAAAZljYm9yomdhY3Rpb25zgqJmYWN0aW9ua2MycGEub3BlbmVkanBhcmFtZXRlcnOha2luZ3JlZGllbnRzgaJjdXJseC1zZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmluZ3JlZGllbnQudjNkaGFzaFggkvXfOYGkmo2Kn4AQLbXnnr3pUt9Kd49CfViXl7s4/OWkZmFjdGlvbngdY29tLmFudGhyb3BpYy5jbGF1ZGUucHJvdmlkZWRqcGFyYW1ldGVyc6F4H2NvbS5hbnRocm9waWMub3JpZ2luLWNvbmZpZGVuY2VndW5rbm93bmtkZXNjcmlwdGlvbnhmQ2xhdWRlIHByb3ZpZGVkIHRoaXMgZmlsZSBhdCB0aGUgcmVxdWVzdCBvZiBhIHVzZXIgYW5kIG1heSBoYXZlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgdGhlIGZpbGUgY29udGVudHMubXNvZnR3YXJlQWdlbnShZG5hbWVmQ2xhdWRlcmFsbEFjdGlvbnNJbmNsdWRlZPUAAADIanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaFVMucSFyF6tqijK7vBsPvMAAACAY2JvcqVjYWxnZnNoYTI1NmNwYWRNAAAAAAAAAAAAAAAAAGRoYXNoWCCi/1wuN09kSbAG/pzO+y9xUauT5TYBSWBfYtoaudFkS2RuYW1lbmp1bWJmIG1hbmlmZXN0amV4Y2x1c2lvbnOBomVzdGFydBidZmxlbmd0aBkeBAAAAj5qdW1iAAAAJ2p1bWRjMmNsABEAEIAAAKoAOJtxA2MycGEuY2xhaW0udjIAAAACD2Nib3KlY2FsZ2ZzaGEyNTZpc2lnbmF0dXJleE1zZWxmI2p1bWJmPS9jMnBhL3VybjpjMnBhOjFlMDI3MDUzLWJkMDUtNDI1Yy04NWI2LTQxZTU4MjRhOThkNy9jMnBhLnNpZ25hdHVyZWppbnN0YW5jZUlEeCx4bXA6aWlkOjJjZjZiY2NkLTNmMWMtNGMxZC04NWYwLThkNGFmMmM0OWZmM3JjcmVhdGVkX2Fzc2VydGlvbnODomN1cmx4LXNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuaW5ncmVkaWVudC52M2RoYXNoWCCS9d85gaSajYqfgBAtteeevelS30p3j0J9WJeXuzj85aJjdXJseCpzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmFjdGlvbnMudjJkaGFzaFggkmwr1Jo6Vx+XIcIgFjzS6L2YbeMzYAE8tYbbJYYvuf2iY3VybHgpc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5oYXNoLmRhdGFkaGFzaFgg9779cSuwPIFGuvHVpuwsGeLBC05eMOetnfBLqtrWd2t0Y2xhaW1fZ2VuZXJhdG9yX2luZm+jZG5hbWVvQW50aHJvcGljIEZpbGVzZ3ZlcnNpb25lMS4wLjBrc3BlY1ZlcnNpb25lMi40LjAAABA4anVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAABAIY2JvctKEWQISogEmGCFZAgowggIGMIIBjaADAgECAhRA5aAK7sI50L64g/oGQgU9Z1UTADAKBggqhkjOPQQDAzBJMRcwFQYDVQQKEw5BbnRocm9waWMsIFBCQzEuMCwGA1UEAxMlQW50aHJvcGljIENvbnRlbnQgQ3JlZGVudGlhbHMgUm9vdCBDQTAeFw0yNjA4MDcxODQzNTZaFw0yODA4MDYxOTQzNTZaMEQxFzAVBgNVBAoTDkFudGhyb3BpYywgUEJDMSkwJwYDVQQDEyBBbnRocm9waWMgQ2xhdWRlIENvbnRlbnQgU2lnbmluZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJh6CmvLUBgFFNU0vUKlOVtE6djd17L5SuwX0LemFisBM3dkd/3cyjxFA3Qo5S46fX0/ihY0VZ7mfb9KF703t5OjWDBWMA4GA1UdDwEB/wQEAwIHgDAVBgNVHSUEDjAMBgorBgEEAYPoXgIBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUzlHiBIFOZFsj+OPEz5o+nMHXXMIwCgYIKoZIzj0EAwMDZwAwZAIwMXMdFJ4BetLLVY7ORuE9noqbbAZOZn/aArXyTwFAZfKrPzxF2vPoJNf1+UCdg1XGAjBwX1zd9WGqYkqmL5SFqw1QySjr1zJfpJM9+1rdDwSPLMOPOjKuiXjoU/pUUeG9RwmhY3BhZFkNngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPZYQO21JYRqbYsTRCzy4iTtkZnxSQeDSV86N2pd4FV6ecvdq7zDLfcJWlVZ3T9+jl01DMn7yA3oSjkreSmWPCHLsMA= \ No newline at end of file diff --git a/apps/docs/public/logos/bloxwap-wordmark-white.svg b/apps/docs/public/logos/bloxwap-wordmark-white.svg new file mode 100644 index 0000000..1479a40 --- /dev/null +++ b/apps/docs/public/logos/bloxwap-wordmark-white.svg @@ -0,0 +1 @@ +AAAWgmp1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAABZcanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46YzJwYToxZTAyNzA1My1iZDA1LTQyNWMtODViNi00MWU1ODI0YTk4ZDcAAAADl2p1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAALxqdW1iAAAARGp1bWRjYm9yABEAEIAAAKoAOJtxE2MycGEuaW5ncmVkaWVudC52MwAAAAAYYzJzaJRUm4Xh5hajxqwFdyRgTEwAAABwY2JvcqNpZGM6Zm9ybWF0bWltYWdlL3N2Zyt4bWxqaW5zdGFuY2VJRHgseG1wOmlpZDpjNTdmMTQ5Ny02ZGFiLTRiY2ItYTgyNi1lNDJiYzQzMWQyMmFscmVsYXRpb25zaGlwaHBhcmVudE9mAAAB4mp1bWIAAABBanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5hY3Rpb25zLnYyAAAAABhjMnNo6N9Vn/YN+2w7jvkQVe6nJgAAAZljYm9yomdhY3Rpb25zgqJmYWN0aW9ua2MycGEub3BlbmVkanBhcmFtZXRlcnOha2luZ3JlZGllbnRzgaJjdXJseC1zZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmluZ3JlZGllbnQudjNkaGFzaFggkvXfOYGkmo2Kn4AQLbXnnr3pUt9Kd49CfViXl7s4/OWkZmFjdGlvbngdY29tLmFudGhyb3BpYy5jbGF1ZGUucHJvdmlkZWRqcGFyYW1ldGVyc6F4H2NvbS5hbnRocm9waWMub3JpZ2luLWNvbmZpZGVuY2VndW5rbm93bmtkZXNjcmlwdGlvbnhmQ2xhdWRlIHByb3ZpZGVkIHRoaXMgZmlsZSBhdCB0aGUgcmVxdWVzdCBvZiBhIHVzZXIgYW5kIG1heSBoYXZlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgdGhlIGZpbGUgY29udGVudHMubXNvZnR3YXJlQWdlbnShZG5hbWVmQ2xhdWRlcmFsbEFjdGlvbnNJbmNsdWRlZPUAAADIanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaFVMucSFyF6tqijK7vBsPvMAAACAY2JvcqVjYWxnZnNoYTI1NmNwYWRNAAAAAAAAAAAAAAAAAGRoYXNoWCCi/1wuN09kSbAG/pzO+y9xUauT5TYBSWBfYtoaudFkS2RuYW1lbmp1bWJmIG1hbmlmZXN0amV4Y2x1c2lvbnOBomVzdGFydBidZmxlbmd0aBkeBAAAAj5qdW1iAAAAJ2p1bWRjMmNsABEAEIAAAKoAOJtxA2MycGEuY2xhaW0udjIAAAACD2Nib3KlY2FsZ2ZzaGEyNTZpc2lnbmF0dXJleE1zZWxmI2p1bWJmPS9jMnBhL3VybjpjMnBhOjFlMDI3MDUzLWJkMDUtNDI1Yy04NWI2LTQxZTU4MjRhOThkNy9jMnBhLnNpZ25hdHVyZWppbnN0YW5jZUlEeCx4bXA6aWlkOjJjZjZiY2NkLTNmMWMtNGMxZC04NWYwLThkNGFmMmM0OWZmM3JjcmVhdGVkX2Fzc2VydGlvbnODomN1cmx4LXNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuaW5ncmVkaWVudC52M2RoYXNoWCCS9d85gaSajYqfgBAtteeevelS30p3j0J9WJeXuzj85aJjdXJseCpzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmFjdGlvbnMudjJkaGFzaFggkmwr1Jo6Vx+XIcIgFjzS6L2YbeMzYAE8tYbbJYYvuf2iY3VybHgpc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5oYXNoLmRhdGFkaGFzaFgg9779cSuwPIFGuvHVpuwsGeLBC05eMOetnfBLqtrWd2t0Y2xhaW1fZ2VuZXJhdG9yX2luZm+jZG5hbWVvQW50aHJvcGljIEZpbGVzZ3ZlcnNpb25lMS4wLjBrc3BlY1ZlcnNpb25lMi40LjAAABA4anVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAABAIY2JvctKEWQISogEmGCFZAgowggIGMIIBjaADAgECAhRA5aAK7sI50L64g/oGQgU9Z1UTADAKBggqhkjOPQQDAzBJMRcwFQYDVQQKEw5BbnRocm9waWMsIFBCQzEuMCwGA1UEAxMlQW50aHJvcGljIENvbnRlbnQgQ3JlZGVudGlhbHMgUm9vdCBDQTAeFw0yNjA4MDcxODQzNTZaFw0yODA4MDYxOTQzNTZaMEQxFzAVBgNVBAoTDkFudGhyb3BpYywgUEJDMSkwJwYDVQQDEyBBbnRocm9waWMgQ2xhdWRlIENvbnRlbnQgU2lnbmluZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJh6CmvLUBgFFNU0vUKlOVtE6djd17L5SuwX0LemFisBM3dkd/3cyjxFA3Qo5S46fX0/ihY0VZ7mfb9KF703t5OjWDBWMA4GA1UdDwEB/wQEAwIHgDAVBgNVHSUEDjAMBgorBgEEAYPoXgIBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUzlHiBIFOZFsj+OPEz5o+nMHXXMIwCgYIKoZIzj0EAwMDZwAwZAIwMXMdFJ4BetLLVY7ORuE9noqbbAZOZn/aArXyTwFAZfKrPzxF2vPoJNf1+UCdg1XGAjBwX1zd9WGqYkqmL5SFqw1QySjr1zJfpJM9+1rdDwSPLMOPOjKuiXjoU/pUUeG9RwmhY3BhZFkNngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPZYQO21JYRqbYsTRCzy4iTtkZnxSQeDSV86N2pd4FV6ecvdq7zDLfcJWlVZ3T9+jl01DMn7yA3oSjkreSmWPCHLsMA= \ No newline at end of file diff --git a/apps/docs/public/robots.txt b/apps/docs/public/robots.txt new file mode 100644 index 0000000..2d56fba --- /dev/null +++ b/apps/docs/public/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Allow: / +Sitemap: https://bloxwap.github.io/agent-cli/sitemap.xml diff --git a/apps/docs/scripts/check-content.mjs b/apps/docs/scripts/check-content.mjs new file mode 100644 index 0000000..71a5cbb --- /dev/null +++ b/apps/docs/scripts/check-content.mjs @@ -0,0 +1,15 @@ +import './generate-content.mjs'; +import { readFileSync, readdirSync } from 'node:fs'; +import assert from 'node:assert/strict'; +const root = new URL('../content/docs/', import.meta.url); +const meta = JSON.parse(readFileSync(new URL('meta.json', root), 'utf8')); +const files = readdirSync(root).filter((name) => name.endsWith('.mdx')); +assert.deepEqual(files.map((name) => name.slice(0, -4)).sort(), [...meta.pages].sort(), 'Every page must appear in sidebar metadata'); +for (const name of files) { + const text = readFileSync(new URL(name, root), 'utf8'); + assert.match(text, /^---\ntitle: .+\ndescription: .+\n---/); + assert.ok(!text.includes('~/.blockswap'), `${name}: incorrect state path`); + for (const [, slug] of text.matchAll(/\]\(\/docs\/([\w-]+)\)/g)) + assert.ok(files.includes(`${slug}.mdx`), `${name}: missing page ${slug}`); +} +console.log(`Content verified: ${files.length} pages and sidebar entries.`); diff --git a/apps/docs/scripts/check-export.mjs b/apps/docs/scripts/check-export.mjs new file mode 100644 index 0000000..b74d5e3 --- /dev/null +++ b/apps/docs/scripts/check-export.mjs @@ -0,0 +1,98 @@ +import { readFile, readdir, stat, writeFile } from 'node:fs/promises'; +import { resolve, join, dirname, extname, relative, sep } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = fileURLToPath(new URL('../out/', import.meta.url)); +const basePath = process.env.NEXT_PUBLIC_BASE_PATH ?? '/agent-cli'; +const siteUrl = process.env.NEXT_PUBLIC_SITE_URL ?? 'https://bloxwap.github.io'; +const failures = []; +const exists = async (path) => { try { return (await stat(path)).isFile(); } catch { return false; } }; +async function walk(path) { + const entries = await readdir(path, { withFileTypes: true }); + return (await Promise.all(entries.map(async (entry) => entry.isDirectory() + ? walk(join(path, entry.name)) : [join(path, entry.name)]))).flat(); +} +for (const required of [ + 'index.html', '404.html', 'docs/index.html', 'search.json', 'icon.svg', + 'llms.txt', 'robots.txt', '404.md', +]) { + if (!await exists(join(root, required))) failures.push(`Missing ${required}`); +} + +// Agent-readiness contract: every machine-readable file the site advertises must exist +// and behave the way llms.txt and the 404 page claim it does. +const robots = await readFile(join(root, 'robots.txt'), 'utf8'); +if (!/^sitemap:\s*https:\/\/\S+\/sitemap\.xml\s*$/im.test(robots)) failures.push('robots.txt: missing absolute Sitemap directive'); +const notFoundMarkdown = await readFile(join(root, '404.md'), 'utf8'); +if (notFoundMarkdown.length < 20 || !/llms\.txt|sitemap|docs/.test(notFoundMarkdown)) { + failures.push('404.md must explain the error (20+ chars) and link to the docs, sitemap, or llms.txt'); +} +const files = (await walk(root)).filter((file) => extname(file) === '.html'); +let checked = 0; +let socialCards = 0; +for (const file of files) { + const html = await readFile(file, 'utf8'); + const name = relative(root, file).split(sep).join('/'); + // Social crawlers read exported HTML, so verify each public page's actual tags + // and PNG instead of relying on Next's metadata types alone. + if (name === 'index.html' || (name.startsWith('docs/') && name.endsWith('/index.html'))) { + const meta = new Map([...html.matchAll(/]*>/g)].map(([tag]) => { + const attrs = Object.fromEntries([...tag.matchAll(/([\w:-]+)="([^"]*)"/g)].map(([, key, value]) => [key, value.replaceAll('&', '&')])); + return [attrs.property ?? attrs.name, attrs.content]; + })); + const route = name === 'index.html' ? '/' : `/${name.slice(0, -'index.html'.length)}`; + const imagePath = route === '/' ? '/og/home.png' : route === '/docs/' ? '/og/docs/index.png' : `/og${route.slice(0, -1)}.png`; + const absolute = (path) => new URL(`${basePath}${path}`, siteUrl).href; + for (const [key, expected] of Object.entries({ + 'og:type': 'website', 'og:site_name': '@bloxwap/agent-cli', 'og:url': absolute(route), + 'og:image': absolute(imagePath), 'og:image:type': 'image/png', + 'og:image:width': '1200', 'og:image:height': '630', + 'twitter:card': 'summary_large_image', 'twitter:image': absolute(imagePath), + })) { + if (meta.get(key) !== expected) failures.push(`${name}: expected ${key} = ${expected}, got ${meta.get(key)}`); + } + for (const field of ['title', 'description', 'image:alt']) { + if (!meta.get(`og:${field}`) || meta.get(`og:${field}`) !== meta.get(`twitter:${field}`)) { + failures.push(`${name}: missing or inconsistent social ${field}`); + } + } + try { + const png = await readFile(join(root, imagePath)); + if (png.length < 24 || png.subarray(0, 8).toString('hex') !== '89504e470d0a1a0a' + || png.readUInt32BE(16) !== 1200 || png.readUInt32BE(20) !== 630) { + failures.push(`${name}: ${imagePath} must be a 1200×630 PNG`); + } + } catch { failures.push(`${name}: missing social card ${imagePath}`); } + socialCards++; + } + if (name === '404.html') { + // The 404 must explain the error in the HTML body and point agents at the indexes. + const text = html.replace(/<[^>]+>/g, ' ').replace(/\s+/g, ' '); + if (!/does not exist/i.test(text)) failures.push('404.html: body must explain that the page does not exist'); + for (const target of [`${basePath}/llms.txt`, `${basePath}/sitemap.xml`, `${basePath}/404.md`]) { + if (!html.includes(`href="${target}"`)) failures.push(`404.html: missing link to ${target}`); + } + if (!html.includes('type="text/markdown"')) failures.push('404.html: missing rel="alternate" text/markdown link'); + } + for (const match of html.matchAll(/<(?:a|link|script|img|iframe)\b[^>]*?\b(?:href|src)="([^"]+)"/g)) { + const href = match[1].replaceAll('&', '&'); + if (/^(?:[a-z]+:|\/\/|#)/i.test(href)) continue; + const pathname = decodeURIComponent(href.split(/[?#]/)[0]); + if (!pathname) continue; + let target; + if (pathname.startsWith('/')) { + if (basePath && pathname !== basePath && !pathname.startsWith(`${basePath}/`)) { + failures.push(`${file.slice(root.length)} links outside basePath: ${href}`); continue; + } + target = resolve(root, `.${pathname.slice(basePath.length) || '/'}`); + } else target = resolve(dirname(file), pathname); + if (!await exists(target) && !await exists(join(target, 'index.html')) && !await exists(`${target}.html`)) { + failures.push(`${file.slice(root.length)} has broken link/asset: ${href}`); + } + checked++; + } +} +if (failures.length) throw new Error([...new Set(failures)].join('\n')); +await writeFile(join(root, '.nojekyll'), ''); +await writeFile(join(root, '_docs-config.json'), JSON.stringify({ basePath })); +console.log(`Static export verified: ${files.length} HTML pages, ${checked} local links/assets, ${socialCards} social cards, basePath "${basePath || '/'}".`); diff --git a/apps/docs/scripts/generate-content.mjs b/apps/docs/scripts/generate-content.mjs new file mode 100644 index 0000000..755830c --- /dev/null +++ b/apps/docs/scripts/generate-content.mjs @@ -0,0 +1,24 @@ +import { execFileSync } from 'node:child_process'; +import { readFileSync, writeFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; + +const cli = fileURLToPath(new URL('../../../packages/agent-cli/dist/cli.js', import.meta.url)); +const invoke = (...args) => JSON.parse(execFileSync(process.execPath, [cli, ...args], { input: '', encoding: 'utf8' })).data; +const pages = new URL('../content/docs/', import.meta.url); +let commands = '---\ntitle: Command reference\ndescription: Every registered command, with input and output schemas from the CLI.\n---\n\n'; +commands += 'Generated from `agent-cli --help` and `agent-cli schema COMMAND`. Do not edit by hand.\n\n'; +commands += 'Global flags: `--config PATH`, `--network mainnet|testnet`, `--pretty`, `--json OBJECT`. Inputs accept flags, JSON arguments, or a JSON object on stdin. Unknown object fields are rejected.\n\n'; +commands += '## Help and schema\n\n```sh\nagent-cli --help\nagent-cli schema order\n```\n\nHelp lists registered commands and global flags. `schema COMMAND` returns that command\'s input and success/failure output schemas without calling a service.\n\n'; +for (const command of invoke('--help').commands) { + commands += `## ${command.name}\n\n${command.description}\n\n\`\`\`json\n${JSON.stringify(invoke('schema', command.name), null, 2)}\n\`\`\`\n\n`; +} +const skillSource = readFileSync(new URL('../../../packages/agent-cli/SKILL.md', import.meta.url), 'utf8'); +const skill = '---\ntitle: Agent skill guide\ndescription: Install and use the packaged SKILL.md with Codex or Claude Code.\n---\n\n' + + 'The npm package ships `SKILL.md` and embeds the same content in the CLI. Install it with:\n\n```sh\nagent-cli skill install --target codex\nagent-cli skill install --target claude\n```\n\nCodex uses `$CODEX_HOME/skills/agent-cli/SKILL.md` (default `~/.codex/skills/agent-cli/SKILL.md`). Claude Code uses `~/.claude/skills/agent-cli/SKILL.md`. Reinstalling identical content is idempotent; replacing edited content requires `--force`.\n\nThe following guide comes directly from the packaged skill.\n\n' + skillSource.replace(/^---\n[\s\S]*?\n---\n/, ''); +for (const [name, text] of [['commands.mdx', commands], ['skill.mdx', skill]]) { + const target = new URL(name, pages); + if (process.argv.includes('--check')) { + if (readFileSync(target, 'utf8') !== text) throw new Error(`${name} is stale: run npm run docs:generate`); + } else writeFileSync(target, text); +} +console.log('Command schemas and packaged skill documentation synchronized.'); diff --git a/apps/docs/scripts/hig-tokens.mjs b/apps/docs/scripts/hig-tokens.mjs new file mode 100644 index 0000000..0a90241 --- /dev/null +++ b/apps/docs/scripts/hig-tokens.mjs @@ -0,0 +1,46 @@ +import { readFile, writeFile } from 'node:fs/promises'; +import { createHash } from 'node:crypto'; +import assert from 'node:assert/strict'; +const vendor = new URL('../vendor/hig/', import.meta.url); +export const manifest = JSON.parse(await readFile(new URL('manifest.json', vendor), 'utf8')); +export const colors = Object.fromEntries(Object.entries(manifest.colors).map(([key, value]) => [key, value.srgb])); +export const chartTheme = { + theme: { background: colors.surface, textColor: colors.text, borderColor: colors.border, fontFamily: '"Bloxwap Sans", system-ui, sans-serif', monoFamily: '"Bloxwap Mono", monospace', scaleFontFamily: '"Bloxwap Mono", monospace' }, + grid: { color: colors.border }, + crosshair: { color: colors.muted, labelBackground: colors.action, labelColor: colors.onAction }, + series: { upColor: colors.buy, downColor: colors.sell, wickUpColor: colors.buy, wickDownColor: colors.sell, borderUpColor: colors.buy, borderDownColor: colors.sell }, +}; +const aliases = { 'bloxwap-black': 'background', 'bloxwap-green': 'action', background: 'background', foreground: 'text', card: 'surface', 'card-foreground': 'text', popover: 'nested', 'popover-foreground': 'text', primary: 'action', 'primary-foreground': 'onAction', secondary: 'nested', 'secondary-foreground': 'text', muted: 'nested', 'muted-foreground': 'muted', accent: 'nested', 'accent-foreground': 'text', destructive: 'negative', border: 'border', input: 'border', ring: 'focus' }; +const vars = Object.entries(aliases).map(([key, role]) => ` --${key}: var(--hig-${role});`); +for (const [key, value] of Object.entries(manifest.radius)) vars.push(` --radius-${key === 'pill' ? 'full' : key}: ${value / 16}rem;`); +vars.push(' --radius: var(--radius-lg);', ' --radius-2xl: var(--radius-xl);'); +for (const [key, role] of Object.entries({ xs:'xs', sm:'sm', md:'md', lg:'lg', xl:'xl', '2xl':'xxl', '3xl':'xxxl', '4xl':'section', '5xl':'section', '6xl':'section' })) vars.push(` --space-${key}: var(--hig-space-${role});`); +for (const [key, value] of Object.entries(manifest.motion)) vars.push(` --duration-${key}: ${value}ms;`); +for (const [key, role] of Object.entries(manifest.type)) { + vars.push(` --type-${key}-size: ${role.size / 16}rem;`, ` --type-${key}-line: ${role.lineHeight / 16}rem;`, ` --type-${key}-weight: ${role.weight};`); +} +vars.push(` --control-h: ${manifest.density.comfortable.control / 16}rem;`, ` --control-h-sm: ${manifest.density.compact.control / 16}rem;`, ' --ease-spring: cubic-bezier(0.22, 1, 0.36, 1);', ' --ease-standard: ease-out;', ' --icon-md: 16px;', ' --control-min-w: 6rem;'); +const css = `/* Generated from pinned HIG manifest by scripts/hig-tokens.mjs. */\n:root {\n${vars.join('\n')}\n}\n@media (prefers-reduced-motion: reduce) {\n :root { --duration-fast: 0ms; --duration-base: 0ms; --duration-slow: 0ms; }\n}\n`; +const output = new URL('../styles/hig.generated.css', import.meta.url); +if (process.argv.includes('--write')) await writeFile(output, css); +if (process.argv.includes('--check')) { + assert.equal(await readFile(output, 'utf8'), css, 'HIG adapter drift: run node apps/docs/scripts/hig-tokens.mjs --write'); + const provenance = JSON.parse(await readFile(new URL('provenance.json', vendor), 'utf8')); + for (const [file, hash] of Object.entries(provenance.sha256)) assert.equal(createHash('sha256').update(await readFile(new URL(file, vendor))).digest('hex'), hash, `Pinned HIG artifact changed: ${file}`); + const { readdir } = await import('node:fs/promises'); + assert.deepEqual((await readdir(new URL('../styles/', import.meta.url))).sort(), ['hig.generated.css']); + const { readdir: list } = await import('node:fs/promises'); + async function checkSurface(dir) { + for (const entry of await list(dir, { withFileTypes: true })) { + const path = new URL(entry.name + (entry.isDirectory() ? '/' : ''), dir); + if (entry.isDirectory()) await checkSurface(path); + else if (/\.(css|tsx?)$/.test(entry.name)) { + const source = await readFile(path, 'utf8'); + assert.ok(!/@workspace\/(tokens|ui)|tokens\.generated\.css|--bloxwap-\w+\s*:\s*(#|oklch|color\()/.test(source), `Obsolete imports or copied palette: ${path}`); + } + } + } + await checkSurface(new URL('../app/', import.meta.url)); + await checkSurface(new URL('../components/', import.meta.url)); + console.log('HIG provenance, generated adapter and copied-palette drift checks passed.'); +} diff --git a/apps/docs/scripts/prepare-public.mjs b/apps/docs/scripts/prepare-public.mjs new file mode 100644 index 0000000..f6cb868 --- /dev/null +++ b/apps/docs/scripts/prepare-public.mjs @@ -0,0 +1,9 @@ +import { writeFileSync, readFileSync } from 'node:fs'; +const basePath = process.env.NEXT_PUBLIC_BASE_PATH ?? '/agent-cli'; +const siteUrl = process.env.NEXT_PUBLIC_SITE_URL ?? 'https://bloxwap.github.io'; +const absolute = (path) => new URL(`${basePath}${path}`, siteUrl).href; +const pages = JSON.parse(readFileSync(new URL('../content/docs/meta.json', import.meta.url), 'utf8')).pages; +writeFileSync(new URL('../public/robots.txt', import.meta.url), `User-agent: *\nAllow: /\nSitemap: ${absolute('/sitemap.xml')}\n`); +writeFileSync(new URL('../public/llms.txt', import.meta.url), '# Bloxwap Agent CLI\n\nHyperliquid trading with Privy custody and Relay funding. Master keys stay external.\n\n' + + pages.map((page) => `- [${page === 'index' ? 'Overview and installation' : page}](${absolute(page === 'index' ? '/docs/' : `/docs/${page}/`)})`).join('\n') + + `\n\n- [Sitemap](${absolute('/sitemap.xml')})\n- [Static search index](${absolute('/search.json')})\n- [Source and packaged SKILL.md](https://github.com/bloxwap/agent-cli/tree/main/packages/agent-cli)\n`); diff --git a/apps/docs/scripts/preview.mjs b/apps/docs/scripts/preview.mjs new file mode 100644 index 0000000..1948615 --- /dev/null +++ b/apps/docs/scripts/preview.mjs @@ -0,0 +1,28 @@ +import { createServer } from 'node:http'; +import { readFile, stat } from 'node:fs/promises'; +import { resolve, join, extname, sep } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = fileURLToPath(new URL('../out/', import.meta.url)).replace(/\/$/, ''); +let basePath; +try { ({ basePath } = JSON.parse(await readFile(join(root, '_docs-config.json'), 'utf8'))); } +catch { throw new Error('Build the docs first with npm run docs:build.'); } +const mime = { '.html': 'text/html; charset=utf-8', '.js': 'text/javascript; charset=utf-8', '.css': 'text/css; charset=utf-8', '.json': 'application/json', '.svg': 'image/svg+xml', '.png': 'image/png', '.woff2': 'font/woff2', '.txt': 'text/plain; charset=utf-8', '.xml': 'application/xml' }; +const server = createServer(async (request, response) => { + try { + const path = decodeURIComponent(new URL(request.url ?? '/', 'http://localhost').pathname); + if (basePath && path === '/') { response.writeHead(302, { Location: `${basePath}/` }); response.end(); return; } + if (basePath && path !== basePath && !path.startsWith(`${basePath}/`)) throw new Error('Not found'); + let file = resolve(root, `.${path.slice(basePath.length) || '/'}`); + if (file !== root && !file.startsWith(root + sep)) throw new Error('Not found'); + if ((await stat(file)).isDirectory()) file = join(file, 'index.html'); + const content = await readFile(file); + response.writeHead(200, { 'Content-Type': mime[extname(file)] ?? 'application/octet-stream' }); + response.end(content); + } catch { + response.writeHead(404, { 'Content-Type': 'text/html; charset=utf-8' }); + response.end(await readFile(join(root, '404.html'))); + } +}); +const port = Number(process.env.PORT ?? 3903); +server.listen(port, '127.0.0.1', () => console.log(`Static docs preview → http://localhost:${server.address().port}${basePath}/`)); diff --git a/apps/docs/source.config.ts b/apps/docs/source.config.ts new file mode 100644 index 0000000..c483ff9 --- /dev/null +++ b/apps/docs/source.config.ts @@ -0,0 +1,4 @@ +import { defineConfig, defineDocs } from 'fumadocs-mdx/config'; + +export const docs = defineDocs({ dir: 'content/docs' }); +export default defineConfig(); diff --git a/apps/docs/styles/hig.generated.css b/apps/docs/styles/hig.generated.css new file mode 100644 index 0000000..e64f889 --- /dev/null +++ b/apps/docs/styles/hig.generated.css @@ -0,0 +1,67 @@ +/* Generated from pinned HIG manifest by scripts/hig-tokens.mjs. */ +:root { + --bloxwap-black: var(--hig-background); + --bloxwap-green: var(--hig-action); + --background: var(--hig-background); + --foreground: var(--hig-text); + --card: var(--hig-surface); + --card-foreground: var(--hig-text); + --popover: var(--hig-nested); + --popover-foreground: var(--hig-text); + --primary: var(--hig-action); + --primary-foreground: var(--hig-onAction); + --secondary: var(--hig-nested); + --secondary-foreground: var(--hig-text); + --muted: var(--hig-nested); + --muted-foreground: var(--hig-muted); + --accent: var(--hig-nested); + --accent-foreground: var(--hig-text); + --destructive: var(--hig-negative); + --border: var(--hig-border); + --input: var(--hig-border); + --ring: var(--hig-focus); + --radius-sm: 0.375rem; + --radius-md: 0.5rem; + --radius-lg: 0.625rem; + --radius-xl: 0.875rem; + --radius-full: 624.9375rem; + --radius: var(--radius-lg); + --radius-2xl: var(--radius-xl); + --space-xs: var(--hig-space-xs); + --space-sm: var(--hig-space-sm); + --space-md: var(--hig-space-md); + --space-lg: var(--hig-space-lg); + --space-xl: var(--hig-space-xl); + --space-2xl: var(--hig-space-xxl); + --space-3xl: var(--hig-space-xxxl); + --space-4xl: var(--hig-space-section); + --space-5xl: var(--hig-space-section); + --space-6xl: var(--hig-space-section); + --duration-fast: 180ms; + --duration-base: 260ms; + --duration-slow: 320ms; + --type-caption-size: 0.75rem; + --type-caption-line: 1.125rem; + --type-caption-weight: 500; + --type-label-size: 0.875rem; + --type-label-line: 1.25rem; + --type-label-weight: 600; + --type-body-size: 1rem; + --type-body-line: 1.5rem; + --type-body-weight: 400; + --type-title-size: 1.5rem; + --type-title-line: 1.875rem; + --type-title-weight: 600; + --type-display-size: 3rem; + --type-display-line: 3.25rem; + --type-display-weight: 600; + --control-h: 3rem; + --control-h-sm: 2.25rem; + --ease-spring: cubic-bezier(0.22, 1, 0.36, 1); + --ease-standard: ease-out; + --icon-md: 16px; + --control-min-w: 6rem; +} +@media (prefers-reduced-motion: reduce) { + :root { --duration-fast: 0ms; --duration-base: 0ms; --duration-slow: 0ms; } +} diff --git a/apps/docs/tsconfig.json b/apps/docs/tsconfig.json new file mode 100644 index 0000000..f107fcc --- /dev/null +++ b/apps/docs/tsconfig.json @@ -0,0 +1,42 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": [ + "./*" + ] + }, + "allowJs": true + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts", + ".source/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/apps/docs/vendor/hig/LICENSE b/apps/docs/vendor/hig/LICENSE new file mode 100644 index 0000000..daec4c1 --- /dev/null +++ b/apps/docs/vendor/hig/LICENSE @@ -0,0 +1,5 @@ +MIT License + +Copyright (c) 2026 Bloxwap + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to inclusion of this notice. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. diff --git a/apps/docs/vendor/hig/manifest.json b/apps/docs/vendor/hig/manifest.json new file mode 100644 index 0000000..2d92b5a --- /dev/null +++ b/apps/docs/vendor/hig/manifest.json @@ -0,0 +1,151 @@ +{ + "version": "0.1.0", + "mode": "dark", + "provenance": "font/apps/docs/styles/tokens.css; monorepo inaccessible; authored OKLCH unavailable", + "colors": { + "background": { + "srgb": "#0a0a0a", + "p3": [ + 0.04, + 0.04, + 0.04 + ] + }, + "surface": { + "srgb": "#171717" + }, + "nested": { + "srgb": "#262626" + }, + "text": { + "srgb": "#fafafa" + }, + "muted": { + "srgb": "#a1a1a1" + }, + "faint": { + "srgb": "#858585" + }, + "border": { + "srgb": "#3a3a3a" + }, + "action": { + "srgb": "#00ff3f", + "p3": [ + 0, + 1, + 0.24 + ] + }, + "onAction": { + "srgb": "#0a0a0a", + "p3": [ + 0.04, + 0.04, + 0.04 + ] + }, + "focus": { + "srgb": "#00ff3f", + "p3": [ + 0, + 1, + 0.24 + ] + }, + "buy": { + "srgb": "#00ff3f", + "p3": [ + 0, + 1, + 0.24 + ] + }, + "sell": { + "srgb": "#ff5c5c" + }, + "positive": { + "srgb": "#00ff3f", + "p3": [ + 0, + 1, + 0.24 + ] + }, + "negative": { + "srgb": "#ff5c5c" + }, + "warning": { + "srgb": "#f5b300" + }, + "info": { + "srgb": "#35b5ff", + "p3": [ + 0.18, + 0.72, + 1 + ] + } + }, + "space": { + "xs": 4, + "sm": 8, + "md": 12, + "lg": 16, + "xl": 20, + "xxl": 24, + "xxxl": 32, + "section": 48 + }, + "radius": { + "sm": 6, + "md": 8, + "lg": 10, + "xl": 14, + "pill": 9999 + }, + "density": { + "comfortable": { + "control": 48, + "target": 48, + "gap": 12 + }, + "compact": { + "control": 36, + "target": 36, + "gap": 8 + } + }, + "motion": { + "fast": 180, + "base": 260, + "slow": 320 + }, + "type": { + "caption": { + "size": 12, + "lineHeight": 18, + "weight": 500 + }, + "label": { + "size": 14, + "lineHeight": 20, + "weight": 600 + }, + "body": { + "size": 16, + "lineHeight": 24, + "weight": 400 + }, + "title": { + "size": 24, + "lineHeight": 30, + "weight": 600 + }, + "display": { + "size": 48, + "lineHeight": 52, + "weight": 600 + } + } +} diff --git a/apps/docs/vendor/hig/provenance.json b/apps/docs/vendor/hig/provenance.json new file mode 100644 index 0000000..32d18a5 --- /dev/null +++ b/apps/docs/vendor/hig/provenance.json @@ -0,0 +1,11 @@ +{ + "repository": "bloxwap/hig", + "commit": "1a776b9326c6ba03702894943b3edbfd178c4b40", + "version": "0.1.0 candidate", + "distribution": "approved plain CSS + generated manifest; no npm release exists", + "sha256": { + "tokens.css": "1c60086af561070fdc1ee6056d6bc43bd8eed78614c318d466ee3850dc317609", + "manifest.json": "1f7383521cf9d3a559ae4abb91e64aa26f3fba03df22768aaeb26f6df822a454", + "LICENSE": "3e120a937544f1299495b556d63e040f2ee4678d0def27cfbf71ac62e75b022e" + } +} diff --git a/apps/docs/vendor/hig/tokens.css b/apps/docs/vendor/hig/tokens.css new file mode 100644 index 0000000..3b26998 --- /dev/null +++ b/apps/docs/vendor/hig/tokens.css @@ -0,0 +1,35 @@ +:root { color-scheme: dark; + --hig-background: #0a0a0a; + --hig-surface: #171717; + --hig-nested: #262626; + --hig-text: #fafafa; + --hig-muted: #a1a1a1; + --hig-faint: #858585; + --hig-border: #3a3a3a; + --hig-action: #00ff3f; + --hig-onAction: #0a0a0a; + --hig-focus: #00ff3f; + --hig-buy: #00ff3f; + --hig-sell: #ff5c5c; + --hig-positive: #00ff3f; + --hig-negative: #ff5c5c; + --hig-warning: #f5b300; + --hig-info: #35b5ff; + --hig-space-xs: 0.25rem; + --hig-space-sm: 0.5rem; + --hig-space-md: 0.75rem; + --hig-space-lg: 1rem; + --hig-space-xl: 1.25rem; + --hig-space-xxl: 1.5rem; + --hig-space-xxxl: 2rem; + --hig-space-section: 3rem; +} +@supports (color: color(display-p3 1 1 1)) { :root { + --hig-background: color(display-p3 0.04 0.04 0.04); + --hig-action: color(display-p3 0 1 0.24); + --hig-onAction: color(display-p3 0.04 0.04 0.04); + --hig-focus: color(display-p3 0 1 0.24); + --hig-buy: color(display-p3 0 1 0.24); + --hig-positive: color(display-p3 0 1 0.24); + --hig-info: color(display-p3 0.18 0.72 1); +} } diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 16c8885..d96f31f 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -51,3 +51,5 @@ Final local verification: supported Node 22, strict build/lint/typecheck and iso ## Workspace and Fumadocs migration - Workspace migration: done — CLI sources, tests, skill, policies and release tooling live in `packages/agent-cli`; root scripts delegate, publish targets the CLI workspace. +- Fumadocs site: done — Chart conventions, HIG assets, local fonts, static search/social cards, MDX operating guides, generated schemas/skill, and main-only Pages deployment. +- Verification: Node 24; clean `npm ci`; root build/lint/typecheck/tests (71 tests), docs build/check, export link/social checks, static preview 200/404 checks, CLI pack and global-install smoke passed. No push or publish. diff --git a/docs/index.md b/docs/index.md index 09f8315..1aa2f3a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,4 +6,6 @@ for state/env settings, [funding](funding.md) for deposits/signatures, [custody](custody.md) and [security](security.md) for key boundaries. Development progress is recorded in [PROGRESS](PROGRESS.md). Documentation is -built with `npm run docs:generate` into `site/`; serve that directory locally. +built with `npm run docs:build` into `apps/docs/out`. Use `npm run docs:dev` +for port 3903 at `/agent-cli`, or `npm run docs:preview` for the static export. +The command reference and skill MDX are synchronized with `npm run docs:generate`. diff --git a/package-lock.json b/package-lock.json index 509def2..64087bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,16 +17,105 @@ "node": ">=24" } }, + "apps/docs": { + "name": "@bloxwap/agent-cli-docs", + "version": "0.1.0", + "hasInstallScript": true, + "dependencies": { + "@bloxwap/font": "0.1.2", + "fumadocs-core": "16.15.14", + "fumadocs-mdx": "15.4.5", + "fumadocs-ui": "16.15.14", + "lucide-react": "0.545.0", + "next": "16.3.6", + "react": "^19.2.0", + "react-dom": "^19.2.0" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4.2.0", + "@types/mdx": "^2.0.13", + "@types/node": "^24.13.6", + "@types/react": "^19.2.0", + "@types/react-dom": "^19.2.0", + "tailwindcss": "^4.2.0", + "typescript": "^6.0.3" + }, + "engines": { + "node": ">=24" + } + }, + "apps/docs/node_modules/@types/node": { + "version": "24.19.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.19.2.tgz", + "integrity": "sha512-93d49wCWJkCyN87MxLpNN6KXPCwFw7bVUg79mGUV1OS40JGWwVCr8n61DXCSqz7CV6/VfPkb7xec7uP2M+QHWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": ">=7.24.0 <7.24.7" + } + }, + "apps/docs/node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "apps/docs/node_modules/undici-types": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", + "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", + "dev": true, + "license": "MIT" + }, "node_modules/@adraffy/ens-normalize": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz", "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==", "devOptional": true }, + "node_modules/@alloc/quick-lru": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.3.0.tgz", + "integrity": "sha512-U4+70Pc5ZS9osnCBCE5Jha/ciHM+Yp+CNMNC/7HvYbNRk1Ldd+f7qO65W5qfhu/TCv+/ozljlXXe9Nj8419DMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@bloxwap/agent-cli": { "resolved": "packages/agent-cli", "link": true }, + "node_modules/@bloxwap/agent-cli-docs": { + "resolved": "apps/docs", + "link": true + }, + "node_modules/@bloxwap/font": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@bloxwap/font/-/font-0.1.2.tgz", + "integrity": "sha512-3aWepyHUKhbRtpIZxYYN4ixY703YsKXcfgsRQR1BjiH8hkvahm/xfCkzFhb8fKoN6g1y6vTSb9FA5HCxJ9O0uQ==", + "license": "OFL-1.1", + "peerDependencies": { + "next": ">=15.0.0" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + } + } + }, "node_modules/@bloxwap/hyperliquid": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@bloxwap/hyperliquid/-/hyperliquid-0.6.0.tgz", @@ -335,6 +424,16 @@ "node": ">= 20.12.0" } }, + "node_modules/@emnapi/runtime": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.28.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", @@ -342,7 +441,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -359,7 +457,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -376,7 +473,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -393,7 +489,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -410,7 +505,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -427,7 +521,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -444,7 +537,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -461,7 +553,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -478,7 +569,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -495,7 +585,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -512,7 +601,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -529,7 +617,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -546,7 +633,6 @@ "cpu": [ "mips64el" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -563,7 +649,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -580,7 +665,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -597,7 +681,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -614,7 +697,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -631,7 +713,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -648,7 +729,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -665,7 +745,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -682,7 +761,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -699,7 +777,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -716,7 +793,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -733,7 +809,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -750,7 +825,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -767,7 +841,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -911,6 +984,80 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.8.0.tgz", + "integrity": "sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.12" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.8.0.tgz", + "integrity": "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.8.0", + "@floating-ui/utils": "^0.2.12" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.9.tgz", + "integrity": "sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.8.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.12.tgz", + "integrity": "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==", + "license": "MIT" + }, + "node_modules/@fuma-translate/react": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@fuma-translate/react/-/react-1.0.2.tgz", + "integrity": "sha512-uOiOtBx3nRXR8Nu1GzBf1tApgF1FErDBTHxRIAQeyQdyOoZbrNRN6H4kDCWObY4qyGeGbHydG0DHzgeUgFDMIw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^19.2.0", + "react-dom": "^19.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@fumadocs/tailwind": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@fumadocs/tailwind/-/tailwind-0.1.2.tgz", + "integrity": "sha512-VppeXgIRXjZMgpf2qijj1hcfxyeYl1s0ok8k6N3jyjiX64M7sDwnt2zGPd6dbfDybgbBvDw6C6J1e42gB5NzsA==", + "license": "MIT", + "peerDependencies": { + "tailwindcss": "^4.0.0" + }, + "peerDependenciesMeta": { + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@fumari/image-size": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@fumari/image-size/-/image-size-0.1.1.tgz", + "integrity": "sha512-iaiV2wyzJ4mW358NX4CX3yGit+WjKYzpaQ+rldK9BjL/5jFpeV6ruWnZVq7MEyMn3Gd0DLi8g/79NZAAQaGscw==", + "license": "MIT" + }, "node_modules/@hpke/chacha20poly1305": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@hpke/chacha20poly1305/-/chacha20poly1305-1.8.0.tgz", @@ -1002,848 +1149,857 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "optional": true, "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", - "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "node": ">=18" } }, - "node_modules/@manypkg/find-root": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-3.1.0.tgz", - "integrity": "sha512-BcSqCyKhBVZ5YkSzOiheMCV41kqAFptW6xGqYSTjkVTl9XQpr+pqHhwgGCOHQtjDCv7Is6EFyA14Sm5GVbVABA==", - "dev": true, - "dependencies": { - "@manypkg/tools": "^2.1.0" - }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.5.tgz", + "integrity": "sha512-QRUlFQ0WxvdWyqqG/WtI3iupfD5rBzmCHXSdPsY91sAtVtTo7Q4cb6zOccZ3gqEqkr0f1As1ehLqmEpDsRf+lg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@manypkg/get-packages": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-3.1.0.tgz", - "integrity": "sha512-0TbBVyvPrP7xGYBI/cP8UP+yl/z+HtbTttAD7FMAJgn/kXOTwh5/60TsqP9ZYY710forNfyV0N8P/IE/ujGZJg==", - "dev": true, - "dependencies": { - "@manypkg/find-root": "^3.1.0", - "@manypkg/tools": "^2.1.0" + "node": ">=20.9.0" }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@manypkg/tools": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@manypkg/tools/-/tools-2.1.2.tgz", - "integrity": "sha512-6QEf6yqFbETdwGITKq57aYoPfX/3K8XFNwsAlx0C1M7o8cb79sv1M3w+tWuWvIcSbNqrLF7OD7YpZMVVz335hQ==", - "dev": true, - "dependencies": { - "jju": "^1.4.0", - "tinyglobby": "^0.2.13", - "yaml": "^2.9.0" + "funding": { + "url": "https://opencollective.com/libvips" }, - "engines": { - "node": ">=20.0.0" + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.3.4" } }, - "node_modules/@napi-rs/lzma-linux-x64-gnu": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", - "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", + "node_modules/@img/sharp-darwin-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.5.tgz", + "integrity": "sha512-+BR255RhDlpygUpOc/Jdt1nT6DQ3XG/ERo5wbcdOf5Q320dKtPCKPLR1LJs9VGXRaMa8l1uUa0tkCNOXiAxZUw==", "cpu": [ "x64" ], - "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { - "node": "^22.20 || ^24.12 || >=25" - } - }, - "node_modules/@noble/ciphers": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", - "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", - "devOptional": true, - "engines": { - "node": "^14.21.3 || >=16" + "node": ">=20.9.0" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.3.4" } }, - "node_modules/@noble/curves": { - "version": "1.9.7", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", - "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "node_modules/@img/sharp-freebsd-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.5.tgz", + "integrity": "sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==", + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], "dependencies": { - "@noble/hashes": "1.8.0" - }, - "engines": { - "node": "^14.21.3 || >=16" + "@img/sharp-wasm32": "0.35.5" }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "engines": { - "node": "^14.21.3 || >=16" + "node": ">=20.9.0" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://opencollective.com/libvips" } }, - "node_modules/@noble/hashes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.2.0.tgz", - "integrity": "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==", - "engines": { - "node": ">= 20.19.0" - }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.4.tgz", + "integrity": "sha512-5R89nBYiRdUlSWJxPhO+GVtaXzXSxKnRu/xqMn3KTA3L9EB9Oy/P+Nn2f2vlhPuUdy/Zusb2DarbyTpGCfEDuw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://opencollective.com/libvips" } }, - "node_modules/@oxc-project/types": { - "version": "0.153.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.153.0.tgz", - "integrity": "sha512-jSNrRIyvPVLL5E1z/tS5zLAprosGz/FuI1PWwEOz59j3E4TTTzSpqKb/RDGqJhhW0QHYISGXxq582wGx6T11Tw==", - "dev": true, - "license": "MIT", - "peer": true, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.4.tgz", + "integrity": "sha512-iR2OKH80yi0U+dUplyh3/xdpFvps6YkCwsXenIJxqxR1v9o+xtKTGbS9H7cps+2Vxjc8B1j96p75NmTGjIhtpQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], "funding": { - "url": "https://github.com/sponsors/oxc-project" + "url": "https://opencollective.com/libvips" } }, - "node_modules/@pnpm/deps.graph-sequencer": { - "version": "1100.0.1", - "resolved": "https://registry.npmjs.org/@pnpm/deps.graph-sequencer/-/deps.graph-sequencer-1100.0.1.tgz", - "integrity": "sha512-pOr5+q1fLYKwFN3LAJuGZEnfXDcQ73zqgDHMtGy+K+uIoUqyY+6MeDCWFwfu+4EFuq76I5EPFofoNAI+Bmmq4A==", - "dev": true, - "engines": { - "node": ">=22.13" - }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.4.tgz", + "integrity": "sha512-LmRtTsOHuvM2+wlO2Db37dx5MiZhB0FvSunciw48YjdOkZz9KAiRbm8ujeMOA1INqmei5NapFxYEK1D1ZSidmw==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@privy-io/node": { - "version": "0.35.0", - "resolved": "https://registry.npmjs.org/@privy-io/node/-/node-0.35.0.tgz", - "integrity": "sha512-NhttAOmjgwtQzBoTmRCWzY5ZTTJV1WqPUmasyEbi9XfFd1LccpjHiNB+AUCeRXpY0FC5Bt/3Is7xJEmCX3LKNA==", - "dependencies": { - "@hpke/chacha20poly1305": "^1.7.1", - "@hpke/core": "^1.7.5", - "@noble/curves": "^1.9.7", - "@noble/hashes": "^1.8.0", - "@scure/base": "^1.2.5", - "canonicalize": "^2.1.0", - "jose": "^6.1.0", - "lru-cache": "^11.1.0", - "svix": "^1.92.2" - }, - "peerDependencies": { - "@solana/kit": "^5.1.0", - "@x402/evm": "^2.3.0", - "@x402/fetch": "^2.3.0", - "@x402/svm": "^2.3.0", - "viem": "^2.44.2" - }, - "peerDependenciesMeta": { - "@solana/kit": { - "optional": true - }, - "@x402/evm": { - "optional": true - }, - "@x402/fetch": { - "optional": true - }, - "@x402/svm": { - "optional": true - }, - "viem": { - "optional": true - } + "url": "https://opencollective.com/libvips" } }, - "node_modules/@privy-io/node/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "engines": { - "node": "^14.21.3 || >=16" - }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.4.tgz", + "integrity": "sha512-Y3dgX/6lE2QhQb+Gxy0WZxfg9MEm/JBjamZpS2IklP7xIQoKN4hzAm7KcMVGtaVDt3neE9OKBC7vAfonA/Lr1A==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://opencollective.com/libvips" } }, - "node_modules/@rolldown/binding-android-arm-eabi": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.13.tgz", - "integrity": "sha512-Vu/NICrgdRvUOeaJZIyB2FP63s6fO/4ud5l8dXmxDx9yDyn+mN0y+gsvsVviSli+T361Aqo0h46EuMoobrwawA==", + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.4.tgz", + "integrity": "sha512-Le6boB8Tai0Nis+gIxIpKx68UDVVIqdR8Tin5Yf1z2LJJQLDJvCDRqRu+jC2qCoD+eIomonmOwB4smBRxfVpYQ==", "cpu": [ - "arm" + "ppc64" ], - "dev": true, - "license": "MIT", + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "android" + "linux" ], - "peer": true, - "engines": { - "node": "^20.19.0 || >=22.12.0" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@rolldown/binding-android-arm64": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.13.tgz", - "integrity": "sha512-6LEoIrGy5vvCd2boNnv2soPSUZj/PRvhp8R/t9KlX+mIZxThIE/ZqxrGXxmuNX0FuvQFvLdZr7S4HrYpYBVhEQ==", + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.4.tgz", + "integrity": "sha512-aHkkIEHPRdQEegJN20MLmGtxYD9R2wQr3Cwpddnu5+YKMt6Uzax7S9h5gpZTo8wyrGuZSlfQ63OevL5mTyOC7Q==", "cpu": [ - "arm64" + "riscv64" ], - "dev": true, - "license": "MIT", + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "android" + "linux" ], - "peer": true, - "engines": { - "node": "^20.19.0 || >=22.12.0" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.13.tgz", - "integrity": "sha512-CaJSRzlQ6Q+zkDMVA9OkVxBjVoPRCDEE3v0FSJ9kIQBgRjFApA3Si4ijhbNVUji7ZJt+PfO0e46qy4nPInHUPA==", + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.4.tgz", + "integrity": "sha512-ra/mB6MikESDUO7Yg+Mi95bFBb9GsObURuhnOv3OqknjGe9sZrG8tCe9q0xSIGrtLgvgw0gKnFWcK4blSgQOuQ==", "cpu": [ - "arm64" + "s390x" ], - "dev": true, - "license": "MIT", + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "darwin" + "linux" ], - "peer": true, - "engines": { - "node": "^20.19.0 || >=22.12.0" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.13.tgz", - "integrity": "sha512-e4r340I5hxSzJkD3YJBxgzq/rJ3wwxwdLLb2FPt1Zpyem20nrQPT11DDEEkazwxaHumH8wpglsp/Ozgj/wT6mw==", + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.4.tgz", + "integrity": "sha512-GJ//SSXbnwSDes02umB3nDJLFcQzw8a18V8fyhqr6tV515tOEMdImjjxj1AoafMRz56F3PHgftnj1QEKSU1zkw==", "cpu": [ "x64" ], - "dev": true, - "license": "MIT", + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "darwin" + "linux" ], - "peer": true, - "engines": { - "node": "^20.19.0 || >=22.12.0" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.13.tgz", - "integrity": "sha512-hoBWDZ4/K/mJKVMbsgUd1jfpA2DiOrJ54mpegObU9TBHBBrtX4FLIXJJQRDPZ/2Dn91GvPob+Z2hwKJzf4E5SQ==", + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.4.tgz", + "integrity": "sha512-hvulFwtjUcagsis6BBxHwGFwWoNZjgYmULGVrZcyfNbjA8hKILbRxGg15/7w5HDyXHXUos/j6baAWqnCyQ2DWA==", "cpu": [ - "x64" + "arm64" ], - "dev": true, - "license": "MIT", + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "freebsd" + "linux" ], - "peer": true, - "engines": { - "node": "^20.19.0 || >=22.12.0" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.13.tgz", - "integrity": "sha512-oF9fZu3vTWnTiVAkDFxU9PJLt1nh20K9RRpuHsR7ZnE2L7XookBbDBVLojCVSLGbvtSlxeUNnjAj6DbNsKyzbg==", + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.4.tgz", + "integrity": "sha512-6zXKeE/p39I1AmA3cJG35eyBGNqNddLnUXjhwBnsGjFPWqf5VKkDBEqaEkPDoTEtkxwi2vv8Tcr2mDyP4So7Fg==", "cpu": [ - "arm" + "x64" ], - "dev": true, - "license": "MIT", + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" ], - "peer": true, - "engines": { - "node": "^20.19.0 || >=22.12.0" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.13.tgz", - "integrity": "sha512-DTpb/+jMiqWMPgphn4ksW1zW+XLJ6dJJ9FMvnIk9I291LhCctMPhMYJrP5t9p6C9qa3KXadDdUEZHBaPh3kNxQ==", + "node_modules/@img/sharp-linux-arm": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.5.tgz", + "integrity": "sha512-LEaXK2WdXVK5ykcw0buWyPMsmLLL2vpHLD6yrNSW+JGEL3BZPA4tpKN6iaMc4AxTTAoaX/sU1rOL51lcIz48ZQ==", "cpu": [ - "arm64" + "arm" ], - "dev": true, - "license": "MIT", + "libc": [ + "glibc" + ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], - "peer": true, "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.3.4" } }, - "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.13.tgz", - "integrity": "sha512-xU+Kvv9N2A3SY35zFh1FWWNjxbadE/BKeqnkXe7vScU4GZsw757BlVmDLITZEq8DPpk6m7uoDYkK7P+x/uU5Ow==", + "node_modules/@img/sharp-linux-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.5.tgz", + "integrity": "sha512-LYVx5JTsOM2CBzmxreh+nl64/3H6Xb09iSLknqH47z2T2DFFxDeFLP5y4dJwe6H7uGQlHPyEEtIqyo3DYsRwdQ==", "cpu": [ "arm64" ], - "dev": true, - "license": "MIT", + "libc": [ + "glibc" + ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], - "peer": true, "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.3.4" } }, - "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.13.tgz", - "integrity": "sha512-XMk/hnhh25oQ756Lclb1Q11h4ll0xC0Esa5w4Vzp+mAE2S3AGJgeM0SonrIgY8fHhjarb6hcoTuwoFG0VVP2ig==", + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.5.tgz", + "integrity": "sha512-QVxAAq8evVRI9ia2vqgwrmWucn5Dfv+JdWzj75pD8omHLPSP7f8p20O8jxzjCcuCEQEOtYOZUmX1hkiZ0kdevA==", "cpu": [ "ppc64" ], - "dev": true, - "license": "MIT", + "libc": [ + "glibc" + ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], - "peer": true, "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.3.4" } }, - "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.13.tgz", - "integrity": "sha512-U1BoTHYmlywE2n3HUWjzZ+8EQsKr+OwpxYuDWaubx42tUL8QSL7nOqRz/NVHanibbFP3M1Rxuprz/wNcbMKjqw==", + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.5.tgz", + "integrity": "sha512-LtdreXguaavKODPIfzJ4kffx7UNt1omwtK0rch4EBbbSTXPnxWmYSayXdLJw0fJzQ97kHt1gL/yh4tvU+nCyRQ==", "cpu": [ - "s390x" + "riscv64" ], - "dev": true, - "license": "MIT", + "libc": [ + "glibc" + ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], - "peer": true, "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.3.4" } }, - "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.13.tgz", - "integrity": "sha512-J4cm80Pc6wEwV5AZ42o62sIQgDk+Y7R2s646jIwuvO+4V46QB58N4vVuMPWCBaNgursXLpmUWJV//WQAkPvHBQ==", + "node_modules/@img/sharp-linux-s390x": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.5.tgz", + "integrity": "sha512-UZasTOFiYzotTsGOCu42BfUzP6Tu6Do/947iRm1RsLKvlllxwGcn4RN27LibGWceix4Y+Pmw3jsnTcCQIgWjqA==", "cpu": [ - "x64" + "s390x" ], - "dev": true, - "license": "MIT", + "libc": [ + "glibc" + ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], - "peer": true, "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.3.4" } }, - "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.13.tgz", - "integrity": "sha512-W0euZS40U4V6JkmEnVCIX9mcsL6cbXQ4X8c2w+MMOIjFg68TXUW+u3RT+2e1t1pv9mg/EP3pDtK3POXdQ7Rxyw==", + "node_modules/@img/sharp-linux-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.5.tgz", + "integrity": "sha512-SxFtLTeJInhAA9Q836kux2vZNeOBQEx658qvbboZScr0wIARym3IcGmW7KpVD5sbVg0Ojy+udFQdayYIZyoNog==", "cpu": [ "x64" ], - "dev": true, - "license": "MIT", + "libc": [ + "glibc" + ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], - "peer": true, "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.3.4" } }, - "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.13.tgz", - "integrity": "sha512-do/AF/4n9MRshia3a5aXoy8xM2c6mgfT6D7H/dY6my5z+hfCIR4ab7mk4IRj++nsEQpKy39kd0DQnDq+r692tw==", + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.5.tgz", + "integrity": "sha512-9HbMclmI1zlNkFRs3z9/eBtDjfD0sGlrX1z6b1qwmiFY5ElDLh4BC0LPBdVp7z1DXFiKlIcznf+ZlsuZzLxQqg==", "cpu": [ "arm64" ], - "dev": true, - "license": "MIT", + "libc": [ + "musl" + ], + "license": "Apache-2.0", "optional": true, "os": [ - "openharmony" + "linux" ], - "peer": true, "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4" } }, - "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.13.tgz", - "integrity": "sha512-6FtUf2cJZobutJdxnGYX8z0vtbgqU0b2v8vfBhkXb9wp2MppMFtkunE+IaOntyi01rkIQoPW2GHABtfzsC0BRQ==", + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.5.tgz", + "integrity": "sha512-4KOphqB035HrVdqLZfCgMzzERrQkkzOwRhl4OAkRO1YCldbaFjySXMaK534Mo0V+LndnlJk+sbUyLeU0ULyD1A==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.3.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.5.tgz", + "integrity": "sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==", + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.11.3" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-webcontainers-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.5.tgz", + "integrity": "sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/sharp-wasm32": "0.35.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.5.tgz", + "integrity": "sha512-X4t7g+7ZA5DKblCBEXGjUqqemj4vczING/5viFwAL8h4N3qYeyjwdCvRLHi4EdOUI+2Z7UFlp1VM+p/AuEtm6Q==", "cpu": [ "arm64" ], - "dev": true, - "license": "MIT", + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ "win32" ], - "peer": true, "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.13.tgz", - "integrity": "sha512-UKhFaZTeTcbKrb3iU82m17jVcPEAoqDkCN5MBqgPyZSwp/cQmib21crTS0DdH7T1B7wZRWEI89YQAOJMet5yhg==", + "node_modules/@img/sharp-win32-ia32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.5.tgz", + "integrity": "sha512-5Zm82LoBc43nhwNybZlG7Y1KO//Zhsn306fQl29ZOuStHLGTo3BWL83q3cznX0poxSAMuYL1On/BHBxkBeKr6A==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.5.tgz", + "integrity": "sha512-x76eH0vEiHlcMQu8Y8IenntaACtddpT6W0wmXtWrnKcnKI7ME5DdgqhAD6SEWOEl1v2zDvkZDhFA9KnURwpfqg==", "cpu": [ "x64" ], - "dev": true, - "license": "MIT", + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ "win32" ], - "peer": true, "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", - "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, "license": "MIT", - "peer": true + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.64.6.tgz", - "integrity": "sha512-FkO19Fowv/OQeJZPVfdetJaI3/VpbZmBsnmAlR/rQ+b3QwfiGQiOpVegpSRH331kelvHTVw9hXYG3DwjAaRzyQ==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@manypkg/find-root": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-3.1.0.tgz", + "integrity": "sha512-BcSqCyKhBVZ5YkSzOiheMCV41kqAFptW6xGqYSTjkVTl9XQpr+pqHhwgGCOHQtjDCv7Is6EFyA14Sm5GVbVABA==", + "dev": true, + "dependencies": { + "@manypkg/tools": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@manypkg/get-packages": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-3.1.0.tgz", + "integrity": "sha512-0TbBVyvPrP7xGYBI/cP8UP+yl/z+HtbTttAD7FMAJgn/kXOTwh5/60TsqP9ZYY710forNfyV0N8P/IE/ujGZJg==", + "dev": true, + "dependencies": { + "@manypkg/find-root": "^3.1.0", + "@manypkg/tools": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@manypkg/tools": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@manypkg/tools/-/tools-2.1.2.tgz", + "integrity": "sha512-6QEf6yqFbETdwGITKq57aYoPfX/3K8XFNwsAlx0C1M7o8cb79sv1M3w+tWuWvIcSbNqrLF7OD7YpZMVVz335hQ==", + "dev": true, + "dependencies": { + "jju": "^1.4.0", + "tinyglobby": "^0.2.13", + "yaml": "^2.9.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", + "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", "cpu": [ - "arm" + "x64" ], "dev": true, "optional": true, "os": [ - "android" - ] + "linux" + ], + "engines": { + "node": "^22.20 || ^24.12 || >=25" + } }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.64.6.tgz", - "integrity": "sha512-si5/Etm6MphPc2xYHnk455Shls/hoMjTy3mhXge4OPmvCw7TwC4KP4fKokAlKLV4XaQvLvgSHfafPcblLMYYdQ==", + "node_modules/@next/env": { + "version": "16.3.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.3.6.tgz", + "integrity": "sha512-x9Vblze1EbtltQYnNH38xCPWU3TVfBd1eXqA3+w9+BTpedkkdNpAaltXlGQ/nsc1+E0mVTNrtcbX3GoO09zeLQ==", + "license": "MIT" + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "16.3.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.3.6.tgz", + "integrity": "sha512-E/7GEqaUkt8mk/T8v9lAnrhzR06kdq1ZBkC12F8tAMkdIadwNp3H1KqHynDHrpcTlGCUdq/qu6vUL2aYVyYBdw==", "cpu": [ "arm64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ - "android" - ] + "darwin" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.64.6.tgz", - "integrity": "sha512-PQCl3q7b0BgvVt72i2xrWM6I5KliwwVe4GpWW5QDGyUQawDS9aPZss/aGyFqBmxdRxlE8wDc9CaxiQ5DHRSp/Q==", + "node_modules/@next/swc-darwin-x64": { + "version": "16.3.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.3.6.tgz", + "integrity": "sha512-yBE893/nDWTlaiBD1p+qgt7NUen4U5R6FXyH0s67Npq1S3E0cVSef1WIXC2xBRgQvwAvJq6DnS6Y6PrY0cy4Ew==", "cpu": [ - "arm64" + "x64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.64.6.tgz", - "integrity": "sha512-l9DFl1Itb1YYdSrP1K3U8ih44AOHa/p+Q4WMMDfGvH5qVWp+ajfgS1DlYo4yCRh8wJ2ZJv0Fqccf+ULAmMFjmg==", + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "16.3.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.3.6.tgz", + "integrity": "sha512-KJDpjBqBPYlvkivmyrp+Qys6k/7ksbqGQvRVc6ZEGfR+cjQxx+nUkJaWmNZJsmoOrqYNbaXByF8wa0lBwDhB3Q==", "cpu": [ - "x64" + "arm64" ], - "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", "optional": true, "os": [ - "darwin" - ] + "linux" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.64.6.tgz", - "integrity": "sha512-bR4GR3205N9+od0+l5Dd9/iZTDpJkIe6d6Ydp2qbcQZJLmKBdYQQRp8gbWpbMt92twKJY66o1vK4NkoKQODIrA==", + "node_modules/@next/swc-linux-arm64-musl": { + "version": "16.3.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.3.6.tgz", + "integrity": "sha512-mqNg2K+hvWskSRb/QM+Ix412DvBsuSF0XV+frTSw5vmoucNnIlynFwKYew8D01bfATErMOM7Bujrf0BA5DRKFA==", "cpu": [ "arm64" ], - "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", "optional": true, "os": [ - "freebsd" - ] + "linux" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.64.6.tgz", - "integrity": "sha512-XTVNaDzcFl2TeBglvxdGgsCv9JGtAGRAoJENmGBR/XvDH2mA2K0IXc2aMfP0dR8mexSXSKifJ85FixoXX1wfTw==", + "node_modules/@next/swc-linux-x64-gnu": { + "version": "16.3.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.3.6.tgz", + "integrity": "sha512-nFncBNGAYouRHjRVaITs9beZRfhX4ssVwpnvPIAbkZVH6LtGoAVlH4bJ8Cnf9SOo9bsXgPFer/GdHtEE3JNOkw==", "cpu": [ "x64" ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.64.6.tgz", - "integrity": "sha512-qWc6qbc+25ugG9vqPR9P422KJBbVfZ05mjcMggoq8tsfWP+eRfC+/tiDdIlRF5VL2pDVZWN9zAhWsmu7R1+7Dw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.64.6.tgz", - "integrity": "sha512-V4Nwkp8844X/Xnww3PI1LYS0YPei8XQEVG70R+5MPZGO7AhYoun4hCN7Svs4U3wbQLZbwiz+9xRFhUZZdRl8Ww==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.64.6.tgz", - "integrity": "sha512-xb72A1aPaaIsp+a88VtRae/ovIEXislbUMyp7b9AQQU7ZkP2m/+ik6DW9TQcJyw5R8/RIailF9zExYwkjR++UA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.64.6.tgz", - "integrity": "sha512-pbcs1BVBwC43hZkjhjlF8Rx8m5G0KnhLZs9Azy/gqccP6UsNSzJr0hKGIAVPqzAH1O/NdPxxC9GVGb4msQg/aw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.64.6.tgz", - "integrity": "sha512-EKOC8os6Vsg487ZLKUqzLF99Jsmnq6tu7O7mAELakNpcA+8KadktFf/JYdRuHe/DzCUXmN38pUKu4XBcKlqGbQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.64.6.tgz", - "integrity": "sha512-v/SQ68GnSlr/HyjB79sNXesGDwkOPu9JjbHfmWaymCiM+nZsQ9TstG1KfA4MuEvTr2d3PoY8PhFxj9bt0e32JA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.64.6.tgz", - "integrity": "sha512-G3pmliMQ7r15zFFNwBlaT/xTdSLi4lfgI7CUrQueyKYheNVhrd8JrWCE6Ll8xf4AA1RZFqq+mNJYntiElsVOyA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.64.6.tgz", - "integrity": "sha512-XQTB/IPoB/wG6x/wu9uomAt8YH61IAr5iZTubMiad/lu88sotq2ocz9hJd556+Jz2kIkF7ZQZIsUuWE3OWqtcA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.64.6.tgz", - "integrity": "sha512-O5mpokth6+ydMuwiGtY8fIjvOBfH7u6SzmDNmZ3k6GK5C6iEAC2q2ZN/T5L9jYILx0IcCT0KnfMDihQ5yQFSBw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.64.6.tgz", - "integrity": "sha512-aIFxbAD9v3TvIaEDsKmukjcDg1JS4/tFXw8SHyQQgzOwzWCQ4cyDK7Ju1pQKqUXDFkEu/BZCFDCDATsKhQcB/Q==", - "cpu": [ - "riscv64" - ], - "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.64.6.tgz", - "integrity": "sha512-fuNo1UwBc6BxnHDOxxguQL/InhheMN3RJcJMb0b4xP8r5Q3CNCrJbVg0eCIFuJ4e/zAfjR2gYbOfbzO/G7CIyw==", - "cpu": [ - "s390x" ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">= 10" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.64.6.tgz", - "integrity": "sha512-05v6wFKDKJPZs9xlytVrrRu6IbRuoSvlH9xNwEOafXsKyjBFZPvAcZz2VIAB/M+lblYeKa9iOYC4RDVdfcAAaw==", + "node_modules/@next/swc-linux-x64-musl": { + "version": "16.3.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.3.6.tgz", + "integrity": "sha512-5Mf3cHDGR/Iz0ng2Bj3zUR3p5QS9YK3Hn2QiAfavFmyF48zwThAjpFoiTKNIcOHLYS4zEk+gzyJ/9deQ2ZB8yQ==", "cpu": [ "x64" ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.64.6.tgz", - "integrity": "sha512-wJXKcdMjvkc/FaavZXNP1yW4i0pfOmhZAIWRSLG2yJ0PB0TWi7dkLErhX0u0vptDcXKKO/m1Y/YTeuyvb2MXwg==", - "cpu": [ - "x64" + "libc": [ + "musl" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.64.6.tgz", - "integrity": "sha512-cwg7/h0ThvJwy8CBkmACdiHAxRWpbsCmIsjOt+Zzx0hTnIcSUmKYEV03bGg+hD827OnwUsbKh1ZZDW754xWyBA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.64.6.tgz", - "integrity": "sha512-T0RkYIJbdYXJEQFw+tMBO09KDFdgmNxkHsof3wWAABrvnx15Yh8RytmrgYy9+q9cBeBNZF66MMQZC+5nzEz6vg==", - "cpu": [ - "arm64" ], - "dev": true, - "optional": true, - "os": [ - "openharmony" - ] + "engines": { + "node": ">= 10" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.64.6.tgz", - "integrity": "sha512-KlfpmF1AAIdAWxt8QQNClbpLFlAUfYOzqIuJ7IXEStMHpFRuH78RG6FjqPb3Rqhh0K89F5npvG+/i3Fjl6IveQ==", + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "16.3.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.3.6.tgz", + "integrity": "sha512-0jkJy0C2kbrJWTk4YLa3xk80pVBpx8FCHJym7CnUfDAXe/FWv5qT7SQJbR0KuemyxaEDlEx5WT4VQJoTW+/9Qw==", "cpu": [ "arm64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.64.6.tgz", - "integrity": "sha512-MrTLjd7Jlt9/ZavJZYG61KQv9Iy9bzbY+yXy73Xvwoa2uP66wvDShkyBr5Chz/yrE6lbD/zHMuTmKQVNQqBApg==", - "cpu": [ - "ia32" ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": ">= 10" + } }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.64.6.tgz", - "integrity": "sha512-8fWDH1CkPI8GdBKAxzHDza7UmgficsKo2+MVbvUgOGhB0629w5sHMg3Qu5y7TZsrYKHHWpz8fla4KvoT7WsO3Q==", + "node_modules/@next/swc-win32-x64-msvc": { + "version": "16.3.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.3.6.tgz", + "integrity": "sha512-/YXjI1e5OXcZ7YpxRwgP/1jAV/SBKTzeVKqN2mk7mLpcICsyn3Gl5+dIfDTJp70M0ccMhyMMRso4v6mPDCGepg==", "cpu": [ "x64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.64.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.64.6.tgz", - "integrity": "sha512-9/c9PWdr5GCIHkkxiHM1HjNBQMVdftP4O8QTcoUAaRza2FSqJ4axbf8QAnBuE6BIGQDl71SaRPeDdDYid5ecTw==", - "cpu": [ - "x64" ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@scure/base": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", - "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">= 10" } }, - "node_modules/@scure/bip32": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", - "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", "devOptional": true, - "dependencies": { - "@noble/curves": "~1.9.0", - "@noble/hashes": "~1.8.0", - "@scure/base": "~1.2.5" + "engines": { + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" } }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "devOptional": true, + "node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "dependencies": { + "@noble/hashes": "1.8.0" + }, "engines": { "node": "^14.21.3 || >=16" }, @@ -1851,21 +2007,21 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@scure/bip39": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-2.4.0.tgz", - "integrity": "sha512-82dxFbZUYboyOf0AXiydsQrFQ5Q4h9mX+O2UkE91ROYmsc0BKMGZLwDmy96Jpa2+vrtoxomjUhy1RPIgH/r2nA==", - "dependencies": { - "@noble/hashes": "2.4.0" + "node_modules/@noble/curves/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "engines": { + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" } }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.4.0.tgz", - "integrity": "sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==", + "node_modules/@noble/hashes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.2.0.tgz", + "integrity": "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==", "engines": { "node": ">= 20.19.0" }, @@ -1873,1683 +2029,6317 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@stablelib/base64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/base64/-/base64-1.0.1.tgz", - "integrity": "sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==" - }, - "node_modules/@types/chai": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", - "dev": true, + "node_modules/@oxc-project/types": { + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.153.0.tgz", + "integrity": "sha512-jSNrRIyvPVLL5E1z/tS5zLAprosGz/FuI1PWwEOz59j3E4TTTzSpqKb/RDGqJhhW0QHYISGXxq582wGx6T11Tw==", + "devOptional": true, "license": "MIT", - "dependencies": { - "@types/deep-eql": "*", - "assertion-error": "^2.0.1" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "26.6.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.5.tgz", - "integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==", - "dev": true, - "dependencies": { - "undici-types": "~8.9.0" + "peer": true, + "funding": { + "url": "https://github.com/sponsors/oxc-project" } }, - "node_modules/@types/qrcode": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.6.tgz", - "integrity": "sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==", + "node_modules/@pnpm/deps.graph-sequencer": { + "version": "1100.0.1", + "resolved": "https://registry.npmjs.org/@pnpm/deps.graph-sequencer/-/deps.graph-sequencer-1100.0.1.tgz", + "integrity": "sha512-pOr5+q1fLYKwFN3LAJuGZEnfXDcQ73zqgDHMtGy+K+uIoUqyY+6MeDCWFwfu+4EFuq76I5EPFofoNAI+Bmmq4A==", "dev": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=22.13" + }, + "funding": { + "url": "https://opencollective.com/pnpm" } }, - "node_modules/@types/ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-67MQl+fpWKVTT1NYdnmo3U4sc/xPo/zQBncVnI74qmQa0z/b+1g6iYqNmGCPbxO+zz2aklb08a0oHfegiVd0/w==", - "dev": true, + "node_modules/@privy-io/node": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/@privy-io/node/-/node-0.35.0.tgz", + "integrity": "sha512-NhttAOmjgwtQzBoTmRCWzY5ZTTJV1WqPUmasyEbi9XfFd1LccpjHiNB+AUCeRXpY0FC5Bt/3Is7xJEmCX3LKNA==", "dependencies": { - "@types/node": "*" + "@hpke/chacha20poly1305": "^1.7.1", + "@hpke/core": "^1.7.5", + "@noble/curves": "^1.9.7", + "@noble/hashes": "^1.8.0", + "@scure/base": "^1.2.5", + "canonicalize": "^2.1.0", + "jose": "^6.1.0", + "lru-cache": "^11.1.0", + "svix": "^1.92.2" + }, + "peerDependencies": { + "@solana/kit": "^5.1.0", + "@x402/evm": "^2.3.0", + "@x402/fetch": "^2.3.0", + "@x402/svm": "^2.3.0", + "viem": "^2.44.2" + }, + "peerDependenciesMeta": { + "@solana/kit": { + "optional": true + }, + "@x402/evm": { + "optional": true + }, + "@x402/fetch": { + "optional": true + }, + "@x402/svm": { + "optional": true + }, + "viem": { + "optional": true + } } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.71.2.tgz", - "integrity": "sha512-K72/pvT7qpm8q3k8G5u93NCSN1RcLxX5h7Gw0bQpbMXviBHeY6Nx1WEwmk9wP+eKTSQ8ecxvcgt/ZX/rB938xQ==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.71.2", - "@typescript-eslint/type-utils": "8.71.2", - "@typescript-eslint/utils": "8.71.2", - "@typescript-eslint/visitor-keys": "8.71.2", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.5.0" - }, + "node_modules/@privy-io/node/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^14.21.3 || >=16" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.71.2", - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.12.tgz", - "integrity": "sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg==", - "dev": true, - "engines": { - "node": ">= 4" - } + "node_modules/@radix-ui/number": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.3.tgz", + "integrity": "sha512-Road2bidD0uu/1BGDOWNdPI06g0lIRy6IF9GZcIrDK2KGItfor8IQwQa+yM2ERgHM1MmHxaxpTzk0/Jp42lNfA==", + "license": "MIT" }, - "node_modules/@typescript-eslint/parser": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.71.2.tgz", - "integrity": "sha512-aTtmZjp/x3gsGHkDs04/1I8kNogBJkpQaeGaN0PfiG43NzDEmW2n+OP5im9wfsvyX0yP1UZWBrAGtDBfH9jEVw==", - "dev": true, + "node_modules/@radix-ui/primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.2.0.tgz", + "integrity": "sha512-KABY+VMIRPJL+Vyzv/335FEhXXD/xDv8BMb1kl48/aXJZMH0LtHCTx5ga5RnxaEP3nZHtmTLf1P9vanmFX46bw==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.3.1.tgz", + "integrity": "sha512-lCZ6sbGS/7WO0j84yx4srIgOf0MRJ/sZ13RonADXxvKBym8xrxNCq5f6DibGcr38sIlwPk8/52uYdXeOPsbEDw==", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.71.2", - "@typescript-eslint/types": "8.71.2", - "@typescript-eslint/typescript-estree": "8.71.2", - "@typescript-eslint/visitor-keys": "8.71.2", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-collapsible": "1.2.1", + "@radix-ui/react-collection": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-direction": "1.2.0", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-controllable-state": "1.3.0" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.71.2.tgz", - "integrity": "sha512-Pd68GsLVh5ZXlcEccFPdhSOvtHZ/2WU0XsA8zmXOS3F158lVlcTLhfQ6qvtL1RzbMie0Kp8xtbVwAg4nejKPHw==", - "dev": true, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.17.tgz", + "integrity": "sha512-67jjcVvxjXCCStnTW3Z+M7jmaFMuMR7M2JgpDzH4w7JSRrikmzhjfYgP/09ECb8n7whnsgh1ifJ+Ie96qEj+pQ==", + "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.71.2", - "@typescript-eslint/types": "^8.71.2", - "debug": "^4.4.3" + "@radix-ui/react-primitive": "2.2.0" }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.2.1.tgz", + "integrity": "sha512-fSzLb/qy1wuZSxQBcxpW0hNXYHDMWiIXDGyJGdA4+FSLknOWZsNRrTCUavxb4PI8b8lvHo/CysO6NVi5zLpo5g==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-controllable-state": "1.3.0", + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.71.2.tgz", - "integrity": "sha512-YF4wgg5iUX5Obywoac27B56FhozMNFhdJSbh11H5GBAwmBtfyRhmgTQqW9tRNNmHDvsZ2CX6UGzoz+YfYn2Leg==", - "dev": true, + "node_modules/@radix-ui/react-collection": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.2.0.tgz", + "integrity": "sha512-+yiQzqcc7Sy7/5s0jrMCjpPRFB3538VNrXPWdTLZhE/SCfgEws4aI6lHWN/vvcnyhHndROWBzqmqB4QBrITZ9Q==", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.71.2", - "@typescript-eslint/visitor-keys": "8.71.2" + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-use-layout-effect": "1.1.4" }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.71.2.tgz", - "integrity": "sha512-jz49TAWokm/7yWD9/o837nYax9DyALxIPOImdImvVzo6canBCZYzin8zJyqNR5k1j9K1DE0bVvr0XYB+99uAdg==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.5.tgz", + "integrity": "sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.3.0.tgz", + "integrity": "sha512-v5AYEocMISkbJ+1fTXzZpiFv7NRr3D2WiYbLIKf+FkmJ8VkP6d503eV2n34MFussHXY1pcoq3yfJiQH77dc4Mg==", + "license": "MIT", "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.71.2.tgz", - "integrity": "sha512-cC8UaalCViJkb3rH/xLIvidEwoFRtMZMUqDjjJMGEKaTFwYRHYBcoczlEGHuvkHEO8svRDrgZ0yQgOArFmwang==", - "dev": true, + "node_modules/@radix-ui/react-dialog": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.3.1.tgz", + "integrity": "sha512-+0E4qvVTwjAWra9sEhJ+9BTsvHE00zkUuNw1VGh7S+Gc13dfYk+S1PVQdchWDj+XYHhAai7Z7IpzXVDCGsDplg==", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.71.2", - "@typescript-eslint/typescript-estree": "8.71.2", - "@typescript-eslint/utils": "8.71.2", - "debug": "^4.4.3", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-dismissable-layer": "1.2.1", + "@radix-ui/react-focus-guards": "1.2.0", + "@radix-ui/react-focus-scope": "1.3.1", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-portal": "1.2.0", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-use-controllable-state": "1.3.0", + "@radix-ui/react-use-layout-effect": "1.1.4", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.7.2" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@typescript-eslint/types": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.71.2.tgz", - "integrity": "sha512-y5Ukl3oVp7e/VGxqIoEXoeb/Roj71PAJ4WG/N/RGj+eeDvKRLM15kGr9MijLbN0i03S52zxu31Z98E5gWChJKw==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node_modules/@radix-ui/react-direction": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.2.0.tgz", + "integrity": "sha512-FtRA52a/r+LKStFT+neLUm+8vSe7wbzkbQGGeU8ixFiwC8NU14Evoq9ATECqL3eGbcUzJR4fyfA4KkK/q6dfqg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.71.2.tgz", - "integrity": "sha512-DgNOEsl4pdYzwSL+N/Cl33tX1Hlw3FvId73LnKXfq7jnrF2viOEn7X+P7RBkkSWCVm92gnWd28GIC5vJuLREeA==", - "dev": true, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.2.1.tgz", + "integrity": "sha512-KIfDcAsx+oVylFZ4xryVKusJUrLLhTQmfnJW4kwk4Km5myvhHCrj04hnWWUC166+xD4DHdH8tQGylwYX1h6+Pg==", + "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.71.2", - "@typescript-eslint/tsconfig-utils": "8.71.2", - "@typescript-eslint/types": "8.71.2", - "@typescript-eslint/visitor-keys": "8.71.2", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-callback-ref": "1.1.5", + "@radix-ui/react-use-effect-event": "0.0.5" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "engines": { - "node": "18 || 20 || >=22" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", - "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", - "dev": true, - "dependencies": { - "balanced-match": "^4.0.2" + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.2.0.tgz", + "integrity": "sha512-MPm5R0iRGUDrDnPNxmLBkv+X7pN4XKzt+MbWJEuJQsH3NFH4omrbpXpucyYCCKTSt+na/ZxGhEWQrWTZ0285cA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "engines": { - "node": "20 || >=22" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", - "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", - "dev": true, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.3.1.tgz", + "integrity": "sha512-ugeMhbXt4y5S2T1GnIqbWDKEN962PDwnX1fN0eKOOgf5f63Dh2mn8F1FUySlgW0iF6GiVsRF32DzuDIWTUyQJg==", + "license": "MIT", "dependencies": { - "brace-expansion": "^5.0.8" + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-callback-ref": "1.1.5" }, - "engines": { - "node": "18 || 20 || >=22" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@typescript-eslint/utils": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.71.2.tgz", - "integrity": "sha512-RyKa1G1M9rKHDhrk+HJtiF1MvLD5Ux2JW3TSkzw+02pRALdpJb+QzG1Y5em+LvCgzGwgg8H7mBRFKljNz7ImPw==", - "dev": true, + "node_modules/@radix-ui/react-id": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.4.tgz", + "integrity": "sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA==", + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.71.2", - "@typescript-eslint/types": "8.71.2", - "@typescript-eslint/typescript-estree": "8.71.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.71.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.71.2.tgz", - "integrity": "sha512-zozlN0UA32bSG2zkKAgQyRYSbEISVoyU6vvkKYo2aSny74D8Jh4e+POkJ6Lk0dlezZi5x7TtD+88Xb06IB8nhg==", - "dev": true, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.4.1.tgz", + "integrity": "sha512-XPPZjkeyCSMNNvt0FyDv/PUauG7Ow4GwHQ/XZSwW36F/TS7rR4HFTsXH8ewLnXTOLn3x96/pmTPNQIVoTX/86g==", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.71.2", - "eslint-visitor-keys": "^5.0.0" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-collection": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-direction": "1.2.0", + "@radix-ui/react-dismissable-layer": "1.2.1", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-use-callback-ref": "1.1.5", + "@radix-ui/react-use-controllable-state": "1.3.0", + "@radix-ui/react-use-layout-effect": "1.1.4", + "@radix-ui/react-use-previous": "1.1.4", + "@radix-ui/react-visually-hidden": "1.2.13" }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" + "node_modules/@radix-ui/react-popover": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.3.1.tgz", + "integrity": "sha512-ZNxvXRx5W2Wos4fXCXb5lpdqN0Z5chf+mStOUOTr4ik7d+62MRvoe9rzCA/eGNg36lxXqSrKEKmwuZEcUrIstw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-dismissable-layer": "1.2.1", + "@radix-ui/react-focus-guards": "1.2.0", + "@radix-ui/react-focus-scope": "1.3.1", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-popper": "1.4.0", + "@radix-ui/react-portal": "1.2.0", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-use-controllable-state": "1.3.0", + "@radix-ui/react-use-layout-effect": "1.1.4", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.7.2" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@vitest/mocker": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-5.0.4.tgz", - "integrity": "sha512-tqAlrYWce4iUxhr3ncNohejtCTOcHeE8XWrSNZY3OhPoDn01yeGv+gnaBy64ATp7o6pb03eIbBAjzmibpc9vIQ==", - "dev": true, + "node_modules/@radix-ui/react-popper": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.4.0.tgz", + "integrity": "sha512-yCWRvLeGv9Pz3+efwHqGPp70mZ56r3kfIgQVF56Oj2aAa4uP/Tb+IE59wNcc+758rctqbCKx4LbK8II/r7Bn0Q==", "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "0.3.31", - "@vitest/spy": "5.0.4", - "estree-walker": "^3.0.3", - "magic-string": "^1.4.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.17", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-callback-ref": "1.1.5", + "@radix-ui/react-use-layout-effect": "1.1.4", + "@radix-ui/react-use-rect": "1.1.4", + "@radix-ui/react-use-size": "1.1.5", + "@radix-ui/rect": "1.1.3" }, "peerDependencies": { - "msw": "^2.4.9 || ^3.0.0", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { - "msw": { + "@types/react": { "optional": true }, - "vite": { + "@types/react-dom": { "optional": true } } }, - "node_modules/@vitest/mocker/node_modules/magic-string": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.4.3.tgz", - "integrity": "sha512-z12OxmaPGE0F4xlpGdjuAUckipLpQlTAuAmyGhNoD7ODpYUzvDfvtxUbjM/jwznyP178oju/KDdyi220wNJ0RQ==", - "dev": true, + "node_modules/@radix-ui/react-portal": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.2.0.tgz", + "integrity": "sha512-StX7xXnaRU41VvFtMm9zlhVGz8XF6GmWWTXftkQaY+tqVkbs/R9UmAp5mLzHHapk5hM9RMZQvO/3usyIP/g42g==", "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.6.0" + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@vitest/spy": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-5.0.4.tgz", - "integrity": "sha512-MZKk/gSkm2q+ICobMxCpH1mA+cCAWm8WV7UhxlqGjq/sJ3AGc1BqFOs5CRVXxH78wQtme9q/NAAgBquj4AcyMw==", - "dev": true, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.11.tgz", + "integrity": "sha512-Z7/atlkab36Z8hm+V8zYc79r0W+tiOB1o0tun1By94JyadkekLQmtEAnBSP9XKXBNQsStoStS4+gX10JpS5akA==", "license": "MIT", - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/abitype": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.2.3.tgz", - "integrity": "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==", - "devOptional": true, - "funding": { - "url": "https://github.com/sponsors/wevm" + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3.22.0 || ^4.0.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { - "typescript": { + "@types/react": { "optional": true }, - "zod": { + "@types/react-dom": { "optional": true } } }, - "node_modules/acorn": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.19.0.tgz", - "integrity": "sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" + "node_modules/@radix-ui/react-primitive": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.2.0.tgz", + "integrity": "sha512-HCTSPMNqv55Qk0IX4geJbpyXazmqulcimwuyjxTkKi29v+QZbG2Zho9BnbBq4YS2PF+KlNb2CXoLz66uUmblkg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.5.0" }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/ajv": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", - "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", - "dev": true, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.2.1.tgz", + "integrity": "sha512-UwraORzVUeEPMclhO1p0vz0qI+TbdDLO9i+FiOqhJyHKwdpCRCck9yVEscUnAMIzCiuNoQa8D4A9bIpOPXGt6Q==", + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-collection": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-direction": "1.2.0", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-callback-ref": "1.1.5", + "@radix-ui/react-use-controllable-state": "1.3.0", + "@radix-ui/react-use-is-hydrated": "0.1.3", + "@radix-ui/react-use-layout-effect": "1.1.4" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.4.0.tgz", + "integrity": "sha512-CFrLqHNejWq5FhKAcj9V/WPGRsol76HBQto81NdOBVFEOqIEkJkKIJt0Z824A/9hHLCtoiR/Kw3euRgzXP2pxg==", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@radix-ui/number": "1.1.3", + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-direction": "1.2.0", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-use-callback-ref": "1.1.5", + "@radix-ui/react-use-layout-effect": "1.1.4" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, + "node_modules/@radix-ui/react-slot": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.5.0.tgz", + "integrity": "sha512-tyYd9ddPXAysAbdbD9eYxgwpCSv6f3PncqVSNKQFSR5lcJVLz3cb/pANDoYrLiHBpXv7skortyUgGUWsYuPPFQ==", "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.5" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.21", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", - "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", - "dev": true, + "node_modules/@radix-ui/react-tabs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.2.1.tgz", + "integrity": "sha512-hRoJlode+hg5ZNlR+3tkfkUliIybdTpD5lkAvHQ9yaXseGf7XVO9Ib2GPEIOuaJJbo7YWYbNpDDRfo8Dhf6/xA==", + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-direction": "1.2.0", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-roving-focus": "1.2.1", + "@radix-ui/react-use-controllable-state": "1.3.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/bundle-require": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", - "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==", - "dev": true, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.5.tgz", + "integrity": "sha512-Y5GBf4NKeADoXI1geiMlMuMoURT3k9MizzzKhGb/m55H94aGigZ01PIpkvsO6lML13BA6XYAXSJ6gza7vTn5nw==", + "license": "MIT", "dependencies": { - "load-tsconfig": "^0.2.3" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { - "esbuild": ">=0.18" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.3.0.tgz", + "integrity": "sha512-TAcBI7bw2ljYCbv4+zuTSd6zICu8pRt6SDN2vJ/Z06K2MXh6I9WYFe/A9ovlFDtR5HVHGm5iDxDoABm/++dbKg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-use-effect-event": "0.0.5", + "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.5.tgz", + "integrity": "sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" + "node_modules/@radix-ui/react-use-is-hydrated": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.3.tgz", + "integrity": "sha512-umO/aJ+82CpOnhDZUTbILCQf7kU/g0iv+oGs/Q8jw7IkhWBzaEP4sA268PhFAJTFetbwp3ICc6ktpI4TqtxcIw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/canonicalize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-2.1.0.tgz", - "integrity": "sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ==", - "bin": { - "canonicalize": "bin/canonicalize.js" + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.4.tgz", + "integrity": "sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/chai": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.3.0.tgz", - "integrity": "sha512-XWAtwJ6OHO+tj0EKCs0Y2UamnyOxseZWltU4x2U2wh8g4AigdjwvtUjvLP2tqkA/avxHEtzxNaqGq/YGNwckKg==", - "dev": true, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.4.tgz", + "integrity": "sha512-XoSLhbRbqxFtgJoi2fNHA3C6pDlY34x508vUpUGoFZfvePfHXHbE1lC4FYFMnJWgiCRroSTw6fOsXQoVS9RwZg==", "license": "MIT", - "engines": { - "node": ">=18" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.4.tgz", + "integrity": "sha512-cSOCh6JlkmfjLyNcLiu2nB4v+nm+dkZ+Q5KHWk/soo4U7ZLiEQFKHK9/YmtBHjfCEaU43IBKQOc4/uJmCaiCTQ==", + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@radix-ui/rect": "1.1.3" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.5.tgz", + "integrity": "sha512-V1McDQkMGzgivwqdu7u96APs7oi0Jvj9LTzgq3WWrDZqxWdAqU9yZnZQqk5OizGFR8badUQwZsrlao7MOlWYOA==", + "license": "MIT", "dependencies": { - "readdirp": "^4.0.1" + "@radix-ui/react-use-layout-effect": "1.1.4" }, - "engines": { - "node": ">= 14.16.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.13.tgz", + "integrity": "sha512-feijiN1oPk4rck4u9Dm9tsU4mT6Wp9oeEEhaz1WUEs1VuqLf8xzsFG+Qk+uWq6TnMH9O+WRECRg0NftyP9E4Fw==", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "@radix-ui/react-primitive": "2.2.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { + "node_modules/@radix-ui/rect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.3.tgz", + "integrity": "sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw==", + "license": "MIT" + }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.13.tgz", + "integrity": "sha512-Vu/NICrgdRvUOeaJZIyB2FP63s6fO/4ud5l8dXmxDx9yDyn+mN0y+gsvsVviSli+T361Aqo0h46EuMoobrwawA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.13.tgz", + "integrity": "sha512-6LEoIrGy5vvCd2boNnv2soPSUZj/PRvhp8R/t9KlX+mIZxThIE/ZqxrGXxmuNX0FuvQFvLdZr7S4HrYpYBVhEQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.13.tgz", + "integrity": "sha512-CaJSRzlQ6Q+zkDMVA9OkVxBjVoPRCDEE3v0FSJ9kIQBgRjFApA3Si4ijhbNVUji7ZJt+PfO0e46qy4nPInHUPA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.13.tgz", + "integrity": "sha512-e4r340I5hxSzJkD3YJBxgzq/rJ3wwxwdLLb2FPt1Zpyem20nrQPT11DDEEkazwxaHumH8wpglsp/Ozgj/wT6mw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.13.tgz", + "integrity": "sha512-hoBWDZ4/K/mJKVMbsgUd1jfpA2DiOrJ54mpegObU9TBHBBrtX4FLIXJJQRDPZ/2Dn91GvPob+Z2hwKJzf4E5SQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.13.tgz", + "integrity": "sha512-oF9fZu3vTWnTiVAkDFxU9PJLt1nh20K9RRpuHsR7ZnE2L7XookBbDBVLojCVSLGbvtSlxeUNnjAj6DbNsKyzbg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.13.tgz", + "integrity": "sha512-DTpb/+jMiqWMPgphn4ksW1zW+XLJ6dJJ9FMvnIk9I291LhCctMPhMYJrP5t9p6C9qa3KXadDdUEZHBaPh3kNxQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.13.tgz", + "integrity": "sha512-xU+Kvv9N2A3SY35zFh1FWWNjxbadE/BKeqnkXe7vScU4GZsw757BlVmDLITZEq8DPpk6m7uoDYkK7P+x/uU5Ow==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.13.tgz", + "integrity": "sha512-XMk/hnhh25oQ756Lclb1Q11h4ll0xC0Esa5w4Vzp+mAE2S3AGJgeM0SonrIgY8fHhjarb6hcoTuwoFG0VVP2ig==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.13.tgz", + "integrity": "sha512-U1BoTHYmlywE2n3HUWjzZ+8EQsKr+OwpxYuDWaubx42tUL8QSL7nOqRz/NVHanibbFP3M1Rxuprz/wNcbMKjqw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.13.tgz", + "integrity": "sha512-J4cm80Pc6wEwV5AZ42o62sIQgDk+Y7R2s646jIwuvO+4V46QB58N4vVuMPWCBaNgursXLpmUWJV//WQAkPvHBQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.13.tgz", + "integrity": "sha512-W0euZS40U4V6JkmEnVCIX9mcsL6cbXQ4X8c2w+MMOIjFg68TXUW+u3RT+2e1t1pv9mg/EP3pDtK3POXdQ7Rxyw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.13.tgz", + "integrity": "sha512-do/AF/4n9MRshia3a5aXoy8xM2c6mgfT6D7H/dY6my5z+hfCIR4ab7mk4IRj++nsEQpKy39kd0DQnDq+r692tw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.13.tgz", + "integrity": "sha512-6FtUf2cJZobutJdxnGYX8z0vtbgqU0b2v8vfBhkXb9wp2MppMFtkunE+IaOntyi01rkIQoPW2GHABtfzsC0BRQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.13.tgz", + "integrity": "sha512-UKhFaZTeTcbKrb3iU82m17jVcPEAoqDkCN5MBqgPyZSwp/cQmib21crTS0DdH7T1B7wZRWEI89YQAOJMet5yhg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "devOptional": true, + "license": "MIT", + "peer": true + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.64.6.tgz", + "integrity": "sha512-FkO19Fowv/OQeJZPVfdetJaI3/VpbZmBsnmAlR/rQ+b3QwfiGQiOpVegpSRH331kelvHTVw9hXYG3DwjAaRzyQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.64.6.tgz", + "integrity": "sha512-si5/Etm6MphPc2xYHnk455Shls/hoMjTy3mhXge4OPmvCw7TwC4KP4fKokAlKLV4XaQvLvgSHfafPcblLMYYdQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.64.6.tgz", + "integrity": "sha512-PQCl3q7b0BgvVt72i2xrWM6I5KliwwVe4GpWW5QDGyUQawDS9aPZss/aGyFqBmxdRxlE8wDc9CaxiQ5DHRSp/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.64.6.tgz", + "integrity": "sha512-l9DFl1Itb1YYdSrP1K3U8ih44AOHa/p+Q4WMMDfGvH5qVWp+ajfgS1DlYo4yCRh8wJ2ZJv0Fqccf+ULAmMFjmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.64.6.tgz", + "integrity": "sha512-bR4GR3205N9+od0+l5Dd9/iZTDpJkIe6d6Ydp2qbcQZJLmKBdYQQRp8gbWpbMt92twKJY66o1vK4NkoKQODIrA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.64.6.tgz", + "integrity": "sha512-XTVNaDzcFl2TeBglvxdGgsCv9JGtAGRAoJENmGBR/XvDH2mA2K0IXc2aMfP0dR8mexSXSKifJ85FixoXX1wfTw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.64.6.tgz", + "integrity": "sha512-qWc6qbc+25ugG9vqPR9P422KJBbVfZ05mjcMggoq8tsfWP+eRfC+/tiDdIlRF5VL2pDVZWN9zAhWsmu7R1+7Dw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.64.6.tgz", + "integrity": "sha512-V4Nwkp8844X/Xnww3PI1LYS0YPei8XQEVG70R+5MPZGO7AhYoun4hCN7Svs4U3wbQLZbwiz+9xRFhUZZdRl8Ww==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.64.6.tgz", + "integrity": "sha512-xb72A1aPaaIsp+a88VtRae/ovIEXislbUMyp7b9AQQU7ZkP2m/+ik6DW9TQcJyw5R8/RIailF9zExYwkjR++UA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.64.6.tgz", + "integrity": "sha512-pbcs1BVBwC43hZkjhjlF8Rx8m5G0KnhLZs9Azy/gqccP6UsNSzJr0hKGIAVPqzAH1O/NdPxxC9GVGb4msQg/aw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.64.6.tgz", + "integrity": "sha512-EKOC8os6Vsg487ZLKUqzLF99Jsmnq6tu7O7mAELakNpcA+8KadktFf/JYdRuHe/DzCUXmN38pUKu4XBcKlqGbQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.64.6.tgz", + "integrity": "sha512-v/SQ68GnSlr/HyjB79sNXesGDwkOPu9JjbHfmWaymCiM+nZsQ9TstG1KfA4MuEvTr2d3PoY8PhFxj9bt0e32JA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.64.6.tgz", + "integrity": "sha512-G3pmliMQ7r15zFFNwBlaT/xTdSLi4lfgI7CUrQueyKYheNVhrd8JrWCE6Ll8xf4AA1RZFqq+mNJYntiElsVOyA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.64.6.tgz", + "integrity": "sha512-XQTB/IPoB/wG6x/wu9uomAt8YH61IAr5iZTubMiad/lu88sotq2ocz9hJd556+Jz2kIkF7ZQZIsUuWE3OWqtcA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.64.6.tgz", + "integrity": "sha512-O5mpokth6+ydMuwiGtY8fIjvOBfH7u6SzmDNmZ3k6GK5C6iEAC2q2ZN/T5L9jYILx0IcCT0KnfMDihQ5yQFSBw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.64.6.tgz", + "integrity": "sha512-aIFxbAD9v3TvIaEDsKmukjcDg1JS4/tFXw8SHyQQgzOwzWCQ4cyDK7Ju1pQKqUXDFkEu/BZCFDCDATsKhQcB/Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.64.6.tgz", + "integrity": "sha512-fuNo1UwBc6BxnHDOxxguQL/InhheMN3RJcJMb0b4xP8r5Q3CNCrJbVg0eCIFuJ4e/zAfjR2gYbOfbzO/G7CIyw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.64.6.tgz", + "integrity": "sha512-05v6wFKDKJPZs9xlytVrrRu6IbRuoSvlH9xNwEOafXsKyjBFZPvAcZz2VIAB/M+lblYeKa9iOYC4RDVdfcAAaw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.64.6.tgz", + "integrity": "sha512-wJXKcdMjvkc/FaavZXNP1yW4i0pfOmhZAIWRSLG2yJ0PB0TWi7dkLErhX0u0vptDcXKKO/m1Y/YTeuyvb2MXwg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.64.6.tgz", + "integrity": "sha512-cwg7/h0ThvJwy8CBkmACdiHAxRWpbsCmIsjOt+Zzx0hTnIcSUmKYEV03bGg+hD827OnwUsbKh1ZZDW754xWyBA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.64.6.tgz", + "integrity": "sha512-T0RkYIJbdYXJEQFw+tMBO09KDFdgmNxkHsof3wWAABrvnx15Yh8RytmrgYy9+q9cBeBNZF66MMQZC+5nzEz6vg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.64.6.tgz", + "integrity": "sha512-KlfpmF1AAIdAWxt8QQNClbpLFlAUfYOzqIuJ7IXEStMHpFRuH78RG6FjqPb3Rqhh0K89F5npvG+/i3Fjl6IveQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.64.6.tgz", + "integrity": "sha512-MrTLjd7Jlt9/ZavJZYG61KQv9Iy9bzbY+yXy73Xvwoa2uP66wvDShkyBr5Chz/yrE6lbD/zHMuTmKQVNQqBApg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.64.6.tgz", + "integrity": "sha512-8fWDH1CkPI8GdBKAxzHDza7UmgficsKo2+MVbvUgOGhB0629w5sHMg3Qu5y7TZsrYKHHWpz8fla4KvoT7WsO3Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.64.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.64.6.tgz", + "integrity": "sha512-9/c9PWdr5GCIHkkxiHM1HjNBQMVdftP4O8QTcoUAaRza2FSqJ4axbf8QAnBuE6BIGQDl71SaRPeDdDYid5ecTw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "devOptional": true, + "dependencies": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "devOptional": true, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-2.4.0.tgz", + "integrity": "sha512-82dxFbZUYboyOf0AXiydsQrFQ5Q4h9mX+O2UkE91ROYmsc0BKMGZLwDmy96Jpa2+vrtoxomjUhy1RPIgH/r2nA==", + "dependencies": { + "@noble/hashes": "2.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.4.0.tgz", + "integrity": "sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@shikijs/core": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.5.0.tgz", + "integrity": "sha512-6CIgwq+bt2JZ3OSjb/nBkkwEf/CfpHcbam+Mg5Pllco7HAGRQ2/EFhZrrJtbyNTgKwknfVS+llsXGygiDGwJWw==", + "license": "MIT", + "dependencies": { + "@shikijs/primitive": "4.5.0", + "@shikijs/types": "4.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5", + "hast-util-to-html": "^9.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.5.0.tgz", + "integrity": "sha512-Ed6UdEj84LyYkwnxM5CvSMWAD+id9ExTYri0/+x41U9zrgNifPSS9lZm0JqBP0VfYI8yr8tY5nbNq9+p9R0kFA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.6" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.5.0.tgz", + "integrity": "sha512-dKVmbJecVdB9recl8a/CU4jdpNXyjJQrIcesIkpS70s5HS02ohpnCSpMUbotPnEUzbAcLQ+S4hwZYbkBBiTcJw==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.5.0", + "@shikijs/vscode-textmate": "^10.0.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/langs": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.5.0.tgz", + "integrity": "sha512-wwBTqwduXSz0X4v9Qa2EWeFaYJEw1clCncWjoRNQRbVDu3SPRTRWucnouYapKj3b8Q+sk/41Vbc4B5c8nuYzLA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.5.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/primitive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.5.0.tgz", + "integrity": "sha512-UM7ShlA8oz0OWxLLO8BmO9Ip6fVqdkt8yF0EH7nOCqHfrx1eEAzF0ZUVK7L+I8NEgeu1PEWSRlxaiPPeCb4iDg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/themes": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.5.0.tgz", + "integrity": "sha512-zGb87H3UBbpuI4yoh5UguB1XbU+2BDU3kflM7UfZ+Cy2hWo9lBtqjSVK20gmLY6ukYl040hAypGXMgud9vul8Q==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.5.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/types": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.5.0.tgz", + "integrity": "sha512-drtPrtD8N0DENyD2cyt6Ajy+IWsiCLgMxODwLTpvH1UsN6a9jf90tNTPjqwHvA+0Lzu9e0txk8DjfqH1p9UJRw==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, + "node_modules/@stablelib/base64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/base64/-/base64-1.0.1.tgz", + "integrity": "sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==" + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.5.23", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.23.tgz", + "integrity": "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.3.tgz", + "integrity": "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.24.1", + "jiti": "^2.7.0", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.3.3" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.3.tgz", + "integrity": "sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.3.3", + "@tailwindcss/oxide-darwin-arm64": "4.3.3", + "@tailwindcss/oxide-darwin-x64": "4.3.3", + "@tailwindcss/oxide-freebsd-x64": "4.3.3", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.3", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.3", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.3", + "@tailwindcss/oxide-linux-x64-musl": "4.3.3", + "@tailwindcss/oxide-wasm32-wasi": "4.3.3", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.3", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.3" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.3.tgz", + "integrity": "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.3.tgz", + "integrity": "sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.3.tgz", + "integrity": "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.3.tgz", + "integrity": "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.3.tgz", + "integrity": "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.3.tgz", + "integrity": "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.3.tgz", + "integrity": "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.3.tgz", + "integrity": "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.3.tgz", + "integrity": "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.3.tgz", + "integrity": "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.11.1", + "@emnapi/runtime": "^1.11.1", + "@emnapi/wasi-threads": "^1.2.2", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.2", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.3.tgz", + "integrity": "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.3.tgz", + "integrity": "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.3.3.tgz", + "integrity": "sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.3.3", + "@tailwindcss/oxide": "4.3.3", + "postcss": "^8.5.16", + "tailwindcss": "4.3.3" + } + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz", + "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.14.tgz", + "integrity": "sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "26.6.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.5.tgz", + "integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==", + "devOptional": true, + "dependencies": { + "undici-types": "~8.9.0" + } + }, + "node_modules/@types/qrcode": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.6.tgz", + "integrity": "sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/react": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.3.0.tgz", + "integrity": "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.3.0.tgz", + "integrity": "sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.3.0" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-67MQl+fpWKVTT1NYdnmo3U4sc/xPo/zQBncVnI74qmQa0z/b+1g6iYqNmGCPbxO+zz2aklb08a0oHfegiVd0/w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.71.2.tgz", + "integrity": "sha512-K72/pvT7qpm8q3k8G5u93NCSN1RcLxX5h7Gw0bQpbMXviBHeY6Nx1WEwmk9wP+eKTSQ8ecxvcgt/ZX/rB938xQ==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.71.2", + "@typescript-eslint/type-utils": "8.71.2", + "@typescript-eslint/utils": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.71.2", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.12.tgz", + "integrity": "sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.71.2.tgz", + "integrity": "sha512-aTtmZjp/x3gsGHkDs04/1I8kNogBJkpQaeGaN0PfiG43NzDEmW2n+OP5im9wfsvyX0yP1UZWBrAGtDBfH9jEVw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.71.2", + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/typescript-estree": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.71.2.tgz", + "integrity": "sha512-Pd68GsLVh5ZXlcEccFPdhSOvtHZ/2WU0XsA8zmXOS3F158lVlcTLhfQ6qvtL1RzbMie0Kp8xtbVwAg4nejKPHw==", + "dev": true, + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.71.2", + "@typescript-eslint/types": "^8.71.2", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.71.2.tgz", + "integrity": "sha512-YF4wgg5iUX5Obywoac27B56FhozMNFhdJSbh11H5GBAwmBtfyRhmgTQqW9tRNNmHDvsZ2CX6UGzoz+YfYn2Leg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.71.2.tgz", + "integrity": "sha512-jz49TAWokm/7yWD9/o837nYax9DyALxIPOImdImvVzo6canBCZYzin8zJyqNR5k1j9K1DE0bVvr0XYB+99uAdg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.71.2.tgz", + "integrity": "sha512-cC8UaalCViJkb3rH/xLIvidEwoFRtMZMUqDjjJMGEKaTFwYRHYBcoczlEGHuvkHEO8svRDrgZ0yQgOArFmwang==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/typescript-estree": "8.71.2", + "@typescript-eslint/utils": "8.71.2", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.71.2.tgz", + "integrity": "sha512-y5Ukl3oVp7e/VGxqIoEXoeb/Roj71PAJ4WG/N/RGj+eeDvKRLM15kGr9MijLbN0i03S52zxu31Z98E5gWChJKw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.71.2.tgz", + "integrity": "sha512-DgNOEsl4pdYzwSL+N/Cl33tX1Hlw3FvId73LnKXfq7jnrF2viOEn7X+P7RBkkSWCVm92gnWd28GIC5vJuLREeA==", + "dev": true, + "dependencies": { + "@typescript-eslint/project-service": "8.71.2", + "@typescript-eslint/tsconfig-utils": "8.71.2", + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", + "dev": true, + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.71.2.tgz", + "integrity": "sha512-RyKa1G1M9rKHDhrk+HJtiF1MvLD5Ux2JW3TSkzw+02pRALdpJb+QzG1Y5em+LvCgzGwgg8H7mBRFKljNz7ImPw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.71.2", + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/typescript-estree": "8.71.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.71.2.tgz", + "integrity": "sha512-zozlN0UA32bSG2zkKAgQyRYSbEISVoyU6vvkKYo2aSny74D8Jh4e+POkJ6Lk0dlezZi5x7TtD+88Xb06IB8nhg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.71.2", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.4.0.tgz", + "integrity": "sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==", + "license": "ISC" + }, + "node_modules/@vitest/mocker": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-5.0.4.tgz", + "integrity": "sha512-tqAlrYWce4iUxhr3ncNohejtCTOcHeE8XWrSNZY3OhPoDn01yeGv+gnaBy64ATp7o6pb03eIbBAjzmibpc9vIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.31", + "@vitest/spy": "5.0.4", + "estree-walker": "^3.0.3", + "magic-string": "^1.4.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9 || ^3.0.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/mocker/node_modules/magic-string": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.4.3.tgz", + "integrity": "sha512-z12OxmaPGE0F4xlpGdjuAUckipLpQlTAuAmyGhNoD7ODpYUzvDfvtxUbjM/jwznyP178oju/KDdyi220wNJ0RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.6.0" + } + }, + "node_modules/@vitest/spy": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-5.0.4.tgz", + "integrity": "sha512-MZKk/gSkm2q+ICobMxCpH1mA+cCAWm8WV7UhxlqGjq/sJ3AGc1BqFOs5CRVXxH78wQtme9q/NAAgBquj4AcyMw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@yuku-analyzer/binding-android-arm64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-analyzer/binding-android-arm64/-/binding-android-arm64-0.10.2.tgz", + "integrity": "sha512-xt4Vy3RTBw1NfszBlf4A0Rr6ZjA/th2Pj9XlWFLQHW9A1qOCtxNCoIWSzn/INtnZLMB4jO2gWdEtSaHUtK73wA==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-analyzer runs on yuku-core since 0.14", + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@yuku-analyzer/binding-darwin-arm64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-analyzer/binding-darwin-arm64/-/binding-darwin-arm64-0.10.2.tgz", + "integrity": "sha512-ftokSqvYXZxfmA/bfIbp8c1BJ8QxNax371kUOQNFyvR5hmtKqQyTqSKtMk+WaixHM3w4tKj/JdyY+ud1bGamXA==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-analyzer runs on yuku-core since 0.14", + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@yuku-analyzer/binding-darwin-x64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-analyzer/binding-darwin-x64/-/binding-darwin-x64-0.10.2.tgz", + "integrity": "sha512-yUrmmhmF5R4Xmbfo8gUxJKr3YbvbLcE2JvLhDLzFJkMN29/fGm6K3dZX6YpNecfgBDnQ+VywGp8K9xjRaBFZ3Q==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-analyzer runs on yuku-core since 0.14", + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@yuku-analyzer/binding-freebsd-x64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-analyzer/binding-freebsd-x64/-/binding-freebsd-x64-0.10.2.tgz", + "integrity": "sha512-cy9+KvVoK5Xad3Vs5pLwAeZf3JC/1y0XJElgv1q6g7W7g/n52FRjedpYmQiJeMZdnhJiAshq7Vz/Xj3jC5Ns2Q==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-analyzer runs on yuku-core since 0.14", + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@yuku-analyzer/binding-linux-arm-gnu": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-analyzer/binding-linux-arm-gnu/-/binding-linux-arm-gnu-0.10.2.tgz", + "integrity": "sha512-AgVZ6VCV2XP4yHCwyv78KLV76gcu2neiEF2+RBTPQN7sqYY+bLvMxphGPmfG+9qk5Uf1PJAhZYIUnMGVbbRCZw==", + "cpu": [ + "arm" + ], + "deprecated": "yuku-analyzer runs on yuku-core since 0.14", + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-analyzer/binding-linux-arm-musl": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-analyzer/binding-linux-arm-musl/-/binding-linux-arm-musl-0.10.2.tgz", + "integrity": "sha512-5qAj2GjoSN6+HuH75+g5r40CFhWmMvH0K8VKWmPfQyOgA/LonoDMr5H5O5feJwzdnfdCytPDAh1RAf7/SSg7dg==", + "cpu": [ + "arm" + ], + "deprecated": "yuku-analyzer runs on yuku-core since 0.14", + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-analyzer/binding-linux-arm64-gnu": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-analyzer/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.10.2.tgz", + "integrity": "sha512-eJvQ4Ja5oPf/HOjmBkCLYyhOHUkL7U+iMAN8sX44x8exBBpPRyqnhEgTsuU73HzxPLrGPdRhybFnAE63Omib/Q==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-analyzer runs on yuku-core since 0.14", + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-analyzer/binding-linux-arm64-musl": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-analyzer/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.10.2.tgz", + "integrity": "sha512-TppF2j194mOQ/kBXvNr9u5TYO+eR9r8ieg4lTIEyJIVYHAR9GWeB0oFHLcJiLXVa3qUJGzE4bmzSntCW5ylA7A==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-analyzer runs on yuku-core since 0.14", + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-analyzer/binding-linux-x64-gnu": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-analyzer/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.10.2.tgz", + "integrity": "sha512-03xu6ocJuwhm1a/JKmrHiaJUO1Oj86rABsm4FAl8AvfewfW/9idIUmPiFxZfb6RfiIONegebsTGJhFx0NbBNpA==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-analyzer runs on yuku-core since 0.14", + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-analyzer/binding-linux-x64-musl": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-analyzer/binding-linux-x64-musl/-/binding-linux-x64-musl-0.10.2.tgz", + "integrity": "sha512-f7W2sAWWQN8x8YB0RRxIche7mLImH7lDgzUy9+B69cM2I6VFJ4a5+0pgAuMLROPOqimaxFPdXqLdDE/vpgGltg==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-analyzer runs on yuku-core since 0.14", + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@yuku-analyzer/binding-win32-arm64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-analyzer/binding-win32-arm64/-/binding-win32-arm64-0.10.2.tgz", + "integrity": "sha512-f534qNc5YaJI29e1oryxEnxPkp7WCYJ1j7ChSec8pQNlYqTm8Tao7hij7NxRF+9BuxzeZCZ+WsbaAfLlklR0Eg==", + "cpu": [ + "arm64" + ], + "deprecated": "yuku-analyzer runs on yuku-core since 0.14", + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@yuku-analyzer/binding-win32-x64": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-analyzer/binding-win32-x64/-/binding-win32-x64-0.10.2.tgz", + "integrity": "sha512-sKHkmLK8BsindMfyIThoN0bWC5uqSJEVNaLRD/ifA99mtb0UDin1ZCg4WYSVQAmM4k2iOTl4UZx/p3zcBiBgYw==", + "cpu": [ + "x64" + ], + "deprecated": "yuku-analyzer runs on yuku-core since 0.14", + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@yuku-toolchain/types": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@yuku-toolchain/types/-/types-0.10.2.tgz", + "integrity": "sha512-sSeo4SSSToiS+sSD+bwn/s94EEcaLJ7tG5LCp8gFYC1G5VzxzX7fqB6m9RU1yMD8KTpu6zdU/I1NlQf8hVBJ9Q==", + "license": "MIT" + }, + "node_modules/abitype": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.2.3.tgz", + "integrity": "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==", + "devOptional": true, + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3.22.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/acorn": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.19.0.tgz", + "integrity": "sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.28", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.28.tgz", + "integrity": "sha512-br0LOmjJqr6Rt4AEkadbcNf67Zpo7EPwKsWbjnRrJIa1QYFHQBqM4C7F2WTbV8ahTEcg1Eo+Y0aWjjORInYFyA==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/bundle-require": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", + "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==", + "dev": true, + "dependencies": { + "load-tsconfig": "^0.2.3" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.18" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001816", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001816.tgz", + "integrity": "sha512-+8Yx7BXCoqk6IF8yTicjfUR6D/ldJzdlsodlEOiOSPmhK844WIgk67/zIQaGAOxNkZyyvBlrRFnLvqKIoqbAFw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/canonicalize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-2.1.0.tgz", + "integrity": "sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ==", + "bin": { + "canonicalize": "bin/canonicalize.js" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chai": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.3.0.tgz", + "integrity": "sha512-XWAtwJ6OHO+tj0EKCs0Y2UamnyOxseZWltU4x2U2wh8g4AigdjwvtUjvLP2tqkA/avxHEtzxNaqGq/YGNwckKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cn": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/cn/-/cn-0.3.3.tgz", + "integrity": "sha512-OEiyJkSpYm2kOuNOKQ+c2wmzZRG8orrb9fnObtHTbCGNx/E9KLnGcmcocItOzREKk5KzQN5I2e3BUCj563KEpw==", + "license": "MIT", + "bin": { + "cn": "bin/cn.mjs" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { "color-name": "~1.1.4" }, "engines": { - "node": ">=7.0.0" + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", + "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "devOptional": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/enhanced-resolve": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.26.0.tgz", + "integrity": "sha512-9vhedylFonb2YGogzUKX6+Ja72gOJbN1QHAqdrvqLwhdl/QWbKopzoUC9EbQNVsAns/bx/4uyqalrQAoy1IByw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-module-lexer": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", + "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esbuild": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.5", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.5.tgz", + "integrity": "sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.6", + "@eslint/js": "9.39.5", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.1.tgz", + "integrity": "sha512-B0np3dcdxqILX5e9nEi5/Fr4K7gL4oYFVPV1zRa2e9wRCbQoZZNWOZFYyoInvXUPJXBXjss+QXlWLJChDEHDkA==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-value-to-estree": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.5.0.tgz", + "integrity": "sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "devOptional": true + }, + "node_modules/expect-type": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", + "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-sha256": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-sha256/-/fast-sha256-1.3.0.tgz", + "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==" + }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "dev": true + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "dev": true, + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", + "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", + "dev": true, + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fix-dts-default-cjs-exports": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fix-dts-default-cjs-exports/-/fix-dts-default-cjs-exports-1.0.1.tgz", + "integrity": "sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==", + "dev": true, + "dependencies": { + "magic-string": "^0.30.17", + "mlly": "^1.7.4", + "rollup": "^4.34.8" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", + "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", + "dev": true + }, + "node_modules/framer-motion": { + "version": "13.5.1", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-13.5.1.tgz", + "integrity": "sha512-HeWOaeHD3kyTSIEMT6+nw7fBn4saIfxxabZyAITbycAl4xr1kzGJKIvGt/OWghSlvIA9qTnZ1zTGelHAe6S8DA==", + "license": "MIT", + "dependencies": { + "motion-dom": "13.5.1", + "motion-utils": "13.5.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fumadocs-core": { + "version": "16.15.14", + "resolved": "https://registry.npmjs.org/fumadocs-core/-/fumadocs-core-16.15.14.tgz", + "integrity": "sha512-2Jov3x/wCkz8C8MWpmWHoWyLn+pBNrER49m35qqAV0OZekVE8mgs71TS6OfgJHzO00jICkIB+NFhv/XQx/yf/Q==", + "license": "MIT", + "dependencies": { + "@fumari/image-size": "^0.1.1", + "estree-util-value-to-estree": "^3.5.0", + "github-slugger": "^2.0.0", + "hast-util-to-estree": "^3.1.3", + "hast-util-to-jsx-runtime": "^2.3.6", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-markdown": "^2.1.2", + "npm-to-yarn": "3.2.0", + "remark": "^15.0.1", + "remark-gfm": "^4.0.1", + "remark-rehype": "^11.1.2", + "scroll-into-view-if-needed": "^3.1.0", + "shiki": "^4.4.3", + "tinyglobby": "^0.2.17", + "unified": "^11.0.5", + "unist-util-visit": "^5.1.0", + "vfile": "^6.0.3", + "yaml": "^2.9.1", + "zbsearch": "^4.0.0" + }, + "peerDependencies": { + "@mdx-js/mdx": "*", + "@mixedbread/sdk": "0.x.x", + "@modelcontextprotocol/server": "2.x.x", + "@orama/core": "1.x.x", + "@oramacloud/client": "2.x.x", + "@tanstack/react-router": "1.x.x", + "@types/estree-jsx": "*", + "@types/hast": "*", + "@types/mdast": "*", + "@types/react": "*", + "algoliasearch": "5.x.x", + "flexsearch": "*", + "lucide-react": "*", + "next": "16.x.x", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-router": "7.x.x || 8.x.x", + "waku": "*", + "zod": "4.x.x" + }, + "peerDependenciesMeta": { + "@mdx-js/mdx": { + "optional": true + }, + "@mixedbread/sdk": { + "optional": true + }, + "@modelcontextprotocol/server": { + "optional": true + }, + "@orama/core": { + "optional": true + }, + "@oramacloud/client": { + "optional": true + }, + "@tanstack/react-router": { + "optional": true + }, + "@types/estree-jsx": { + "optional": true + }, + "@types/hast": { + "optional": true + }, + "@types/mdast": { + "optional": true + }, + "@types/react": { + "optional": true + }, + "algoliasearch": { + "optional": true + }, + "flexsearch": { + "optional": true + }, + "lucide-react": { + "optional": true + }, + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-router": { + "optional": true + }, + "waku": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/fumadocs-core/node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/fumadocs-mdx": { + "version": "15.4.5", + "resolved": "https://registry.npmjs.org/fumadocs-mdx/-/fumadocs-mdx-15.4.5.tgz", + "integrity": "sha512-r8gzaqleN+YXgPIbkYSZ05zr89dsr67/64Ar/00Uu7dRWTIHzbgmN1nC0lB8RFNeWnrL41bOTJilhLM4PAsrbw==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.1.1", + "@standard-schema/spec": "^1.1.0", + "chokidar": "^5.0.0", + "esbuild": "^0.28.2", + "estree-util-value-to-estree": "^3.5.0", + "github-slugger": "^2.0.0", + "magic-string": "^1.4.1", + "mdast-util-mdx": "^3.0.0", + "picocolors": "^1.1.1", + "picomatch": "^4.0.7", + "tinyexec": "^1.3.1", + "tinyglobby": "^0.2.17", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.1.0", + "vfile": "^6.0.3", + "yaml": "^2.9.1", + "yuku-analyzer": "^0.10.2", + "zod": "^4.6.5" + }, + "bin": { + "fumadocs-mdx": "bin.js" + }, + "peerDependencies": { + "@fumadocs/satteri": "0.x.x", + "@types/mdast": "*", + "@types/mdx": "*", + "@types/react": "*", + "fumadocs-core": "^16.15.3", + "mdast-util-directive": "*", + "next": "^15.3.0 || ^16.0.0", + "react": "^19.2.0", + "rolldown": "*", + "satteri": "^0.10.5", + "vite": "7.x.x || 8.x.x" + }, + "peerDependenciesMeta": { + "@fumadocs/satteri": { + "optional": true + }, + "@types/mdast": { + "optional": true + }, + "@types/mdx": { + "optional": true + }, + "@types/react": { + "optional": true + }, + "mdast-util-directive": { + "optional": true + }, + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "rolldown": { + "optional": true + }, + "satteri": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/fumadocs-mdx/node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/fumadocs-mdx/node_modules/magic-string": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.4.3.tgz", + "integrity": "sha512-z12OxmaPGE0F4xlpGdjuAUckipLpQlTAuAmyGhNoD7ODpYUzvDfvtxUbjM/jwznyP178oju/KDdyi220wNJ0RQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.6.0" + } + }, + "node_modules/fumadocs-mdx/node_modules/readdirp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/fumadocs-mdx/node_modules/tinyexec": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.1.tgz", + "integrity": "sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/fumadocs-ui": { + "version": "16.15.14", + "resolved": "https://registry.npmjs.org/fumadocs-ui/-/fumadocs-ui-16.15.14.tgz", + "integrity": "sha512-yYnun6im7eBK3gMrErl69QRt+C7/KV5exZFFnoOnRx3HRi9WwAgPtAhwNhFIx1gAYLioSaSjP12+ZrpH9x2b7w==", + "license": "MIT", + "dependencies": { + "@fuma-translate/react": "^1.0.2", + "@fumadocs/tailwind": "0.1.2", + "@radix-ui/react-accordion": "^1.2.20", + "@radix-ui/react-collapsible": "^1.1.20", + "@radix-ui/react-dialog": "^1.1.23", + "@radix-ui/react-direction": "^1.1.4", + "@radix-ui/react-navigation-menu": "^1.2.22", + "@radix-ui/react-popover": "^1.1.23", + "@radix-ui/react-presence": "^1.1.10", + "@radix-ui/react-scroll-area": "^1.2.18", + "@radix-ui/react-slot": "^1.3.3", + "@radix-ui/react-tabs": "^1.1.21", + "class-variance-authority": "^0.7.1", + "cn": "^0.3.0", + "lucide-react": "^1.47.0", + "motion": "^13.4.0", + "next-themes": "^0.4.6", + "react-remove-scroll": "^2.7.2", + "rehype-raw": "^7.0.0", + "scroll-into-view-if-needed": "^3.1.0", + "shiki": "^4.4.3", + "unist-util-visit": "^5.1.0" + }, + "peerDependencies": { + "@types/mdx": "*", + "@types/react": "*", + "fumadocs-core": "16.15.14", + "next": "16.x.x", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "takumi-js": "*" + }, + "peerDependenciesMeta": { + "@types/mdx": { + "optional": true + }, + "@types/react": { + "optional": true + }, + "next": { + "optional": true + }, + "takumi-js": { + "optional": true + } + } + }, + "node_modules/fumadocs-ui/node_modules/lucide-react": { + "version": "1.56.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.56.0.tgz", + "integrity": "sha512-b+hqj30/trHBma5r1zlKb6yLewQp6tUtnz9loc3xdrYerPmvLYhlEbyPVCJ8DOg2/blBf6lwPLznftFVACka6A==", + "license": "ISC", + "peerDependencies": { + "@types/react": "*", + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hash-wasm": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.12.0.tgz", + "integrity": "sha512-+/2B2rYLb48I/evdOIhP+K/DD2ca2fgBjp6O+GBEnCDk2e4rpeXIK8GvIyRPjTezgmWn9gmKwkQjjx6BtqDHVQ==", + "optional": true + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/human-id": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/human-id/-/human-id-4.2.2.tgz", + "integrity": "sha512-Z+8unD6em/MJwyrkWQ2M3wygRGI1+MztbutiNwk1DCuEPXOZRWGjtcMPZYP1exY9iNZMhd7ZOSMQSo9WYtiQRw==", + "dev": true, + "bin": { + "human-id": "dist/cli.js" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { - "node": ">= 6" + "node": ">=0.8.19" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isows": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz", + "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "devOptional": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true + }, + "node_modules/jose": { + "version": "6.2.12", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.12.tgz", + "integrity": "sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw==", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-yaml": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "dev": true }, - "node_modules/consola": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", - "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, - "engines": { - "node": "^14.18.0 || >=16.10.0" + "dependencies": { + "json-buffer": "3.0.1" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/launch-editor": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.14.2.tgz", + "integrity": "sha512-NHJEb30MGBCkmZXLZwz25t37QR4aY03ZzPYUJXOJaOa92uWwExI9SBQUuIznBYc1xkD7cJNGX7oc3Nl3sq2kQQ==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" + "picocolors": "^1.1.1", + "shell-quote": "^1.10.0" } }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", + "node_modules/lightningcss": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", + "devOptional": true, + "license": "MPL-2.0", "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dijkstrajs": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", - "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/es-module-lexer": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", - "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", - "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "detect-libc": "^2.0.3" }, "engines": { - "node": ">=18" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.2", - "@esbuild/android-arm": "0.28.2", - "@esbuild/android-arm64": "0.28.2", - "@esbuild/android-x64": "0.28.2", - "@esbuild/darwin-arm64": "0.28.2", - "@esbuild/darwin-x64": "0.28.2", - "@esbuild/freebsd-arm64": "0.28.2", - "@esbuild/freebsd-x64": "0.28.2", - "@esbuild/linux-arm": "0.28.2", - "@esbuild/linux-arm64": "0.28.2", - "@esbuild/linux-ia32": "0.28.2", - "@esbuild/linux-loong64": "0.28.2", - "@esbuild/linux-mips64el": "0.28.2", - "@esbuild/linux-ppc64": "0.28.2", - "@esbuild/linux-riscv64": "0.28.2", - "@esbuild/linux-s390x": "0.28.2", - "@esbuild/linux-x64": "0.28.2", - "@esbuild/netbsd-arm64": "0.28.2", - "@esbuild/netbsd-x64": "0.28.2", - "@esbuild/openbsd-arm64": "0.28.2", - "@esbuild/openbsd-x64": "0.28.2", - "@esbuild/openharmony-arm64": "0.28.2", - "@esbuild/sunos-x64": "0.28.2", - "@esbuild/win32-arm64": "0.28.2", - "@esbuild/win32-ia32": "0.28.2", - "@esbuild/win32-x64": "0.28.2" + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, + "node_modules/lightningcss-android-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "peer": true, "engines": { - "node": ">=10" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/eslint": { - "version": "9.39.5", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.5.tgz", - "integrity": "sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.2", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.6", - "@eslint/js": "9.39.5", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.14.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.5", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "node_modules/lightningcss-darwin-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 12.0.0" }, "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 12.0.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 12.0.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 12.0.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=0.10" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=4.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "peer": true, "engines": { - "node": ">=4.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "devOptional": true + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, - "node_modules/expect-type": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", - "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==", + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { - "node": ">=12.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/fast-sha256": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-sha256/-/fast-sha256-1.3.0.tgz", - "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==" + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "node_modules/fast-string-truncated-width": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", - "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", - "dev": true + "node_modules/lru-cache": { + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", + "engines": { + "node": "20 || >=22" + } }, - "node_modules/fast-string-width": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", - "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", - "dev": true, - "dependencies": { - "fast-string-truncated-width": "^3.0.2" + "node_modules/lucide-react": { + "version": "0.545.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.545.0.tgz", + "integrity": "sha512-7r1/yUuflQDSt4f1bpn5ZAocyIxcTyVyBBChSVtBKn5M+392cPmI5YJMWOJKk/HUWGm5wg83chlAZtCcGbEZtw==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/fast-wrap-ansi": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", - "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "dependencies": { - "fast-string-width": "^3.0.2" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" + "node": ">=16" }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.3.tgz", + "integrity": "sha512-xPgpDNl0/OXHsI7TlaIs22lWnH3KlpvZdXG1ET/m/YT2Hhdkx8lJV4kLphE6l9simyM4KPDFBwas08BgEob6Jw==", + "license": "MIT", "dependencies": { - "flat-cache": "^4.0.0" + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, - "engines": { - "node": ">=16.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/find-up": { + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fix-dts-default-cjs-exports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fix-dts-default-cjs-exports/-/fix-dts-default-cjs-exports-1.0.1.tgz", - "integrity": "sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==", - "dev": true, + "node_modules/mdast-util-from-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.1.0.tgz", + "integrity": "sha512-KRLgmPaP2H1ul2bpoJkOS+9pAcDAAj9Nu1mqLnh8NLeJG5tlvj42TH80PIGBpROWlRXLk0lDrWNuZCFy/tsB4A==", + "license": "MIT", "dependencies": { - "magic-string": "^0.30.17", - "mlly": "^1.7.4", - "rollup": "^4.34.8" + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, - "engines": { - "node": ">=16" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/flatted": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", - "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", - "dev": true + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" + "node_modules/mdast-util-gfm-footnote/node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.1.tgz", + "integrity": "sha512-OuJHqvr455pwu2OaOrir7dbzqs4jlWKOtlu9L6GjcIjjQwNyw02VntQsr/Ek6/A13vgnXfUhBekWRUP1OkNivw==", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, - "engines": { - "node": ">=10.13.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "engines": { - "node": ">=18" + "node_modules/mdast-util-gfm-strikethrough/node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/hash-wasm": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.12.0.tgz", - "integrity": "sha512-+/2B2rYLb48I/evdOIhP+K/DD2ca2fgBjp6O+GBEnCDk2e4rpeXIK8GvIyRPjTezgmWn9gmKwkQjjx6BtqDHVQ==", - "optional": true + "node_modules/mdast-util-gfm-table/node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/human-id": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/human-id/-/human-id-4.2.2.tgz", - "integrity": "sha512-Z+8unD6em/MJwyrkWQ2M3wygRGI1+MztbutiNwk1DCuEPXOZRWGjtcMPZYP1exY9iNZMhd7ZOSMQSo9WYtiQRw==", - "dev": true, - "bin": { - "human-id": "dist/cli.js" + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "engines": { - "node": ">= 4" + "node_modules/mdast-util-gfm/node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/import-meta-resolve": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", - "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", - "dev": true, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" + "node_modules/mdast-util-mdx-expression/node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" + "node_modules/mdast-util-mdx-jsx/node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, + "node_modules/mdast-util-mdx/node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/isows": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz", - "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==", - "devOptional": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "peerDependencies": { - "ws": "*" + "node_modules/mdast-util-mdxjs-esm/node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/jju": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", - "dev": true + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/jose": { - "version": "6.2.12", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.12.tgz", - "integrity": "sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw==", + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, "funding": { - "url": "https://github.com/sponsors/panva" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/joycon": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", - "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", - "dev": true, - "engines": { - "node": ">=10" + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/js-yaml": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", - "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", - "dev": true, + "node_modules/micromark": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.3.tgz", + "integrity": "sha512-oGYfQzHSG5dOMovQcJ3fyTmZlWAWpi0XA0sJwJs+i6OT88o1+Jtw/8z0CmdowSLxGhhFK89rQ/oXph/wN02PNw==", "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/puzrin" + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, { - "type": "github", - "url": "https://github.com/sponsors/nodeca" + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-edit-map": "^1.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.4.tgz", + "integrity": "sha512-wxEeE8v8XVvOrxn1TZj74qYhAtTQsSqufHVS3uNVyT1MupXxhyaHk8/9xDNPh9BmL77QNDgWTkZ3RsYHB2ry7w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.1.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-edit-map": "^1.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.3" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", "dependencies": { - "json-buffer": "3.0.1" + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/launch-editor": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.14.2.tgz", - "integrity": "sha512-NHJEb30MGBCkmZXLZwz25t37QR4aY03ZzPYUJXOJaOa92uWwExI9SBQUuIznBYc1xkD7cJNGX7oc3Nl3sq2kQQ==", - "dev": true, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", "dependencies": { - "picocolors": "^1.1.1", - "shell-quote": "^1.10.0" + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">= 0.8.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/lightningcss": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", - "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", - "dev": true, - "license": "MPL-2.0", - "peer": true, - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.2.tgz", + "integrity": "sha512-pRzm4kDTu0MjlmBkxmS9yYhw60nncfcEwu9NNdPFSQEFXS95ZKyIIyTSHu/o3ReBUrLKYEq+7YaXCRn/bPB4MA==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.33.0", - "lightningcss-darwin-arm64": "1.33.0", - "lightningcss-darwin-x64": "1.33.0", - "lightningcss-freebsd-x64": "1.33.0", - "lightningcss-linux-arm-gnueabihf": "1.33.0", - "lightningcss-linux-arm64-gnu": "1.33.0", - "lightningcss-linux-arm64-musl": "1.33.0", - "lightningcss-linux-x64-gnu": "1.33.0", - "lightningcss-linux-x64-musl": "1.33.0", - "lightningcss-win32-arm64-msvc": "1.33.0", - "lightningcss-win32-x64-msvc": "1.33.0" + "url": "https://opencollective.com/unified" } }, - "node_modules/lightningcss-android-arm64": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", - "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/unified" } }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", - "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/unified" } }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", - "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "peer": true, - "engines": { - "node": ">= 12.0.0" + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/unified" } }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", - "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/unified" } }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", - "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/unified" } }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", - "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/unified" } }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", - "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", - "cpu": [ - "arm64" + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", - "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", - "cpu": [ - "x64" + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.1.0.tgz", + "integrity": "sha512-fS8hnLIjnjvdQIj39Geug8wWsR0HrYZ43KShKxNfwT7t2LOHo/LbWZEzEaSOjwtjdCsjoE6syHhonEzW0zv0+Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", - "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", - "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", - "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", - "cpu": [ - "x64" + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" + "node_modules/micromark-util-edit-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-edit-map/-/micromark-util-edit-map-1.0.0.tgz", + "integrity": "sha512-Pa2ljlsEL6sVwFaYeyrOLSYbQt73JvGbPOYFq+9AElXiSnfI5Q4465RRZ1sHv7lDjDOnGRDDaqPXqClqWK/q1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" }, - "node_modules/load-tsconfig": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", - "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" } }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "11.5.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", - "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", - "engines": { - "node": "20 || >=22" + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" } }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/marked": { - "version": "18.1.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-18.1.1.tgz", - "integrity": "sha512-zEGgrtUG8crk+TrMacJSVABU4DYDDkS8uqgU3ohrn/2fW9C2AEfUrO3m6IhpIpQpl7YcVpiXXC9cSMWDANT3dg==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 20" + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.3.tgz", + "integrity": "sha512-oxB2Ik03hI0gv+VNn9tnh1t1YEe9MDPptViAEgfdf3YQHsn0pzGTgCdlSCJXcwhqm8phaEuM7zeEu3QQzVBrPg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, "node_modules/minimatch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", @@ -3574,11 +8364,47 @@ "ufo": "^1.6.3" } }, + "node_modules/motion": { + "version": "13.5.1", + "resolved": "https://registry.npmjs.org/motion/-/motion-13.5.1.tgz", + "integrity": "sha512-eV9SUem6KnzEa9+eT+dVBeDlhy5TTdn09YWR1WhUsKoZCJPw/n4TcYhjbxq2Gy5PTwDr//4H3r5vxkcZnNnO1w==", + "license": "MIT", + "dependencies": { + "framer-motion": "13.5.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/motion-dom": { + "version": "13.5.1", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-13.5.1.tgz", + "integrity": "sha512-/7CVCD20Mz1KobktorpdgvowV0V41J7UxqE+qWS3GkSJqrRr5ft+2RloOYtEKv+wvBp3JaSFBclhxt4ja8ovHg==", + "license": "MIT", + "dependencies": { + "motion-utils": "13.5.0" + } + }, + "node_modules/motion-utils": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-13.5.0.tgz", + "integrity": "sha512-Hqe/sqjIKliPZg8sVjWAkdySDPJNIeKH+euVkDOG8ri3DUUU7ZjndmHsGqEPz2iHpiyVaV5I22iguCMHU2he+Q==", + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mz": { "version": "2.7.0", @@ -3595,14 +8421,12 @@ "version": "3.3.20", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz", "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==", - "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], - "peer": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -3616,6 +8440,109 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/next": { + "version": "16.3.6", + "resolved": "https://registry.npmjs.org/next/-/next-16.3.6.tgz", + "integrity": "sha512-L+otWM/aQbYTx98aZhgEoMb4bZAXx1YVW4UMA/vuCyCoWG5HJyZUili8QAkqzrcC+5///tsz3s0M+SlyB5bLMw==", + "license": "MIT", + "dependencies": { + "@next/env": "16.3.6", + "@swc/helpers": "0.5.23", + "baseline-browser-mapping": "^2.9.19", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.5.23", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=20.9.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "16.3.6", + "@next/swc-darwin-x64": "16.3.6", + "@next/swc-linux-arm64-gnu": "16.3.6", + "@next/swc-linux-arm64-musl": "16.3.6", + "@next/swc-linux-x64-gnu": "16.3.6", + "@next/swc-linux-x64-musl": "16.3.6", + "@next/swc-win32-arm64-msvc": "16.3.6", + "@next/swc-win32-x64-msvc": "16.3.6", + "sharp": "^0.35.4" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.51.1", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-themes": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", + "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.5.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.23.tgz", + "integrity": "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.16", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/npm-to-yarn": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/npm-to-yarn/-/npm-to-yarn-3.2.0.tgz", + "integrity": "sha512-K1HmQeZT2HrjpsR6KgqbN2FAXL2NrJJmNUSD9ck7HGTVu1JKXox8n9SB+tjbU8m8JGLF4OscrroPepew/L7/Xw==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/nebrelbug/npm-to-yarn?sponsor=1" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -3639,6 +8566,23 @@ "node": ">=12.20.0" } }, + "node_modules/oniguruma-parser": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz", + "integrity": "sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==", + "license": "MIT" + }, + "node_modules/oniguruma-to-es": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.6.tgz", + "integrity": "sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==", + "license": "MIT", + "dependencies": { + "oniguruma-parser": "^0.12.2", + "regex": "^6.1.0", + "regex-recursion": "^6.0.2" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -3782,6 +8726,43 @@ "node": ">=6" } }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -3808,14 +8789,12 @@ "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", - "dev": true, "engines": { "node": ">=12" }, @@ -3855,7 +8834,7 @@ "version": "8.5.30", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.30.tgz", "integrity": "sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA==", - "dev": true, + "devOptional": true, "funding": [ { "type": "opencollective", @@ -3870,7 +8849,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "nanoid": "^3.3.20", "picocolors": "^1.1.1", @@ -3946,6 +8924,16 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/property-information": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz", + "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -3971,6 +8959,96 @@ "node": ">=10.13.0" } }, + "node_modules/react": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz", + "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.0.tgz", + "integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.28.0" + }, + "peerDependencies": { + "react": "^19.3.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", @@ -3980,8 +9058,246 @@ "node": ">= 14.18.0" }, "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "license": "MIT" + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", + "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify/node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/require-directory": { @@ -4010,7 +9326,7 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.13.tgz", "integrity": "sha512-/5apOkwWxtACcQtZ5WlrAsKS4JwXVThQPJZ3RqIruRY9UG9M8e0VlXN068xum/JRKA4aIUoJ13ghe/kGCvidiQ==", - "dev": true, + "devOptional": true, "license": "MIT", "peer": true, "dependencies": { @@ -4086,11 +9402,26 @@ "fsevents": "~2.3.2" } }, + "node_modules/scheduler": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.28.0.tgz", + "integrity": "sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==", + "license": "MIT" + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "license": "MIT", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, "node_modules/semver": { "version": "7.8.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", - "dev": true, + "devOptional": true, "bin": { "semver": "bin/semver.js" }, @@ -4103,6 +9434,56 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, + "node_modules/sharp": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.5.tgz", + "integrity": "sha512-Ywn4OnzGukp7CDMrp08RQ50YKmuwG47brZgIVPTvBaaAfQlRlygrRqSrxdCiL9M+LlzLBiJ68IR1QqvzHyjC7g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/colour": "^1.1.0", + "detect-libc": "^2.1.2", + "semver": "^7.8.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.35.5", + "@img/sharp-darwin-x64": "0.35.5", + "@img/sharp-freebsd-wasm32": "0.35.5", + "@img/sharp-libvips-darwin-arm64": "1.3.4", + "@img/sharp-libvips-darwin-x64": "1.3.4", + "@img/sharp-libvips-linux-arm": "1.3.4", + "@img/sharp-libvips-linux-arm64": "1.3.4", + "@img/sharp-libvips-linux-ppc64": "1.3.4", + "@img/sharp-libvips-linux-riscv64": "1.3.4", + "@img/sharp-libvips-linux-s390x": "1.3.4", + "@img/sharp-libvips-linux-x64": "1.3.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4", + "@img/sharp-libvips-linuxmusl-x64": "1.3.4", + "@img/sharp-linux-arm": "0.35.5", + "@img/sharp-linux-arm64": "0.35.5", + "@img/sharp-linux-ppc64": "0.35.5", + "@img/sharp-linux-riscv64": "0.35.5", + "@img/sharp-linux-s390x": "0.35.5", + "@img/sharp-linux-x64": "0.35.5", + "@img/sharp-linuxmusl-arm64": "0.35.5", + "@img/sharp-linuxmusl-x64": "0.35.5", + "@img/sharp-webcontainers-wasm32": "0.35.5", + "@img/sharp-win32-arm64": "0.35.5", + "@img/sharp-win32-ia32": "0.35.5", + "@img/sharp-win32-x64": "0.35.5" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4136,6 +9517,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/shiki": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.5.0.tgz", + "integrity": "sha512-OcRW72ngQvc+MSVWBRIovC/BTW589iUE/Vxav7VeM4RcY9MUjqB+IR6ILG1k9nuW6LiG/nct9uma4/MBtnZbmQ==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "4.5.0", + "@shikijs/engine-javascript": "4.5.0", + "@shikijs/engine-oniguruma": "4.5.0", + "@shikijs/langs": "4.5.0", + "@shikijs/themes": "4.5.0", + "@shikijs/types": "4.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.5" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -4146,7 +9546,6 @@ "version": "0.7.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, "engines": { "node": ">= 12" } @@ -4155,12 +9554,20 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz", "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==", - "dev": true, - "peer": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/standardwebhooks": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/standardwebhooks/-/standardwebhooks-1.0.0.tgz", @@ -4190,6 +9597,20 @@ "node": ">=8" } }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4213,6 +9634,47 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, "node_modules/sucrase": { "version": "3.35.1", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", @@ -4255,6 +9717,27 @@ "standardwebhooks": "1.0.0" } }, + "node_modules/tailwindcss": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.3.tgz", + "integrity": "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -4308,7 +9791,6 @@ "version": "0.2.17", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", - "dev": true, "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" @@ -4329,6 +9811,26 @@ "tree-kill": "cli.js" } }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/ts-api-utils": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", @@ -4347,6 +9849,12 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/tsup": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.5.1.tgz", @@ -4475,7 +9983,121 @@ "version": "8.9.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz", "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==", - "dev": true + "devOptional": true + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, "node_modules/uri-js": { "version": "4.4.1", @@ -4486,6 +10108,49 @@ "punycode": "^2.1.0" } }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/valibot": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/valibot/-/valibot-1.4.2.tgz", @@ -4499,6 +10164,48 @@ } } }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/viem": { "version": "2.57.5", "resolved": "https://registry.npmjs.org/viem/-/viem-2.57.5.tgz", @@ -4594,7 +10301,7 @@ "version": "8.3.4", "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.4.tgz", "integrity": "sha512-IftLE8phJhdNRIGNEV4JCCvfNScoZQVfcXaN8TQropWGJtOHcu+iAB9pHcuGvmEb/kddw0LBe/jS8ztdC6xdiQ==", - "dev": true, + "devOptional": true, "license": "MIT", "peer": true, "dependencies": { @@ -4772,6 +10479,16 @@ "node": ">=18" } }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4856,7 +10573,6 @@ "version": "2.9.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.1.tgz", "integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==", - "dev": true, "bin": { "yaml": "bin.mjs" }, @@ -4960,6 +10676,48 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yuku-analyzer": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/yuku-analyzer/-/yuku-analyzer-0.10.2.tgz", + "integrity": "sha512-UBRcDcZtIn14g88loZUZ123d6MOkc2hMTawUle5MkuWboowM90KbWHN3Zz+HfuS06sw935ygecBpcJlXHB/pOA==", + "license": "MIT", + "dependencies": { + "@yuku-toolchain/types": "^0.10.2", + "yuku-ast": "^0.10.2" + }, + "optionalDependencies": { + "@yuku-analyzer/binding-android-arm64": "0.10.2", + "@yuku-analyzer/binding-darwin-arm64": "0.10.2", + "@yuku-analyzer/binding-darwin-x64": "0.10.2", + "@yuku-analyzer/binding-freebsd-x64": "0.10.2", + "@yuku-analyzer/binding-linux-arm-gnu": "0.10.2", + "@yuku-analyzer/binding-linux-arm-musl": "0.10.2", + "@yuku-analyzer/binding-linux-arm64-gnu": "0.10.2", + "@yuku-analyzer/binding-linux-arm64-musl": "0.10.2", + "@yuku-analyzer/binding-linux-x64-gnu": "0.10.2", + "@yuku-analyzer/binding-linux-x64-musl": "0.10.2", + "@yuku-analyzer/binding-win32-arm64": "0.10.2", + "@yuku-analyzer/binding-win32-x64": "0.10.2" + } + }, + "node_modules/yuku-ast": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/yuku-ast/-/yuku-ast-0.10.2.tgz", + "integrity": "sha512-UnG9mA6giglCvSErft2/40TVFX750Sj1xgwddPLpG7J7rlr/P1wPADg9G2RK+d/1tNLtRVoLdMMOMVBB9561TQ==", + "license": "MIT", + "dependencies": { + "@yuku-toolchain/types": "^0.10.2" + } + }, + "node_modules/zbsearch": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/zbsearch/-/zbsearch-4.0.1.tgz", + "integrity": "sha512-lmnEEnb93QQcNv7qARDr7jBVPxYdZbZ9XdZ0dbZ0qaOvGne4jJMW4fjwPfVaUKQXv3FNWvGbDwRDgyaSb1pc8w==", + "license": "Apache-2.0", + "engines": { + "node": ">= 20.0.0" + } + }, "node_modules/zod": { "version": "4.6.7", "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", @@ -4968,7 +10726,18 @@ "url": "https://github.com/sponsors/colinhacks" } }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "packages/agent-cli": { + "name": "@bloxwap/agent-cli", "version": "0.1.0", "license": "MIT", "dependencies": { @@ -4987,7 +10756,6 @@ "@types/qrcode": "^1.5.6", "@types/ws": "^8.18.2", "eslint": "^9.39.5", - "marked": "^18.1.1", "prettier": "^3.9.10", "tsup": "^8.5.1", "typescript": "^5.9.3", diff --git a/package.json b/package.json index 2e86675..72215ce 100644 --- a/package.json +++ b/package.json @@ -11,14 +11,18 @@ "lint": "npm --workspace @bloxwap/agent-cli run lint", "typecheck": "npm --workspace @bloxwap/agent-cli run typecheck", "test": "npm --workspace @bloxwap/agent-cli run test", - "docs:generate": "npm --workspace @bloxwap/agent-cli run docs:generate", + "docs:generate": "npm run build && node apps/docs/scripts/generate-content.mjs", "test:e2e": "npm --workspace @bloxwap/agent-cli run test:e2e", "test:package": "npm --workspace @bloxwap/agent-cli run test:package", "build:binaries": "npm --workspace @bloxwap/agent-cli run build:binaries", "test:sandbox": "npm --workspace @bloxwap/agent-cli run test:sandbox", "changeset": "changeset", - "version:packages": "changeset version && npm --workspace @bloxwap/agent-cli exec -- node scripts/sync-skill-version.mjs && npm --workspace @bloxwap/agent-cli exec -- node scripts/generate-skill.mjs", - "pack:cli": "npm pack --workspace @bloxwap/agent-cli --pack-destination packages/agent-cli" + "version:packages": "changeset version && npm --workspace @bloxwap/agent-cli run skill:sync-version && npm --workspace @bloxwap/agent-cli run skill:generate", + "pack:cli": "npm pack --workspace @bloxwap/agent-cli --pack-destination packages/agent-cli", + "docs:dev": "npm --workspace @bloxwap/agent-cli-docs run dev", + "docs:build": "npm --workspace @bloxwap/agent-cli-docs run build", + "docs:check": "npm --workspace @bloxwap/agent-cli-docs run check", + "docs:preview": "npm --workspace @bloxwap/agent-cli-docs run preview" }, "engines": { "node": ">=24" @@ -27,6 +31,7 @@ "@changesets/cli": "^3.0.3" }, "overrides": { - "esbuild": "^0.28.1" + "esbuild": "^0.28.1", + "mdast-util-to-markdown": "2.1.2" } } diff --git a/packages/agent-cli/README.md b/packages/agent-cli/README.md index 41bc8b8..19e3aaa 100644 --- a/packages/agent-cli/README.md +++ b/packages/agent-cli/README.md @@ -19,7 +19,8 @@ node packages/agent-cli/dist/cli.js config set privyAppSecretRef env:BLOXWAP_PRI node packages/agent-cli/dist/cli.js init --network testnet --master-address 0xYOUR_MASTER_ADDRESS # Sign returned EIP-712 approval externally, then submit its 65-byte signature: node packages/agent-cli/dist/cli.js init --network testnet --signature 0xYOUR_SIGNATURE -node packages/agent-cli/dist/cli.js fund --network testnet --amount 10 --origin-chain 42161 +# Fund only with a supported test origin chain/token; inspect schema fund. +# Chain 42161 and the default origin token are mainnet values. # Show QR/address and exact origin token/fees to user; complete any deposit steps. node packages/agent-cli/dist/cli.js status --network testnet # Continue only when active deposits report settled. @@ -60,9 +61,6 @@ Override via `config set builder.address` / `config set builder.fee` or ## Development and docs -`npm run build`, `npm run lint`, `npm run typecheck`, `npm test` must pass before -committing. Unit tests mock services. Credential-dependent tests are gated: `npm run test:sandbox` and `npm run test:e2e` skip without the required environment. The master-key testnet harness is CI-only; unit tests never access the network. - -`npm run docs:generate` creates [command schemas](../../docs/commands.md) and a static -site in `site/`. [Docs index](../../docs/index.md), [security](../../docs/security.md), -[error catalog](../../docs/errors.md), and [SKILL.md](SKILL.md) explain operation. +Use Node.js 24+ and run build, lint, typecheck and tests from the workspace root. +See the [repository README](../../README.md) and [docs app](../../apps/docs/README.md). +The packaged [SKILL.md](SKILL.md) documents the authorized agent workflow. diff --git a/packages/agent-cli/package.json b/packages/agent-cli/package.json index cee0cce..2d21ffd 100644 --- a/packages/agent-cli/package.json +++ b/packages/agent-cli/package.json @@ -18,18 +18,18 @@ "lint": "eslint .", "typecheck": "tsc --noEmit", "test": "vitest run", - "docs:generate": "npm run build && node scripts/generate-docs.mjs", "test:e2e": "node scripts/e2e-testnet.mjs", "test:package": "node scripts/package-smoke.mjs", "build:binaries": "node scripts/generate-skill.mjs && node scripts/build-binaries.mjs", - "test:sandbox": "vitest run --config vitest.integration.config.ts" + "test:sandbox": "vitest run --config vitest.integration.config.ts", + "skill:sync-version": "node scripts/sync-skill-version.mjs", + "skill:generate": "node scripts/generate-skill.mjs" }, "devDependencies": { "@types/node": "^26.6.5", "@types/qrcode": "^1.5.6", "@types/ws": "^8.18.2", "eslint": "^9.39.5", - "marked": "^18.1.1", "prettier": "^3.9.10", "tsup": "^8.5.1", "typescript": "^5.9.3", diff --git a/packages/agent-cli/scripts/check-commit.sh b/packages/agent-cli/scripts/check-commit.sh index 6180041..2253e83 100644 --- a/packages/agent-cli/scripts/check-commit.sh +++ b/packages/agent-cli/scripts/check-commit.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash set -euo pipefail +cd "$(git rev-parse --show-toplevel)" npm run build npm run lint npm run typecheck diff --git a/packages/agent-cli/scripts/generate-docs.mjs b/packages/agent-cli/scripts/generate-docs.mjs deleted file mode 100644 index f91cf96..0000000 --- a/packages/agent-cli/scripts/generate-docs.mjs +++ /dev/null @@ -1,27 +0,0 @@ -import { execFileSync } from 'node:child_process'; -import { writeFileSync, readFileSync, mkdirSync, readdirSync } from 'node:fs'; -import { marked } from 'marked'; -const invoke = (args) => - JSON.parse( - execFileSync(process.execPath, ['dist/cli.js', ...args], { - input: '', - encoding: 'utf8', - }), - ).data; -const commands = invoke(['--help']).commands; -let reference = - '# Command reference\n\nGenerated from `agent-cli schema `. Do not edit by hand.\n\nGlobal flags: `--config PATH`, `--network mainnet|testnet`, `--pretty`, `--json OBJECT`.\n\n'; -for (const command of commands) - reference += `## ${command.name}\n\n${command.description}\n\n\`\`\`json\n${JSON.stringify(invoke(['schema', command.name]), null, 2)}\n\`\`\`\n\n`; -writeFileSync('../../docs/commands.md', reference); -mkdirSync('../../site', { recursive: true }); -for (const name of readdirSync('../../docs').filter((name) => name.endsWith('.md'))) { - const content = marked(readFileSync(`../../docs/${name}`, 'utf8')).replace( - /href="([^"#]+)\.md/g, - 'href="$1.html', - ); - writeFileSync( - `../../site/${name.replace('.md', '.html')}`, - `agent-cli${content}`, - ); -}