From 1edc3a85b8a66813680c752fdc6229ecf68e81fd Mon Sep 17 00:00:00 2001 From: Rob Colbert Date: Tue, 28 Apr 2026 09:20:37 -0400 Subject: [PATCH] created by merging gadget-code and gadget-drone --- .gitignore | 1 + AGENTS.md | 59 + README.md | 48 + gadget-code/.gitignore | 12 + gadget-code/.vscode/launch.json | 28 + gadget-code/AGENTS.md | 35 + gadget-code/LICENSE | 203 + gadget-code/README.md | 165 + gadget-code/assets/icon/icon-114x114.png | Bin 0 -> 20277 bytes gadget-code/assets/icon/icon-120x120.png | Bin 0 -> 22086 bytes gadget-code/assets/icon/icon-144x144.png | Bin 0 -> 29882 bytes gadget-code/assets/icon/icon-152x152.png | Bin 0 -> 33094 bytes gadget-code/assets/icon/icon-16x16.png | Bin 0 -> 1083 bytes gadget-code/assets/icon/icon-180x180.png | Bin 0 -> 43970 bytes gadget-code/assets/icon/icon-192x192.png | Bin 0 -> 49749 bytes gadget-code/assets/icon/icon-256x256.png | Bin 0 -> 84147 bytes gadget-code/assets/icon/icon-32x32.png | Bin 0 -> 2610 bytes gadget-code/assets/icon/icon-384x384.png | Bin 0 -> 183704 bytes gadget-code/assets/icon/icon-48x48.png | Bin 0 -> 4848 bytes gadget-code/assets/icon/icon-512x512.png | Bin 0 -> 284172 bytes gadget-code/assets/icon/icon-57x57.png | Bin 0 -> 6354 bytes gadget-code/assets/icon/icon-60x60.png | Bin 0 -> 6986 bytes gadget-code/assets/icon/icon-72x72.png | Bin 0 -> 9351 bytes gadget-code/assets/icon/icon-76x76.png | Bin 0 -> 10238 bytes gadget-code/assets/icon/icon-96x96.png | Bin 0 -> 15405 bytes gadget-code/assets/icon/web-app.png | Bin 0 -> 167838 bytes .../data/prompts/agent/build/system.md | 39 + gadget-code/data/prompts/agent/dev/system.md | 56 + gadget-code/data/prompts/agent/plan/system.md | 48 + gadget-code/data/prompts/agent/ship/system.md | 40 + gadget-code/data/prompts/agent/test/system.md | 40 + .../data/prompts/common/scope-block.md | 9 + gadget-code/data/prompts/common/subagents.md | 30 + .../data/prompts/subagent/explore/system.md | 35 + .../data/prompts/subagent/general/system.md | 40 + gadget-code/deploy | 25 + gadget-code/docs/agentic-workflow-loop.md | 134 + gadget-code/docs/chat-session.md | 0 gadget-code/docs/gadget-drone.md | 13 + gadget-code/docs/project.md | 29 + gadget-code/frontend/index.html | 13 + gadget-code/frontend/package.json | 11 + gadget-code/frontend/postcss.config.js | 5 + gadget-code/frontend/src/App.tsx | 96 + .../frontend/src/components/Navbar.tsx | 52 + gadget-code/frontend/src/index.css | 29 + gadget-code/frontend/src/lib/api.ts | 64 + gadget-code/frontend/src/lib/socket.ts | 98 + gadget-code/frontend/src/main.tsx | 10 + gadget-code/frontend/src/pages/Home.tsx | 48 + gadget-code/frontend/src/pages/SignIn.tsx | 90 + gadget-code/frontend/src/pages/SignUp.tsx | 122 + gadget-code/frontend/tailwind.config.js | 19 + gadget-code/frontend/vite.config.ts | 56 + gadget-code/gadget-code.code-workspace | 8 + .../nginx/webapp.digitaltelepresence.com | 44 + gadget-code/package.json | 101 + gadget-code/playwright.config.ts | 11 + gadget-code/pnpm-lock.yaml | 5981 +++++++++++++++++ gadget-code/pnpm-workspace.yaml | 4 + gadget-code/release | 54 + gadget-code/src/config/browsersync.ts | 34 + gadget-code/src/config/env.ts | 167 + gadget-code/src/controllers/api.ts | 33 + gadget-code/src/controllers/api/v1.ts | 39 + gadget-code/src/controllers/api/v1/auth.ts | 142 + gadget-code/src/controllers/api/v1/contact.ts | 82 + gadget-code/src/controllers/api/v1/drone.ts | 99 + gadget-code/src/controllers/api/v1/user.ts | 40 + gadget-code/src/controllers/auth.ts | 181 + gadget-code/src/controllers/home.ts | 57 + gadget-code/src/controllers/lib/populators.ts | 75 + gadget-code/src/controllers/user.ts | 84 + gadget-code/src/lib/code-session.ts | 34 + gadget-code/src/lib/component.ts | 8 + gadget-code/src/lib/controller.ts | 356 + gadget-code/src/lib/db.ts | 15 + gadget-code/src/lib/drone-session.ts | 22 + gadget-code/src/lib/log-file.ts | 60 + gadget-code/src/lib/log-transport-console.ts | 62 + gadget-code/src/lib/log-transport-file.ts | 42 + gadget-code/src/lib/log-transport.ts | 16 + gadget-code/src/lib/log.ts | 81 + gadget-code/src/lib/ollama.ts | 5 + gadget-code/src/lib/pagination-parameters.ts | 9 + gadget-code/src/lib/process.ts | 17 + gadget-code/src/lib/redis.ts | 19 + gadget-code/src/lib/service.ts | 22 + gadget-code/src/lib/socket-session.ts | 48 + gadget-code/src/lib/validators.ts | 42 + gadget-code/src/lib/worker.ts | 32 + gadget-code/src/models/ai-provider.ts | 124 + gadget-code/src/models/api-client-log.ts | 43 + gadget-code/src/models/api-client.ts | 49 + gadget-code/src/models/chat-session.ts | 66 + gadget-code/src/models/chat-turn.ts | 146 + gadget-code/src/models/csrf-token.ts | 50 + gadget-code/src/models/drone-monitor.ts | 77 + gadget-code/src/models/drone-registration.ts | 52 + gadget-code/src/models/email-log.ts | 37 + gadget-code/src/models/email-verification.ts | 47 + gadget-code/src/models/postal-code.ts | 48 + gadget-code/src/models/project.ts | 53 + gadget-code/src/models/user.ts | 53 + gadget-code/src/models/web-token.ts | 34 + gadget-code/src/models/web-visit.ts | 52 + gadget-code/src/services/api-client.ts | 108 + gadget-code/src/services/contact.ts | 178 + gadget-code/src/services/crypto.ts | 50 + gadget-code/src/services/drone.ts | 107 + gadget-code/src/services/notification.ts | 19 + gadget-code/src/services/session.ts | 144 + gadget-code/src/services/storage.ts | 201 + gadget-code/src/services/user.ts | 312 + gadget-code/src/web-app.ts | 551 ++ gadget-code/src/web-cli.ts | 341 + gadget-code/ssl/install-certs | 37 + gadget-code/ssl/mkcert | 97 + gadget-code/supervisor/dtp-webapp-web.conf | 13 + gadget-code/tests/app.test.ts | 187 + gadget-code/tests/e2e/auth.test.ts | 38 + gadget-code/tests/e2e/manual-test.ts | 67 + gadget-code/tsconfig.json | 44 + gadget-code/types/error.d.ts | 7 + gadget-code/types/express-session.d.ts | 18 + gadget-code/types/express.d.ts | 26 + gadget-code/types/window.d.ts | 17 + gadget-code/vitest.config.ts | 17 + gadget-drone/.gitignore | 6 + gadget-drone/.vscode/launch.json | 18 + gadget-drone/AGENTS.md | 30 + gadget-drone/LICENSE | 201 + gadget-drone/docs/agentic-workflow-loop.md | 126 + gadget-drone/docs/gadget-drone.md | 55 + gadget-drone/gadget-drone.code-workspace | 8 + gadget-drone/package.json | 40 + gadget-drone/pnpm-lock.yaml | 702 ++ gadget-drone/pnpm-workspace.yaml | 2 + gadget-drone/src/config/env.ts | 73 + gadget-drone/src/gadget-drone.ts | 172 + gadget-drone/src/lib/component.ts | 8 + gadget-drone/src/lib/log-file.ts | 73 + gadget-drone/src/lib/log-transport-console.ts | 62 + gadget-drone/src/lib/log-transport-file.ts | 53 + gadget-drone/src/lib/log-transport.ts | 16 + gadget-drone/src/lib/log.ts | 101 + gadget-drone/src/lib/process.ts | 20 + gadget-drone/src/lib/service.ts | 22 + gadget-drone/src/services/agent.ts | 152 + gadget-drone/src/services/ai.ts | 95 + gadget-drone/src/services/platform.ts | 168 + gadget-drone/tsconfig.json | 25 + gadget-drone/types/error.d.ts | 7 + gadget.code-workspace | 8 + package.json | 8 + packages/ai/.gitignore | 1 + packages/ai/README.md | 98 + packages/ai/package.json | 31 + packages/ai/src/api.ts | 132 + packages/ai/src/index.ts | 40 + packages/ai/src/ollama.ts | 125 + packages/ai/src/openai.ts | 45 + packages/ai/tsconfig.json | 24 + packages/ai/types/error.d.ts | 7 + pnpm-lock.yaml | 5951 ++++++++++++++++ pnpm-workspace.yaml | 4 + 166 files changed, 22147 insertions(+) create mode 100644 .gitignore create mode 100644 AGENTS.md create mode 100644 README.md create mode 100644 gadget-code/.gitignore create mode 100644 gadget-code/.vscode/launch.json create mode 100644 gadget-code/AGENTS.md create mode 100644 gadget-code/LICENSE create mode 100644 gadget-code/README.md create mode 100644 gadget-code/assets/icon/icon-114x114.png create mode 100644 gadget-code/assets/icon/icon-120x120.png create mode 100644 gadget-code/assets/icon/icon-144x144.png create mode 100644 gadget-code/assets/icon/icon-152x152.png create mode 100644 gadget-code/assets/icon/icon-16x16.png create mode 100644 gadget-code/assets/icon/icon-180x180.png create mode 100644 gadget-code/assets/icon/icon-192x192.png create mode 100644 gadget-code/assets/icon/icon-256x256.png create mode 100644 gadget-code/assets/icon/icon-32x32.png create mode 100644 gadget-code/assets/icon/icon-384x384.png create mode 100644 gadget-code/assets/icon/icon-48x48.png create mode 100644 gadget-code/assets/icon/icon-512x512.png create mode 100644 gadget-code/assets/icon/icon-57x57.png create mode 100644 gadget-code/assets/icon/icon-60x60.png create mode 100644 gadget-code/assets/icon/icon-72x72.png create mode 100644 gadget-code/assets/icon/icon-76x76.png create mode 100644 gadget-code/assets/icon/icon-96x96.png create mode 100644 gadget-code/assets/icon/web-app.png create mode 100644 gadget-code/data/prompts/agent/build/system.md create mode 100644 gadget-code/data/prompts/agent/dev/system.md create mode 100644 gadget-code/data/prompts/agent/plan/system.md create mode 100644 gadget-code/data/prompts/agent/ship/system.md create mode 100644 gadget-code/data/prompts/agent/test/system.md create mode 100644 gadget-code/data/prompts/common/scope-block.md create mode 100644 gadget-code/data/prompts/common/subagents.md create mode 100644 gadget-code/data/prompts/subagent/explore/system.md create mode 100644 gadget-code/data/prompts/subagent/general/system.md create mode 100755 gadget-code/deploy create mode 100644 gadget-code/docs/agentic-workflow-loop.md create mode 100644 gadget-code/docs/chat-session.md create mode 100644 gadget-code/docs/gadget-drone.md create mode 100644 gadget-code/docs/project.md create mode 100644 gadget-code/frontend/index.html create mode 100644 gadget-code/frontend/package.json create mode 100644 gadget-code/frontend/postcss.config.js create mode 100644 gadget-code/frontend/src/App.tsx create mode 100644 gadget-code/frontend/src/components/Navbar.tsx create mode 100644 gadget-code/frontend/src/index.css create mode 100644 gadget-code/frontend/src/lib/api.ts create mode 100644 gadget-code/frontend/src/lib/socket.ts create mode 100644 gadget-code/frontend/src/main.tsx create mode 100644 gadget-code/frontend/src/pages/Home.tsx create mode 100644 gadget-code/frontend/src/pages/SignIn.tsx create mode 100644 gadget-code/frontend/src/pages/SignUp.tsx create mode 100644 gadget-code/frontend/tailwind.config.js create mode 100644 gadget-code/frontend/vite.config.ts create mode 100644 gadget-code/gadget-code.code-workspace create mode 100644 gadget-code/nginx/webapp.digitaltelepresence.com create mode 100644 gadget-code/package.json create mode 100644 gadget-code/playwright.config.ts create mode 100644 gadget-code/pnpm-lock.yaml create mode 100644 gadget-code/pnpm-workspace.yaml create mode 100755 gadget-code/release create mode 100644 gadget-code/src/config/browsersync.ts create mode 100644 gadget-code/src/config/env.ts create mode 100644 gadget-code/src/controllers/api.ts create mode 100644 gadget-code/src/controllers/api/v1.ts create mode 100644 gadget-code/src/controllers/api/v1/auth.ts create mode 100644 gadget-code/src/controllers/api/v1/contact.ts create mode 100644 gadget-code/src/controllers/api/v1/drone.ts create mode 100644 gadget-code/src/controllers/api/v1/user.ts create mode 100644 gadget-code/src/controllers/auth.ts create mode 100644 gadget-code/src/controllers/home.ts create mode 100644 gadget-code/src/controllers/lib/populators.ts create mode 100644 gadget-code/src/controllers/user.ts create mode 100644 gadget-code/src/lib/code-session.ts create mode 100644 gadget-code/src/lib/component.ts create mode 100644 gadget-code/src/lib/controller.ts create mode 100644 gadget-code/src/lib/db.ts create mode 100644 gadget-code/src/lib/drone-session.ts create mode 100644 gadget-code/src/lib/log-file.ts create mode 100644 gadget-code/src/lib/log-transport-console.ts create mode 100644 gadget-code/src/lib/log-transport-file.ts create mode 100644 gadget-code/src/lib/log-transport.ts create mode 100644 gadget-code/src/lib/log.ts create mode 100644 gadget-code/src/lib/ollama.ts create mode 100644 gadget-code/src/lib/pagination-parameters.ts create mode 100644 gadget-code/src/lib/process.ts create mode 100644 gadget-code/src/lib/redis.ts create mode 100644 gadget-code/src/lib/service.ts create mode 100644 gadget-code/src/lib/socket-session.ts create mode 100644 gadget-code/src/lib/validators.ts create mode 100644 gadget-code/src/lib/worker.ts create mode 100644 gadget-code/src/models/ai-provider.ts create mode 100644 gadget-code/src/models/api-client-log.ts create mode 100644 gadget-code/src/models/api-client.ts create mode 100644 gadget-code/src/models/chat-session.ts create mode 100644 gadget-code/src/models/chat-turn.ts create mode 100644 gadget-code/src/models/csrf-token.ts create mode 100644 gadget-code/src/models/drone-monitor.ts create mode 100644 gadget-code/src/models/drone-registration.ts create mode 100644 gadget-code/src/models/email-log.ts create mode 100644 gadget-code/src/models/email-verification.ts create mode 100644 gadget-code/src/models/postal-code.ts create mode 100644 gadget-code/src/models/project.ts create mode 100644 gadget-code/src/models/user.ts create mode 100644 gadget-code/src/models/web-token.ts create mode 100644 gadget-code/src/models/web-visit.ts create mode 100644 gadget-code/src/services/api-client.ts create mode 100644 gadget-code/src/services/contact.ts create mode 100644 gadget-code/src/services/crypto.ts create mode 100644 gadget-code/src/services/drone.ts create mode 100644 gadget-code/src/services/notification.ts create mode 100644 gadget-code/src/services/session.ts create mode 100644 gadget-code/src/services/storage.ts create mode 100644 gadget-code/src/services/user.ts create mode 100644 gadget-code/src/web-app.ts create mode 100644 gadget-code/src/web-cli.ts create mode 100755 gadget-code/ssl/install-certs create mode 100755 gadget-code/ssl/mkcert create mode 100644 gadget-code/supervisor/dtp-webapp-web.conf create mode 100644 gadget-code/tests/app.test.ts create mode 100644 gadget-code/tests/e2e/auth.test.ts create mode 100644 gadget-code/tests/e2e/manual-test.ts create mode 100644 gadget-code/tsconfig.json create mode 100644 gadget-code/types/error.d.ts create mode 100644 gadget-code/types/express-session.d.ts create mode 100644 gadget-code/types/express.d.ts create mode 100644 gadget-code/types/window.d.ts create mode 100644 gadget-code/vitest.config.ts create mode 100644 gadget-drone/.gitignore create mode 100644 gadget-drone/.vscode/launch.json create mode 100644 gadget-drone/AGENTS.md create mode 100644 gadget-drone/LICENSE create mode 100644 gadget-drone/docs/agentic-workflow-loop.md create mode 100644 gadget-drone/docs/gadget-drone.md create mode 100644 gadget-drone/gadget-drone.code-workspace create mode 100644 gadget-drone/package.json create mode 100644 gadget-drone/pnpm-lock.yaml create mode 100644 gadget-drone/pnpm-workspace.yaml create mode 100644 gadget-drone/src/config/env.ts create mode 100644 gadget-drone/src/gadget-drone.ts create mode 100644 gadget-drone/src/lib/component.ts create mode 100644 gadget-drone/src/lib/log-file.ts create mode 100644 gadget-drone/src/lib/log-transport-console.ts create mode 100644 gadget-drone/src/lib/log-transport-file.ts create mode 100644 gadget-drone/src/lib/log-transport.ts create mode 100644 gadget-drone/src/lib/log.ts create mode 100644 gadget-drone/src/lib/process.ts create mode 100644 gadget-drone/src/lib/service.ts create mode 100644 gadget-drone/src/services/agent.ts create mode 100644 gadget-drone/src/services/ai.ts create mode 100644 gadget-drone/src/services/platform.ts create mode 100644 gadget-drone/tsconfig.json create mode 100644 gadget-drone/types/error.d.ts create mode 100644 gadget.code-workspace create mode 100644 package.json create mode 100644 packages/ai/.gitignore create mode 100644 packages/ai/README.md create mode 100644 packages/ai/package.json create mode 100644 packages/ai/src/api.ts create mode 100644 packages/ai/src/index.ts create mode 100644 packages/ai/src/ollama.ts create mode 100644 packages/ai/src/openai.ts create mode 100644 packages/ai/tsconfig.json create mode 100644 packages/ai/types/error.d.ts create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..9c922ef --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,59 @@ +# AGENTS.md — Gadget Code Monorepo + +## Project Structure + +``` +gadget/ +├── packages/ai/ @gadget/ai — AI API abstraction (source of truth) +├── gadget-code/ Web service + browser IDE +├── gadget-drone/ Worker process (agentic workflow loop) +└── pnpm-workspace.yaml Monorepo workspace definition +``` + +## Rules for AI Code + +The ecosystem speaks **one** AI API language defined by `@gadget/ai`. All rules apply to every consumer: + +1. **No direct SDK imports.** Never `import { Ollama } from "ollama"` or `import OpenAI from "openai"` outside `packages/ai/src/`. +2. **No `provider.sdk` checks outside the factory.** The factory in `packages/ai/src/index.ts` routes to the correct implementation. After `createAiApi()`, the caller holds an `AiApi` and never checks which SDK backs it. +3. **All AI interfaces live in `@gadget/ai`.** Do not re-declare `IAiProvider`, `IAiChatResponse`, etc. in consumer packages. Import them from `@gadget/ai`. +4. **Adding a new provider** means implementing `AiApi` in `packages/ai/src/` and registering it in the factory. Nothing else changes. + +## Dev Commands + +```bash +pnpm install # Install all workspace packages +pnpm -r build # Build all packages +pnpm --filter @gadget/ai build +pnpm --filter gadget-drone build +pnpm --filter gadget-code build:backend +pnpm --filter gadget-code dev +pnpm --filter gadget-drone dev +``` + +## Key Conventions + +- All packages are **ES modules** (`"type": "module"`). +- `@gadget/ai` uses `moduleResolution: NodeNext` and emits to `dist/`. +- gadget-drone uses `moduleResolution: NodeNext`. +- gadget-code uses `moduleResolution: bundler` with `@/*` path aliases. +- Dependency versions are pinned in `package.json` — no ranges. Use the workspace protocol (`workspace:*`) for internal package references. +- pnpm version is enforced at the workspace root (`packageManager` field). + +## TypeScript Strictness + +| Package | Strictness | +|---|---| +| `@gadget/ai` | `strict: true` | +| gadget-drone | `strict: true` | +| gadget-code | `strict: true`, `noUnusedLocals`, `noUnusedParameters`, `noUncheckedIndexedAccess` | + +## Adding Code + +When adding a new feature or service, determine its scope: + +- **Shared concern** (AI, logging, config schema) → goes in `@gadget/ai` +- **Drone-only** (Bull queue, workspace file operations) → goes in gadget-drone +- **Web-only** (Express routes, Mongoose models, session management) → goes in gadget-code + +If code is needed by both consumer packages, it belongs in `@gadget/ai`. Do not copy-paste shared logic across packages. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..98eb99e --- /dev/null +++ b/README.md @@ -0,0 +1,48 @@ +# Gadget Code + +A self-hosted **Agentic Engineering Platform (AEP)** — an IDE that drives autonomous AI agents to perform software engineering work on your behalf, running in your own environment. + +## Projects + +| Package | Role | +|---|---| +| `gadget-code` | Web service — agentic IDE, browser UI, API server | +| `gadget-drone` | Worker process — runs the agentic workflow loop in workspace directories | +| `@gadget/ai` | Shared AI API abstraction — Ollama and OpenAI, called by both | + +## AI API Abstraction (`@gadget/ai`) + +All AI API calls throughout the Gadget Code ecosystem route through `@gadget/ai`. No consumer code imports Ollama or OpenAI SDKs directly. No consumer code checks `provider.sdk` after the factory call. The shared module translates Gadget Code's internal API contract into whatever provider is configured, and translates responses back to Gadget Code's internal types. + +See `packages/ai/README.md` for the full API reference. + +## Setup + +```bash +pnpm install +``` + +## Build + +```bash +pnpm -r build # build all packages +pnpm --filter @gadget/ai build +pnpm --filter gadget-drone build +pnpm --filter gadget-code build:backend +``` + +## Run + +```bash +# Backend +pnpm --filter gadget-code dev + +# Drone worker (in a project workspace directory) +pnpm --filter gadget-drone dev +``` + +## Architecture + +gadget-code runs on server infrastructure (MongoDB, Redis, etc.) and serves the browser-based IDE. gadget-drone runs on end-user machines, connecting via WebSocket to gadget-code, and executes the agentic workflow loop against local project directories via remote control. gadget-drone never connects directly to MongoDB or Redis — it communicates entirely through the Gadget Code API. + +AI calls are handled by `@gadget/ai`, which both projects depend on. This keeps all AI SDK knowledge in one place. \ No newline at end of file diff --git a/gadget-code/.gitignore b/gadget-code/.gitignore new file mode 100644 index 0000000..e62f8eb --- /dev/null +++ b/gadget-code/.gitignore @@ -0,0 +1,12 @@ +.env + +data/minio +ssl/*cnf +ssl/*csr +ssl/*srl +ssl/*crt +ssl/*key + +dist +node_modules +test-results diff --git a/gadget-code/.vscode/launch.json b/gadget-code/.vscode/launch.json new file mode 100644 index 0000000..5214070 --- /dev/null +++ b/gadget-code/.vscode/launch.json @@ -0,0 +1,28 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "app", + "skipFiles": ["/**"], + "outFiles": [], + "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/tsx", + "program": "${workspaceFolder}/src/web-app.ts", + "console": "integratedTerminal" + }, + { + "type": "node", + "request": "launch", + "name": "cli", + "skipFiles": ["/**"], + "outFiles": [], + "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/tsx", + "program": "${workspaceFolder}/src/web-cli.ts", + "console": "integratedTerminal" + } + ] +} diff --git a/gadget-code/AGENTS.md b/gadget-code/AGENTS.md new file mode 100644 index 0000000..546047d --- /dev/null +++ b/gadget-code/AGENTS.md @@ -0,0 +1,35 @@ +# AGENTS.md + +## Quick Commands +```bash +pnpm dev:backend # Backend on https://localhost:3443 +pnpm dev:frontend # Frontend on https://localhost:5174 +pnpm build # Build backend -> dist/ + frontend +pnpm test # Vitest unit tests +npx playwright test # E2E tests (requires running backend + frontend) +``` + +## Prerequisites +- Node.js 22+, pnpm 10+ +- MongoDB on localhost:27017 +- Redis on localhost:6379 +- SSL certificates in `ssl/` directory + +## Path Aliases +`@/*` maps to `src/*` (defined in tsconfig.json) + +## Test quirks +- Vitest runs unit tests in `tests/**/*.test.ts` excluding `tests/e2e/` +- Playwright e2e tests target `https://code-dev.g4dge7.com:5174` (requires running dev servers) + +## Build output +- Backend compiles to `dist/` (TypeScript) +- Frontend builds to `frontend/dist/` + +## TypeScript strictness +strict, noUnusedLocals, noUnusedParameters, noUncheckedIndexedAccess all enabled + +## Architecture +- Backend: Express 5 + Socket.io + Mongoose + Redis sessions +- Frontend: React 19 + Vite 8 + Tailwind CSS 4 +- Entry points: `src/web-app.ts` (backend), `frontend/src/main.tsx` (frontend) \ No newline at end of file diff --git a/gadget-code/LICENSE b/gadget-code/LICENSE new file mode 100644 index 0000000..933fca5 --- /dev/null +++ b/gadget-code/LICENSE @@ -0,0 +1,203 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other + modifications represent, as a whole, an original work of + authorship. For the purposes of this License, Derivative Works + shall not include works that remain separable from, or merely + link (or bind by name) to the interfaces of, the Work and + Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to the Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, + the Licensor for the purpose of discussing and improving the Work, + but excluding communication that is conspicuously marked or + otherwise designated in writing by the copyright owner + as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license(s) to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright (C) 2026 Robert Colbert + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/gadget-code/README.md b/gadget-code/README.md new file mode 100644 index 0000000..32f6601 --- /dev/null +++ b/gadget-code/README.md @@ -0,0 +1,165 @@ +# Gadget Code + +A modern self-hosted and open source Agentic Engineering Environment. Gadget Code is a hackable TypeScript/Node.js web application - and application development framework - built with Express, React, Vite, and Tailwind CSS. + +Gadget Code is a Gab-first initiative. It is most well-tested and tuned for use with [Gab.ai](https://gab.ai) as your "Big Brain" compute provider. However, it is designed to be easily adaptable for use with other compute providers as well as your own local Ollama, vLLM, or other OpenAI _or_ Ollama API-compatible setup. + +## Architecture + +``` +┌─────────────────────────────────────────────────────────────┐ +│ Vite Dev Server (HTTPS) │ +│ https://code-dev.g4dge7.com:5174 │ +│ │ +│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │ +│ │ /auth │ │ /api │ │ static │ │ +│ │ proxy │ │ proxy │ │ files │ │ +│ └────┬──────┘ └────┬──────┘ └───────────┘ │ +│ │ │ │ +│ ▼ ▼ │ +│ ┌─────────────────────────────┐ │ +│ │ Backend (HTTP) │ │ +│ │ http://localhost:3443 │ │ +│ │ - Express API │ │ +│ │ - Socket.io │ │ +│ │ - Session (Redis) │ │ +│ │ - MongoDB │ │ +│ └─────────────────────────────┘ │ +└─────────────────────────────────────────────────────────────┘ +``` + +## Tech Stack + +- **Frontend**: React 19, Vite 8, Tailwind CSS 4, Socket.io Client +- **Backend**: Express 5, TypeScript, Socket.io Server +- **Database**: MongoDB (Mongoose) +- **Cache/Session**: Redis (ioredis + connect-redis) +- **File Storage**: MinIO +- **Testing**: Vitest, Playwright + +## Getting Started + +### Prerequisites + +- Node.js 22+ +- pnpm 10+ +- MongoDB running on localhost:27017 +- Redis running on localhost:6379 +- SSL certificates in `ssl/` directory + +### Installation + +```bash +pnpm install +``` + +### Development + +```bash +# Start both backend and frontend +pnpm dev:backend # Backend on http://localhost:3443 +pnpm dev:frontend # Frontend on https://localhost:5174 +``` + +### Build + +```bash +pnpm build # Build backend + frontend +pnpm build:backend # Build TypeScript only +pnpm build:frontend # Build React/Vite only +``` + +### Testing + +```bash +pnpm test # Run vitest unit tests +npx playwright test # Run E2E integration tests +``` + +## Scripts + +Your environment can be managed with the following package.json scripts and npx commands. + +| Command | Description | +| --------------------- | -------------------------- | +| `pnpm build` | Build backend + frontend | +| `pnpm test` | Run vitest unit tests | +| `npx playwright test` | Run E2E tests | +| `pnpm dev:backend` | Start backend (port 3443) | +| `pnpm dev:frontend` | Start frontend (port 5174) | +| `pnpm start` | Start production build | + +## Environment Variables + +```env +# Required +DTP_USER_PASSWORD_SALT="your-password-salt" +DTP_JWT_SECRET="your-jwt-secret" +DTP_SESSION_SECRET="your-session-secret" + +# MongoDB +DTP_MONGODB_HOST="localhost" +DTP_MONGODB_DATABASE="gadget-code" + +# Redis +DTP_REDIS_HOST="localhost" +DTP_REDIS_PORT="6379" + +# HTTPS +DTP_HTTPS="enabled" +DTP_HTTPS_HOST="localhost" +DTP_HTTPS_PORT="3443" +DTP_HTTPS_KEY_FILE="/path/to/ssl/key.pem" +DTP_HTTPS_CRT_FILE="/path/to/ssl/cert.pem" + +# Session +DTP_SESSION_TRUST_PROXY="enabled" +DTP_SESSION_COOKIE_SECURE="enabled" +DTP_SESSION_COOKIE_SAMESITE="strict" + +# User Signup +DTP_USER_SIGNUP="enabled" +``` + +## Features + +- User authentication (sign up, sign in, sign out) +- JWT-based session management +- RESTful API structure +- Socket.io real-time communication +- File upload support (MinIO) +- Email notifications +- Tailwind CSS frontend with dark theme + +## Project Structure + +``` +/src + /config # Environment configuration + /controllers # Express route handlers + /lib # Core utilities + /models # Mongoose models + /services # Business logic +/frontend + /src + /components # React components + /pages # React pages + /lib # Frontend utilities + /public # Static assets + vite.config.ts # Vite configuration +/tests + /e2e # Playwright tests +``` + +## API Endpoints + +| Method | Endpoint | Description | +| ------ | ---------------- | ------------------ | +| POST | `/auth/sign-up` | Create new account | +| POST | `/auth/sign-in` | Authenticate | +| GET | `/auth/sign-out` | Sign out | +| GET | `/api/v1/user` | Get current user | + +## License + +SEE LICENSE IN LICENSE diff --git a/gadget-code/assets/icon/icon-114x114.png b/gadget-code/assets/icon/icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c32345009e1a80862cbb2290ee1d1fbfbd4065 GIT binary patch literal 20277 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 Eg5^nNQ~&?~ literal 0 HcmV?d00001 diff --git a/gadget-code/assets/icon/icon-120x120.png b/gadget-code/assets/icon/icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..c807e9b78640120257a52293650c8aa1f3e7db45 GIT binary patch literal 22086 zcmXuK1yEc~6E2Jd3!31*I0Os9-4@s2?u5l*SzH4zuEAXv5AF`ZEy&{T?h@QC-~ZoR z_4G`gnK@lEeX6Fn#B92};cEKu#e_V}NmBD|N4$a%r<6`GT*t_vI- zI`01j9xgqT2o4Tj2O^~daWVy)+FL>_!7gy(4geQtS5vShz}no=0r0~S41jK-|g6&f44*V*TC+v~;tyb9Az|bbtVU{7-?qBiNP=05k>L0^F?KtStbhW-bu0 zsW}8-?r8V_E3&r)m^!?7fFW!jl`XB_6}edgoWPFuP7nbABiPZ^!NStweK^?ReKJhU z%*-FvA(l=q0syYBEC6*=dnY?fumAw4s>I9;_@?yUWDc^laJ91pKs=o+1po@BV6dqR z3qVp@2H;|DYWLp6`##9h(n0{h$-~Rb$H&dj!NmfQHZ`{dfGu4hj^O`qEdl@;X;m3< z<@d4HUhgk)bA0o77Z!k$qlKj%0A%U{dRM?{$<1fU$HT+-f7=BB@~&1^mS6`{R|u<) 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

fWZ2-2B9Mm$vl`GjUDUV2 zfZYVfv6-f-7lAMqj@s%9^h%3*VRfNf?O#ij5guUDE=BgTdB`=qUG*oSwQDSjMi7s* zkFv=zG=f%y(K*&m|4^|$DP5)1F8YhyhZWpG`Qd%+%&v;Z(23yLimq>Q+pII~>f`WIpAZWfKwJf*&IJ?uE4! zV|8)~7ONVF@m9z`>k}p?V*R5K1$&x&s#_lI$vaawgCIdy6{=L4cvm`ul9cY-{H?8J z)sc>ZgXJ?1k}?y(G#tc!sws{RKy|?!X2t%v&EXv_3~9-H(%>OAljqFxE&W9xZQr7^ zd#@3V;_H1~5y31_B0~!9*glZ?6Ie-Ap=2(#a?(PGhd(zndwg0M_Q2XLnAb#-zKtr? z7)dW}ienO=KstS&E>_VVPhkS3^iRYR{?O95p__3WlW#y46VJ-7jur@s7PGznguOnC zJ@jIWWv1t!lMaQo4!ak>QPai5fmI>?W>3iu{?+Pewese$SKQpdkx02B*z?1Fw_ix)8+f^r&iH z?sL9a>vMeL;@a?1j$qHj#|x z{);RI*C*dw{@gYw?)T_hLNeF>e>Cj64ajM?e7WMz^MBp>4LO76BZ6tzvwCeG=l1Fy zNQEM06rIY*Tg4hiB*OCcSOGf%a2PTuTeOf(dq*6m)UAlkWg^?d;JSp;~c;}~XJ0}HGqFgL)eUHNK-u^*P7tuL@8Wles(l{Z4QMy;-yTs zEb43UpWqM3w@{NUAK64IgRrke8=m$sdI~0x(aK>FCs&s>$lB6aT4r3Wlu-lAfJt#m!Pb7zvVwP*W zlzCu4JpHY)v#E>0`f=Y^BII!#DY$4m6&spv785y*>`jM@O5F>NCDCMvxJpRcaoQ!D zW#Is=ML6ud-~$gpeQqDXKXy?B3X2A_t2VFUp56?0bOk%60dnm?cTP8ApT?VkES#60GlO$a>IZ4C&-owH{Ax{|idS12%j%->I<>8ov8 zW394nS_LQhqToIC)ztK%*;x)+%?g@LDM$}wTsahc)P6FAKz9)x^MBWiO-ia?`*az- zQM*AZ*bD{ahJXl>#$&_M(_yS_>G8oPyn=BcGe00fTAm6U;M7+e1(;Wb?tX--4e#rQ{tiBjP&9Vc_}EQ%7Ad8hy`OaqQ-P8?P+67Jf)PV@IO?tvUETKs#Y+P0jSue~<4t%T40Fl8 z>k;j4IkI$-B2RT(EdiH{d_sRSxiB4sAoR#SL^UsyDoA5&lPx5!89)?ESPh zD1q2NENJcIF(rtb&CcjWFp(T~2GC}3~&E^6EFQ9>2asy`o z(cVOf4JBXH?fWcRv!{x5 zngZ%MM7l9`?IZ@FXfEn_3{y|}PpVuR^eS%1SQ-zsLkvt}GRU_2qfmpau%nG;d9F~p zav`2l26PxR<3FIiyot9fukxzU@MxY^;i<}`hqsQeyaizmF*2R38%FTYTqFH*3ynTk z{K7wRk9x5Le4Nu|^7Hb)yocinHGd6 z$WAWy`okKLl=Hy!vKY8qSdWN4Gy2p42kc1#qv~R~&+JAds-F)v1C*@ICMzc5h1kAN zg#KV_ABpvc4*#X_>;NTB8?1pNnTAq`cL$786AI_XRzmQqS|OrUad8b*1SLPv+N!EQ z;0={i6Dy3WNu?9GHGeM-sfF2N(ZIC z{x+!&O^OdZrc#rMf>zRXrQdRhYg8j89QgrPCqUCqyPyM`g$u#?V0DlTU8=S~%_5g> zX>nZAJ?G2pf$g5ic^_FC;;ZLP4}1R>+mk;qsQ&2E6Yd$RUo482m3M?VYcI65fKyjC za@{nT0VdqHsJMab8p_(d=LybYjxhgfgaI~2J}6+Fkn(m&?q3X-EbH%$h@C~@5e#9D zt=5Mb?7#Pb{$>fbmT3S^Ymp$v+0Rr2a7$o0e$+x(DYI9VO^Xj3LB`@PvDdrB`F`kzIULH+%2 z`=jpTDCZZ!LiM;I)20qKtMZ}AfoM1YZfT5?Cp6pOJ;A2JbBLl~(2`U` z9_OFzC_4hl>9onx5)@li?1D;rwb6kkmGK-6rUSaTn&QC^f8h;|2~W1r0_@$kCYp=W zRi66jb-l^nzs&a3A!BS#6^iA-2rw*^gg@ed!Rr{Hfeame=NCFih=(aM-~1h}YPC+7 zeK&OYyyyNJ;|nFo$nc?lK><<(KX%W+o?BBbwRJIY!dNH8W72VHt01yiS`q+`eoYHF z7W7+UNuxUFvwZSrc@al0e@C69sT0U|a!!D6ZQ_2&s4F9PVH=XpxHBCz6&5~Nf_j4y zhdEriAWhtrz48bSV2b-ay}&YVg(QB45i%M}#b_$<)8nMdt*&Z=E^dE=ysJFy(F4U3 zEE-ym_~9$!gWYpNzK)W~QE&kZ)LVHM%f#GkOO(mYq!w-rBz2q%Ox*D0O`O z8%#bOv_RF2qjQ|@k0^SNQB?i%@ulbUi(!Z$dr+?dGDdr7*u{2%Fy}ThhOg8BiuC48 z1Bb`~e7uwdIb-~iK`6oplcdqAp?(hQgyi=lwBU$-%e5$-{M^dA-G-FZbAfP>fE^;i zpX`N`O3#kbqe7WbHlMjxSKk3HReY{5qgJcT^mZe>ixHu@8C>*`!1U;i3m-L$MJg@B1nd=YvbrQPo|Lbk>?n^E#WM@c zAOI1s)y<6M(B==BT4B?qFiTgpvP%o>x?^ak;gttW&;|SKJdIz6jB3)r+UeE3U_hWs zQ2zY#iUS9)0=Pr7pk2KBZ43WhGDam!jaKMgh=4d+y_fC@1 zbFn+@?2n$Kk~57DttG#ek^R@`s>8an5fM^qjZyckQU*yGh*K+ReiC78QJCjw(XEML zWdz_xVKF)0r~z+cK`!cQmN<&P9loNWo9Kw!-RrWcR1dAtLZEosY#m3T7cO!U$`dJ$x>j57{k(^ANwOD)=Gvv!<`7Kj0{Nfg~@ z(;v(uEzoCVHKx|bX|4Ix>5!dw~R_8T31g2?ooJ5mrKyOMWKe+OqQP`M+=v*oKQ_$sj8xz z7idzNJ1xNR-{;oIbo5GkB`tni;QD$`<6hjub#_q)b1a;r-aid=zuBl#trEsRz!wFE z5K-w`t8nsR#iNJsy8mnx+!>Uh6(f>IlffC79kk&UBvDS3!8M=V*JTx?P)!_3*=xM> z0f>S@s>4mGG3)C~0X_Yq23~FbbUVX5Cqpn( z{bbr_s|gmjZ{L25S2dsLj>n=^)Q{_YwqE^QzP4Plx=g>iJS4O< zvWltrK*lb6a8-vfa~+fTQ%M*>s11y5>=BRs<-G1^&XDz_UJsk05m)x;N%O)gqecvf za}T9{SsF-tw7e^5Yu_XyF4wv`25^eow)x)hVXQ$l{Vf3fUQu5KQ2_UWWnIBIDF_RK z(iT{B(g-wr3Fx#{q$z*yGh5MrJPf$!${lp_6Z$1GKad%o2zInQ9xe5le|bq_k!FS+ z(MC|Iz{t}g7in}nDtXw!6^>LrBNDB2-`}5})fAFbJtq^awLfdFYh=qc{~|Qp<`wUJ zo+Hq0zI&HAHZRODee~U5_OOdb=+ODpprO{jU(YbE)th5=_J@Vs;arn&`o)<+N0a|p zU0&(o1Dj}X&~ow2_g>yi&gb?VqAo0{G-hhHP7r=qr~`Mrm(wGj9SEl#bNPTQ+4Cf?cCG zN8K(UJly-SX#V{s#2zz&IAgwF`vQ#JLO6c({-Epsm!f7W-_Xvh ztB+t~NWjX0u9Fc_HSyDN0{Wcg=Xtf%dA0Pp{ZI1h0do5ya(e)|Jx%T@O>Wds2j5^P z|FA#b&8hJjs5Vf$6o7eWjS)c7n z$oviL7nHCss9|e2Vb*^T+72V9$I)RS1J;(2ZRK*U){(ub@N%t$veS0t!qoz;wUBMH zAYZ{L!oWr@jKJ4hL{y7dK&2v^rJ<2EhI7)RnG6t-N=gzBw{s55sQIJq znYVxBo?StqSbO0_4CJmT$ptw$Ov9OGB225v^@NGRUnA;v>x)tdImJdHgAy>sXK-jiZK{$S1|*{ zD?GzD8GTZ5H&`CvVio26r^(5^2IN0;W4um)FE(x3m^5G(%N=96%Oys5@*cr z>qVh7Gog!&sS6K#d#}QCF|(IL%x;n8IvXln6RsJzf}PfiBbJkB;*i!bVnbcXttm&> z)+_QbVl5Q(H(;%kL+9(g+x=&bw%%8bmoLBCx}O73QWagq@e=PfeV`U zTE+m9z!MKVh7z-tMh{yGte77KASCkUU8mw0E+S9@f#qP0us}2qmn@-A-{0!3zi;<) zzcPaE{=InT1$CdkJ!W6LckMs_;+cLI>wiCtTJOCq?(Ir=`p10N=QOd|r1UOA@OOUo zPOe(@B^DPEjR0rzC$7<#Kp8ry;hKVQ7G@8q(*Dp=VsAD2pz(FO0%X!ZbSp$Ee?4?w z+{~r~9}Hpgr2Y~yl`zT0LPoHQ9p&!)-$`MlC^N(I zEqb3^kC8FKzuoyh-4kvEZQ5r(8%``-g5Uos1a8AmOlAB~4&PQ)^5EzdP}2=xT-xmsEkMVbQi>+GxmaAF-4YUhC|t|S=%93^-c zVBR1OZFYINSJsI1Q^REbjmF`ft+UuggQs&3^K(khe4c!8g=d zRd3xl*R11#sRQvEtyeesUCaqpflG4z&L9FQSpEPdH)|KA0&n;f}y+i?43S)SKhtd z8piCQd_Q}AdfSqD>?V90aUOW@V!4N90RQer&-YVx-~N^kTi-_JL;m+JB3)eEs^g!* zED&XL5cq2@PAWo1Aj3-*Ay=Ygkjmher09w4bksv7Z|2iwxP>InieM+mmH|OcmolU; z`?M^^;iN@Yp1XgWnDe2ppOqz|JXnTRxsZvGTVWL-QG&08Bms7c(^IJxA|FE@v$5jU z%TZj#MOdJ_cU5CHkea+#IG65q_i4Liws-Q@>0RC`uzvFMxwq)agd=VFp`@f=h zhu&Pq>%;#p6DHq{lmmSQuZJRjA6kET%y)X*_t}e*I}+D5_i_F@!QyV-tLL?lkt1OD zle}FNR%=BQE}#A{8WYHZj!`Ub1(zse0avOoIcWOk-_AjCKcuoejF3AzL3qCPwr$;> zx+AueJDw+MZ4VAt>aL6}F;2WnsT=(JQTFM!O$u=fne3nCcHi1tptIlmb>d5^@ITCs zm?xR?V$I7cjIQv22OPI;!cm4_%>h>pJG;4|VApnB^KM0Uqys`TgE{QGJLUATzAlBhd8dbuf}u$Wm=q=Y4f72Kju)bgKv%2z%U z*`IZLyD&suaG(Dw|0d+$H8zTRztkSg$oTjQ{@OF|XOew9pPCS~Rr7x9_j;Lryp<=B zM;Z6#H>++8NyO&a0X(s)F=kJwOC{pmq6jLC78sD3;|hghk|=OwZs}T!=*Y!586#ef z0{EQbJYT*{P8fBNyIX;%;WfDMfgWY^;c;&|S$=dKmy3P<%dd!AH-Qgj&hMmo-Sxua zZ>4+r-hPyK*p(Y!95kJ)F+`Hce4tm}$!^9{M-d-wz4OONiK1A$}kUF zUimevJS`oV7b`O|m;B?w2BQO%y>b&xo_qvEQy7)7943Q*)N1v`3r_Jd{Fbq4Bvr1N zmZ)msi;Y8_R!KwC`}CGj_W2i2;MYpacZ!LA(WPIHzkAy8UT@6q;%;ky(Tz)?J+9L73%6W4Kddl^c``RBpKrp9#BZ%eOXRLA~7YDzpUN8tlcOWm8 z;KmiNY=g{Y!`S2C=h(8t*s$_zxnH;m$x3{s?Za#FzZ;qcQro7N=XGu1O0!BWQ^&2(xeFO!O?&Cs?tX&dW-7MTa1Ke5LBu>th z2=&%@SUtTkn7HMa)<80}$N=uCZNaS36d)UbCk15J0ZP`NvYIU_(V^o0MD|N{*FY)h z$5i_-2lp&Tj8ybkULG}Cg+{K;*+d-4xZ&Qpt6jc<&D`PcLlQCJUw40h9Q^Xu6Wg*C zYv1^{a$FY3K>Fqz|2B~DEM7PF?$`Ks@A`@wIGPj{>O3v_&s~-XlI$eKm@HLC5tkT> zh9`d|pB880U?7e3HSn5lzM2J1?ie(C>U@|h2-lQvBKWF(M@Uh%2p9y3g+NTxu4sf_ z<);cPGcM#6swgG9btzBCSoBebA1Gor>TFC4V6y}$mxtE z#{W4`9Ke+8Zi3~@Ugi%9(j=8vIc*8eBE1`BfgZ=m*EO`4Hj;;2 zvwwGR1LBEGLG6-{{R$h-1gD!>3%$H0L1oo{NnBmIQozl^Xjx@@){MP9C1&g9yJDPwnrHb&OU^6XY#upsZI z`+b$Bxv_Z^RXf$chnbH!>l?>ug#SD)RS2NO&`KoMnu3G2Ja3oizB2$A*eT@ok zNIKUBpW;hK;ybZ(-vkc+ZON5=Jz0I^4Z6~MvHs;M^9MRMM~% zm(-#nx(T`by5AQ#8gfbF@2vBB>~;=6(qOl`7mfC)u?%!)e$ISS@O9DUcKbUCN!uG8SuV1s`5RI2j z{S9Z#`L7Kh+Jn=dCUGQto-v!D{iaL{G^)8lpua^cs3`Hq0;Tt{gJ?`~9L;J5hE6jgsVpp_3-kHoU zQ=hi-sl~ezf_NQk4InE*_tAFmk6>7DYD6c;7601jFjP-MGSknq6kOcDKl#d1@tB(9 z1{6eL2BUv-$uMf$zI1!?m*$l_h>o^&o1kvIt4*AZdcxyP!wP@vyo*}obJF6~&xjrzcSm^_Gom`P;yKb6cJAV$ z-aAIIq}+&nm4vNn;6OpXdBUAQEq$)j)fASPt zmh;Lx?*gX29ah)3tF;_5FE0A)Kb)yu3Q0COw!95W&aXDq#vY-Ka1(Zue)n5{JKnns zVHkx~-A4Qxf9_BAddIc46%_mahwsH)@5_A(4Vxxr)x%aKSv$I*i{=EwXS=Vxir$-k zk}|%7qdC(t^RUNUq^aA5B1Cbbp}mS%p0Pa?DN`vAT8%;Gt}f=ZJYzU?h-+`?fJ(?m zc8n9K$?0(qiA{6}ZH_Kvhz@-x&b zj79Cs1zzd*-stwmM6*2tb%CA+FRSej_paymA5x2KsYkOjCYkB_UG7___%hFTZeF_@ zh0^h&G0KL2s7inMnrapd!U8AeBqSWOu77u$^=|I;KH?Bn4O)!o$o4+HXxH^Vw9M-4 zDSvxwVSC&x=(tqapRQi;HYn`bF<9M;M)E$Sh_kO>ru@-EMHES zU~?~*O4xm#=@32y zk`0DkrpY&`dw#{(_{##1e~eA@n!EQUK*A#D(fj&M1uG8P1n;cp&NI~^az7=a2YpD8 z6mXmcx}wU+1o+Z@c*YO1U?73muEBF0C-`7`nm@LA3h$#3vfYPsiBcZjOsRsa1qN(Y znLxWhLaGuW&|@~mw$ zL1E6pX8c2)fSa_ukB8g8d^}N$vaXUQiD+U{a_!7x>Z$dnh0cR7n51pBq)kp_klM>O z_DcvWYxZ!;aGuUaAAXha@`);v?wXlTeG=<@`oh?WV_Wk&38xmDO>&_b95&F=i3+Fp z2z_}WY@Y#h1w+JPFd9PoAu_6b zgQDlx%nsCa;e~KHq(|@gyaUBV-OTolt+5xXKAVi@gj^FI+U(KCI*vO^0u^N!st+k7 zw1GlDsue*eY5?~+%0yeGT5Q`VXkbbLV4nATkz&}f4y$YtI5Ijdl2S?2F7)mDoROi9xW=r=YT28-_A5~P)k6E;Lgp2y_qvzz ze4X+Iw_2Q?kRbmZa-MUa`Vg!@(I|di6!Ao6{FG^)ve?-qnG2o{iT&Z^<`d` z*~Z+AK*)kN2Vt&~A(xFY=0qgJ-r2Z7+~8NcK%s=Yd@7qy%E{fD{>2s1xZh7Xmyh&* z!FSwQ623jc9_Fu}lyAQfCtoNyFS@rH9*qXdy-CG-c{lqtD+RI-XLvBpNG!BLa|qgO6+OVg6x%J~nB2@;XpVKJ%T z#(*VC&~I%P1Ay*&lAb|2om zDYy$!^l0OlCr{A$+SWZayi(@EovCCH_n#k=-s$V9U0uf?t) z$j(n0j86wUVS$S~xPdX$EaZOz&gam;BrCtn>wgh!c zJ|1R!TyE6{J<^|=Z>$P#eR2GIQkLHBpZw~d3`Asbh@c_`oLF}b&pl`_cnEI_7CkX8CRoqL_seSmzVNo%j1!Z-VrVYHA-ZSt^?1O zUz$7NcoWuma*7iOVg*vEexUVRD1~QpMzGIqwrF_6$jgbC_4X0e*z5xrGrcQ%DEV6T zDxk)OIO*ffjDYqA_JW7jPZ|7KZvkN!^~;!CyU?PjHa ztL?u$7{;FU;t9Gy-yCOVJtpxQiBO-Y^v0njz)Y8w*GN#z!jDhLKc547MpTH($9~Lq#Cbfn_EgtTDL`PVoQ8PUb zJYY)4KMcfD7OhncBGXf)E>9k<#B)Q4aG(Je00-}Ik$pz~e#(6R{YtU?K4x?OR z|NOg$_@@ryHzx~}29=&YWif1LlK{7>($f;!?8RdtD}ah2%+{puwXDPC%y%K+9;-gYRa$ z$hmD0xJxs?Vwmn{5T#N5F_Pz%AikI9Gc0%OflR>OinA7Ls=9-d1@Xf*FY4`Uid?i>B$DD9DsyCZt^Bc)J z{^^?f`G%+7i8X_-GX;7Mw|KK>-enr{&S0Da|EAUJb@XAD)YZRcZ#mHViB+Pe-t#hP zo!`&qONH0Vx`lsVlMdQ4Y=Z(T4{{YhIiJsV`4vC^IlWK1vx}@Vw98qYhrElxHNgJ8 zv$(%pBIY3XBy#XtTGKuepT^BKr<1NJ9}ivoo0k3Dw_)likUMy6Q{^aAWga2U_YpO6;h#|*YyU3-q_;##B6c%@ee?{n%4F3szmiLc_Gw*2^w$)Nwn_U&QnvX zvS#y#H1`%r_7-MQWR*p5>!3^W2_G^wC;8;q}pW!>sW7T>22P} zDQRUxPEJ)BQ{;FwH{1_Fs#3IZonoDze~?Z1Tf0TF0d_$L&Y9ZiCidXOh;5?am+n#< zQuoPC z?HFd`Q>DbxvnZx6TD~1&;W6o@$;58|Me_uE$;OXK3f*g%Y;G^vacsk^YQ)rcJ*3S_lclC5!qV`b|3ai^r_`xiZB~cF=se(`Ac= z`fB>$Vu>ZOqAKmh?qS<(i9?TWo+8|jURs#*<+Ba(0vlPsVoI{s_%7;RWvB$Og>K6{ zL--DazOAYPHqWchWju+wvRc|J8X?gb8^Np_p$@X20^*RDb>&-#mx z-07Eg+>dTvb-|pXchvEY8!zL52;tWAqe8`nBVpg^%$ne%>G%wepVne@%Sd?8iwiaD z|8s@<5>+v)@`8_BM@foKJh|S=cQ2c9C=0g}@N^v|BZi_m0?=<%ZMPkK3+`95__Sj9 zjJkF&ZI{-<$;ER#pLI4uP3i?GPmN55_9Ss>qwpkA5-D0@<ONB@q2pGlI>QeeMf~RZ!qRV8#8C0V45#7t;!ZvpTOHOOdgr#6JGiR zw(qOa4o)!<=L3gb?WnHZd}SYQ`)RN0c|h{QQ!mzH6> zfpy+gpd$r7UM0Uf0;+YxD!Pu*Fg+1zBZ@4kGgO#5#ViqS>#U}MxH48Xn7{+n?pk@M z*CZzQeL{|IGjs0;vg8rb*VUMvFxMMe;MA{{t=7>u>99J+3P{Eg`^7?11=r@V>{Ps} zWn+FQnL9QlZUNEryA7=Yf)a1md9-Y|LGQifE8>S9<<-8ec-?DSR|dJ2Jzw*DN^)Kn zaRWa`W!PSRFQ(}AT;TJRoe0^}MoiQ`Un_aGiMZG>y|u*ewIusq_C0MzABT-e~K-M!NbdRCdjnIBF@AH zCji2noU{37oM-}4K<&R^ClN*g_a;xKLk7I54SE~Q{}YKocE6PkShVs`l_-NcjHtuZ z1UPQ6IgAzo(HOJnwv!US9&z7>Aod)7*7nH1Qq*aP zieJXwy_$c*pewpm`Kxu`>()=G38#%uSlNKuDr{{z>B^RiC_`9>i$>CIz@0#(R=q;E zc>x4|LAnp56@8laGUzU^VRoXqP=xMJ%0O;ZR%vzXPZ@@ZBp%D ztNz;}{jd5hmzPANk)j>tV#j7zP!d_Boka!$>fk9ACF##}#EJ`}rG=i*9F8nWB1NT{ z6zED_BwcQFIZY(}e-nwzB0(E@H+a4P03ZNKL_t(3?GOOHR(QXFMX0Su;#AP>se1iw zibycg3M5(KVx$t0RuGY(jZ~>nqm?&;M_oC=o8fM8rQ){WE&zDxggRX&s{_%PO6bDN zy{}e?BajwyvE!bNftPLi5^L<-7XRHm*Ifw0wc>>;&H*r7V@7S)xUF{UF#GvzT7E|Y~rH0l-F)9%;)cDwe+XQ&_B zqI&o=)elZn{a}mw2U}J5ouj&Yx8}w<>d`v~Y*WXn4sKL^wqCt&h5Ew@!#kapJz2qM zBx$i!=s3a^=!PN-l1mxz#F!#VMKLlQDK3Z>7I=blII1SHDs^0&Mb?87T9i1HNGb|; zC)Y)Sq2xD+lB2XoZB%4H9Ju0;gBwke7=MSFZVyWYk zfzv}K%xS`0CaV+C8mrinYrSuE;G2;ae7WPkqx^4Tx*})n_-_1%)VP{_*oT@^R$B7T0?taOnEe2J^9~p0(G%V9mUdoln#kdM}?$)3E zxc+X3F{vX3EA25+E)x)`S*AVlUhO+)XdXO8eg6rnyN_4hb-e1%Z>daH%=@kW( zjG$yVoSPfUO}YbpY@Y1BA()Sc!&38ldcd} zmwsltZ;^48j`q;*0^x|OQO6$Bu4jx7IE^U{DOwnhiE^7!5z%UwYEQUZ`^znw`%hHe zeXQ!vV^p^utGWf0>YKN<+_+PHWv^=J?k;Raj3ry|lc2Ve7$|J?z6GlEbX#CuM4yz5loM}{Jk)>f(8N}5Wxp|Z7hQnK~-JrT^gX)^YTdqC{ zx%v#%Mct~N@0YRvF4lfBruoO9_QOuyZ;OW4_mFAAO==>@C4I&>U6{0Y}@N72oQhTd$y?=1VTvh< z=F5I*eJWti>S?Eq3s_knhC2|0VZQGFtL;3%+^EjIKhpHxN4@PzTCK|V=H9WvU~Gep zjWM`jObc!lW10bjsRm-4P(mj(Q$i0RB$u0Tlic*c%_Tqx#db&`AtX;ApGfXGBlzX5 zfu@`-oik;mP(H9!Tt3K~W#ba1Er}W9|ppTXU_Z4`kWap+g}2X|B}+iPqGiMkKga z*3t>^%OGz3RUvGusG4 zyFhvDM(d{(ne7O6?_>V$cyc)*3SzjE3AGb~c_(wtYuq=(bcPVvfS?kh7Nli@AP%8c z-4*=)NyIJ7i5r#@*BwLbT0&gAn7C>&arv>tl_wAvq==52%hZR{h_{D`w|a?R6^S3U z5idrF>urjoBmg8(BA_`&c8 zH}^bqX6KG?SAO>0p4ZRIUArr@`_IXr-AuRA;{Re`db(ui5*mv-VeK z{npj&_o}nrtIqy?b@m^sbN*1B{m1Ie_p7u2Ql0xzbwRbdwp!g%t)7i^R<*jdTHRKy zo>Q%EtX9uJ$J3Ecs#aH3t1JFhUGYEFW2@C=)#@?-s2=w})#FhR&JZ zAgQz~PNjQrRX91ssY$d((+{%C1*zw<20yZU?Mpvt7%q@;I;<_$+{q+jFgpxX>_teq#zYHrdFLC zUA8{5bbWZ~y3o;UoTFAbi%)PCpAcGfytDAQ@WNxmN3IAhToGEdBE0yx=#t}7$DWW~ zb3(_dONwikme(HJf6DTK^+)%wUedk#e;G;#iYfi2le{$jYOWMxfncKF$vihXn)$97!tnFRBw&#QsdXHP( zv;L%>GuL)+T-&o@ZSSVFy=SiNJ!@_MmUVq+o!Gx+&A=Ha4xE1J$lBeLkJ~+Y+3rcl z?w+{vh6yWf7+JZk_ZX2jb*HD&w=$d<lSV;>xY!ap#CD&K8b4OE`85zkD;hY%{lXGrM#nd-Mk8 z=#BJ}Gsq>EuqS=ly2v37f*=A!pmt0WiNlCFBB7uhoDEm-RhtOSCT3`a3gA zF=B0uI3Y}|u!#YcB1qM8db@g8gyMsooPh0Ty-jG*R>F{$^sKCB+e-5?#Y5t01QK=2 zL2y4mNXG@~>t)4_NH_Mi?FU(Rt!{?^0;xBG)W!x0m7OpTwN?Nbiw(r%0}=v>1}>nc z17lc%&2ku|EXi?QEzo>8OSb(&y!#XNx&Na*SJhsqYTp8>FI3fUR+ZVRifP3gI_WoDsyWdrw`e(;$JwkUMY~}b>xX{be@tlSx<;+nBlBtfkkVA#|f;>h!zTnV2Of8F>y4jfW@5U+ov~=@sti;`S8zYx2S|aXU!rcBre| zv&@P2vvM5B)j?vG6-jTG^=zg%H&dJwPfr~U68JeT$jE5FYSck`uGQE4u)Lm~78dzw zAO#_WKxQJbfmpm>Qc?gCMiV1YKq8O~XVA1tQnDz;bS=+tk#sQqqPXXP_~7rQ`~NKO z{fqp_hw`HzNDu!>+WQCbq2CG*yer)ICV%&@xI12Ezw%?|rvG5}e1qQgBkA7vvp+8K zd4d%*QfIJtTj2Zx)f13a#YpjLgyhUq zh_&Ys8#vacMT?dkMzUE!3ouNSoiIT@qgz~45>}Oj6H5H5GJgWnnzVQ*!&^a0yS7jN z#a!;CsmzNL>E{QiN4uCiirm^%I7sSNs8Z@V#)XqWG@q_xRt{8ksRwEfb0MM`L}W zl4Qhiy?}%OAa#(E9Mjbt!-v{}sqYAT4hVaHCqDRr_{d+S$NnmP?Jv?}?~9NAPJDR3 z@Zej*{jYKNzQW!4WA@gU*qdHpZ+wE@^^$zo`yD?m@vv(H8sUm?l0&fU#NgEJ)b=)^ zhf*WBo0nJPXvR>S;N>zocs=pOZfZhM)ikS3(xaqcokMKAB5;Aog&BmLRlr6bY4XtWoB48agFv>*W_gvN0} zN}?3g)Ev!+GQrfh`91Fl5A74~|AYAOpQK0sBt80j>5={7!*7cZ{aSe7zlE>}}s+Z+V{m($nl0AEK}NrgGbRrJr>21%i_$EyZh5PKpo=H-((JliryX252oR>uKox zL!)4lk|KDyn;gC^a7RBqh17K2&dElc6r3HwZC@geh9kWZ3{nU;g0ui6gI#M>Q?fMgq=Koh3%g$v9(Yr{?_Fu{0qNoW(!*~{ zdw(rG^s4y4%i>pmEZqG){*D*9Tc2mY{1mhMQSSPC=*yp0Z$41@NhjYy@QQ4t1q~cH z!En>a+1Jw7bV$Rjkx&d2(ZFbv^^ByZ2|?~9M;-{=H%!lA$U{{(Kbm-aP78Q<(4d3g@;Z3DUBhO1XQ99qD1Dhz2_W)pv}>P(>KIYfpE~Oy;Ni zL1Nb$^MORJb$C3G<|vCqAbUKJ^~qPwAk`X3cgtNtKpoNE1^v_l z>i+rE1BX)&E}$M-KGuyO-m->$(s+WT*zLVRz zhq>TE<%WITKQHh_LXg2Cb!e>;tS~z`?^b3{hddB8BZAq+!=(%lQ!>FKM}iZd59}Qb zP7COk9WN?YhTyC{!Hb`wzAW=m){OFIoHJs)93m*XLY=Ul`rfhRH;*A-IEMPxGV)u? zgWp~jeBs!@OOyGXoEQR-3ykU(=96{I-&ZgnETG?=&b-nuUX)1&D9v;##qOi+Xcr@f z5xmhLQ<9cR<)^}U|^8QB4OrL#2yBUEkQQBR)1y3@sCH2W05XMwIxW_l+{!y z+#QN^3v%28i74U-a;#3#08$Xcs+^%YJ048j!(I9B!W}P(cl8&Xf9sR{O^L4#>_1k2B17QDzj^L^pjAIs1ETz>v#_4!xy=U&#I`Gx-E zkJN{MB|Y(X`uo4*pM70<_~*)lKUD7jPvM>qgy;Vzyzndap`WSu{#d!^`^r7HC|Ay- zk61)rdm;7i=HP#y5qx!H@YPM!e{ZD!YXkjXo5?p16K>|jNPse*I>M@MX8(C2`|+{t zhet5Koyx!7D_xuhkd{+&L5d;8>hSg*uI=rfhvoQcI+2?iZ=W1VKtWjZt6uYCqyn0T`s-8YGN<)IeG-L88izilPkQGO`AeVNF>{IiW5GK*ngnu7iY{4!BkTNgYH#soP+u;LIi?Rsg~?b4q6)LS0azVftw=kxkK z|E7QSKdgIyrabg(_VIVf=U-DEeOrHQpZe6>>SON;54=x5^Oo?n?;1CLSNqb7`i(Cd zd+t;&Uq~%nPF}Z@dG9>x&2!1$oJaoVJo?w$m|t&Y-Z+olf24E=D@Fs9_0)W;x{3Se zTJ|5yxWCS4-asY1}RApBeImD zIXfCm+`w*sl)LdMZqKvq&0ptkewMrWDJT^8?B%|A9|sg~1B#dKW-i*roOd<5^LXT9lJRG_O;v&aei}nha~Aqt3Dh$Lb<$v5Z4 z`QI&3?&HKnkT#z_%&KnS{<)g{$5QTZhjG7~B)m}(ccc>prI~iAqieAlsn7xj>F(-Y z+Yg+VO$^6@QzJ+;?$HvY*#xp5_3ZdTTAilhbqMGKj&E6A14tOdLX{o= zmL7hPP6dOcA(Scv0tJv9_*I$#iwu&IAcSNoO>=f67{7)+?*aC@N7x&lVD>!8eCY{x z&tvTFz3dI1EnaamyJI)AeHU}yRrEPKnKLh-PP<9k@n+x8JA@)3D1w$?)d;lZ1&4x& zt_C9*bWOZQ2|CSN1S=$ig}uasBf)8eBnoC5r^E7lw6e%-gGGXCbr{x!@hPWlhswMdMKN*feie7LQWTVtJb+Bn ztQ85ycQRY=X0E!Qy>>5i{Uh}C4>Q+2!0h@ed+puqRkyP{Z+30*{HvIAE@RHTl-abE zI(d(H>2G>o?hs3apbC0|Q==%PZip8hPI7oL1Zy#2+iD0V3wver;CS=F%9F(7(}RbQ zifNcdMa_`3c{y?B4Z-tR%Ag_2uT4XZ%yB_#A0l`McFOy&RQ6w?9JpNCf3^7M70RQ$ zkN}W#t?H@#C&zLBSj7Ex4)?ne;nyYc@??ylHNz@)loy$yGA-CJRi%!w4pLB(vG$44 z%t$0Q)L2GBR89}%$e17z%Z5D!EC5-+AbnFkyvj~1kSOSfYmsO!q-&9qlCYez?UZ>j z;#nj#JUoj8kUN}Y$Z)0}e%v^dS zd(kfTJfKK#xtQ5_0ekwH^od^-w!c~VuYy=61Xa{iyc!i$SX1B$f+3?>(YQOp=7b2r zi8-?CY2t|)@L zpX>7WG_Qg5ZF?nn7AYr8yJ$Nl4nUf2lxnn6z;&${B=1OKl41bl`SgYx>Fu}DJMN^f zxQn^sPUec+n9FZvcHG23?dCcLQDn~C&TKf3KK)$gl#SHt>-Y=bEdN(QtRRqSUW>!x zJvAX{u+{+jS5Yr39(!TIE)mFJ*E4~~XOV{nWkWZLik1$t=B32u>w@R9q6ZDq zG7w0ZUtR-=Dm$?8uF-Gnz4n+Ob1LjiKPE^EgXDZ5IfHHlDT+yoHJxDWZ2Ht)^tL_p zMYqtG+)7`13w_B=%*A_{i*8^pxR%*=C8BsSz2SWNv~%c_&!X3zPOZE~IRB0EFAHK9 zA!w43;k5+JUDiOnmgHe7bAs0r9I%X{AkPtkm$GE#xxf>%!6FUAD9Tzoz!{eXHeDOs z%CliwbXXAK z3+y`^nfH$5pOD0CkTsu~YF1b9pDbWMp2PlS68qb3{g$l4f<}N(&9UNb{zI z!rEfNf>HRjX;z8|N&?I=IS`8WdzBs7irxc>r(HFgV{4F&WhB&EKLw<(L!b#H1mysb zq8x|LcNe6AC?b%oj{4_dR5?hBELdcmW(}K+oJOtQPHnh?-f}f{&b9Q`Yv`@0c6!!j z%;rnzjTg~h*hZgv7QKEGy>U4VLT5{CBt! z>9P^jeTW5jt8aN)84ERXhx&7j{saE~7SIMs3+aZMvA+coBWZHtN)~>616p>o(A9PN$DwPpw!-FI!12x{%-a zYUSllvAYJcl~MxKgJQe_9^OAudNLJdS&3v73Ay3lCLi#UpqGN_H5=+S*+~)^(gKibJ>rk zu^$eyzb$cZv>w#Zg!YfCkK=2bOaLnRUNT}F{~gdaJ(&w35wILVEB0Im<`mL zbEuQfqfR}aI_-SwwDYLb&ZSN{n_9nx0)(g0C!9U@fPcs_L`A?uo15VaJ+=~o0cUmM&eF)>mOvs#SNq8xw> zW`f78CSP4f{_Lp0FBcQPTpW0LVc?YoftME&uT7;Nmc@L4HJ=>Ot4A^)&tm^Rnf;)T zJ;-nTS1c7jC{6pzGim>cEUA_6r`ALb{JNN3le&BT#z)Yd9GDpc}IXUQnP}gW2nU^ zQOA9OTD6Hrl0z`TWN`6P^2bMz-<=!$!6C#C48!&IjmXxn)vN571wyy*z;e+V!y-+!+eG0a{H|4U%Saa_3m~JKkvGf^ zRtQrykZcVkwn(1kZ2`(i%?#QLsrkoJN1Z?|T|+HfOD;c=TE3QAwuV}U;2ph!TD*)} zxRhFOGd=Ms+(UyiPhnSoul(J-Tp~nMGP5vH<(Z(+D7TDMB7`7E>C7YaeG90g z2w4S?T8iMc9l?!P13{ur|?fH4C)j@GaGf1rlG8T&WIq@DR z(%T9o>X!2i(Fd~L8-S*I_{+!|NUH{Nz{aB=b=TSrwbmNQdho~w*UC##)yU}pGUS3p z6dOPW1q_m6b)B^4QgauOhc6-*97P?ugj~3UJaP%S;ArxQqabtsk>p`Vkn;{F=gueR z%p+$VO3j*0Ok2&Ye6iy@S+Purrf6mnvow!=DKslno|2prWntw>Bp|2`o!Z84?c)YX zMVF1Ns3i$rKQDOd&cIfQjRuu4t;JbA%1dT|A;ZDBGlGv#B)&F8JU&1?)=xarPwed@ z9vUDXDN{E{QkLMYd%M)?Wcq_%>ir`1UOWAEf_^i^+~AmGkXMa-CO;QIvH%h_kbF{M zu$Gsj4g~)0Mj(e>ierHs$F*XRUKv>fS-~LPVJvt49I{9N+39z!QUges?I?&*RnO^W z-UW&J0lWfIgTY8jLar5Cq%KqX05dX7PnW>}t|va?&Jn;v{n7L~_Cea%6-Y z9wvu|gM%Z1;eMj;aOSWF^7pj~c|y=QHOaz+xhN|~89C-9A`CuCAx46!jufvjoGx)T z#Yv202x^EE^#Ci(2o4_;JVItdLCK)B_BolKlnp-1gwP?ZFG$g6Fpdx3vYg zWrEw<0~aN!GdM9t@W!QW#_OHZ%Ngz$N%kjE=A{t#Zzgw{VNd~H(L36*vlSyxaXRdW z;3C956){1JGlGpk_E^y_C)|T9vIcTwT#$nY2hym6w8jRhHGqV-lTbh<_!uRVQhrgDNbWJgXK*Q#$C#2r9eZ^jvu7a5~SvV z1d3gzQg^Kwq|ddYU9DJ?7bB{c)eH#RN-@YHF-Qh#I$jwmGMvrJ2?ZwUwkdj>thLvL zqGtP)ftcEA8=45(t{Pd*>M$Z@JJla;n;37KlFUv@=B6a`Q<5E1k{wf1`KjrSsp*bs zZH4KX!i-Gk^i1dUw$AD8#Ti)$+I&d1GzUd*J|tI}ldl|7=$_ZvJ+Gr{UamYRSDe|_ zIW65eCEYnSU6`6KOiOi4OXjD?^V8$7m-W`-ZD zq&Op1njSCBNEK(~yJqK0v!baH4V96+hWZN;Lg*7l-NKAu@lw=|cAJrk9clmxaxKz_ z&>U(QjI7Tz#~@24Y)e}p3|wpVfwaLQy8xs*21qF*p{*eWp$5|6#fYM{dmyzs$OhLc zGMvQ@db+@hjKaLhAUI%7t9(b}k9Gty^9`mAWb86B`<5NZNe`opo`jQ1Jw zUNhQnMf=Ps+-9JJ745U(X1KvZQMc@9uN~`kqP-5J`yp;wbij_G4@P>dXrF54Y0lu) zsB4HAq!Q(n2m%?gBVA^=Y=^od_HYzHB8uK5olzj0&9PqDvA`mYnnfB-AhAU@fCSg7 z)h!aXy%HekDt4_NNF9M>wdOLCQAt`3k`iwu1S69S`hG~DeE1&k+fW*MuiQ+PWK>qPYvu?< zp}!D=w0J3OhRV8Aw45$%k)ILdK)teKjaf$a!#?IN$R>+KYwA3U#319rs| zkPJL53LXtSFZ9SHih^T3jpSl$AS#k{P3UGOneT`|1HNns;Y(wt7qu0*WSAVK~*&Zq)% zpvkp*AnleQalpYwkTL=(Wn|AH!L=fgoEVlcNFfZbXPu(kvr{*S`a|)j@u^QW)2YAp z?)#2k|C*>#IX<~nt$LbOM@bu{#(Zw{4I0g%e;S7pp0E?*#1M?V)F`?_Af+%3HRq7w z6jiHWT9pVI?(jyhh8sZ+wFYUpAR+FDg@T;CL*7Z0%T7VRaxRH1m;eH$sq)V}}jC9wUe~N3>n?b@Q!S)+35s(-|f z(0>EW7l{C~(UKx8Ldc4+>=!zi1Y0xnir!uWiAqXu5na81u2woWR#{z;y48M0BaC4gN(p)cL~V~*(l0JKax>aCP^5wda^BZTS?`V@2! zVvt5o*4lKVSl?Iovw<8yVLnkAX+pcB1xRd>md_$xkV+jScCG$05`)wLWQ3$7hS6Nr zN;S6tLk8yu>E;{+NH?d^o7lp6(1K9t;6CWfmw*i`HGTvYfv5-HN720#ufKO{ zqB))8ZB@@nYDU*Py{&ceEJ&B=_#mAcNY}M?8dkyYTHWyVHH#b*q@1pUswY|Ip$CN-NTHm26;mTGOIcqJ$xL?Ati z^%4==qE8OPX&i5Hw0YMAx-8fb_<;n#w}Y9FfaCNFQ5chDt%P0aY#Sr`X8S^>U3L z8Eu6PA8Gy`>`|foYoZuIor@t(48vaE@P}N4&`Tg#EU$8+sp##ZoYb@e%$b9^9d&aY z1#)bQ1lNi|x~>%_O<88y1?g*kpy>fEEK+K+NXFznkenDMAr6F!#lS#St-XOOrKtMj z7gR^RdMVUMaXAV$it0F{8KYA_QPC?J>+q17HVWIW=a4NVlNBuw5@dQ%{p@X4z-4Cx zU1W1!jZ|!5eE4<20*a!=izX*vkZs_=nm~?Ykwzm(!vpDBq}%*JAU)TLovPPG*JUb| zQDr26taX|r*J|-XM3ADonG@w0^rJ$DXJbzdrGnfZQLl&7>m{fqaN0XXz3r?>hrMRYbAdn3dy-{VqUmbGB0$H<2uR{P?q|qDF`(Qj$b?49d zKz90@9}?{Gi7nFc+K~}njOk{sEjyCR45ZqI((OZ;>~JPKlF5#=XGhxd6WVhV+w&9K z@^EbLnAD!1+};7oc1+IZC+9jQ=L%DD9aG>4nwl$2L&ut?A4k=Q?K~P0w{s z&vs7F7N%!AXSgcXG&5VAnJdlAm1bv=a^>0i@*Jeu`SR?Xn?598Ii#cF=6955brffH zlx8B$$b)9)OSAID*&U_X`OaCO;>>*K%v=Epe#SJcY+))^t}r#*F$I*L1pn&XgmiW! z(>{`J9}34SiVh%EHSYsC?3tqS|0ma4|A0#RxeIQ3ycF+)G zTvU=U8mzWU?uc<#(Xwa*w!EU}6+9$_q#6aJPSq@;E!&HlRnqN}ZkKhZY&aD?)MbRa zO$dS712F{M(Zqf;(r>{4;eZ_jge!%lLVnc`&Nh&0v7 zOmR>qC_Tl2d;FT@MnFnW@Ck*|frJ<63f+K0>|hN$si9DED3ly@5(7@MACB>U2WD6y z#d^^s9jqQRTvpAzprjNv??dPZIW!uigDGN=5W)=CTAM+l{UBVBy(kthRCDSeWq)M{ zS!5GPF(LrS1PmO?DM3!d6bK|yX%m%pQEn5JHbH3@)pk+MVo7RN)^f52BY(2qA?pPg zFN7gOL>B;;RER-T*6fPrbb&(MdZ=3u_vn!x9man9L9qcNHfY2LO$dcPY$Zp`!BpWo*PEWK`ldRN4J2?T%N{--=D;8)7X%IyUz`}dX4_XkUd(cb_ zTJb?6K42tZ<8mX`Z^U{H*j*P!uywRAq#mi@eFgPU8Et`8hMjjpMcpaFW&&zLlG~#W z>J4!GAR9VbL*^g~4l#)9I1LtQlv{!45M_{nj-nigi3AE( z5-BCBXjdc+3q_tl(+OlyyNs5x`Q)C$L=&9wj;)l1d(1Z2yxIM%C;0LVI^xreCs^Yl zyFUZwn8UAvk?;h>(S#M}ahwp8v}$xpYF5*VQD;KL8C}zBLA&zrc&SKHBZhkN&G_gD91uLB31{A8{uBa;BDOZu07^_rq9U+9%C_2`7Aa!k54)tFbK3 zH@u_CvKDMErL;#Q6Co09yV5p+EY3AS-B&dBto7nf6&^ znByIeb2!d!5Zjn;kX1jnxLOzM%JQY%94y~ASPkEK5aL1b%X!Y>`OmG;82R?-Oo0#c zTv(FRk?>GBDkwC3;L) zyn8yvV;z$v#^cjiAK^wr8kNb9)_9NvPp$GpbqNj#=i_u!j(cZV@JKi` z0v;8sHN_^7(CTm+K=!l(=?jl#fkjr#)*xZdj@(#AB9^{?YW)R=OX$@86p;Q)H7Y(r z*m|%5xi;hz=lha_w4^!=;d4qvTSub=J`Lf`q_IR#UOFNQQ9+2?RwW!74mm?%XE+SC zo8hr3`ayy@VvDTRS}mi;Kp^qVWN&kN6d|h#q@|WEnB>t6Qjyyv$@Q*ooux@ouZg;H zt2yZCD%^OiOK6q(Sro#m8G--d`UDf?U7_VGUOM8Jh~!TBcVZ;qB9(EFvtdYwMhbKY`FzUWRZQag2(7Kpn&v)^rr2&Akm&>5XDvT zgX}cq4jn*d6{TGQqf8-|2>}!zSExoR9K51#f(P;SOc3uS>f-%rh}Gp2#^xs!Z4mx) z_<883;$to0ouZJZURtOr=A#%#ig}9rln{lursl)WV8|W}J3|qBC}ItTZMU&FKFF{S zq}P<}v&|mM?5cs(0VMh#wn&HtYCuP;sg*6Yf-TbWKN6kxAR~2qi_1S|9cKbh!#B7mlL!DhHc3cHA{Ly=pp++k>d#5Z!sx3$ z30MhPNGP?BNJ&M`IA%}C8VCc(p=OzlLR?2#qze)mCDd1Kv)i;P`Zyq=E~LZea~5U^ z7Fh#X0G4Q5a|Km-;1R%z*Ocrk?H^P zfV82E#3>B20;mmCKth$Z$+fy5F-z24*RD$Ks+2`XB-vB#)PHo<_8BC(QoMvunNc}y zimTew^wj*seUgxB>1JS`Q!4z?Hd8CP6ix7}jr>|tg!yw34AK}18x0_lU+uHaZp-R2 ztuh9wA$){p7jeKk6xX$4)j-y~t6DZ|AYnT?mnFDaC^G%Zj+W{j4^B1MIPJRxuZ!=E zaWy)p-IGVOfn_7zgVe#p!$NPEBDEQ65zGiIsU^Y|ECC@1A;hXtbU~sh5mv>pDlou+ z1{(mRZWpx{Aj>t7XbN4)P>Mc~NN$mt*PvN~TPB}ZN-KTV&&s3Uq0i+5d~N`#{a~c| zg*=e1bV579t)u`Cycu9Cs6LCV@$-c0tN3j|{QzcWot74g5FkGpZ zO+QPRXVVG{!5l5@SM7>nms^9>5lGYQf_kl9 zGW3$Em9S|7NEI2SQq&>Ra!m!FIq-d=O^tBV zNM&6u`%dvaWxq_V+lHs#Uu(i2lxj6wWT`cTHCwb$4*;fU*cHPm>mEfvNJ!O;(y%Iq z2`oW+qg<9=ZKy7&=%OClhJ5$_rf+cHkGidYeqo=lqJ(#9s%1B)QO0PwKBkQ1CeX)` z(2w`7VpYbMk77&VBD2X-QAMWaLK|g69kmxILVE)tv@0+b1}4O`0_nq90+u$iOVbr> zm4&5)OmzHAGF_EFP41ls@l~JaXIPEj<9?e~7hKZ(f1(RUfjk*Fq5Guy6Wu6YRi6zL zEqWajsnM`d8eN4u-B{Kjy~q6&zJ&Q1(4h*2B5M94kS@ZOAnWIK(*&F)XJ9Gpelrg z%=BPYZlw|kUJ+NeRklr6W8Cj1VEY3IeOX4r>5`X5nYd8E_Zvv{bg6cVZ+0(PZVpP9 zKz6B~7+WT&2uG-1l<@OGkvaXp(EVHfQ~WTE297t^XyN@SQGN6xIZUw*2-k9R!<$mpO*eOYgn?O+xuzAE{d} zL8qhSI?tNMM^hpo9Ns}7Y^oEDDId1cG7myl<8cg?ykql2v|P(@?a4C~l=GQUl|9wT zjl-`26r_mrKw aQ~bYHP`1I?z{_s{0000MfI@g`l7eGFK~83J zVo4@Y&Ly=hH7CCyH#M(BAq`|ed45s0o`OqaQMN)^W?5#6LSj;JNl{{Qi9&LI4#c3` zRE5MmphQuL9+zKgI?$l9RE2_~{M>>PD+P_B{L;LX)D)odqCB8uG_|$0xq?el3yQ52 zObm1sf)jHKa#D+|6kGy)wY3$De1SsA8L26yIjIUIl?AC*3f_rDMTx~a3eIls3dPBZ zIY1$EprX{&6e|T|Gjnqb3sXx&6CDM&#NFMGaQZdK%?CEUbK#}7gFK(;!d3Ns1-sg8J)jpqETs|0xwCeIz_UO6CwWVwAWkkHQ&0c2+aLdf<>0w^4vU2C# zpJfyNJ&tzn4xM)5*Mz-)w|@BhLiJVaR;R?TOfDgM!5Up%4_E3tJx&j(yrz}+y|6<2 z>pS<4r$0^z-v0czt+bVt&m6|7&x}>9or=tjz!RSvPj;b+0f>&@zeq~ xfq5Z^>&tl~I&_XqR(Fy$Wa?m$)>{9MRY1Rxo9{MX3$Qd`@O1TaS?83{1OWJo#O441 literal 0 HcmV?d00001 diff --git a/gadget-code/assets/icon/icon-180x180.png b/gadget-code/assets/icon/icon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..88234ae17a52cfc85a6485bc2742b8233b971449 GIT binary patch literal 43970 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 Z^*_j?v=o9oT8jVx002ovPDHLkV1hNvOrQV& literal 0 HcmV?d00001 diff --git a/gadget-code/assets/icon/icon-192x192.png b/gadget-code/assets/icon/icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..d73137d1c4e6670c8dcf49eb1a0de7533f4fd533 GIT binary patch literal 49749 zcmXuK1ymeO6D|zP;=4~6c`v7bXge*wU4&^~U|>*j z{ztGdnc0LeFtFP0lG^UhCaxw97VZ|VZZM*bU^f>J6ITncjhT}p*wV=r>~3uVme5cE zYgw3rMV+1PZOlyEZ9c{%EIcjjotzyk9Noc||6}0gHXXmy!m%nVHysbn$*nvam200CV#2^78R<^K)=9gQZN&EWoZ7ZthO5|KGC+fTg8W zq(zlJ=GuJwxQUzNv-bxvgB6|3E$qS8CT`Xr3^*;g`7HQ&c=-NrzW`Xy!^+CS)zQSm zokd%g8LauS=nu&VfIT@_IoMe_P?~SeVPL>8vJ#>i-r0j)i0;(;ZI9;$RZ}s=6^un2 zSu8pY_EoJ97c3haUOL8Up(TIee-MKyfieJ~8u+19UrmNGA%q4b1`fea0wEQAf`&}4 zZ1lh8UEbsz`ddj+>ln(sJ@{?%_uS@cQMbuFAN%CC{3-7nqpS7{I>2d4D2AWk#zD(7 z4>2!EHF=_8%Ks%&A<6rRu&o9fY83si^2=a}HtT4)F;lS!Eorm>^NGg5*MT=Z=l8tc zH?}@VmN`f*TrX&hB+OINN@_H+w~V~oIhvs$cbtHok`4`N#^2YR8p74>m@bkc zeE<_0Xvok#4HHy8N2iWM?j9=gEKLA4V(>tGSa?|MZnfw9 zJz7Wj)OvFxJ6mp8F*M)lbv1tPf#(&zeIrSG$DCi zAVfA*9GL-k+i&Q16;NyzHYpgQs9*65Hdk$*tchU#ekmf_6 z9HmkHq#`^|v6zW@G3)ds{q5E%dV$#=#&*qMEN1se`=5JdkrKMxW5p<3Wec`m=zo>6 zV7y1%#e7=D1*DWgu&?cR_{9<;<2ild1e_!yV`O(-Ah*JTqM_IugOr#tC!pz(w^xxb zLS;}4vsWgd3I(Iig{8TUC{Pbr)nxM|L;U=BJsY1-{b-WY-cn6{oBNQk%%EW zn@0$W4Y>+MMLU7lv>B*+jWG`rS*e^)dXR-b^v_cBDPk-!SDX@Vhz2*Lau-Aeg_kpi z;xBMKdT|fD_iew^QorjF{Va^Ti7VtywZTfSM%lNN7v5qe=}5#cwP;+*dnC1eaeMDuJ{o=4JTYhiTmBM~-)F#{A4~DQ&uWgxl<7KXBg~~`P zw6r8_9YtZ95_TZk>im5^(jWOSxjuw9I3(n&sZpnZ=$c^|TDo4GggOrXn4F;|Rw^f} zTMQnj!+bavt$#3dt6{xl$E6XFSIbPM(Gh{LJ(eyEnJA_+MLb5^R}XES-*QF`w|uRj)*^w~?Hz&qR2L@ypK#`; zRlQTHgRhL#Gjxc$5v@ue3TP4_+;0xmLbIdk3FPlM*)`zBTq=&EN?xIBJ1MK)Z@8vj|T?LDr$f6JMglbth)rWowHVUWlhjAbm*a;cFkM znHQZ64$i!njCRZ2%KlbDeKS(3OyB*C%LsFo3`Vylvb z`#GQWN(#T~6aAupv2v+q#5=lBv&NGKiwYhXq*dP3piBjKU6BhJGvNC?I%Hvx%y=!! zs74@J6oVVC@n1sI9@wh>86djSpMOjw8YwK7+kZcgEaYH2|AVj6g_TI7Qu{7rfUOYQ zzBv9y8a|R(Ym7qj(B<;vj*|I1 zN;VqCy~pXe+%dYpPixVLMn$znxUo#_QZRfF_xvt$it49oKQbtdZ{>W&qD-ZM#>sq? zn!0YKYL|jc&Ps$DZGR)vMdWLtI=ZDLeqv8Q8EHo?aQH%2S4K2a z&(edUk9$WjDl7n`3M7S-G9_x3y?V>KEGqKCPzYfv#4imAZw+mGqxf!ON!A6rUl zzbcBhu80TTr+*=w1|`p$(iKCIn4>gVG^{q*C^EL@9(9HZmtcC0odjDd0@5V-q=OJ^ z45|d%iD>!$qZ~U`1S6hwrE(?}k|k<*!pD}l+DR(kc@NX|zB(!pkes)Y{4Mr*K+8@R zuYqD+^rzs67oxZIJ38RME4EV8RGLLK5e5yljUCX}vZ}fs9Rf9P3%OmFd z>JejIL~?oM%i&xAL~}TMSaOI*njUYGzI@0%Auj}dBz4kiwvnL!uFL7+YmxPccD`l| zf{O!-`83L1Mr2zA(`L(c!9pw{WTtJj3$%Hy%n3Ux%@FIAy06Cg71Xg^^%T(q%F^&s zjIj&ib0r6xS2B7z>+3OGgqpDl7AM}pbAxKvrGhG0B_ai%Fc#|`6Ja5qpEu-1l69L?!>>Z3k+-~ z)!RMM_E&F^4ozcuTKWuFE()|TO%(9+N`XFFZN8CQAw+{hjOh zWplUIOrbW$9Vo28f$&t*ASVz(s+J~aSUg_{=(3jm3?-4BY>BE+p_ zf$>AY^aJfzru;~i<^MtNlOGy=9yHtgIP^5h;ARzDPY5SG=6N*U|RG{NQe z2@t|j5{s9Zvx;)+9${A~RaZ1OfMIsTzglKO6eeT7gZ}<*>tW-!moHXp@LTeQ0Mh5N z0H(&)o#83?W^h8;HvtGk*vX_8i)*>*?2ZZ$KpCzvgM3eG^NP}{AsL-6&s`-?JSq}JP<1GV9ivjhzY%(yw@0+fATZd7cgQV zS894lkU@h0u96Tk2tHEW0}!5}-53foFf14!@bUp3K`6HI+6i_ODUdNCUn2DOBaO+n z!EF3{+k(P=M6mw6Cx1t1@K!uXgE|iiqkl%p@}(^>MV_F}$G{gdaVNMEOEp7Wfwp=L z&lOA5;S_hZe#{=`TDGMlm1nB7nP2Au7d+hQzFX|a-4#}eQdne*eAD>tO9SjRl6QhB zz?PTQmK$B$l|CMg4`6vAmjvrj$1sB;s5;b8YXe`8?nb__t_J7Qis6^fv8WFBUS|@? zYr2$EC2JV5p-ARq8AyXWwP~I9{sDC8jgBpBMq1q~9#A`qXn(yId!txlj6!xscQYRJC7R3@&@E7 zZ5p2|xOT>tXod<-Y>~}fwFE;Dtm)Gh1T@OAkZL6MO+FKum*dL_I7u@UhDJenSn1fo zpiHsB6PeV6;8Shp1hJu9$?e}?3-%7=mq@fMnBrH`+ds1y&izpAXF!YHwo}tqe609s z#dIm4r1#&Ey30%5{BBht_Cg%>w6wZQ2_v9l0Gl-!7kY&n#I069ydh8R$AGcGM^gze zR>EbtoG_kWiBy~!i7+i&&K@Jpfaahj8C{A8&4&?NeaD4X9*i)JR(*eTaoIxeP16?= zK>{qS&bj$PrR`TgOnougo;eFtd50**`aTboWMk)rMM+pkEoiG;7TNsGbY-- z*T+oseNQ>7FzzKtGn@$5fSvx+_Cu>~PB#kA+HsodMP*wgc?Fnsiq6QxsLv^RP?vb5 zElPZBt7nYHVk<1%`zv=V8j{9Ow6)@=UzPjX-n*5%D*s){Fa{f!nM&phV9`UVKyoG^ z=+!8;Ep&y{K0J9~=*AREBhP3eg}%ou5ewM@;a8a|qmLBZLN(YDKJ)0PfxmvMq*hGj zutfm;dJ6~@;r^~yOQFjRo+zYN+eEz6goC1lGgUM*m?+$gqI${JPzWpJPzhVdL4=)e z0hRmyzkstEK(()8H|5_GAuJy7a+(OHYQTQLzAb)F0tB8pVTHUrhd?&Cg(5-$i=_`2 zPk%OXOt-#CZ2(^qzvc01EAK1f687*!3RX_^HM_y*b#nZx2H^-pqfn7AtB1+gjj!G9 z&VhMV?kU~zr|MVKDm_|a|Fv}5=Mm^4V^Tk4khjg9LU)B3+xLIzePeCPRKi?8{z0#$ zVhC(M1IR@bTC+sCV__5JvWn3QiqrVw^A}gUf{i&do3w}*>1Lg&{5?>T;ROtV{qkk- zbkPJJOn?IPv}iGm@He{dBM*-!gZ1xTwVMmOUjIECbiu}S0M_){mdgZYwfg1=oFB%~ zfI^UI&In|mF!L}DlPQ@cPSSe}`5G_aRjgECefi*{Db;kGWS1G%ruLwqVZkIdUE%i- z<>4<_=n8{0v}S#y-p-8VnMyF6k<(mv1KfXT`Z-5O6h1cqpwF|38Rq5!L^*xMpjlBr zCwJlq#WGXQQ9>bFXygQq>0IQIhL8YWw31YjI=NL#7L%!Or*Tr#*BUvnbNP+WPwbD# zw{P?tAnQZN{Gr=a?Q&qBHxN*a`u^mkOlgu)AR~w#Ur(;8A*Zp%z)n}t>ej&S#^7|N z{cnqxllA5D(ne!_kr&Q%OT`D4dOpy$)KkJ0NVuj;yrxOMVo1I*!{6EE<}K~xZFM*@ zIhkl+(2HzPMCTq0yWV?|TaN?1#_|2Fe3HXg;k9EvnAcrKF{zvSB9o=Ns`X* zV0_TjmobN+bw;5Ndp4kXoz2mC@@M<2Ra~_Qs>}V+89#O7Va#MMXZyigJ@;W; zjj)&BxlhFH@4q=;>feG!|07UvXf?Lo4OP!#&0O&_CT`sCy<3d7`eoQ@y84N!g+jmW zb*u6`t!Bk#xiaUY@p-cS^OH$4$9d=k=V!L?cIEQAR_*d@WHTL=QoH53?BAclPb(gD zMlBb6r;C?Qd(XmoD|HXgv1R%_E|+CI*{-i)>OVKV$Iw6LEw^5BlH9M?xoo179wbZvdA&Bse@ON8+YEmT)ZY&p@{lPjAfc5j%f z?PE-$$%E=gUd%q-u0!(muVaaS3Jw0W%k_Zz&kOaH6?K&rt;F;bJOox*@{JQE+z=m! zb~gtE?X+Xvzq8G(tIZ;-U9d;X>F3Moryp2PIbEM$>1b&?LdZgmym zR}1C^Oqi!T+W8sb#@GL0*?@4}fKa%e@0*&-+1~79?#<)I&ECf3sCs+Zy@ztn3a7vA z)E^sRCZ$t@`W~;Lx9-%khgzYofQ94NDrE|7|KZ-VjPyQkD~xJ>H|Gf*al0vEec#3D z_QtTq9L}b-1pG&5PKV8dy%0apcM*iEfS?(*12#gHx|bqxhY1gC`ZnsWiD)q0$TdVl9Q`9S3x=y3iaUqsI)%(ElHHC4j38IGnZ zc0Vzby^#K^i~f;FNg5R!cV!!UWuFh2Ivox&7$k#1J59OAbKgoI9wx!znt|f}RZ5pe z9teS4#M#1j*8dacB)OsQ{nd(_)M74Y=fzs$e}{37d`|8IK4v776nX)DM`5VLJcfL~ zj{EBs31S`Et^MXCce5~KocP(hpLVWU(iH65G)%A?&+{`QYtj@Qh56e4+ZtRPr~75V z(|z6$>5!)E*x~1Tx}UuIGkwElfAF4(u0>y@Yxe|?PM-iRHcA1J_-fZwW)TTJWFPBp zr>~PrWkc#PjtN8&zF${~q>xT9#&oC7oXp^4U>xE%Nsalc(5 zq`82I+!5s=y|SH}>FYHoiaoG+l7o* zSCVvE?l)vSB1L~!WmgEC$l_b#xCu0`ewKzIyt<+{cg{5Fi!=XCNS8tuyGV%DT`M4N z=1wPR#-FEhUzE!ETGV3ejwH-7U=6EjX3UL%P{dt_q;x`ft#}OnR{R`+LS4q~DnMNu zj4z;jgestp&XY4*%De0yqUh9cirf)bCywZR6f0-cA4m@8l|hP-ybf7H4}k-d4WlRp zVk;I~(@5gLgHodN*8-O%wbuw|cPJ+eXU_`qcMGgHU1NtxE)ClLwU3f%O`Ns!fCybo zp&?Na_F`#ux*J(5Za5APqIu0_Goz1yP4emoY3Kr;OimB@#91?GHRl}8Ji zfGouXk_BQ?*fPMEMY?AGDU3lC*T$W;nu!vL(~J+<10soPR%{i)d?_`B12xr&q7sOO zU|}&4{JJq=qJRyF_!^;`h^|Q~waV_Yf^TJyJe+HO#(;JzQy*7~GD$nR9J8HcV<^Fg zWh#|mjis*>Gm(n77C4d9*x}0KRka>Gy4sb_gV=xU;Pq{lY(uC$<99qql2Sl}m*roN zUBTMS4VTo-a9~m?j$l<#!rjv)$O5V{0_Y>x*k{g*2hlgDKyKRNkBS32IY=h{ZHsn9 zGxfv7va!35Sz{xM4FWzTKr&`+ITDP1Hs@=ba&FNFQKO*H(0j}L0HsHff>;tL7&)t> za6l|FNSI0ZmcxjF_<^CQ+I$HE{qR_ns7s&*SIXj0W<*y2790dgA*kMrGwDN(0!hYU zoI_C1XH(8g`-9#{v@HNo3zY{#Yjqol$TI{7@04XP-ZAj^;>x4kSe+|D$Kt5(ZY`Bb|HU@4xIzh>i?fD$uq>I%g`db{T?eHa;|- zOX0*&gCG2~FR&uR@1i2gFkImo8lrC)Nil-PkeW{E`l#{9qR{(C#^mEc7ZTy%(d;7` zU9TF5AlX<6M8AO1qQ}9_WiYtxeA1kU3UH=jZkFEl@GzW=qCsB!Krf}MCcs7K*61oE zf+vdrqT2+g4Ij|A&BXT#uM?4kQvpU8BP5tU#_((lGT4%+8^;5z6*zj8ui{)>hxo2< z8+sK_;T%6mJa;92cf!RYfytk{jQ!82uxrDb&Ey&(=~Z2@mTdj|{@yPpzYWSn7AmM5 zH^Ao<1z1oZ5IR%WM?O@*2qo0X=WD00Yf3TEQv=%|m1b{*{?=ET7kCtsML-s#kwFv{ z5Cuo`CX&HH$Epnaen|<7Lr$=e8?)-XRW_~@G}-#4XGEfY%zoGd(x)1k5N7+O{;)pm z6eDIK;3f+ zOs}jho5r@)vs}-tvVjAe79Tq69-A-TslX)=L;4#1-&?jK1+l! z%^#vXbPT*+j06e_ZAGGKMqv094dfoxX@#=!>_o>u@0dlXQnY?PP>%VRybIlv0CNz@ z0Q&aK*||g0(P(}LS40}yGA95tWTL+$5T~zQN6yrM6Q%^|rNJrvk3#^wANWY5x^nq) zD9O|+mAc^LXJJNY@d={A6%5d|&KPr?i$sw;>Mo%;90n@Ul}pExTg;q5w^qvGOmj|M zCjhbp;F9DofrluaT0yg)s7?XHTiT|0JNVYy0)Df_{N8XS$PUUg_q3%^mcw!Ss)6P- zvcY1g80ZfsU(h?Gaeq`*kDfL^r>7Vp3A_vL}kI6XGrU@L-Jq>p5*z~>-HO_5Xa7rc$w<5gy zZr`3Zm|sd4APPD2VEr=hZp+c9#bJFg0m5Xm37u+@+0kSng!S5fGA*Jl`WItk=#0> zh;-HBda-oTJ}FJrCJi#2vDk6b4(0QaqJTr9FqTncu{0BAH73Eux(0%Mj1+| zm*<+OLS#ir9Cfh}GD^iOBEb?BE@L~Gr3k|YJBJCx@V}H@j z*K|LRJDcTB=%iMyfSw=$lf&tK3Xt};1kU`jGNKZS#}#}SW~Gyi<4K{Ad>|56G;l|j zHbQinF$NHi?bJ&yNem3hVDu>Vrao3X-nwgABA3l!bOQPG!JjOxokO}bzN-EX4~p#} zX*S?K;p-!pCF8#esG^Jk}gt3poT#-$nNVfHJ7!t=i4eusefra>oLS4Bu6(1apa z>op3JaQx0hpqQp20=9aCz??DmS~l`0E0rysNNv~+83pltxj=Eg&{&5qTkE+JY7({| zzy=RiY$Q@KfJel86y!0g=21`47N|xrg9n}dI+wzUP(lQz)7n~MmIY2|^ol{nagS+L z;T1tjIdOCoxf0{npTA_Vj05T^lh89&>tm7#DihnvGos~GrCntllu?}cM1w16S2h&H z^%%Se?c=EjsK8eIpM|1?U1OOk1EuKQOrZJ>JYcpVO0Vz<^*SG#aMF!JI4(v({~V?H zs5jQKT0LNR0_2UHV>+D775*QLY(DIjl<71M@m)xG=hig6=^zPg_zV3#1Q-?jRAknD zl>UVWt5=j>9NJ8+2ZjbnFuXhAl$b&D zGZgCJ|9plUAYAz6$lc|VZ<^@L37=z>U5=8>0nEA0h4SAk;nfUEzWa~~Ax8g?4Gq0|z65i{L~M2X z>s>)`m=*wS2rKm)5#~^891SQT6~+Ss7PZG46e?VxJ@~NWB2N-?F6WU820kJ9@RqHs zAK3~0W7F3^B#g?C0F)je)__{3>D`-$)*ye!e2SSvWOQR_=QgFX^)w0booP4~b@xaF zo6s35=09rcwAeKRL<)h$OcmR}^uFAWjUK-e9` zj6K3w43gD_6uB2f;%5@-ahfS}-gDVGS)TKyRfwyi9*&rLTVXiw`B)h`2SI{3op5f0 z8YgIft?Hi#RjnVK)O84+U3hkMz>(ghfGo;dj_y*jHyY+v8NPK$I;G96qJMs3Un&;S z%AaE4fPvD{;}G5qK8TKa9w?fY8iq@Z3|xCI!g)KA z01FUBD8ie~^*y@7m}dfF!D-vGh!!n_G`Ns!my~`n=zQ-{X>jl`1YQgO_looPIkiXj>FC>|7{Dhbw>sX_`t_i%woo9bT=`YkIFvgSM-R zFODViyPux9u^7S^D!a=Tk{aLF4a0xWj;$Dj>yfFwhi+$w5MntQR#(RF8`fy$?HlIR zbajv4H`6cJ5F{~q@CP|Ad&|C=|MtU^7bLetI(X)o|<7r={RPzX1j+g@^~;lPtq__wPLeKbe<#3y4YlMl1Rxg8%5 z56L$MFMMggo`p6OVEpWwK0OY{rDdi}Xu|)g0KcG5Qv~b*~&Nf(c1s zQbDr%NBIJFedd5Bqc!v;^sE9YM9SniQ3C^2V?Owr-Wu~#D%U51HUZTKDaJsSR1M?kSA6RQCY7CIpdjC23W?%qE z=YF5Jv=E^7&?{>I=iC1Lu=UH=Sa}NU_~40oc}^r!;`NwvG1IkPRCX7WGb`NP;`@@4 z8|g2MQ+6M7d6~=CW%qn{aXjZ+Hg%RIQss0~{dVm3Y&Ch2#oysH)aK85ct4T-w`V8l zEtLSRy3^Wv0a~zt7^X!=sN-+!e&2g^HdNG@7W2nY=rgKxzT|7c!jVZM0p>s#qV%F6 zPv>^SN17kgv9%#!7q5$?_GHD|!)KQ}=k&`=&wuUSK2@Q1D72O@qcfo58k>|(+P>UJ zzRC$YBzgLTGYZ21+0D#bgvIP=wRD;U_lbncjH5AjL)Kthc-N1EEVur$99EYEO7P4I zHh{kkV{rxTUVEpSUrwDqR21txoLJ@)s1hm^c_;IkH-l-iT@0ROJO2?0e}vhJqch#& zz%*sSisr1~&b`_}kE-X>a(7KdT~S*dlfg<3L*CM?kDC17(dD1QA82#TZ$3=XzwGw= zz*M*2W`)CR*{_GZ#l?Vc|F+)lp|51YWdvdO1PIDZXqRkp*@na-MSQNb?0%XqduOxs zDx|_4e4d^zXCDz!T>G*gzJxmhDyT;ymJ)Ee>3!C*tu=A;LAWP&+)6ffVolIl{nX=P`CSP|3{j-YZp)cJx>l%a{$?Fd1_yq2uy zCe+2tcI?aRGa|~S^CT3g#iauiOaqEl{S#FK#|xAS2uN0z;u*^--xT>8dDa?uvJFTk zYfujtrFH*G>+ufWkQAPin0|na1lnI}ZK7UX$Dp}}%LI3=^yk3)?+1Q(Km783xYvG& zYaN_4f0&ebnDm}Pj?7&j&Baj{rYn6`vON)Os|Zk@>m9A=6Rzm%k~KE6y_!FOzS?Zv z{pmekE|_beE<2REw~|(#ipx!en;b*W%OMlt74&m--0NH$d8(m4Jd|er6K|M8(MH4T zYIAz@sm3g=DNa0#q@x(VwaMZPOe^SV6lHR6TYk^24Tu#W|QGr&>$U> zhUDG>SpNxzkykA+)M~|yxN9qVy|C_KTDgouhlzycm|>&+XD|xuW!t;XwPizo2N2&l zFd0N@IyN!-wv)B^-8}-hnPljvQY>u%6EwoXq*hA-|{rBc3(uH-LhD$_j7cqEV zLvn&xf~Naq^*58&K3dhCoQ5k{Ob+osJSE0g3rlK7FV@fJ(ta!kFmgL5Wylwn#D5qt z>4Z)^oHqjt&rW>H1P!C3mP|PRUfrVZb;a9fSRn? zSBa5J6Z5earTW`R^V2epEND+ZCwuTi?2t62UB8JP_PWawhKS=nfe zJDiU+=%tAoGI>_PrXtD$(s#o_mH0~_BWEI$k5=6g1o1(Pr3Rf5Y#-y}epjo8{|JI4 z=K&d?plb~f5VTNHeDqA>Ck((wmQIJEFj1IvrL8XvEu?&|;T!cOO3F(jrE=YrOq&A2 zhUj3n#;hcFM>!YOZmF*RL5z$=w#KlD<1cDpzAQVh%K@%(iFZTfr!2z4WjUTKmI>UP z&sd%~pVI$$2D*Y$aM1FzLv)TKXjayxbR}kYBqCCVM0H3lqpj=PSu|_mf3^8cG?6&C z-DcRdq+-k}Oq-%-9_MEuYcIj9WaAcu5{`O%3!LH28g`G4mk2`|)9mh%6v?|s2e{i> zi<6`ITj{5s8KjB{XT}6-vd8-)@P{od^euIZtCeQYikW$m;s4p5uYUV}_{mLfH>t}?PT_I{S5yPXR-kGsWFtTptc#7* zjoj{tqK-Yo2?a|?EUpuJGigC?6~l7vGe`zX!CvP zJ>JUq{aXLwl)h3;cE@D^e^MPEHH z74A2KHA{Lm)bVUNb($&CWwlR4uAIlLa+n0zu8BNpu8V>k>4Csx6;vQSCKc=wcKSjG zIiOgYQM2254EIE!fMRw@MiqVpPdLlMhc5*du{R1P5zCm<=?ZA_zn&ATrN9R*iSI;8 ztXOd^qe&^1HJ+eV&uzl4Qu=j`$GZO@{MP%v(g=MbfV*Y;7vH`2rb2_r8Z!;SXak39BE zasyY!pUw=7e6o6|?KD1*HLQ=c|8zg%AN_=;DBS(}^dK&xrs=va;zj>u7)f6RORsnf z`>MK*WnJ1(KgfJ?=LUXPfH|E@3)#4@14o7mk+veU7N0F zuV;x~4X935hnx2NcMrc>9G$ubCM3KZa7FxPZr+7fuf9yNz2|-TAc7ySQ+Yqgd~_d% zr$#RWMt4zs>E(+(u9|*&? z?%YWNzSa!yHa>~`fF$%c{Kkt=ympt5g$S(!?zOY}$lW;Ylp0h-f7>utVk6azFF?YTH?cDKCN*uL!e zJRnc`D*GPf-u!uA%PJrX|CF^Y!orO0_ z!TsO2?SMBKR-yW{k-2fqFI{I>oa6YphWGaanFImGZzqSHKg;9mq+El`{;Pg9Z}%k_ z9bTJ(l>~QkpnHUMSx*r|;dMQfd`{*sGG3z~xw}X-n0>|a)*5&-&iPn1^8I+F(#Dr=t3CQ>gz)}P5AUC1{ZDFC=+F&H1x^!DhYD-r82Je`V0huK< zTBWMSBed+f)oqNssN9BOi88bSFMh)=BcVIgzXjp?x0r4C-?v3x)E~AfI^tfZJfc>S|5d&&k-a49Em7wcU>cd_3d(f*b{|i0qSfY@`?*BlE8G2a+WulzoHp@WG8 z*r;rS2YJ!m@A^kMRyzUj<~Np!kxoXx{U58ZN0QN{^9()rj>86&xtWD#t}evKjh?%& zt9S*4u+kFa4iN4=YTJ0$8~-p8CTNTwNyB=TQAA!iH?V-jjPeaoedbI z?y4naLcyXkp_~4K&RnTV_>m*A%Lk70TsNikUxga-+aZ|7b5H1SW`ANq4WWZ3KvHNx zG5y9=sMYF)Tf=a!C_E+sD= zyJEBU?W`xQw{e~a;eTsg_o2S$;Q?EGFT#i0PJ;2@=UmRdkp1qq7rcjmJF;pU;AId0 zVv_MirYit?e9npXzEt&os`P5KX!pHm_T^8z;;o(1V_E1VPRy#Ud;yuQEYk{VG;hfC z>~IqoRZ$>NF5S8%Kl=NG_XFpT&5{v}F?{ELV;Ei}zopYia{lW6e0ADxPJR+b@SVP} zBY5$VQW(hF0-y`biCk|98c>L&Wxe~)C2rEiy-|AZEiY|%=%<<3hnc7CHhGGd8&2KWDd5B?u*9>QzirK~=D74w1+3lvju#CPnt@8W#VdHsl9 z$P|96kC%FFn2wh5-!nyAYxb`!=GQ_8JFJK{m#iNDIS$C{-34SWh;UnccU>PAukw1G zQ#h1ev}-Q2k>)%PG!1nz*S10hn>JLZi?i5M7UoP?`i|MkXAtt*p=~&J-m2c#s+W4o zA$cc2I$3`G+3TElU7-9|)$!zyAU(LvcC}HxFay-1Cjwd5?rvq3VCGFszOwo}9xu&U z6-vK>_+NgH^ixpX_F$4d8*Hsx`8j>r4meLPAX&G^1%4ZLe&j`${=Qmwd|z7cv8fseD99uyS#u?@-3jbyrUE zzcsK57V6#)AR`ODjJ__|$0*DeHwtR*!L`b*Xp%VoBA&Pw@>DW?cUYe|Lv+1egBubvKgZuKjkRYWcv5ivNYBFRZ|)@gvcta zf-re^ko0iO<)8T}qJru#YjLO0Jl#*TR-L zl5ihLVk8czfKO7Y>$`W3rdG*fR?+;Vk`#(=;cUY|1A1#0qe+OJymdz%=NbhtU~mse zd{paRQ9+AMIt{0=EIDv5qf38ht!gd_*9eqDsc=cCtn(so@}q%#ipA^J*mqL+z}Yz- zt;J)8RWkUR#B1yDNh-s(xb&V#-PX{|o&~>0&G8vMmfw!`->-B|>q%IozgUPoBcF`y z@4dk8O#2LbDgAwSi@&Jta1U56_VtW?t6-R@l^QXs)eW$AJ+!lIPu+QGDhhS6)IPQ+ zH^)2zY+U^mI-E3vYIA(NNX+-ek}?_AEng`fE4MFYFh#x-RIVv3Q^<3G2VH+9~s{J=iZ*m zUfh(QH+*Mb@8^Ev}(cNnYvBe7*dQev8S={8DN1wjI`nNV4&+Gm!Pg{_)n} zdG#kQ8As2L$fmp8wZ@aN(u;E-iAR_(Wi(WroirJq*g5o{aH41sO8db6WW}7ouo7eZ zrAvozv8uLY{*4Pz?C^O3Yeba=)FG1({LSU!j__mWSQ7(iivX>**+@G03UE0978SF* zDWbRqLuflNka2;~;RFaj7fN)30*n#^SBIh{roM}qk_mB2zrE?=HtRCkIWhJ5EZP}& zm-F=FTk~LnG7c&)NZJt`zh*4*Y;&?y_D8ywo1!a9z%@ai&luo4$=+G7^}d4Kp7!e` zSFh~fI?AilFc&5UHfD|fzqh5hzw`pqE}|=m7R59rA=yHQW4DeU-?a~YwBkH0tM7}4 za=B1tix$kdf!(%`2W+F#;?F#s6jzAjtVX$RK@cl-#5bv)xS1fz%LzL ze{|ge$L-!ty)S-LK1VZG{btaCo@nZCHQE`cB{)lR|>gNhIo81l0K8}Jx)QU7g5NE@5^Qj(Os5vxKhi6DL z%9lo{$+a=wH$#Nq{q5uDjq-fGI!N}XK2eY^b3z(epB^A;Q$6QKD~C4ZE1Lg; zl2!IqzFme@EZt-d6MG~U*g%3TDrfR-k@nZpx@1Q>>d7 z3I0zW^6nM)J;t3QyurkA1=O_k12!%)f!~i8L}9#riJM3q$WU;rG_ZH?z2w0K4}?vz;nlZxMnLJXXf()9~kskdtwR$Y^*m)Way@uM7&TA7uvR2x?)* zGGJV20}n0Y#t7j02bvKUeIzi7fjc1;B~!L32kw$q+>A*BF0xPCiA#7TC9l5CO+}&+ zHhDo>+b>BxWe$lufeJ*;_kRGfKu*6hc2|esXww?4c1`al!|zVhy?&nltqTqB9xxob z*f4jAVeVqX+yUeK1%^ZC8s9(5@XmfcvPbvI7TpW$b$?i`e_~4i>k-|9ecJoGOg~+@ z^4-ymuTpd?#Rq9;D}%ieTY1P_a@29R$>dpAj&`QO9$TCel6u-r8G>KZf8*z-NBp{0 zvk>+L%T8|_XK!vGU8fS~y-dBZ-g>gu7Gj(&7H868i;--Iuy`AEhMn96uQq@9SY+-& z|H3alhkxZc{D^De*W&!6;@qQ-_aCvn{h092N1U%*@A+JeZrQnlJ^B;vq3<`${Qz-K z!=byEy?y8M7jDv%vTFu6@Kd0Ky0Omme#`1cYeb# zK8-HPnd9gT2Va(nzJ0z*Ac#O{K_1Top$J6!(M&Y#<&c&#AOg8Spr+C0)@hq3t0kQ# z8Ws%*s}J%QoG0%v5^8~H!I8F!?Sj2cYp~ihU26=#JyG|{sk+zp>)$w2_x4%(ch1tk zbEf{?GY#+TH@vma@Wvkf>$~-T+o6ADGuZRT)w-vr^pB0{e>tFkpj&fq$@HTY({GKf zdzqwLNg>QQTUj}C@gkh!!@0m4!IkG-ZM>@uWi+UuEw(siOHe{gZ*`G|;1{+3`3v16 zL4DS23wi=2r>EU!OD!Wj`wZv3L_D{V-mABVSx2+g7B}-Tk_`|Lfebs?3tvut`0L=@ zFWd_cx{mzPx$rB;{KNM7hi!8Y^Y1^zz5OfhAHTG}a)ax(B%R&8f<1Ph_Rx15=I?2k z|4zgF-3@bJTlV%Bm%s37-EHR!LL}H|jkR>`>Y2PSUED}8QAem73j}c}45y@lL*YI# z)awrRN&=1VZ5uwJFnVGo0s$XWpn{`n6ebBIR13s#aVY|^vOpXXNMN$EKx_~-cSix7c?Fe@qo&0>-iLJcPVL~{S1iDy<=w>NN36CX0L0TUe{EKuY% z==3|-i(ZO<_$&YW54h%k?pS!xG5?S-{|kQZ=ltA*?E61w-g=OI{TH^EKO^4JWNtli zn*HDh+PS+M7QWRm|6dLBUu&4ZbNM^BHNJ4I?zXddJ`!4Pjb%D_c1>Q8E^Z*0h$GnL z2=(GDCWbL^f-Ib29qcnvAu&)ajP1z}?dljg!R79DR7PQ4)t5-ESq52 z;|Y|mFOX#kf#e7z%>(H;NMX^QaB3)(ofKRdE#bf?#v_5;aD^zG!lW7qE>p+Zo8g2T zTTW}RaGLU{{=v1{-)++UX{+vq?b??B-OJmxuWZx5vPJjOCjATRbK+-;|Ds3t<4)ZVJ2c;EHGX?)u!W66K+k*iyjRC~ms@Ov-uGGU?e{d^mp2V2ES+uEi8kwaiI~Y5 z#xEca{z!Mv>BI$7maUWIwti}3!MrL(4+xeRia?hkSLvK=$0VZ0?K8-}D6~i*C!RrWyhrXgcamTv*aloiPN?l&)jRg z_~ynt?`Zh?=XGDXP4nf?HQxET#;@G8?2cQOec|?Hx8K}w^EJz_yzisZv-26}2xu4SWKeo=@Z#{Is<=y+tZ~oZw_n&fq z`HbVsX>F55lVc|a-=D*r7|CMEPUub;mGumel>Oa5N!3QJDt>H}Pw({h; zO@;LY6F~xXi=pm{KoEO+&_26f5XfIB44;%6*x5F;^IwiYoFtH=R-iUnpeB|}K?-B# zBAVqBRRS?tuD(EN5XhQfEK%B0Bajyl!IT;Z1d4Qrk^{+>alw_w5eTI)A6y~`r?5&5 zWYt0hN(s)KU~ADDEVQQBt-p6v`|yPJu_^6ur?pSbXrG$aK0Tv-YD)X$r0&Ua-4kQl z-;8J<8`eBJsQFc|_7|PnpA@zCc4)tw*M2Lj`FdLa9}@$A9h>+wX>KL?FfF#S?pD^7 zHQN$;ix|*1pQF3@BHcBY>aV{-cjMK%Td&oA={oJ5pVZ!UL*swk)cB3hFaO4umVNuq zW%u0H@XcG6{l^zHU%!3%S3bY|uA7$M@yW&;Ke_x~=Z=)`Q_j<&&_as(6IbmgKCzFydJlQoNyLF2#&b98&RDBEWsPpv)yr?WW!X128BQHD zZ5}ag>N2lrCr2}ez5|*ozSi)yO}djErj{Vp?z6PIENPyKQiQufqu**h_>BL@t;35{q26spKr8(IY$=uj#-X=LpS%8hWRfe zZf`jB*=28D*Z9W^bhqww2)@WNYpA)rwLErCs$;E@iNIB6lq(X2dcd9#KH(ZR`w~>Z z>1%Hr+@0;+mha!;a&i*QtS| zYrCi-P**74pU8|Nft+#?4V!6j5p7TeLPa!dOY$I4TC1nbntYq?>t)ToU7DZtXnx+) z_)w4Lp`ONvxwntQUEZ>2TgXx4nSY5A8Ex-X7( zy)rWNXOe0qxDbs5qQx}H#dKz;T_3(+`GGSu=S8TJlg_!Ayc0IDWH?KVu|&+)AYt+9 zDEo3fdsgEWpVxgOV(cKp$4GVWPEZo*Gchj;ruhIPRJmYOUTy|e{nK|5C+FBYpE7`WzNJnh` zl0Aq8!obx+&}Bn9oq=wG3^={*Z3DZrJ=T+N#YO&7;?@zOU?o!Q2{~GtDvt5 zNoG+nT)lext9`nA0u1W=e!r?+UClrNe>}DJ+G(xO7zk)jd$J$F`eZd^G$$xpfw7aBL_vbCOT zBK^7v++T(Kv|yV)H;g+NMS_kzYRgmT+6a=h7FXz|su zK|>`rSmz32vifRUVJ(r`tl+b{^Ku&W$*9vkyKYa1qa+rA^if5Rvw8%wMiZcFfGXxM zy=_m1ssmDC68#7u_MG*xpQZUnX_{4t!q* zwl^KylaB34#dfD+J5#Xj$=H? zXG|b?vzdx}37haNIm%*4mDLopxxi%2*GyTm5>$+dvKkVVL{4;&l<8S=(sFW7I$cjT z1>DvmyCqLm(#+X zw$tBkrM}$)zS&HDy^*@RiMqK1e7u)^Z=t-YfT}&Xk@V|&^2Zg(gXPHmWypht$o*O9 z*QMaSq0Gvz4znwO@bM{y-SQg^P0DS@%JC*|fyGxGp=0&cg2P*4g9BC(;RK(>otsmy zcUtZ4S#_RvI7+N)C7`O|$Eg*;3WYI4w!Z zBalabSXgxm(;%R@TK>d3!PE*s6%h!AA01HTSr`NaBT%|#N+T!(ho=Sc#i_`~RCIF+ zx;Yuynu2aiLAR%%+mexO$>{cEbbAuIJqg(wLN^D|O^MisL~LyUUloTf_hUxq7gA@gC2Z}>_>8bNee3G1X)WE6fX~_ zFs6er<_*j5yQHr+vR`kezTHTDwVwKNJ@|4RxVskIS_eMc0zTZuyt_!;T#Kwbq=EeF zYV!V4 zQ_JQphQm{2^VZ^cpT(7%U9VSKNw>^8-R;!@Rd({L4oDw00g6@m`3pdL1kytA^t3Vp z#WoU^2%z)|K*qlU6bVA`N-GNi6+=KNjWk;dh_1q-`#|t0UI!FQqG1G5OhMI>rsqHg z22YE}<_3`!iRh{XWK{yPE`Y2{K-R)9==uP16dzH*Tti2;?PxoY`GU(;>8wv zu(>W|j*~2}m;YX!k}I4cRZ!z)XO7XCEx|Q>A|co`2x#gcVzh;aIgMs5Fxzug9gyC` zIz==l>3}Q)z{KU`fegBVq6J;{x;As6W=a;hiNota8hL!nX2{wZh zA?SAesB_wHI}Bf}W4~BWeX*9hvxdC2hP<^3+*(E6SVMlY5nS6rU0rC{TAQptw7&f7 zO7i|f7<(QpKpxCN9!x{O9Sz>^&#i86w>y0(?@li0lG|`dD7zga#hX0&W>2JCa4lO* zkJVGGm&PjQc%RvslUcWCYOSuBwY%9JwRAv{Ram4+?>_}(G3M#xuK)#OfRd^MN_!lj z*ea|7P@IAH7$Q%b^$5g8&cZmm$6w@6sFRq|P_xv}N?=TbMe)P*f|;Y(b^VkfcCiO+Koz*V{vuyO?S$k8sx`SfAQvn&Ua=2E8zXN8jiyA^oTh3ifD#GJYe4!* z$WRe^K}3ej$S4^ZEg@q>WUPdYlaTQeGC@Mdi}3q685ye}qZMSF5t*PM;}m3!gbWk0 z=Sz|<6=WVINiW4&1vMyW39RI&XbXbzDiSvVncN2%!l5pjatM4t6cR+%&jK6AIt0$e zu}**+5rprFj9i5tNXF|kqF2+hBqf;>{W#?shKxRhzT6h;fl*G{;HD%yEm~n6eojLO zyd6E_jPT1Q=JOTQ=PSsYOUcickRLB5KUz$FxR|`YlzeYB@zy4AX#uyTHc@|gJ;QH{ z$Op6a*fR@xFdex+5&dQuc&{h7x~;?I@S=<>l-DJv-r!(nJ680Y+67&KaDoy-&XC zXnNe$?1a1NaZj^Xea%mLTb^{cKILhB+S}%|x6L_k+q1s5XT9yt`Z}DAYk$_?{=C24 zx%jqc1MSWxv_F;j)QQ^9+%9?M!(gk`Ni7$rwppImYFTpg1xZb32cDRk*Ld0JwpY70 zdnMR-POxct>JxL5o6JjYIwSPNl$1u(k{eA=t~WJQdvbdH(wFl0E=oAlHEu@p_>pY_ zV_L<%*xEC^t@Xuu;<{bju|bY)g^7y`0<$vwQxaX{{MHdR<1+|bw*x)v6nlR?^Vw4H z=~Cj;MZ`x7hz}MJ*XI-O%_rVjNW8UzxU>P_>Oj&gStIdIKd1N%b^K5`alG1jI(BFqlMF0|ciqEug{@QYjcho6;v_ zO%5kd{UdF1IAcmUb80wydN`{roH-+$H6xr=9?qH_&YTm@o*mAaAI@16&RHDJUK-9> z5iVF6E?yh1yDr>tOSs{-aMP{fcH6?8wuZZI3wPZT?zSV`V{f?EzHp}_;Z`TYZBK-s zIvMV8GTiZ4xXp=hmlNUcuY~&?2|s->-2Yg3!0zzqm&4nh|6^mbdpjE6-`n_y-HpE5 z^TeI~b?=@`zIDQO{eba*R)oHOsrD~J>-^NO)=!;tziXE9X`1&{QJ&R>*>ZyZb`ACM zLh_?U`2Wl&uFoajn?t-io47igyfTk?b189QJ$`Nhv#}oDXjF;x+g$R;GUR?4`r}mO zhl$9&QOH-%fpJ3QDY6SzKJJ;la74j{fLbE$MbU?7Mnhq!{ zy;is6!j7p$5kM6Ys2U(gl_|`s7FeTzVmXi+i9po>DXE$cNR4eILO{_w(fWll*q6na z6$?LA0i{(3lu$Du{Xia28pGM#z5-u-NkXWeS`Cm39;WJmV5=Th1GJF@5>ASW7BHHV zjiw|V=Qv|sTXv}>YrHjUk~OE)l06xYtWqodoNUf6HD^yY=T5fdO|}+HwH1`vi>5n@ zXF5yDops7x4d%KV&hs^zo8Dr7R?Fj|W@`gYW+gRSliTvuj8?l-+OAA_YE@qE*GmRm z%j$VB*kfa2pIvE#-^?EQc3PipsZX!U?0F=w@A>S0`!hRksNZt?i0tE&l6LnD&F>SM z+c!ABN6NGwDWwBlRx%q#nU=LqSo}n2Uaf@k%(y9up0Rdq0Kqlrz?L6pzF9?G zpGRJwhrd4?e|HvfbtduFOyY7md2u%J#vS@ct2@FHeeNQb z^OzmkX|=j07d(|(*eL=?k3dD$097;^s0Ij5VK4}(H3G`e0X;qkg73oq3Q(FVS1jWn z1{A4LuU~1kQa}gf&G*LF3It<-Bo8OMx!7Hf2q4%4O3#6CQk2zr#guGRLnM$;lt2*@ zM+gkTG5AT~2&R9JeBu}y`-EQz{pSRRkdZ%(AP9jO3b^rgg{2mz5rQB_vPmJoDb+9m zMJ))TrrYK;Nj&9}`XUHTps69phTPCDo-08R+RpdOGA;9n0}(_e5mQg3|6pQ}gqsjb z1cDXkjR+&5xYQTvT#7uGgQnpm>~)7TBFYFD#StWnU`Si={0Zi(72sd90gO5`i7REq zn`Oj>GUAOH#QAdK+&tp7Rm5v^nGFrFCNCAq|1Kkbn1tM)fc`ih`C$zD!%+OozTmBP z%*rMLF$ued-5l$BQ8IVrzGYC%Vv zO`pQd6@a1x_C~Jg)1_67K+*7110XrGDj@ZL52!K%Rlm;RiCk%|oWg+0ayFMI-|Mdx zNUW=xV}K+*0vQ~77cjVsNV8fr2Z{npQjH;kR4|gKXpLgbG-HM>{$O)IGsT%H&ZhVG zvr(L#hTrWJ=b(8z%}0LXpm{5-bU{lrZEt9u-^#qtC3ZzHgG=t(+;O_ZvX*9&aWbx6 zV14)W4^r%t5!A^s^&7;WZ<%=6qO?bVDaAUzsryKVWhOxdSP=g#IdTjbYo+2TgN;`c zImOQ!ybNV~9_d|YIS7(7MGl|P(_{FKj z`KiRYsl>Ty#M$Y@soBKwWyFcu^x6hklW_&ce@`ZU7>oS)67u6{XLwtobMd)<~>8 zOodOIRVD@~KA{2-EM~yzmw_N4-Wml2Bany_qM`k5`+;WL_nJWV+E`Yc8BC_ z0HVS#Ua7CR#-?Gw9naG$GZUq@5P z818Kxx3O>fwKQuff|vxVL0kXTE`j%LVmkykW@zI(*k8>z&c%rY8Vd|1M~|l_nyEw} zT39uaR{iizEwI0cJhKRynvK`NIU6gwfb1kC2jJ}#ts*$lf_d&Rb7v`dYX*5~I&onN zer_^xx)eWEN}MbuPfj6Tok<*7iXWX#t*(zX8CzideFE`d6mowg^5byy$D!!=&tP}D z(N~`2R@S$BEe-@&5;NOp)$X5=-hvj~@Lq~5Pt)D#jC4s=0ogNC3p*^J|fX`FI1IvoeyKkzI^rqXZkx=z!?w4%4?5lb5Cu=cnLjCgHD5#9y6& zA0JN~n?SrWkvLLD99)bYET>l1$C{4MSN|AG{4^Z>=>_z`Q0&J+*uCD^osQJojkz_o zZC;Zd0p`Sv_L(L964IMf5kSsd%?(?_m|`Pxv)k;-V|b5d&rB)k7|dyxl-JH`dn_QG zPPGUGe^T@ORc#8>U=saE1k#jLQw@ONX~sVT1oc#$g)yAf837ciZ8Qa8oY&hu!A&3` zcApgj(sV!)P8uX*oKZ_s)gS~!NPvydu|X3CI|GN~ZwD>FSquk87B~kw*S+XIo+Nca z5I#xn|4iJ!n!9$gAd4V8?fqMar{2i1PC*c>O1F46?(^s3Z|jqtv5qqJS;xit>M{aP zG+@CAWa%_eW}{MR#bdA}bCv{7^-zp^Jo@5hWO*U+1SZ%x*-a~MT6R(f2hEreoM=f6 zIz)XwpM0Z~I5iPJISxB97C$x?J2DnOJdQX#9zQq*-?sqYGlN=QA8R@(SNn4m`SVcZ z=fU_-&*Jy{Vc&NrZntILZoscAws}ns1eg=j+h-N`Pe_A+jE+qB900nBG^fhdT>85J z*g+s{fE<;8iYfqEt4APxJPuHXrcYrypwL4(P_m}x zDFqJz03ZNKL_t)f=}$7U%}RDvK=67ieB4t3D5>UESnM>u0+7R%>+u%(10^v)kqG2u z4R#nXA}6Vp5lE0@fCwE>B-k(pCmf=atv2+fT&z`U?1v6UbTS4P1VqUk=^p0XG|6*1 zUFv}#LYh2iNc{V)y}NjjL*o9<{vBgdZxvXlBZ$pRw|Oz{=J15OUh!!JQyM5UhCAPG ztgRyO1PKdGBd5%wX4>g=+UON+sk}9T*L*bVo{EjxjjpXjHpK)hr??rThgMvS!A3J0 zf)lOCK?lK&x#YQt#H-`+<72QRqw#}dumfYT125qR#$x+Qv7K|VozuaxdU(^)Ts1rl z{4xmrWgzx*f9yd|{QJ)2&6dpDwfXf0cCThfNK-;uyR4%A2`Ldk87gd(SVd1Ipj?J? zne3TKc~2!~w+ZD`04j=%#{z=muK<}V0Y#SaRg-8n1a}eT8Ug7~!=i?&0IHHi3sFG! zNNJ8LfO0(ELVtXTVoI!xK>8ZK0uXH390jCDAlNlAL=Z-TloWp znFwOB((T5^-5C@Ab)3)(!PLgand98=wKAZ=Wb|-G4`XyQqJw7P6xNCyc!>C94tZugerzm$WHfeQ6t;I1wr>=+ zXB56?47O`LwtW`1Z5miq7i%&lOZ)E-@|XVTFa7YJdgJ%I;or3^9W^Mc42;Ah`a5 zdMuTID&kPp94PPa0I5L*0!r3j6;=h5{un?N7s}$RE#s>Kf=RU1?#gj{3jJ{banS81#od`0 z_g#SRjUeii>g;LWYwb-Na6DkdLJP@R%jpFkHjC5Z6laF$2=V3wnsd(v6HgMmo007? z!NRE?PW7-x7b7`oR-eMiXATk{%_d$Oiyt119TnCVFPVqu0Mt{vi2gK>M>ln#H3l0p(BITdv-o3`Mus zbaNe)$t-|-2Kx5QOaA%^+k6BuIq7!OeRs;@zD*SRAc(1@Hfy&3qfXW>IF?|Q^8`CTv$&3(DK=DaUDBh{q)1z(YgaFM!zy0I~Gs#y*;=6}qFAv4G4Z*ey#Wq)rQP{ev$hwKdoZ8qE)6z|U z_9K7lhW^xrxZi=e*OL753F@N~=5iLdG1=@EO$cF(Pi~b_&?_#fG2op>SWYiff8C}7 ziq#c?FaI6c5Rf%JnB69j(L5oeMI-{*V>wVH2*H|mdJY5usg*fU3{Yf0Its{K6QF1W zg8faj|5F62%z=Cc-d!CKEUrMaR+}@+3AciZ6g8nbAh_PH4oJj-ASrSBi|a&!Fp{uI zudXN3AG5N_Mx@Yvq)uM+hdLlPC%ae~1}#>wqogcT@eAAs*L&ZrCHF!QL!L5da{Q+~ z?T2JMi^e=7-3Qhs+-s@LM-Z!@?ljwTXSVm-B)%_#sO{9*%K{(wvTw(+cok3F!7Sg$ zZ49vayeUp|XDjYh$(F#d-Zk8u57^f_(OnV2!f9UKNmt;7VL_tMvR{{?HSEcfb-yu((mCUYn+3M0*G`oLjY~C1$mbOK%=X zZ*HkNg;fD$k7UhNB9KM>TR>H(uuwHXdVRYZB9QiXfJ6iA_4FtphPB!pSx$GJ*I%du zvcPkA9S}T56)aIeOqB?v_>F2%g@6=-HtM-fOpg|CfFoe2{Gxx4kTUuz4M`qGu%SR! zsKh0nLz}%E^#jp0gV0q2uvG)F)q~JA&!elxBP+)cWwo%n z5KwpOetY7FHsp8BiEo}DZ`YDY0a(H3P6SWDlBr08U+NWsz(6n^H&s5q;vOUbD$_7 zSe`8DkyY43fKvYokWg9Um(k0+Fr39^&vdx+yuLz3gMi?B!q^n112WT`21|X@G8q9R z`(-$@CJ>|od#uW^F|S_JJ|I-msSXH^H~|9k#Db8A5gaHmsvv2F`^a|pTeU?9s8Aj} z!~1D3>mh+i0hs3{=h01Z_gfgt5!9SOcV6hYy}XD9jIRN~+eZ1Z#I z`e(2;&!DTHL09y}miNV0^hZ}dhb$Y5EE|bWu7%c~k)-|JiTRJ|kDa33EC~h7C@&{X_=Jxa@HUyj~)hkgPdxya#&0Mha-YX08>(tE&H0*ai*R|Qltg=Jb`qo*o>l*k$C-$kG*fb{x6 zMw+u&9hpv7p4VFti9nHMw!RH*tpvoVu#!9w2?)ri7!ws^B2E}dTH_QyAMFUPw}+~T zK(NeeT;#jnZ6jU>ukHzU|lAZs9bmGkIM$J-@B4+Iqoi@P zAqE0ka)-atgYJb08mIYK9T2BDc;18n(17d>0pa_fL)H&K*Y-tM^}&|)L6`JI7x%)J z^hTFFgDe_>EFFfG79+K0B$|J1M}Oap_^vVdrat*aG59Q(`d1orA%WT)C%Oe=1W-y& zPj5m)QU_$zi)B?EicPPeWy_>Fm(h}vkkQhg+B813nZ*j{DLwpD1yp3O1Qgjw{3n1a zm+{eeVgJtnMR%fYuq=FZ3Nzd68BS-O$5RE6{vs>_i00u@ybdTfg~@(JNmP`0f)r`S zA}T>qO_bE2q=qCdNgp8@R$7Ifre)aPFiC=65=Av2DSlD*7+^nN7* zaDG1Ayo&@rE0ubhefctdD3#6URlm)XWAbJhZ7BvmejB&^Tj8z#TpvO-i6%d9@^j`m zUh@bBD?+mksopPB?@T534aC;;#a8ylmi5Ay_QIC*z!vqu7WKpz_Q4iBk1ZZbOe_RN zGm7* zRs(>wMytBOT||8os1lGI1tj?tC8)>&f|3wILV$))Dne;+05bwi`e)T)fuEHATcjEr z3QC9w0#rP4qw$s9@|&4-YXm{^xMyZtK6^^qh#(q*IA&Om>~wuun;U~5jF;@NQoOmG z|0aR#jv!nIrfjeB>9f){1W^sB=Pb49U1GlrPeeGGSA&ce4AsIID`@qQos-f{&Qr@ZREvC$gUp9;x5R7j>x=@$ed2d+z!Z`cF4?jNLdGD+SAC4 zr_dor#QnUR`=*5WJO{aviF}%Ze2|D-^&{sT$T1VL%80ob140;miBBeHKkW|GBYB%- zNrtmnq=B_wGgKdGvR-SJ<{UfZrMfq=xn2Sm{-&6=(Dbh|Uh6$NC8g&+7F3}(=93WL`XAs`a&1BtR%R)Vq| zz(}RQSgWi1>8IS?JG*;yarNlr>e1QRv$L~jM_13MTs@z1_I%3GtD~c5Cr8gN_TF6` zy}LPjcX#yZ;q2GbHK32{x&Dr!W8-JMRe1fKdY>;YetC56tTiRa&({BTN8PK_vsTZ} z+4ydQ+wU~Fx4Q7vNtufl=j?gC@XqVCzFL!WXmaMpAr#S0Qw-SAz! z<9>5~-2BqGY186nmBvk<;4Yoy8FxML#8093wujaX4n03KY1p$V&+B8@bIBw6CkQ{rd~y@Q`qLkp2gr4Tqlzhx`9G{LCNW?%{CPaJb`t!ySGJclbTrE*x$X z4!8L|-0tUa$3Nj;*d_J{p86x)?$>aKpTj+V5BCp;2mTlSRYUZDVsPxQ9jO20g>ZO8 zI6SKQ7#R+a4u{8u!xO^cN#XF6Kf}|03(x!|Jo7<#`h7TN-Ve|E>CdVE4wr|Y475TJ zIt~Kr>W;5XayGrx^&@&9Aoxp)b1LTK_|#_Jq$m7Ijm?(71*CuZCxDc6%@~V7O7#e& zJ_JavvI=`Fp!fJ}wcqOAcAW9}l13?O+nOJ!|Ne^ByBjKyy0BR#xp4! zP9<-6EqT*x$(v55Yk(H5Rv33g9Of@1cw101p-F$D8V5(Mm)E+{^T?Eq;<$ZM*-@$dxIE{iGVio9|BO8U zj6C;@H1Cu&@1!*MRdLPA;+!k-vnP{&92gVpkS|n+Kq-DU!fRO-gplAaMI5XyKi?nQj z*QIfepamcpNnR#ci6G_1NQ16u2RrUTD3+iMI3*IaL{bKlNU8(`Tg_E0;~5U#NTgW{1Z2y0ICCT=j%3Vw z_<3rNsUfn1YsaZ(IC1-F(3;NP*c44f7or`^ZR}=9QcoT_`l-Ouy{0VcqJ?x z{jYH358?2C_(T8Z4*bmSd%*7fp4t61z4I=${c~!|$6(`ia@|#O%_U;xueK}y<9pRe zs2C7P#zb;Pz{(^eVl>C#N_VVdKeDfd@}rzWaeCiEy>lSNsWdB7tb$Rz758*QyS2ny z(S%6y3M<(dg9-2&O{$%c*3YB;T|_)W3xF{aj6$*s#fTKep*T>eTunboNMF^M#FB%;pScLmIUv1uRPfa}&TcKh@nS z3zP{5iZ8BVD6NCTS41!t(G--;NjjhkL-0FPWl5%3yKGAGB{g;@*7pV*SS&C{w(H|z zK&E_sKtK^akIY}WX63Pfs&6D#0IDGZrB(wZ{Uson1DPor=0Ij^s@0a|aAr%2pJYwC z9=m=ywGvR|O^*)9AQ)Vt2%B>uxX^$sxXQ1)#c%ma*!sP&{YS&j2f}WB?D|pI`91&g zcl?g8+3jDjTW>R)Z!jA^qSsxg*1SutyaJY80837Tg(t`b_v{zn_rIc$3JQ1tuS=WY zU}cQv8Qj(3tW@m!9pfQ3O2o_2((}I~2%oMLtyoNFc8}5G&9oil5&5{~07_(8&wqzocbnP%HMjkHZs&b|&ribMpM-r6_`Ub}z2Eb@ zzvXs)#lC!--F}1F`Z2TVI=%i~dd*wZ$~UOxr>I58=|zW$d0#uX~?FK4k+XeHF71?^CZ+WLqLTO0do9502F)(P>Lp{nWaaju!?28 zlxF-VfFcoyQfbCyGN)K<8MY`OQ|vN)6cE${cM**MMj#;)fefNw61)h(H^TGZX4ier zZoA8E`-a=`1Gnowzvn)`=Z6R#Zs!;5%eUC=pRrp%Vm7}|Z+M4V`zE#W9JTBuwd56Q z;Q@O7Zle5-`}Ow%Clu0%(FV@ophX95uu{AkqXib%hTzYQA;x*xbW*g!3h4TEB39B5 z>_ivC+fiDy67l88tkLL10a$6-Bx-)%=wc-cL)j-Iqc)?9Qps$TS6KL$TPTAS@K%DB z5uCP>h4tBqCCu1ddU!51GMgHaLygPUoQ!5RTcrVwCkvKI0N z8@d8@-GRCmOJ2nkRuzy{gLEvWXb$ukKsi+b!2(m!3(+-1pcIp&C($(mijFFPqEndP zVDR!$K=4(31Q4hIWX-VIGYt|16bnCA{dt$E0ua1WADO}gr@`QtcrQY54exW? zTW@k(@3K3-;dg$|@BWV8{WZVqF1PCz_wo&H$H&~Z57^D`vKz0^>n_r(&rvH+QcI6e zi}q9VchPgUlGAVa&RtDBrUMdr(aA~8z*H@`qUKM|Dr*i0bX^@gdi3NdVz z3h&*zS;2|WFaj+^7EQ#bionjwX2le5FuFO}%2Lj9Y{EW#bq1M-@fs)D8Oa8VD+pGS zQ4pMT5G9S7S@o&1Vro(mm{J6$7J(_nU}`a0RzyxOB&O%l6HQDW#X&$bvy^ae_I?-q zUI+54mc-3Q_=hFrr5x&&6lQXqL!=!jki7o-5kNR?5={xPx#FXS;PFlnuvSS6d4dg` zfjTij1@?#2ph6u`GzWr=9tX(y5TM9We3b|ky^;7202!r7)7`3oeANNj7}l%6%Hs5#r{^7X`&PyA=z z4jq#T1*avLzC>T%SaI6GXM7^uE-@(GzR;*1DeFvGKY_;d?;!p)LQ5Rj9hTr2RhGsM;$ zst7k|g5qLj2O~RJ(M~Z&ga96*SqJjvHpG@Du->l+Q#P2 z!)a9q1bewgk^TG+k9t zTurx~8EkNO8=T<5JwtGJ3GQyeoxz>pE)!gW1^=*M!QCOjf(M7-a`_)_)v8ndyia#; zS!?(1trD-s+N!r8? z=q0i&Lr{*u!X0U18cYp+Di^pb<+-qMczaZJXGr>bm)Ds;9;$;OM-|*3p2pAb&7o5H zFfop3d!P>0r-ge$Q9biNGfcMOx${A#`4DF9VwGeDwHyNoMZf0|Hp{Fd4AS=jK02esEz&}l1U zkKJ1}wQNIWe}ABZelb2dWoQZVzCC>+UvXOIIaCXzR7%Z_XrRsnT4k$@IfWY87_z@1 zPH0Jo2i|!EyL<)0m6YWdZ$nrB*+rb1H1J^+4^OB)rl#JvKea(PL`Vd7e8gg-Z~9^+ zV1!bJRvdc*u^4?#uT9xZCW$^TaF!E68kii(3?Y(%e-!m6ZamkvUijoS@%Pt5+^Yb~Kj5{xSj;JY;X+$^}8F`*z<{Z)5KVv|L#0n(SXBwJ#<@krSCgRSXD zFfaJOZaHJ}(C#_xu36&1YR(%SlWhf)?V9cZgXeSB=jrO-hmFp)@)${ERFf|@kb4^! z@PUNGxe?uw4DOXP*$1Y{ci$N?qNz-}!gn&bKr=F3M4zQpo4=YgD?*B4M}kky6ffqD zLQD1!kKpTbiL3`fX!;`*`z^-+rXiW|e!yUE1|?}wsyULHVB$<wf6kHmDVAx{gbHQI7Yy7Pe7fKiV!07 zNnM{QmgNvB5~yfQW&5ow3563)mXqAr*Ff;5#pjy+{@h@+ckFU~Z1!|%uqG38Ef_xe z3N84Lf#UAR`Q_U7V%+wgdtanLo9AttMGqH~IL~o6ty3p`Z3m=Q%t5bXsotZFtAuE# z{=N7i!{uD^@+-#A4eIznF2oLT#2)c9pJ4F)3(n;#&T&}KxE1GG%A12In`GgSFxjMm z8(;TysC{Tg-VlI06Ma7`b#s4KL2&pP()*`6H|f_bRyh})V}7m4;Jj?QV(w2LbFe)+m2!W8QqZ!}`AA-U+5c8ixKowEQ|41j? zic#?-bxgZGf=0e{fi^k)8r-BH0?v=nk{{^&1>T3SJ5f;wI-W;B*EON_J*xHYJL?ID z@f_V1zM+)`*_HIDyGZi?3&Q zD&5&`IZq z@H6n_i8_+?wUqNU-sCP>__br}IJnf^>|(p{vh)>gzki-Q7;pbTE=|Clf1} ziSk8X$U}3bC#P_Y^6vs>K2OYD0O;jD?rw;#K~>hQFrHSNN;!xZFW?QLp?BAxPECSZ z*rNd~^L?D>J%3?Af2CgMQy#j3fsL@h57Jr0`vgKfGGxDmA-SxeVa|i!bJUbYWU8|{ zC5(c96yJV$M^A+e^g%sf2ci^AcGC)@ih(we$CSm=lNmG50S^ZW?Lj5tXmS;KeY6P$ zZ+&RIN=0vcGfEl=_`a&(c_8t}H3nJj7M;k94`Nb&9B_1ydue*Nqf$C5i$V5qcjz$v z4Ru_siCnB$++#O9ie5bE-qTmD8t(i@4K@sXR`2-ifP6t5K6XTWZpdOq1k_J0XA6pz zHuQbb5>T!uE?Uu;e$s5(1c{{lq4{@3e+k_&71|;_?;|nqWK_>pd3SS~HglVHb3LsK zD3mzV6G_&Rr?}MVLPp81Y27*HJ|qtO;M8h}bUssE*$) zh+=8m##b2NjQqIE>*`M7Yax1Z?{oPR@q7jGsPW=D;SHbX_xmxHw(qfEZ#OK6T{P|W zne^NS`=K@QdTQd(|KEXu?{TwbP{@WAOem@Mq>fz9+04^M5_;aCz;>iXe$K=Nss!2u zu;%!Qy`@g)rsU}B4s*LSwqM>|%SgJA|6s=ODt$v|5pGkz2 zR*|hSoD24Y%ym+ADyY>O5u6)bazlBfr@?>gStsVIKA4Z^5GDKBcxxPgi zvx>Jfao%%pW=3z3x}p-hQ7c97MXW%HF8~_n$zT@3F#p>Y`AqYih9x%(TzNNwrrJS5 zHz^06py7>Eqxkq9Y^;#qTD06-B)HkLys>`g?|>KR zpSJY}uof{3oR}1dhywTAA_R*nzb=Nn+{+&s8|~?Ec(cbC9JoivBhg8>wmORU?P62U2Ap(s+&}FVKGqrYuVFZAQOoFVP*lLx%vPuhrm^MKJT@1+2=EKIfGz=~@l( zatTAOu#bRGg0D1-t&$I+hz>O=h!S`I^T$me)~OD}#fVKq{(^?AoX+H&=G2_lDE%gC zwiRpvRN}KzqLU(`WB8ua*F9(W=+Z2Yj{01NMk;Y=jC=30o7**p+W;?@Blo{2J;xt} zuMKge8u^0PnkoE}?q}`~D2sG$bl`UzpQ|th52LK7sF@g08&7?nQb#DP0R)C#~%l zk?pPNZ`cr$mwCMScY*Wq z5~hRdQ!L47i;qf=I2dZV?{=8$_7Ye5lyCRz_nRFtw%%~+vE`iY+8Y1tmgmDW?72jj zWam{tL`DC!9{145^K9Vou>W(u3vbVh$e%sgV7oyV5UXl$_E`$xOPda=0)<9;Xdu?a z{PgMQ0fR1gWHT=ocn;(cLv=@#A_)Dc&?^+MN;VkdD9fsF)ZQA~@jH{V)Ja2jf_Wnb zYuyE_cA)A|Zp1Xp@AR_3L%%9e?6}Ffj95HWbZo_El93B5e3Sd)+KtOgNXQBytDAIu z71`Pa#l0m&$l%AZvTLKwo<98VR|R4X{5=hevC5gb-Z;%(^wb|opEp-BD@OnZB2xCH;yR`#$+wge6~SOA;4o3stK8@KTp2qC@jeWID;UT&a!c zw`=RTt9RA;pw>Pz-ClYH;Z`cN)&-DSS##po{aS`3r51!IM^-hgLfk(mMluJ5B#~u9bJjl}-0#-1d+Ghu@IriX1q&%&162 z(50?1auFjFk){&LkmHMxG5Y=3 zSQ4x-mw!T+A(#5qf@aiBWK@I0p@Kp`DsJqm7VgW)?It2D5F;ncj4+W6v|;c?w=6+G z!=WsbH%UYFX1Z!sY!^wr7tsuVLx*NKr$PiLV}nT||1Y$LK<3Ht&9ZhO`?kV!f8BFg z|A!6sgF>>|4dVB$Jj)KK$K06R-)&^*a6JCZ zkZLCmbJD>a*8{3WhK?rra^0zN`i|>~wqJp2B`Qrpl>HNj~ zG~W6RXNl%#@up|-@KcOk=kP2b@3#T?#F$3EDteDMAh@Y0*y*EKg=Ao+?1qxnMw~^4 z$T*pU6l(8bpioRol6DfN}0@tQ#d;^%MGD%^18!=4DT=xeJ4PgaAq#9IR zFj(y)VSECc*$ad)3QfhFOY7ag$9(rwvDU{M1Nx4Nhs7Fq)eV1>9`V9Qk)Foq#I;3r zK+@WLp72l1T4tH%5}^#em-g8Y!SZ(=%*}kcdT>HaKvh81-Pg?6!s9V=BtEs8oNX+3udRK&R)W>EU1bd|fa!@LB$Ts&M+{TeaBN z?9URh#(Ci`zgz+zId;$Ls)F4cFDEoF1-#~$P#(ruA5;ZKllO?F8rxm%+x<%o*Vsll z#sejF@SN4oO-R;5D-gZv4ULv-np#+EPTYKRQNWCz$5tVD*g1tNh1rwuk#IQJ!mR^d z0YtWGbJ%G}%neX9K+|^AZ?2=i){+_l$B*)WqJP8>P%l({vkc_FM-FAioY8(J2On6) zFVrs(3eyUnhi0RU2?}3P5ATUf_dhU*y;@vGeR%ib7WIDR%b4nG()GM-DRzLA-$v9f zQ$aeFzrNoN!gl{zDpf$;^^ZRh9j^{oA6|M7ZhwFdySF&;%r~Qu*$-ZdPH}1EZHr77 zi?kzt%mI=dV$%!RpLZ1d%ISP18mf(_8=kBts>U?#2jAv>uy=Fe2*g#@E%Oalj;Lt2 zyv>svXmPzKJz20xUs|v0d@w%z_jk6?B-6Nuqvt04Y1MzHPK+by#AsCazg2t|06~u+ z)_U8}-3{gC#zxiC#HagQrX3eYmb%-f%*>|3+97b#jA5HuySsxD(0&${3dLX&Ed?}x zNy{~WpyA}Ekx&&Af#Y%F&QmmlOIdSxh?s|w!2IYI0AF{uBp#&cZ%DK}cw;%pL|~x) z4FXzHg^$N|8hx^1z+YW$jY7eb9&_)>D+OFXb|oK*0r zei&AWQ+VHYJw8-Y9;D`X`B-`@#%c6s+f$no*&f+|{m0U%+PK>uga2+n-xqijo;^(L z5eEfdcN7@nVr-meR*c94Mx)7?>Y>xZ2$2f^S;X!ZvOMqDM5tz#A}!SZ*ZbctyMvc< z#x}9yRF~G%4m6K|47RdSp6lsuDklW**mtbTl1+g zYM@S>KImWXtnOKAcW15f5`;+Usj}hqr%1euN&4$)(L)W-sKA$zjV$Im@8(QmAYAPV z0KXa8on%*cYNT(+VUB|HV5*@5G!WKIYFoT-02NeJHFVH)1kldaGZX`EX~%Qi)HsI@e=e#Pg{npPjs;Dl78f`#O52B&0o>l#ql4(Pa?}^&{|f8jIbd>vt|T8~8=R z`vYy)v(fAtHS_w---+N`e>(k$?3YUn-Z?;s?#?_PdCqNpiLAR)!zHJ}>rUoCuyzI! zVaN7^X^7T!NKnz;mI+%oS4vB)JzUUprAFQuvrM{r6G2;%m^$4g$nfs+xv%h-?!#!; zVBNar!<>Kk>xmvLtNhZb~d`G?!DB4HDM6 zI)^&8gAYbuXcySQ;OU3b3jTK^96ryDdno{%LL3fjKo<^`=%jXqK|0H9zanwh z6X$}OI6SBb&-@GT&QW@?y7nIj{!-&^C|-B^Joj(o!xHb7HMi+h70%vH@wETIBX#Df zuaw_V|Ev+Vg10E-x3BlsW!=JuSCQh4iyb{K(45Kav#1Azn-Bq<^WZsAyZP%e7DjYX z81vyG<-Cq{HpNkwBKY@phIU8M@O#j;1>NWJB*4xhK}Qj+7pHm<{Wk9P1i1BOo$+ZV ze^B?7x!X;4Yj+Ku(}eZqVqtqs_icsyVw?Upd-IfNu(F{boioS72>(0+W;WOLaJ(W#>EsZ_y1#94_YVFC@{L2w9+ zw-<$`75o+g>^AisM7mQzO9&UyLyd_bM8yTb@PA8O^^YN9P9cKS6(Gu(Z)onF44it{ zeOO4~hsPBFiw6i7U8;&ptg_FeOCP6+&+H`V;&f=>ah+5ADebP-CPMZDv*?Y))`iXB zPysGAlJkIfw`#xv>P7Eu^z8@6^(&6U)2M+~G3IsOLZ3CU+2)SYYHuQrz^^ZgJwi{k zcTgEXZi!Fa<}D1C`-v_b&^wA*|6YgiKkC7QLbO6Z`8y?T{fv|E%D~W*Xk&tcN2SA5 zNxMe)eTrr=(Qsu&j&9O`+u<*xzO&!j4`Hl*XT~gnhZ+}(nX$n>4R@vJgC9EE@1ls& zlJs5d zpqNrEgo$C6ONida!P0%gnVxI#*#b|1arbf&2%yDiFq;=r@kndx1HheeJfe|8b@Vpz zVfEC*itK8_x#Offu;qBEI6b(f@DKqs`Gmvw#SfMJfVvOsL(LT2#rQV|S-6z0{ z+Q$KrQ{1{P$<7DaSl|c@*gP~Ctq~S}Vv4n}X z?p^?`_VWAX0+i0eXW(cfbZr`2ivKqQAR<4M+AF|1lGyEqCBHF0KU9U!G%T>!?^?j*_>7m*2e{ zIbY~{#hD0dJf+hOnyj-2ek~RI_DNkLLHxhd?$0XEAD9Mv){|eB^d81)pZ-}LvMS$y z85^C_mNXAJs`-Ony&rm1LEkZLhei1{{3~xr;8$fJFqS;Eq8pcw-`qT8+u{)@g)z0R zP2v<0GNE~i@IMeL#LmgIJI^FWHr@U3ppLHlkCJFWIr>*7zKU1J3jo*o3G_RU^JKI3V- zA+>ZWk2%1({QUl;Z(jiY)l1_}AhpkiDI${}tw-?PQ=j!kBj2w00t<24oxg5Zk5J{y zLdJQ**XvBm3(k!2CH>jL#U0&`_a+(7dd=tz)ic8D#zMqeG7KX?7{$T8<#iI37fId> zrR}-?`bWc!X!}1E;)xdKA=bcEX_%lNcUSbixEeD291ge;SNn1YC1qM2ZtBxw?+bzt zyAe^iETAv)70a+EabqTB3C}P#LKliE7E5nXcdt?J=P_pwHD|MVwzGL=69i&yoYN+M zF&7BY6^Orqy+D|K-BqD;3wditero`A>kf5`q{8P(>u^BD?62km^{e5Tdo6{cOoe~k zvg)!{KPS37{UM*g1s~6uI|W7m(%Qhvs@EXPCnbWV-k2M*lRqb=>`p@#>J4l#_U}{TEY>SO3YxS! z^RRtyQtXaj>hDrw#8SxcV39gY_~1t^kaoDaG;_MNnl!V{pt&+LZ|p~{wDC||q!c%) zbXDeA%vcWvT-A|2`SvDO)U}l9Osn=10yMv__BDOc-Jw7UH&Z-dNTkxWHA26ooE`uj zam^}xL0ykL{m+CQI^vK~-!ug*k)i@k5zq(yBUsJ`1TXb#qVK@kSmJ?}y8uKYxrE_S ztvNf9_1JxUnCPc}cz&j0qJGo#KR6qpvBopwWq;VWBF(k)%+;5aa2y%zespID{tk_H zGzH^x?eI2M<Yhb z*~GuKT<@%IPEM&1~s2)`x`g^(djU5 zCSQ!K?@{p=&|Cga%wIFeZt;1}FiY>GVU9`|U9wdSO}}`x&$86ryvE<6E0C=Mqc^6d z3XB=`7Li!vgJW&{PU`uQVO7O$o!W)S2e#r+ON00@kW{`cvYH?<90uZDMTe~7=j*|t z>U49?BB!x`>om|26Wz^&3~@m8^V@(ss9^cE9iKG9Hrd zCzcNXv>Y(!jYXR4y~?_R-r)Du{lDKrU0~tHWwDN5Vy*KcJI&Inh`XvJs z%^DwY4@=cJAmZ0i))Jj_l6~8Sq{!)JLaPJTqQ^4PvLr}!0PTH%);c;Q{(}7G8UD8z zAG3z*zYR3U$Ao9-I#JC2$Le}tfK^pJ^6^~p6sYM~1AV8@m1G0aLOe+>5TdAVAze3G z-@~yYLHsSzdeO77mfZ8VmeSagkBO>71<HU$HM`BvOXTbksicBL-O|e#rJfhE9O0{bD*%)=SiD z)S^|?ZItfq!%Bz3+r)~%MD^drkA%nTpFW!dft*x#I1$dr>9WqAn;B8`C|?5WK8jQN z?Isg{>GZ*1`SRp*Feuq0idIE#{0pB@m2d0-x#3<(6zY`@AkdMmkMgsEX_I&eYkCZG z*?-64GjOK_Kqf&*l}JSZhG*!&*@%uADa_D5geV)y9AI|^a7)S+ee;~XdA5$l(%*?# z^|R4#93m@)4oq~lOslKRnoG%eB_IgBzxv9on>{+51kwLPf0Ww#wMCdZE)->i@A@Y^ ziH5LtrB|2@f6p?CQtvjVS`@z}uYNyVOyF3A`LQ=>17{DDUM_usc^Bm1jY|%VXOe%2iyx9fDz{|xSPx*hikjWePtz_hR z1(F*?FHr3iWmmibYU%!)4cg%j7%jIUf_(Ue4q2v8_nB_g&dNkkn}ZPvVyoG%vXcW8 zs_NOq^pa!n0Q69pVi=eyGuww3F{Xr_Ks~Kv5WZ?=P`e{av;ELymHNdC0k9Ux!(A z3WvFV8XKw!38SKxzGLx^ArfpID>E+pyZ7JGlA~G195~XF$$J1K zSK_UdGK!Oy+Etj>AJf^91n)wo!1tEw}&nHg-0IbU6VVMGU z0I;`?yE|kVf7@oEO=xsAT=4RK0NFU8>HQLj0g&y)Iv3AG#H`jd+?10c4P=Qyg{lRy zB{YWmq|Dyt)}37*b!R)wdXr%Ut;VjHkg=pnD$Gp9?)bQi|GOfffO3tf$j=Gxs~}KA zXW;BbWVZgUq?TAv`JG@4@k%mqlJ-?!;-5N^buxVjxKDTvwF!OfPZ$D7>ZT!Y`uu=Jp?J-|vmuSKlkH*}L%jUS)@(mr| z0ZmR`75KQ-MJlZRr_T~!6jgI!`O!&6u%G&4L_HzhNHPb+>@a?lNID9X@eh{An0;UF z$QP1=Ml56pdBJAL_IOUk3zJBt&)>%EB%&z(fFYJJv(F{ip&MKm!%+qu==) z6n~gnu3Hq4xa9;X*vUoHOplxPx~C#wvKx_tc&3q@M@4%<{^C)!hh<~icxtmY)-O^I z$)9vgtu@Nh3&59V5_DG416Y;-?cb&oH#&~q3`op*Am(yvutfGDA_&&v4lq~D#fMox zhHR2RSut`F00uR7Mh{gW+x>W(;h*5H~<5zo_7h z7YOGXVFF-j{dV0(74`EV%6@P{v!XEIMlH;vLWF-i$*wHtUO;gX#q+n=Q50$#eFX9n z^F76dlW$tAKB;YLl%rr`-%SnxHSl1agma&`^9PypAY%3J^w4lP6epUt_7Mo&0m)Wk z7;qKy5I+e+OXB?4U-VY?OntQU-kl(eMY}L@S$oQ&58;LT3p^CkzQ`s~ARZ@j+0ZhMA1XziS z?E3Kt{RI1-58XsKK~ke|{0#W#W?@S@2oBs74L*-TYlim@n)?olg_0yj4RI%f5V9vZ^Id4$q9Z~^a)HCi zR@ejP?53c|d?7k165%wLG~QtGRL^0^(Znuz)nv zkn&24v_Som1A1zguO@Vi*&aM(I;zR{8KMGg36b`(x?*n}8IS0vMqXAK*lOg8LLl7s z13G~Q%-lJufB+I4=MeGF700oRl=?kvw!oGmDoQ6yY#a&f^^0N5&s7-ZBqnm^E_xg( ztbwcJ6LTelIxCtrDk6HeyrI;u{CQfI88h_``c+4?DDA$v6w6FYK{P>M1jhHHiCpZu zYHHlzvcIfKKEOo7|0=cemcIHaaW#T$yx|0IbIXo3Gh^397}_G^)uYK2{?QyzdMU(| z#7SUE#TO6bWig8BJ&nNz8oOy{F_W)Z@eqy`rxQ?77m*bF`3RS}XVM82dB!q2O4ita zJ4*NNHKF7KqqC{)!d5LESeSQ zPGB#ME_6E&lo|1T%Q0I}>af?>tjg9|kh9dq>_E=uPwg+wKCnuv$o2Z|aW02P%BSWz z7g=m3pw!_EvxlHKm%C}q7z}qg&v|Uw`eG)nA^KvDIq4bWOS$J{tZlpL(^EUs7j1-B z$oH^EkG1AT{^n&96~=rB+!PTQP7d<5-CCrnD$!o}j6TTF_C zzk1uq1T|z*doFaB5lh9&G0=#{?c{0#% z(V>`#U}O$c3aT`lH@4=|7uJFWz;UE31WB!#+-vJaP43p?!`#@CijrBrRc2!viqB|G zWY{-pHP&RaPdNTv40YzPC6a3;lHeEOIJ`-bXpYx^pQoMFVgH{)S*vx(B72>MWE(~n z&k{1d98OmH=2cuv`Az?{$ezF0H0*05F?8;K z453{>DIlVWuHlSHe3}jV8Eu*w1ycRjfO0jy9MC)iDpm0?4{@z>ljQka@I7Jx!hp;i z7o7_GX!V~|bw-DE``_p>KM*F`K4q96zmnc5oq!~98|ilEEv_5S%_upXWv0wz?b5-( z*lDd!)9juyM8oAYvZh$#uimscQA;9%z=?&~qu^XjeW0i<_0SgxQ=bELqFDXPcKKr# zqygRj6uBn9z8#4wdB5;gmz2RjsKat>?-Jm>ank;IBksSJo}!!tW|FxZVn?U!B;G$#st8h#LEnjN z>CREE07r}f35u@-a9k9%LIm4vV3VmUz|MoYU-zG!fP>(lE(ydq=J7HtE_G6!wR)ng z)&IIoVKA-(#71Ivn-PypHk%l>>jqP#DKv}=n2r$c1O);_4??G)y!R^0&}V zThA|JY|1&dypvts0h4oz@29_!^9&3`O3aOj_2 zpnKZB%W)dG^4Sc3+*3ebvbWC6w>q*B@;Chl`Qm83fGT@|eY91idg}Z6QE|XTBXo-Z z`UeJ(lBC-M4g^5@f0Xk3Y0u5d|KqAA%z({|?0cv;QZRq7t9O=^z91Ard3>q~m zW2F7F?^;|X4LL}Ofy*N7F>WT~vjrVOCt(*Fq4 zuQwd4IMn}y1cMV5f8ZGZ3#QQxg7D^>j?p(bNCBG-tsN3{LI@7z%GfRgD2AgD$n9a%73});HAjt($|<-0dlORp%PX zYuQ@ZU#>%x&UvcrOFjbH1Y;xr9gW!E`|yb;9#{fnzvyUO@$jVxQ$x%{h6RyPaQ?<5 za>-@)0EvdzFvO_fG?S5$o6zosf6P!;O~9caW`;8jw1SzAft5pZ1RM;0aNp$YbEY9a z$5yxWLzksV6-_M@Qhx~WBEBWI>E;SRxlulNZ=z4jzNnSP&w4udgueG~8&6(%QdGI- zKwn#ZtYD*3`%A`{EUVRb>ZxPq<#D(AFd)GsD7<5$x5O`xXab06Hke#M0GC(`y7SjfO(EqQCG~yV7?3?=Jz-hl&bH==>sg4;=RdqBNBa;iaj`i3 zgod9ZN7kU}@J|ppQ@5H% zoSL13E(q~`xBqC#*mdaNrO-(!yG95&kYfO87h7gM4+DW!@a2Pd2+YgzPx1uu{iefg zID?TgcG9pnnpUnSSpZcO3-U9`g@K5fG|8ml*s2Li0B4h&SfO@UKg)W}rBZn4&i3>w zDUzPlMAr$SjpGzx?xpPcpiBZr5lRXFDo}3anlnmsc+CNzy^o9kip=v-RCPj%h{B+@ zQ75KlbW25OwGuBv)|!`?Qa^42AeC`xO4ve*M6S+-6-qOk3arQkGLsAjfuYOA-m+zpFGv8vr*z%KyZcK z5p#H0WpAalRo@J6PGYkL7Spb42gRut^c^pKz6b9Wt=vQdRF+xTk&1NDgaA?!#r-Ej z3=5uwFuVZ~SBu8NL8zDl9BIH@LwMfuRRm_~@??e>0@akw^xTnP;hLT2u}6F@&9b1I z;uVMQXScj)b|a+q)vSt563DnCj%TdoNOo@id#G$RjXj{4>v@#|(-!tdCj-ULTr4OC zyRNy@JnRY>rtinp805yMoXvxxk<7=kTgL=(ac|DBWP$`ed|^fNAfOn@yU$?ld;zRZ zvjeP;lPGBN(H8^|@cfb0_Cl+&MQ>j)Mi2=9MPAPfEQC%Jz$-gq6!Y!)T}8T3#J)Sj zXt|wA>Sz}3b45B@?f#e#P4Wc8ac6iSn4L=F-dl)KS#M9{06V0>v;zb}57#>$KNt>B zhp_}9!~>S ze{*br<``d9m3K~y)5C_h@ETYD&|MzRr~5w+o!$rnGrU{R?;xZ7x3)3N) z!T}*-taPzKnO8aJ7NeJra?=8Ry0V$-Hh=y4RE1@8V<;>T!nntZ5-4tSw3|&Nb*=AJ zdp2h|fh{}Uq~SN+yh@Ad13n?g>bE_RmCSM&OhZu{>|!#=NWRs|N1 z)2S7%KdpO2jwjQBbeR{B9^Ntk3TEGYRaqv(mbB`;|G>Nr>k0NbS5euOs}jBQ+R z6*XWOJFtb_gus)D?;Gni9D7%LK zi39Ci0Hk?{z~om5oqmX6wJ#8}XjDgy&6~h-Y!V?cL|dKwV6YWj36>jXnyB4h%BXiz z<^)2XTPG|Pdz{e{>zDr_9?9YzeGjQ9~O;v~pheiZ59hu+$+ zi>mRtgllU$b4{9q6vMH{9O%LuDZLQo(IKtSjx_cQr zKMg00m8$m)eUG!EeL}hu>To(>nuWu3s8Ok6FdPIadM9krtV2L5Wm0;`P_P1D->E4G z$05LK*6{}EbhTg#(+k5qlg{fsQ}Y5Z6pHP`4V{9`;$uJga7n9z)cj6+9S6mK;S`bY zV8ey>c>LVB`rc6si6#e7Br1!3R=NJZVuR<9x!UQQ1Iql6|22DvOnTIfC3R=cBO@r7 z8Z+zQ-9RsmY$l6qszYQH(Q-jr!98upJ8Z~6MD!5D_T1(Lj6|&et^URTp%W>`dN>YQ z@C1P>B<@gMoY^w8KnDB%e7&=*T{JvWsj*y>`ouw`JVte`;8^oOQ~AHWa$^#gqxEt3 zJ<-BZCZ5Rsbro^Sh;^9(Vy`6Isu?K^JQsDw7+SCR@7ZbO!F1OG_2_S*m)>WVDo10{(Sb-J(5CXcVwpTM2sJM!nx2Vdxd!{$i#9MzpH5$SZUL+^`-!=-wW zsT%gbcx*r^K7R|QCGqi=tQQV1@CEGdl%e^fhDk`#D$&V<@tr9nLTli%(6VNZE8u+|?XWK*dZ>c!Rb12nQ5v=(oVAl3(GT@?e;%z== zqmufXyo;e0_+WDND)`o%G*YJ=biSkTLgq$FgfBGPg;vq_0mTywH~T`8<(pl(O)xB4 zH6Jb4301YERK}>(brXd`166P2vrF&I9~=*oK|C6kgHpS)XyyZ1n)NJjt&+;f$=q!p z|AIX2CSrNmyNG**ZYCK$1P^6oH3(8} zr53xUHieICx^g8GU)SIwoC#-OQrKl%DQR)$6_L8xe(pvRM0Sa!Qh5QU39?$wBJC&a zY;spi&R#77gqbB#;QRF?lzKbmh05c;GjF+WGy#vv`c{bYSa)Hy&E$5Z3L5iI6+6F1&XS~m~zm86{X5JJ|4d83MLu%J<` z!lb%3$nY#X6K5>8fudk$*k1qq#GH2$&AQ<(S);GkznlIGk*SHTgO&f={&Q9)ZgF@1 a|3ADda#dgB^lLzC7(8A5T-G@yGywoiM-Ha| literal 0 HcmV?d00001 diff --git a/gadget-code/assets/icon/icon-256x256.png b/gadget-code/assets/icon/icon-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..d095bef3781f334d4381b1768e3ad8859b328bf2 GIT binary patch literal 84147 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 literal 0 HcmV?d00001 diff --git a/gadget-code/assets/icon/icon-32x32.png b/gadget-code/assets/icon/icon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..da67231778839df50c4d8d9511e83be94e5ed67a GIT binary patch literal 2610 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 z zP0`>&zwfdqDeWz_wv(@RtLA69B!S**ZsYUa+-^@v(y>C8|Ue_NQUT3*QQ2~=+0&`0?nJ8|k)V<;WC>ZD@>={6AYRzdjsv{3|&#Nw0U5nmHW|Tw^zV zQr^B5B*i(~F<&3-T=+%B-SACFba(d2RRYGe_$UvB6KHL;@gJ-uqSfGB_N4ELXKt?M zS#6v~R`c2Gm$#PeMs*Zkl-X=;E6AqZYLW;>cUS-DHc;`?49%;O?J%*7lCzMe>?SbJTm?FSh zKfaz(c%pO>qU4^=uzW~?WMq+{y;_#6jY0Ds9ymxP7j(f4b+hwu&jcTs4jjNR?Y*qR zJ`Bo`5+WzW(cVn{1)D!oRi}J8o%?cny&`t74Nukr8_4(of}tsP%)>01J0RlBaw7Km z&kb;x53AXLpr8)uof#Meh{uH6ia&b*=-lMvara9tpI}f2ooQFj-bEf zaw7%(HKdk;Lqo~;-n8^0W+t;FQGMs$`>9hTSGSFndH@tNCKWkP$`;HTFbDlMsjyrb zZ&oMnG5@F&?j-N~>$>8WtY={2UgJ2%JX_=KF!ROuIoo{O_U)g~zm`_v9+AD*)6A!= z?F{oAw*a?^mkHrJeT8Y4N$;NF-%k_5XM+0EE*Dn;9-OZeP4_ML#XZB^590pQXK}>= zLf_v`O)kRS2J=o+1CaDycG+KN&7W;&#w3%Y-junX#49fU#5DDM(0LOKSUYAt*V~)i1{Qk4T;4nubIrp} zAHSW)O>X*%Dx98Dwl%oTO-|OWh`4Ml2!GPwt6j@!fjLYzRJmO@Pp$}lU9W3%oB21% znk72yblmCWxK}7DdRB3iy}IiC=ikO& zubuDiwtuX~3w-=GlYXJ3vOhQ38t-YSe!|z;6YlMcbG43rW2>uKve%{|`Q82YHO1vr z?bTKJ@&Ju>&spQ~a^YtQeJ2ghb!Q&Io$^%YpUSdX-ob3YX0kjpI{zb{ix;!4=a18E z%9pCb7lTI6uqDk0uGd$vz(1bFf8Mq_-k!fNn_mpCs7R%+%#io_{p{QQL9>h#}gGvJVe(li-r zWGf{piS}~M;=k#CcqPg>?2LCtK2}NYtP#goXhp>}y_Lk0^;L&f1ptrbl!e|Y4BHfj z=#_m5M5!snZ=(i^J=_#H_o>dwUh$qaX*G4wMa~0z`l*H4Xzo$SX6(0tE;U)5EaV@gww&Dde;m(nmi5qta1E+gHxlt`9~b?L@dZ z)Ue%3S`AV+6C9*hHE@In0~_~DjjFCyNC?+(XF)eP2z`cHKteBJ<8nhk`UnRA3&mQC zHD<%Y!A92Oo<58VaUhCe3Lf&4&xui>t2y(FSyA!XH+RYTgPipP@6K8N!dcOVS-!&A z8=Vqgy^^nbB`%&Nww@(l)l2R&)HnEY0)=zB+j0WEa{>$0H=ZYd7EFf7<@o30e|JYt z`^v;|gvoiTYO<7JvYOG|&gbM|D{pA)tZUmFHu;Q|km!P!X?X%ooY5An) zk%)qhXI%L)<^Qh6b77OyP0*o*uW@BZlndv33Ew5dK0SM!|9gvDeg1PkkrOQND(rQY z7i#>v-*R%-=hTC32KF?d`*t9Tn#EC748_euYv!%F^^-eD zB9xgUnTxbuG3C(+r(Ekj@a$SzxPz8SdQYPNE`)-Q{7Rcp+b=oXckTBt38vy_Ⓢa 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 Wk6C5exvG_ZGRh{mEo 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%0ASMl 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∾JA9-h^FcP@t3Vb=osTHe`l8b9~y& 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 |b{gYg^F{CQ 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

<1n4d@v0g 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 literal 0 HcmV?d00001 diff --git a/gadget-code/assets/icon/icon-72x72.png b/gadget-code/assets/icon/icon-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef7ef0b2cdee23e34efbbb019f6f4bfb93c4f92 GIT binary patch literal 9351 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 ByR85K literal 0 HcmV?d00001 diff --git a/gadget-code/assets/icon/icon-76x76.png b/gadget-code/assets/icon/icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..e475603240aaea8109d69d15419f968464a814ea GIT binary patch literal 10238 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

S9@vI+8Myl&Y#!1bklRvQU!qB5C8e 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 Eg1!!AmjD0& literal 0 HcmV?d00001 diff --git a/gadget-code/assets/icon/icon-96x96.png b/gadget-code/assets/icon/icon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..d8311fdeac62d096ff58b1934a9c0859a724ead4 GIT binary patch literal 15405 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

WJNHsnl5}jHuh#VTqILZK*~tQry+7ZaudF2 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 GmQty{K2(eJTo#cp8=(?gBA7 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

?0UkF^`2A*MOSf?Dm$t=tO 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 element in the content. + * + * ``` + * I need to research the project... + * I found the bug! + * ``` + */ +interface IChatMessage { + createdAt: Date; + role: string; + content: string; +} + +interface IWorkOrder { + project: { + _id: string; + name: string; + slug: string; + gitUrl: string; + }; + session: { + name: string; + mode: string; + }; + provider: { + baseUrl: string; + apiKey: string; + modelId: string; + params: { + temperature: number; + topP: number; + topK: number; + }; + }; + context: IChatMessage[]; + prompt: string; +} +```` + +## The Workflow Loop + +When a Work Order job is received a Gadget Drone, it performs a series of steps in preparation to work on the prompt contained in the work order. + +1. Check if the workspace directory currently has the project cloned. If not, clone the project from git into the workspace directory. +1. Instantiate the correct AI API client object configured with the credentials provided in the work order. + +```typescript +/* + * This is just pseudocode that shows the intent. It does not account for every + * aspect of the loop. + */ +async function workflowLoop( + session: IChatSession, + provider: IAiProvider, + llm: string, + userPrompt: string, +): Promise { + const NOW = new Date(); + + /* + * Create the ChatTurn in the database at the *start* of the turn, and update + * it with information as the turn executes. This helps ensure we don't lose + * work conducted in a turn if an error happens. A turn should be able to be + * resumed whenever possible. + */ + + const turn = new ChatTurn(); + turn.createdAt = NOW; + turn.status = ChatTurnStatus.Processing; + + turn.user = session.user; + turn.provider = provider; + turn.llm = llm; + turn.mode = session.mode; + turn.prompt = userPrompt; + + turn.stats = { + toolCallCount: 0, + inputTokens: 0, + thinkintTokenCount: 0, + responseTokens: 0, + durationMs: 0, + durationLabel: "pending", + }; + + await turn.save(); + + /* emit Socket.IO message with turn + + // this turn's context (system, history, prompt, work) + const messages = []; + + const systemPrompt = buildSystemPrompt(session); + messages.push({ role: "system", content: systemPrompt }); + + // recall full session history into messages array + buildSessionContext(session, messages); + + // push the User's latest prompt to the context + messages.push({ role: "user", content: userPrompt }); + + let keepProcessing = true; + do { + const response = await aiApiCall(messages); + keeProcessing = response.tool_calls.length > 0; + for (const tool_call of response.tool_calls) { + const response = await callTool(tool_call.name, tool_call.args); + messages.push({ role: "tool", content: response }); + } + } while (keepProcessing); +} +``` diff --git a/gadget-code/docs/chat-session.md b/gadget-code/docs/chat-session.md new file mode 100644 index 0000000..e69de29 diff --git a/gadget-code/docs/gadget-drone.md b/gadget-code/docs/gadget-drone.md new file mode 100644 index 0000000..a7f8d7d --- /dev/null +++ b/gadget-code/docs/gadget-drone.md @@ -0,0 +1,13 @@ +# Gadget Drone + +Gadget Drone is a component in the Gadget Code ecosystem that operates as a headless/non-interactive process on a host in a directory on storage (once authenticated). Gadget Drone: + +1. Assumes ownership of process.cwd() on startup, and verifies that the directory is either already a Gadget Drone directory, or empty. If not a Gadget Drone directory, and if also not empty, Gadget Drone refuses to start with a message printed to the console, and terminates. + +2. Creates the .gadget and .gadget-cache directories in the directory on launch if they are not there. + +## .gadget directory + +When the Gadget Drone starts and initializes, + +## .gadget-cache directory diff --git a/gadget-code/docs/project.md b/gadget-code/docs/project.md new file mode 100644 index 0000000..7712cdf --- /dev/null +++ b/gadget-code/docs/project.md @@ -0,0 +1,29 @@ +# Gadget Code: Projects + +The User will create one or more Project records for tracking a software development project in Gadget Code. + +It will be uncommon to query this model/collection without a User. System administrators and managers will have interest in the global Projects list. Developers will not. A Developer only cares about their own projects. + +It's not a security violation for a User to see another User's projects. It's just superflous information. John doesn't care about Nancy's projects. John works on John's projects, and he owns them. + +## createdAt + +The date and time at which the User created the Project record in Gadget Code. This is not necessarily when the project itself was created or started. This is just when Gadget Code got involved. + +## user + +The User for whom the Project was created. The User is the owner of the project. Users can only see their own Projects. A user is thought of as working in their project. If multiple Users are in the chat, one of them is the Project Owner and will be marked as such. The other Users in the chat session are reffered to as Collaborators. + +## name + +The name of the project as displayed in lists, headers, title areas, etc. + +## slug + +The project's slug (my-project), which is used as it's directory name in the workspace directory by [Gadget Drone](./gadget-drone.md). + +## gitUrl + +The URL of the project's git repository (optional). This will be used to clone the project into the workspace directory on the drones. If this is not set, a new git repo will be created in the workspace directory and the url will be stored here. + +If a gitUrl is not set for a Project and the User selects to delete the project, the project directory will be removed, and it will NOT be pushed to git. The User should be informed that the contents of the directory will be lost, and should have to confirm that this is what they want to do. diff --git a/gadget-code/frontend/index.html b/gadget-code/frontend/index.html new file mode 100644 index 0000000..52aff94 --- /dev/null +++ b/gadget-code/frontend/index.html @@ -0,0 +1,13 @@ + + + + + + + Gadget Code + + +

+ + + diff --git a/gadget-code/frontend/package.json b/gadget-code/frontend/package.json new file mode 100644 index 0000000..c32516a --- /dev/null +++ b/gadget-code/frontend/package.json @@ -0,0 +1,11 @@ +{ + "name": "gadget-code-frontend", + "version": "1.0.0", + "description": "Gadget Code Frontend - A self-hosted Agentic Engineering Platform (AEP).", + "type": "module", + "scripts": { + "build": "vite build" + }, + "author": "Robert Colbert ", + "license": "Apache-2.0" +} \ No newline at end of file diff --git a/gadget-code/frontend/postcss.config.js b/gadget-code/frontend/postcss.config.js new file mode 100644 index 0000000..27ae1c9 --- /dev/null +++ b/gadget-code/frontend/postcss.config.js @@ -0,0 +1,5 @@ +export default { + plugins: { + '@tailwindcss/postcss': {}, + }, +}; \ No newline at end of file diff --git a/gadget-code/frontend/src/App.tsx b/gadget-code/frontend/src/App.tsx new file mode 100644 index 0000000..59962da --- /dev/null +++ b/gadget-code/frontend/src/App.tsx @@ -0,0 +1,96 @@ +import { useState, useEffect } from 'react'; +import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'; +import { User } from './lib/api'; +import { socketClient } from './lib/socket'; +import Navbar from './components/Navbar'; +import Home from './pages/Home'; +import SignIn from './pages/SignIn'; +import SignUp from './pages/SignUp'; + +const TOKEN_KEY = 'dtp_auth_token'; +const USER_KEY = 'dtp_user'; + +function getStoredUser(): User | null { + try { + const userData = localStorage.getItem(USER_KEY); + return userData ? JSON.parse(userData) : null; + } catch { + return null; + } +} + +function setStoredUser(user: User | null) { + if (user) { + localStorage.setItem(USER_KEY, JSON.stringify(user)); + } else { + localStorage.removeItem(USER_KEY); + } +} + +export default function App() { + const [user, setUser] = useState(null); + const [loading, setLoading] = useState(true); + + useEffect(() => { + const storedUser = getStoredUser(); + const storedToken = localStorage.getItem(TOKEN_KEY); + if (storedUser && storedToken) { + setUser(storedUser); + socketClient.connect(storedToken); + } + setLoading(false); + }, []); + + const handleSignInSuccess = (newUser: User, token: string) => { + localStorage.setItem(TOKEN_KEY, token); + setStoredUser(newUser); + setUser(newUser); + socketClient.connect(token); + }; + + const handleSignOut = () => { + localStorage.removeItem(TOKEN_KEY); + setStoredUser(null); + setUser(null); + socketClient.disconnect(); + }; + + if (loading) { + return ( +
+
Loading...
+
+ ); + } + + return ( + +
+ + + } /> + + ) : ( + + ) + } + /> + + ) : ( + + ) + } + /> + +
+
+ ); +} \ No newline at end of file diff --git a/gadget-code/frontend/src/components/Navbar.tsx b/gadget-code/frontend/src/components/Navbar.tsx new file mode 100644 index 0000000..ed2707c --- /dev/null +++ b/gadget-code/frontend/src/components/Navbar.tsx @@ -0,0 +1,52 @@ +import { Link } from 'react-router-dom'; + +interface User { + _id: string; + email: string; + displayName: string; +} + +interface NavbarProps { + user: User | null; + onSignOut: () => void; +} + +export default function Navbar({ user, onSignOut }: NavbarProps) { + return ( + + ); +} \ No newline at end of file diff --git a/gadget-code/frontend/src/index.css b/gadget-code/frontend/src/index.css new file mode 100644 index 0000000..d52b3a5 --- /dev/null +++ b/gadget-code/frontend/src/index.css @@ -0,0 +1,29 @@ +@import "tailwindcss"; + +:root { + --color-bg: #0f0f12; + --color-bg-secondary: #1a1a1f; + --color-text: #e4e4e7; + --color-text-muted: #a1a1aa; + --color-primary: #3b82f6; + --color-primary-hover: #2563eb; + --color-border: #27272a; +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif; + background-color: var(--color-bg); + color: var(--color-text); + line-height: 1.6; +} + +#root { + min-height: 100vh; + display: flex; + flex-direction: column; +} \ No newline at end of file diff --git a/gadget-code/frontend/src/lib/api.ts b/gadget-code/frontend/src/lib/api.ts new file mode 100644 index 0000000..3cfb3aa --- /dev/null +++ b/gadget-code/frontend/src/lib/api.ts @@ -0,0 +1,64 @@ +const API_BASE = ''; + +export interface ApiResponse { + success: boolean; + message?: string; + user?: T; + token?: string; + data?: T; +} + +async function request( + method: string, + path: string, + body?: Record +): Promise { + const options: RequestInit = { + method, + headers: { + 'Content-Type': 'application/json', + }, + credentials: 'include', + }; + + if (body) { + options.body = JSON.stringify(body); + } + + const response = await fetch(`${API_BASE}${path}`, options); + const json = await response.json() as ApiResponse; + + if (!json.success) { + throw new Error(json.message || 'Request failed'); + } + + // For auth endpoints that return {success, user, token}, return the full response + if (json.token !== undefined && json.user !== undefined) { + return json as T; + } + if (json.data !== undefined) { + return json.data as T; + } + return json as T; +} + +export const api = { + get: (path: string) => request('GET', path), + post: (path: string, body: Record) => + request('POST', path, body), + put: (path: string, body: Record) => + request('PUT', path, body), + delete: (path: string) => request('DELETE', path), +}; + +export interface User { + _id: string; + email: string; + displayName: string; + flags: string[]; +} + +export interface AuthResponse { + user: User; + token: string; +} \ No newline at end of file diff --git a/gadget-code/frontend/src/lib/socket.ts b/gadget-code/frontend/src/lib/socket.ts new file mode 100644 index 0000000..0de3080 --- /dev/null +++ b/gadget-code/frontend/src/lib/socket.ts @@ -0,0 +1,98 @@ +import { io, Socket } from 'socket.io-client'; + +const SOCKET_URL = ''; + +export interface SocketEvents { + 'agent:thinking': (data: { agentId: string; thinking: string }) => void; + 'agent:response': (data: { agentId: string; chunk: string }) => void; + 'agent:tool-call': (data: { agentId: string; tool: string; args: unknown }) => void; + 'agent:tool-result': (data: { agentId: string; tool: string; result: unknown }) => void; + 'agent:complete': (data: { agentId: string }) => void; + 'log:entry': (data: { level: string; message: string; timestamp: number }) => void; + 'chat:message': (data: { agentId: string; message: string; role: 'user' | 'assistant' | 'system' }) => void; + connect: () => void; + disconnect: () => void; + error: (error: Error) => void; +} + +class SocketClient { + private socket: Socket | null = null; + private eventListeners: Map void>> = new Map(); + private reconnectAttempts = 0; + private maxReconnectAttempts = 5; + private jwt: string | null = null; + + get connected(): boolean { + return this.socket?.connected ?? false; + } + + connect(token: string): void { + if (this.socket?.connected) { + return; + } + + this.jwt = token; + + this.socket = io(SOCKET_URL, { + auth: { + token: this.jwt, + }, + transports: ['websocket', 'polling'], + reconnection: true, + reconnectionAttempts: this.maxReconnectAttempts, + reconnectionDelay: 1000, + reconnectionDelayMax: 5000, + }); + + this.socket.on('connect', () => { + this.reconnectAttempts = 0; + this.emit('connect'); + }); + + this.socket.on('disconnect', (reason) => { + this.emit('disconnect', reason); + }); + + this.socket.on('connect_error', (error) => { + this.reconnectAttempts++; + this.emit('error', error); + }); + } + + disconnect(): void { + if (this.socket) { + this.socket.disconnect(); + this.socket = null; + this.jwt = null; + } + } + + on(event: K, callback: SocketEvents[K]): void { + if (!this.eventListeners.has(event)) { + this.eventListeners.set(event, new Set()); + } + this.eventListeners.get(event)!.add(callback as (...args: unknown[]) => void); + } + + off(event: K, callback: SocketEvents[K]): void { + const listeners = this.eventListeners.get(event); + if (listeners) { + listeners.delete(callback as (...args: unknown[]) => void); + } + } + + emit(event: K, ...args: Parameters): void { + const listeners = this.eventListeners.get(event); + if (listeners) { + listeners.forEach((callback) => callback(...args)); + } + } + + send(event: K, ...args: Parameters): void { + if (this.socket?.connected) { + this.socket.emit(event, ...args); + } + } +} + +export const socketClient = new SocketClient(); \ No newline at end of file diff --git a/gadget-code/frontend/src/main.tsx b/gadget-code/frontend/src/main.tsx new file mode 100644 index 0000000..b3c11a7 --- /dev/null +++ b/gadget-code/frontend/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App'; +import './index.css'; + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + +); \ No newline at end of file diff --git a/gadget-code/frontend/src/pages/Home.tsx b/gadget-code/frontend/src/pages/Home.tsx new file mode 100644 index 0000000..77a85a6 --- /dev/null +++ b/gadget-code/frontend/src/pages/Home.tsx @@ -0,0 +1,48 @@ +import { useState, useEffect } from "react"; +import { api, User } from "../lib/api"; + +interface HomeProps { + user: User | null; +} + +export default function Home({ user }: HomeProps) { + if (!user) { + return ( +
+ ); + } + + return ( +
+
+

+ Welcome, {user.displayName}! +

+

+ And then this is where you write some code to build an app. +

+
+
+ ); +} diff --git a/gadget-code/frontend/src/pages/SignIn.tsx b/gadget-code/frontend/src/pages/SignIn.tsx new file mode 100644 index 0000000..ab2cea5 --- /dev/null +++ b/gadget-code/frontend/src/pages/SignIn.tsx @@ -0,0 +1,90 @@ +import { useState } from 'react'; +import { Link } from 'react-router-dom'; +import { api, AuthResponse, User } from '../lib/api'; + +interface SignInProps { + onSuccess: (user: User, token: string) => void; +} + +export default function SignIn({ onSuccess }: SignInProps) { + const [email, setEmail] = useState(''); + const [password, setPassword] = useState(''); + const [error, setError] = useState(''); + const [loading, setLoading] = useState(false); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setError(''); + setLoading(true); + try { + const response = await api.post('/auth/sign-in', { email, password }); + onSuccess(response.user, response.token); + } catch (err) { + setError(err instanceof Error ? err.message : 'Invalid credentials'); + } finally { + setLoading(false); + } + }; + + return ( +
+
+

Sign In

+ {error && ( +
+ {error} +
+ )} +
+
+ + setEmail(e.target.value)} + className="w-full px-4 py-2 bg-bg-secondary border border-border rounded-lg text-text focus:outline-none focus:border-primary" + required + /> +
+
+ + setPassword(e.target.value)} + className="w-full px-4 py-2 bg-bg-secondary border border-border rounded-lg text-text focus:outline-none focus:border-primary" + required + /> +
+
+ + Cancel + + +
+
+

+ Don't have an account?{' '} + + Sign up + +

+
+
+ ); +} \ No newline at end of file diff --git a/gadget-code/frontend/src/pages/SignUp.tsx b/gadget-code/frontend/src/pages/SignUp.tsx new file mode 100644 index 0000000..48c7199 --- /dev/null +++ b/gadget-code/frontend/src/pages/SignUp.tsx @@ -0,0 +1,122 @@ +import { useState } from 'react'; +import { Link } from 'react-router-dom'; +import { api, AuthResponse, User } from '../lib/api'; + +interface SignUpProps { + onSuccess: (user: User, token: string) => void; +} + +export default function SignUp({ onSuccess }: SignUpProps) { + const [email, setEmail] = useState(''); + const [displayName, setDisplayName] = useState(''); + const [password, setPassword] = useState(''); + const [passwordVerify, setPasswordVerify] = useState(''); + const [error, setError] = useState(''); + const [loading, setLoading] = useState(false); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setError(''); + + if (password !== passwordVerify) { + setError('Passwords do not match'); + return; + } + + setLoading(true); + try { + const response = await api.post('/auth/sign-up', { + email, + password, + displayName, + }); + onSuccess(response.user, response.token); + } catch (err) { + setError(err instanceof Error ? err.message : 'Sign up failed'); + } finally { + setLoading(false); + } + }; + + return ( +
+
+

Create Account

+ {error && ( +
+ {error} +
+ )} +
+
+ + setEmail(e.target.value)} + className="w-full px-4 py-2 bg-bg-secondary border border-border rounded-lg text-text focus:outline-none focus:border-primary" + required + /> +
+
+ + setDisplayName(e.target.value)} + className="w-full px-4 py-2 bg-bg-secondary border border-border rounded-lg text-text focus:outline-none focus:border-primary" + required + /> +
+
+ + setPassword(e.target.value)} + className="w-full px-4 py-2 bg-bg-secondary border border-border rounded-lg text-text focus:outline-none focus:border-primary" + required + /> +
+
+ + setPasswordVerify(e.target.value)} + className="w-full px-4 py-2 bg-bg-secondary border border-border rounded-lg text-text focus:outline-none focus:border-primary" + required + /> +
+
+ + Cancel + + +
+
+
+
+ ); +} \ No newline at end of file diff --git a/gadget-code/frontend/tailwind.config.js b/gadget-code/frontend/tailwind.config.js new file mode 100644 index 0000000..f07a3e8 --- /dev/null +++ b/gadget-code/frontend/tailwind.config.js @@ -0,0 +1,19 @@ +import type { Config } from 'tailwindcss'; + +export default { + content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'], + theme: { + extend: { + colors: { + bg: '#0f0f12', + 'bg-secondary': '#1a1a1f', + text: '#e4e4e7', + 'text-muted': '#a1a1aa', + primary: '#3b82f6', + 'primary-hover': '#2563eb', + border: '#27272a', + }, + }, + }, + plugins: [], +} satisfies Config; \ No newline at end of file diff --git a/gadget-code/frontend/vite.config.ts b/gadget-code/frontend/vite.config.ts new file mode 100644 index 0000000..c12ddab --- /dev/null +++ b/gadget-code/frontend/vite.config.ts @@ -0,0 +1,56 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import path from 'node:path'; +import fs from 'node:fs'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const rootDir = path.resolve(__dirname, '..'); + +export default defineConfig({ + plugins: [react()], + root: '.', + publicDir: 'public', + server: { + port: 5174, + host: '0.0.0.0', + https: { + key: fs.readFileSync(path.join(rootDir, 'ssl', 'code-dev.g4dge7.com.key')), + cert: fs.readFileSync(path.join(rootDir, 'ssl', 'code-dev.g4dge7.com.crt')), + }, + hmr: { + host: 'code-dev.g4dge7.com', + port: 5174, + protocol: 'wss', + }, + proxy: { + '/auth': { + target: 'http://localhost:3443', + changeOrigin: true, + cookieDomainRewrite: { + '': 'code-dev.g4dge7.com', + }, + }, + '/api': { + target: 'http://localhost:3443', + changeOrigin: true, + cookieDomainRewrite: { + '': 'code-dev.g4dge7.com', + }, + }, + '/socket.io': { + target: 'http://localhost:3443', + ws: true, + }, + }, + }, + build: { + outDir: path.join(rootDir, 'dist', 'client'), + emptyOutDir: true, + }, + resolve: { + alias: { + '@': path.join(rootDir, 'src'), + }, + }, +}); \ No newline at end of file diff --git a/gadget-code/gadget-code.code-workspace b/gadget-code/gadget-code.code-workspace new file mode 100644 index 0000000..e529cc2 --- /dev/null +++ b/gadget-code/gadget-code.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": ".", + }, + ], + "settings": {}, +} diff --git a/gadget-code/nginx/webapp.digitaltelepresence.com b/gadget-code/nginx/webapp.digitaltelepresence.com new file mode 100644 index 0000000..d05adbd --- /dev/null +++ b/gadget-code/nginx/webapp.digitaltelepresence.com @@ -0,0 +1,44 @@ +upstream webapp { + least_conn; + server 127.0.0.1:3600; + server 127.0.0.1:3601; +} + +server { + server_name webapp.digitaltelepresence.com + + location /assets { + root /home/dtp/live/dtp-webapp; + } + + location / { + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + + proxy_pass http://webapp; + proxy_max_temp_file_size 0; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + + listen 443 ssl; + listen [::]:443 ssl ipv6only=on; + + ssl_certificate /home/dtp/keys/cloudflare-origin.pem + ssl_certificate_key /home/dtp/keys/cloudflare-origin.key +} + +server { + server_name webapp.digitaltelepresence.com; + + if ($host = webapp.digitaltelepresence.com) { + return 301 https://$host$request_uri; + } + + listen 80; + listen [::]:80; + + return 404; +} diff --git a/gadget-code/package.json b/gadget-code/package.json new file mode 100644 index 0000000..081ea1e --- /dev/null +++ b/gadget-code/package.json @@ -0,0 +1,101 @@ +{ + "name": "gadget-code", + "version": "1.0.0", + "description": "Gadget Code - A self-hosted Agentic Engineering Platform (AEP).", + "type": "module", + "main": "index.js", + "scripts": { + "build": "pnpm build:backend && pnpm build:frontend", + "build:backend": "pnpm tsc && pnpm tsc-alias", + "build:frontend": "cd frontend && pnpm build", + "dev": "tsx ./src/web-app.ts", + "dev:backend": "tsx ./src/web-app.ts", + "dev:backend:watch": "tsx watch ./src/web-app.ts", + "dev:frontend": "cd frontend && vite", + "cli": "NODE_ENV=production node ./dist/web-cli.js", + "start": "NODE_ENV=production node ./dist/web-app.js", + "test": "vitest" + }, + "keywords": [], + "author": "Robert Colbert ", + "license": "Apache-2.0", + "packageManager": "pnpm@10.12.3", + "dependencies": { + "@fortawesome/fontawesome-free": "^6.7.2", + "@gadget/ai": "workspace:*", + "ansicolor": "^2.0.3", + "bull": "^4.16.5", + "chart.js": "^4.5.0", + "compression": "^1.8.0", + "connect-redis": "^8.0.2", + "cookie-parser": "^1.4.7", + "cron": "^4.3.1", + "dayjs": "^1.11.13", + "dotenv": "^16.6.0", + "dtp-cleantext": "^1.0.0", + "express": "^5.1.0", + "express-rate-limit": "^7.5.1", + "express-session": "^1.18.1", + "geoip-lite": "^1.4.10", + "has-flag": "^5.0.1", + "ioredis": "^5.6.0", + "jsonwebtoken": "^9.0.2", + "marked": "^16.0.0", + "method-override": "^3.0.0", + "minio": "^8.0.5", + "mongoose": "^8.16.1", + "morgan": "^1.10.0", + "multer": "^2.0.1", + "nodemailer": "^7.0.3", + "numeral": "^2.0.6", + "pug": "^3.0.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", + "react-router-dom": "^7.14.2", + "rotating-file-stream": "^3.2.6", + "serve-favicon": "^2.5.1", + "socket.io": "^4.8.3", + "socket.io-client": "^4.8.3", + "uikit": "^3.23.11", + "uuid": "^11.1.0" + }, + "devDependencies": { + "@playwright/test": "^1.59.1", + "@tailwindcss/postcss": "^4.2.4", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.2", + "@types/browser-sync": "^2.29.0", + "@types/compression": "^1.8.1", + "@types/cookie-parser": "^1.4.9", + "@types/express": "^5.0.3", + "@types/express-session": "^1.18.2", + "@types/geoip-lite": "^1.4.4", + "@types/jsonwebtoken": "^9.0.10", + "@types/less": "^3.0.8", + "@types/method-override": "^3.0.0", + "@types/morgan": "^1.9.10", + "@types/multer": "^1.4.13", + "@types/node": "^24.0.4", + "@types/nodemailer": "^6.4.17", + "@types/numeral": "^2.0.5", + "@types/react": "^19.2.14", + "@types/serve-favicon": "^2.5.7", + "@types/uikit": "^3.14.5", + "@types/uuid": "^10.0.0", + "@vitejs/plugin-react": "^6.0.1", + "autoprefixer": "^10.5.0", + "browser-sync": "^3.0.4", + "esbuild": "^0.25.5", + "globals": "^16.2.0", + "jsdom": "^29.0.2", + "less": "^4.3.0", + "postcss": "^8.5.10", + "tailwindcss": "^4.2.4", + "tsc-alias": "^1.0.7", + "tslib": "^2.8.1", + "tsx": "^4.19.2", + "typescript": "^5.8.3", + "vite": "^8.0.10", + "vitest": "^4.1.5" + } +} diff --git a/gadget-code/playwright.config.ts b/gadget-code/playwright.config.ts new file mode 100644 index 0000000..91ba603 --- /dev/null +++ b/gadget-code/playwright.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from '@playwright/test'; + +export default defineConfig({ + testDir: './tests/e2e', + timeout: 60000, + use: { + baseURL: 'https://code-dev.g4dge7.com:5174', + ignoreHTTPSErrors: true, + headless: true, + }, +}); \ No newline at end of file diff --git a/gadget-code/pnpm-lock.yaml b/gadget-code/pnpm-lock.yaml new file mode 100644 index 0000000..c5db72f --- /dev/null +++ b/gadget-code/pnpm-lock.yaml @@ -0,0 +1,5981 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@fortawesome/fontawesome-free': + specifier: ^6.7.2 + version: 6.7.2 + ansicolor: + specifier: ^2.0.3 + version: 2.0.3 + bull: + specifier: ^4.16.5 + version: 4.16.5 + chart.js: + specifier: ^4.5.0 + version: 4.5.0 + compression: + specifier: ^1.8.0 + version: 1.8.0 + connect-redis: + specifier: ^8.0.2 + version: 8.0.2(express-session@1.18.1) + cookie-parser: + specifier: ^1.4.7 + version: 1.4.7 + cron: + specifier: ^4.3.1 + version: 4.3.1 + dayjs: + specifier: ^1.11.13 + version: 1.11.13 + dotenv: + specifier: ^16.6.0 + version: 16.6.0 + dtp-cleantext: + specifier: ^1.0.0 + version: 1.0.0 + express: + specifier: ^5.1.0 + version: 5.1.0 + express-rate-limit: + specifier: ^7.5.1 + version: 7.5.1(express@5.1.0) + express-session: + specifier: ^1.18.1 + version: 1.18.1 + geoip-lite: + specifier: ^1.4.10 + version: 1.4.10 + has-flag: + specifier: ^5.0.1 + version: 5.0.1 + ioredis: + specifier: ^5.6.0 + version: 5.6.0 + jsonwebtoken: + specifier: ^9.0.2 + version: 9.0.2 + marked: + specifier: ^16.0.0 + version: 16.0.0 + method-override: + specifier: ^3.0.0 + version: 3.0.0 + minio: + specifier: ^8.0.5 + version: 8.0.5 + mongoose: + specifier: ^8.16.1 + version: 8.16.1 + morgan: + specifier: ^1.10.0 + version: 1.10.0 + multer: + specifier: ^2.0.1 + version: 2.0.1 + nodemailer: + specifier: ^7.0.3 + version: 7.0.3 + numeral: + specifier: ^2.0.6 + version: 2.0.6 + ollama: + specifier: ^0.6.3 + version: 0.6.3 + pug: + specifier: ^3.0.3 + version: 3.0.3 + react: + specifier: ^19.2.5 + version: 19.2.5 + react-dom: + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) + react-router-dom: + specifier: ^7.14.2 + version: 7.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rotating-file-stream: + specifier: ^3.2.6 + version: 3.2.6 + serve-favicon: + specifier: ^2.5.1 + version: 2.5.1 + socket.io: + specifier: ^4.8.3 + version: 4.8.3 + socket.io-client: + specifier: ^4.8.3 + version: 4.8.3 + uikit: + specifier: ^3.23.11 + version: 3.23.11 + uuid: + specifier: ^11.1.0 + version: 11.1.0 + devDependencies: + '@playwright/test': + specifier: ^1.59.1 + version: 1.59.1 + '@tailwindcss/postcss': + specifier: ^4.2.4 + version: 4.2.4 + '@testing-library/jest-dom': + specifier: ^6.9.1 + version: 6.9.1 + '@testing-library/react': + specifier: ^16.3.2 + version: 16.3.2(@testing-library/dom@10.4.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@types/browser-sync': + specifier: ^2.29.0 + version: 2.29.0 + '@types/compression': + specifier: ^1.8.1 + version: 1.8.1 + '@types/cookie-parser': + specifier: ^1.4.9 + version: 1.4.9(@types/express@5.0.3) + '@types/express': + specifier: ^5.0.3 + version: 5.0.3 + '@types/express-session': + specifier: ^1.18.2 + version: 1.18.2 + '@types/geoip-lite': + specifier: ^1.4.4 + version: 1.4.4 + '@types/jsonwebtoken': + specifier: ^9.0.10 + version: 9.0.10 + '@types/less': + specifier: ^3.0.8 + version: 3.0.8 + '@types/method-override': + specifier: ^3.0.0 + version: 3.0.0(@types/express@5.0.3) + '@types/morgan': + specifier: ^1.9.10 + version: 1.9.10 + '@types/multer': + specifier: ^1.4.13 + version: 1.4.13 + '@types/node': + specifier: ^24.0.4 + version: 24.0.4 + '@types/nodemailer': + specifier: ^6.4.17 + version: 6.4.17 + '@types/numeral': + specifier: ^2.0.5 + version: 2.0.5 + '@types/serve-favicon': + specifier: ^2.5.7 + version: 2.5.7 + '@types/uikit': + specifier: ^3.14.5 + version: 3.14.5 + '@types/uuid': + specifier: ^10.0.0 + version: 10.0.0 + '@vitejs/plugin-react': + specifier: ^6.0.1 + version: 6.0.1(vite@8.0.10(@types/node@24.0.4)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(tsx@4.21.0)) + autoprefixer: + specifier: ^10.5.0 + version: 10.5.0(postcss@8.5.10) + browser-sync: + specifier: ^3.0.4 + version: 3.0.4 + esbuild: + specifier: ^0.25.5 + version: 0.25.5 + globals: + specifier: ^16.2.0 + version: 16.2.0 + jsdom: + specifier: ^29.0.2 + version: 29.0.2 + less: + specifier: ^4.3.0 + version: 4.3.0 + postcss: + specifier: ^8.5.10 + version: 8.5.10 + tailwindcss: + specifier: ^4.2.4 + version: 4.2.4 + tsc-alias: + specifier: ^1.0.7 + version: 1.8.16 + tslib: + specifier: ^2.8.1 + version: 2.8.1 + tsx: + specifier: ^4.19.2 + version: 4.21.0 + typescript: + specifier: ^5.8.3 + version: 5.8.3 + vite: + specifier: ^8.0.10 + version: 8.0.10(@types/node@24.0.4)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(tsx@4.21.0) + vitest: + specifier: ^4.1.5 + version: 4.1.5(@types/node@24.0.4)(jsdom@29.0.2)(vite@8.0.10(@types/node@24.0.4)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(tsx@4.21.0)) + +packages: + + '@adobe/css-tools@4.4.4': + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@asamuzakjp/css-color@5.1.11': + resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/dom-selector@7.1.1': + resolution: {integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/generational-cache@1.0.1': + resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.7': + resolution: {integrity: sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.7': + resolution: {integrity: sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==} + engines: {node: '>=6.9.0'} + + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true + + '@csstools/color-helpers@6.0.2': + resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} + engines: {node: '>=20.19.0'} + + '@csstools/css-calc@3.2.0': + resolution: {integrity: sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-color-parser@4.1.0': + resolution: {integrity: sha512-U0KhLYmy2GVj6q4T3WaAe6NPuFYCPQoE3b0dRGxejWDgcPp8TP7S5rVdM5ZrFaqu4N67X8YaPBw14dQSYx3IyQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.3': + resolution: {integrity: sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} + + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + + '@esbuild/aix-ppc64@0.25.5': + resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.5': + resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.5': + resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.5': + resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.5': + resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.5': + resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.5': + resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.5': + resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.5': + resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.5': + resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.5': + resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.5': + resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.5': + resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.5': + resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.5': + resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.5': + resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.5': + resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.5': + resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.5': + resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.5': + resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.5': + resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.5': + resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.5': + resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.5': + resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.5': + resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@exodus/bytes@1.15.0': + resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + + '@fortawesome/fontawesome-free@6.7.2': + resolution: {integrity: sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==} + engines: {node: '>=6'} + + '@ioredis/commands@1.2.0': + resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@kurkle/color@0.3.4': + resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} + + '@mongodb-js/saslprep@1.3.0': + resolution: {integrity: sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==} + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} + cpu: [arm64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} + cpu: [x64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} + cpu: [arm64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} + cpu: [arm] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} + cpu: [x64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + cpu: [x64] + os: [win32] + + '@napi-rs/wasm-runtime@1.1.4': + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@oxc-project/types@0.127.0': + resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + '@rolldown/binding-android-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-rc.17': + resolution: {integrity: sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-rc.17': + resolution: {integrity: sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': + resolution: {integrity: sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': + resolution: {integrity: sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': + resolution: {integrity: sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': + resolution: {integrity: sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': + resolution: {integrity: sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': + resolution: {integrity: sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0-rc.17': + resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} + + '@rolldown/pluginutils@1.0.0-rc.7': + resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} + + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@tailwindcss/node@4.2.4': + resolution: {integrity: sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA==} + + '@tailwindcss/oxide-android-arm64@4.2.4': + resolution: {integrity: sha512-e7MOr1SAn9U8KlZzPi1ZXGZHeC5anY36qjNwmZv9pOJ8E4Q6jmD1vyEHkQFmNOIN7twGPEMXRHmitN4zCMN03g==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.2.4': + resolution: {integrity: sha512-tSC/Kbqpz/5/o/C2sG7QvOxAKqyd10bq+ypZNf+9Fi2TvbVbv1zNpcEptcsU7DPROaSbVgUXmrzKhurFvo5eDg==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.2.4': + resolution: {integrity: sha512-yPyUXn3yO/ufR6+Kzv0t4fCg2qNr90jxXc5QqBpjlPNd0NqyDXcmQb/6weunH/MEDXW5dhyEi+agTDiqa3WsGg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.2.4': + resolution: {integrity: sha512-BoMIB4vMQtZsXdGLVc2z+P9DbETkiopogfWZKbWwM8b/1Vinbs4YcUwo+kM/KeLkX3Ygrf4/PsRndKaYhS8Eiw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4': + resolution: {integrity: sha512-7pIHBLTHYRAlS7V22JNuTh33yLH4VElwKtB3bwchK/UaKUPpQ0lPQiOWcbm4V3WP2I6fNIJ23vABIvoy2izdwA==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.2.4': + resolution: {integrity: sha512-+E4wxJ0ZGOzSH325reXTWB48l42i93kQqMvDyz5gqfRzRZ7faNhnmvlV4EPGJU3QJM/3Ab5jhJ5pCRUsKn6OQw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.2.4': + resolution: {integrity: sha512-bBADEGAbo4ASnppIziaQJelekCxdMaxisrk+fB7Thit72IBnALp9K6ffA2G4ruj90G9XRS2VQ6q2bCKbfFV82g==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.2.4': + resolution: {integrity: sha512-7Mx25E4WTfnht0TVRTyC00j3i0M+EeFe7wguMDTlX4mRxafznw0CA8WJkFjWYH5BlgELd1kSjuU2JiPnNZbJDA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.2.4': + resolution: {integrity: sha512-2wwJRF7nyhOR0hhHoChc04xngV3iS+akccHTGtz965FwF0up4b2lOdo6kI1EbDaEXKgvcrFBYcYQQ/rrnWFVfA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.2.4': + resolution: {integrity: sha512-FQsqApeor8Fo6gUEklzmaa9994orJZZDBAlQpK2Mq+DslRKFJeD6AjHpBQ0kZFQohVr8o85PPh8eOy86VlSCmw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.2.4': + resolution: {integrity: sha512-L9BXqxC4ToVgwMFqj3pmZRqyHEztulpUJzCxUtLjobMCzTPsGt1Fa9enKbOpY2iIyVtaHNeNvAK8ERP/64sqGQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.2.4': + resolution: {integrity: sha512-ESlKG0EpVJQwRjXDDa9rLvhEAh0mhP1sF7sap9dNZT0yyl9SAG6T7gdP09EH0vIv0UNTlo6jPWyujD6559fZvw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.2.4': + resolution: {integrity: sha512-9El/iI069DKDSXwTvB9J4BwdO5JhRrOweGaK25taBAvBXyXqJAX+Jqdvs8r8gKpsI/1m0LeJLyQYTf/WLrBT1Q==} + engines: {node: '>= 20'} + + '@tailwindcss/postcss@4.2.4': + resolution: {integrity: sha512-wgAVj6nUWAolAu8YFvzT2cTBIElWHkjZwFYovF+xsqKsW2ADxM/X2opxj5NsF/qVccAOjRNe8X2IdPzMsWyHTg==} + + '@testing-library/dom@10.4.1': + resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@6.9.1': + resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/react@16.3.2': + resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + + '@types/browser-sync@2.29.0': + resolution: {integrity: sha512-d2V8FDX/LbDCSm343N2VChzDxvll0h76I8oSigYpdLgPDmcdcR6fywTggKBkUiDM3qAbHOq7NZvepj/HJM5e2g==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/compression@1.8.1': + resolution: {integrity: sha512-kCFuWS0ebDbmxs0AXYn6e2r2nrGAb5KwQhknjSPSPgJcGd8+HVSILlUyFhGqML2gk39HcG7D1ydW9/qpYkN00Q==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/cookie-parser@1.4.9': + resolution: {integrity: sha512-tGZiZ2Gtc4m3wIdLkZ8mkj1T6CEHb35+VApbL2T14Dew8HA7c+04dmKqsKRNC+8RJPm16JEK0tFSwdZqubfc4g==} + peerDependencies: + '@types/express': '*' + + '@types/cors@2.8.19': + resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/express-serve-static-core@5.0.6': + resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} + + '@types/express-session@1.18.2': + resolution: {integrity: sha512-k+I0BxwVXsnEU2hV77cCobC08kIsn4y44C3gC0b46uxZVMaXA04lSPgRLR/bSL2w0t0ShJiG8o4jPzRG/nscFg==} + + '@types/express@5.0.3': + resolution: {integrity: sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==} + + '@types/geoip-lite@1.4.4': + resolution: {integrity: sha512-2uVfn+C6bX/H356H6mjxsWUA5u8LO8dJgSBIRO/NFlpMe4DESzacutD/rKYrTDKm1Ugv78b4Wz1KvpHrlv3jSw==} + + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + + '@types/jsonwebtoken@9.0.10': + resolution: {integrity: sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==} + + '@types/less@3.0.8': + resolution: {integrity: sha512-Gjm4+H9noDJgu5EdT3rUw5MhPBag46fiOy27BefvWkNL8mlZnKnCaVVVTLKj6RYXed9b62CPKnPav9govyQDzA==} + + '@types/luxon@3.6.2': + resolution: {integrity: sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw==} + + '@types/method-override@3.0.0': + resolution: {integrity: sha512-7XFHR6j7JljprBpzzRZatakUXm1kEGAM3PL/GSsGRHtDvOAKYCdmnXX/5YSl1eQrpJymGs9tRekSWEGaG+Ntjw==} + peerDependencies: + '@types/express': '*' + + '@types/micromatch@2.3.35': + resolution: {integrity: sha512-J749bHo/Zu56w0G0NI/IGHLQPiSsjx//0zJhfEVAN95K/xM5C8ZDmhkXtU3qns0sBOao7HuQzr8XV1/2o5LbXA==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/morgan@1.9.10': + resolution: {integrity: sha512-sS4A1zheMvsADRVfT0lYbJ4S9lmsey8Zo2F7cnbYjWHP67Q0AwMYuuzLlkIM2N8gAbb9cubhIVFwcIN2XyYCkA==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/multer@1.4.13': + resolution: {integrity: sha512-bhhdtPw7JqCiEfC9Jimx5LqX9BDIPJEh2q/fQ4bqbBPtyEZYr3cvF22NwG0DmPZNYA0CAf2CnqDB4KIGGpJcaw==} + + '@types/node@24.0.4': + resolution: {integrity: sha512-ulyqAkrhnuNq9pB76DRBTkcS6YsmDALy6Ua63V8OhrOBgbcYt6IOdzpw5P1+dyRIyMerzLkeYWBeOXPpA9GMAA==} + + '@types/nodemailer@6.4.17': + resolution: {integrity: sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==} + + '@types/numeral@2.0.5': + resolution: {integrity: sha512-kH8I7OSSwQu9DS9JYdFWbuvhVzvFRoCPCkGxNwoGgaPeDfEPJlcxNvEOypZhQ3XXHsGbfIuYcxcJxKUfJHnRfw==} + + '@types/parse-glob@3.0.32': + resolution: {integrity: sha512-n4xmml2WKR12XeQprN8L/sfiVPa8FHS3k+fxp4kSr/PA2GsGUgFND+bvISJxM0y5QdvzNEGjEVU3eIrcKks/pA==} + + '@types/qs@6.14.0': + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/send@0.17.5': + resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} + + '@types/serve-favicon@2.5.7': + resolution: {integrity: sha512-z9TNUQXdQ+W/OJMP1e3KOYUZ99qJS4+ZfFOIrPGImcayqKoyifbJSEFkVq1MCKBbqjMZpjPj3B5ilrQAR2+TOw==} + + '@types/serve-static@1.15.8': + resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} + + '@types/uikit@3.14.5': + resolution: {integrity: sha512-3Q1CRzoAVLm+XNCP/2P5DbLuX98fkNLYxGQ1qUdV6cdzDTBbyVeH+est0LTZPtro9FUwXTNu8WfxfwLymFbZvQ==} + + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + + '@types/webidl-conversions@7.0.3': + resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} + + '@types/whatwg-url@11.0.5': + resolution: {integrity: sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==} + + '@vitejs/plugin-react@6.0.1': + resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + vite: ^8.0.0 + peerDependenciesMeta: + '@rolldown/plugin-babel': + optional: true + babel-plugin-react-compiler: + optional: true + + '@vitest/expect@4.1.5': + resolution: {integrity: sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==} + + '@vitest/mocker@4.1.5': + resolution: {integrity: sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.5': + resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==} + + '@vitest/runner@4.1.5': + resolution: {integrity: sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==} + + '@vitest/snapshot@4.1.5': + resolution: {integrity: sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==} + + '@vitest/spy@4.1.5': + resolution: {integrity: sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==} + + '@vitest/utils@4.1.5': + resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} + + '@zxing/text-encoding@0.9.0': + resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansicolor@2.0.3: + resolution: {integrity: sha512-pzusTqk9VHrjgMCcTPDTTvfJfx6Q3+L5tQ6yKC8Diexmoit4YROTFIkxFvRTNL9y5s0Q8HrSrgerCD5bIC+Kiw==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + append-field@1.0.0: + resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + assert-never@1.4.0: + resolution: {integrity: sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + async-each-series@0.1.1: + resolution: {integrity: sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==} + engines: {node: '>=0.8.0'} + + async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + autoprefixer@10.5.0: + resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + babel-walk@3.0.0-canary-5: + resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} + engines: {node: '>= 10.0.0'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + + baseline-browser-mapping@2.10.22: + resolution: {integrity: sha512-6qruVrb5rse6WylFkU0FhBKKGuecWseqdpQfhkawn6ztyk2QlfwSRjsDxMCLJrkfmfN21qvhl9ABgaMeRkuwww==} + engines: {node: '>=6.0.0'} + hasBin: true + + basic-auth@2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} + + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + block-stream2@2.1.0: + resolution: {integrity: sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==} + + body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browser-or-node@2.1.1: + resolution: {integrity: sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==} + + browser-sync-client@3.0.4: + resolution: {integrity: sha512-+ew5ubXzGRKVjquBL3u6najS40TG7GxCdyBll0qSRc/n+JRV9gb/yDdRL1IAgRHqjnJTdqeBKKIQabjvjRSYRQ==} + engines: {node: '>=8.0.0'} + + browser-sync-ui@3.0.4: + resolution: {integrity: sha512-5Po3YARCZ/8yQHFzvrSjn8+hBUF7ZWac39SHsy8Tls+7tE62iq6pYWxpVU6aOOMAGD21RwFQhQeqmJPf70kHEQ==} + + browser-sync@3.0.4: + resolution: {integrity: sha512-mcYOIy4BW6sWSEnTSBjQwWsnbx2btZX78ajTTjdNfyC/EqQVcIe0nQR6894RNAMtvlfAnLaH9L2ka97zpvgenA==} + engines: {node: '>= 8.0.0'} + hasBin: true + + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-recipes@1.3.4: + resolution: {integrity: sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==} + + bson@6.10.4: + resolution: {integrity: sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==} + engines: {node: '>=16.20.1'} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + bull@4.16.5: + resolution: {integrity: sha512-lDsx2BzkKe7gkCYiT5Acj02DpTwDznl/VNN7Psn7M3USPG7Vs/BaClZJJTAG+ufAR9++N1/NiUTdaFBWDIl5TQ==} + engines: {node: '>=12'} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + caniuse-lite@1.0.30001790: + resolution: {integrity: sha512-bOoxfJPyYo+ds6W0YfptaCWbFnJYjh2Y1Eow5lRv+vI2u8ganPZqNm1JwNh0t2ELQCqIWg4B3dWEusgAmsoyOw==} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + character-parser@2.2.0: + resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} + + chart.js@4.5.0: + resolution: {integrity: sha512-aYeC/jDgSEx8SHWZvANYMioYMZ2KX02W6f6uVfyteuCGcadDLcYVHdfdygsTQkQ4TKn5lghoojAsPj5pu0SnvQ==} + engines: {pnpm: '>=8'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + cluster-key-slot@1.1.2: + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} + engines: {node: '>=0.10.0'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.0: + resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} + + connect-history-api-fallback@1.6.0: + resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} + engines: {node: '>=0.8'} + + connect-redis@8.0.2: + resolution: {integrity: sha512-8A6rNOkwLQf25kkERnutNRppE3WUJ7B2bTl/DKf0jW9PkhzJQ3+VJYDHsN+NIuTtQrWsQr5n5UX7bm9l8rkTtQ==} + engines: {node: '>=18'} + peerDependencies: + express-session: '>=1' + + connect@3.6.6: + resolution: {integrity: sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==} + engines: {node: '>= 0.10.0'} + + constantinople@4.0.1: + resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} + + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-parser@1.4.7: + resolution: {integrity: sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==} + engines: {node: '>= 0.8.0'} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} + + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} + engines: {node: '>=18'} + + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} + engines: {node: '>=12.0.0'} + + cron@4.3.1: + resolution: {integrity: sha512-7x7DoEOxV11t3OPWWMjj1xrL1PGkTV5RV+/54IJTZD7gStiaMploY43EkeBSkDZTLRbUwk+OISbQ0TR133oXyA==} + engines: {node: '>=18.x'} + + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.1.0: + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + + dev-ip@1.0.1: + resolution: {integrity: sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==} + engines: {node: '>= 0.8.0'} + hasBin: true + + diacritics@1.3.0: + resolution: {integrity: sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctypes@1.1.0: + resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + + dotenv@16.6.0: + resolution: {integrity: sha512-Omf1L8paOy2VJhILjyhrhqwLIdstqm1BvcDPKg4NGAlkwEu9ODyrFbvk8UymUOMCT+HXo31jg1lArIrVAAhuGA==} + engines: {node: '>=12'} + + drange@1.1.1: + resolution: {integrity: sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==} + engines: {node: '>=4'} + + dtp-cleantext@1.0.0: + resolution: {integrity: sha512-V6+fTe/pv+w0+/z/P1ypjezUi9bBmuryuubAtXHknEG+PKLuWfPMsW/Xs7wyD3ZYUR7mLAXM4DXt1AiZ+PTKMw==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + easy-extender@2.3.4: + resolution: {integrity: sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==} + engines: {node: '>= 4.0.0'} + + eazy-logger@4.1.0: + resolution: {integrity: sha512-+mn7lRm+Zf1UT/YaH8WXtpU6PIV2iOjzP6jgKoiaq/VNrjYKp+OHZGe2znaLgDeFkw8cL9ffuaUm+nNnzcYyGw==} + engines: {node: '>= 0.8.0'} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.344: + resolution: {integrity: sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + engine.io-client@6.6.3: + resolution: {integrity: sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==} + + engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + + engine.io@6.6.4: + resolution: {integrity: sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==} + engines: {node: '>=10.2.0'} + + enhanced-resolve@5.21.0: + resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==} + engines: {node: '>=10.13.0'} + + entities@8.0.0: + resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} + engines: {node: '>=20.19.0'} + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + esbuild@0.25.5: + resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + + express-rate-limit@7.5.1: + resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==} + engines: {node: '>= 16'} + peerDependencies: + express: '>= 4.11' + + express-session@1.18.1: + resolution: {integrity: sha512-a5mtTqEaZvBCL9A9aqkrtfz+3SMDhOVUnjafjo+s7A9Txkq+SVX2DLvSp1Zrv4uCXa3lMSK3viWnh9Gg07PBUA==} + engines: {node: '>= 0.8.0'} + + express@5.1.0: + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + engines: {node: '>= 18'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-xml-parser@4.5.3: + resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==} + hasBin: true + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + + finalhandler@1.1.0: + resolution: {integrity: sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==} + engines: {node: '>= 0.8'} + + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + + fs-extra@3.0.1: + resolution: {integrity: sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + geoip-lite@1.4.10: + resolution: {integrity: sha512-4N69uhpS3KFd97m00wiFEefwa+L+HT5xZbzPhwu+sDawStg6UN/dPwWtUfkQuZkGIY1Cj7wDVp80IsqNtGMi2w==} + engines: {node: '>=10.3.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-port@5.1.1: + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@16.2.0: + resolution: {integrity: sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==} + engines: {node: '>=18'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-flag@5.0.1: + resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} + engines: {node: '>=12'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + immutable@3.8.2: + resolution: {integrity: sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==} + engines: {node: '>=0.10.0'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ioredis@5.6.0: + resolution: {integrity: sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==} + engines: {node: '>=12.22.0'} + + ip-address@5.9.4: + resolution: {integrity: sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==} + engines: {node: '>= 0.10'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-expression@4.0.0: + resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number-like@1.0.8: + resolution: {integrity: sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + + is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + + isnumber@1.0.0: + resolution: {integrity: sha512-JLiSz/zsZcGFXPrB4I/AGBvtStkt+8QmksyZBZnVXnnK9XdTEyz0tX8CRYljtwYDuIuZzih6DpHQdi+3Q6zHPw==} + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + + js-stringify@1.0.2: + resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jsdom@29.0.2: + resolution: {integrity: sha512-9VnGEBosc/ZpwyOsJBCQ/3I5p7Q5ngOY14a9bf5btenAORmZfDse1ZEheMiWcJ3h81+Fv7HmJFdS0szo/waF2w==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + + jsonfile@3.0.1: + resolution: {integrity: sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==} + + jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} + + jstransformer@1.0.0: + resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} + + jwa@1.4.2: + resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} + + jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + + kareem@2.6.3: + resolution: {integrity: sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==} + engines: {node: '>=12.0.0'} + + lazy@1.0.11: + resolution: {integrity: sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==} + engines: {node: '>=0.2.0'} + + less@4.3.0: + resolution: {integrity: sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==} + engines: {node: '>=14'} + hasBin: true + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + + limiter@1.1.5: + resolution: {integrity: sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==} + + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isarguments@3.1.0: + resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isfinite@3.3.2: + resolution: {integrity: sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + lru-cache@11.3.5: + resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} + engines: {node: 20 || >=22} + + luxon@3.6.1: + resolution: {integrity: sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==} + engines: {node: '>=12'} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + marked@16.0.0: + resolution: {integrity: sha512-MUKMXDjsD/eptB7GPzxo4xcnLS6oo7/RHimUMHEDRhUooPwmN9BEpMl7AEOJv3bmso169wHI2wUF9VQgL7zfmA==} + engines: {node: '>= 20'} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + + memory-pager@1.5.0: + resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} + + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + method-override@3.0.0: + resolution: {integrity: sha512-IJ2NNN/mSl9w3kzWB92rcdHpz+HjkxhDJWNDBqSlas+zQdP8wBiJzITPg08M/k2uVvMow7Sk41atndNtt/PHSA==} + engines: {node: '>= 0.10'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minio@8.0.5: + resolution: {integrity: sha512-/vAze1uyrK2R/DSkVutE4cjVoAowvIQ18RAwn7HrqnLecLlMazFnY0oNBqfuoAWvu7mZIGX75AzpuV05TJeoHg==} + engines: {node: ^16 || ^18 || >=20} + + mitt@1.2.0: + resolution: {integrity: sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mongodb-connection-string-url@3.0.2: + resolution: {integrity: sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==} + + mongodb@6.17.0: + resolution: {integrity: sha512-neerUzg/8U26cgruLysKEjJvoNSXhyID3RvzvdcpsIi2COYM3FS3o9nlH7fxFtefTb942dX3W9i37oPfCVj4wA==} + engines: {node: '>=16.20.1'} + peerDependencies: + '@aws-sdk/credential-providers': ^3.188.0 + '@mongodb-js/zstd': ^1.1.0 || ^2.0.0 + gcp-metadata: ^5.2.0 + kerberos: ^2.0.1 + mongodb-client-encryption: '>=6.0.0 <7' + snappy: ^7.2.2 + socks: ^2.7.1 + peerDependenciesMeta: + '@aws-sdk/credential-providers': + optional: true + '@mongodb-js/zstd': + optional: true + gcp-metadata: + optional: true + kerberos: + optional: true + mongodb-client-encryption: + optional: true + snappy: + optional: true + socks: + optional: true + + mongoose@8.16.1: + resolution: {integrity: sha512-Q+0TC+KLdY4SYE+u9gk9pdW1tWu/pl0jusyEkMGTgBoAbvwQdfy4f9IM8dmvCwb/blSfp7IfLkob7v76x6ZGpQ==} + engines: {node: '>=16.20.1'} + + morgan@1.10.0: + resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} + engines: {node: '>= 0.8.0'} + + mpath@0.9.0: + resolution: {integrity: sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==} + engines: {node: '>=4.0.0'} + + mquery@5.0.0: + resolution: {integrity: sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==} + engines: {node: '>=14.0.0'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + hasBin: true + + msgpackr@1.11.4: + resolution: {integrity: sha512-uaff7RG9VIC4jacFW9xzL3jc0iM32DNHe4jYVycBcjUePT/Klnfj7pqtWJt9khvDFizmjN2TlYniYmSS2LIaZg==} + + multer@2.0.1: + resolution: {integrity: sha512-Ug8bXeTIUlxurg8xLTEskKShvcKDZALo1THEX5E41pYCD2sCVub5/kIRIGqWNoqV6szyLyQKV6mD4QUrWE5GCQ==} + engines: {node: '>= 10.16.0'} + + mylas@2.1.14: + resolution: {integrity: sha512-BzQguy9W9NJgoVn2mRWzbFrFWWztGCcng2QI9+41frfk+Athwgx3qhqhvStz7ExeUUu7Kzw427sNzHpEZNINog==} + engines: {node: '>=16.0.0'} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + + node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true + + node-releases@2.0.38: + resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==} + + nodemailer@7.0.3: + resolution: {integrity: sha512-Ajq6Sz1x7cIK3pN6KesGTah+1gnwMnx5gKl3piQlQQE/PwyJ4Mbc8is2psWYxK3RJTVeqsDaCv8ZzXLCDHMTZw==} + engines: {node: '>=6.0.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + numeral@2.0.6: + resolution: {integrity: sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + + ollama@0.6.3: + resolution: {integrity: sha512-KEWEhIqE5wtfzEIZbDCLH51VFZ6Z3ZSa6sIOg/E/tBV8S51flyqBOXi+bRxlOYKDf8i327zG9eSTb8IJxvm3Zg==} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + opn@5.3.0: + resolution: {integrity: sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==} + engines: {node: '>=4'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + parse5@8.0.1: + resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + + plimit-lit@1.6.1: + resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} + engines: {node: '>=12'} + + portscanner@2.2.0: + resolution: {integrity: sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==} + engines: {node: '>=0.4', npm: '>=1.0.0'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.10: + resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} + engines: {node: ^10 || ^12 || >=14} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + pug-attrs@3.0.0: + resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} + + pug-code-gen@3.0.3: + resolution: {integrity: sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==} + + pug-error@2.1.0: + resolution: {integrity: sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==} + + pug-filters@4.0.0: + resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} + + pug-lexer@5.0.1: + resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} + + pug-linker@4.0.0: + resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} + + pug-load@3.0.0: + resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} + + pug-parser@6.0.0: + resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} + + pug-runtime@3.0.1: + resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} + + pug-strip-comments@2.0.0: + resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} + + pug-walk@2.0.0: + resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} + + pug@3.0.3: + resolution: {integrity: sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + + queue-lit@1.5.2: + resolution: {integrity: sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==} + engines: {node: '>=12'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + randexp@0.5.3: + resolution: {integrity: sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==} + engines: {node: '>=4'} + + random-bytes@1.0.0: + resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} + engines: {node: '>= 0.8'} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + + react-dom@19.2.5: + resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} + peerDependencies: + react: ^19.2.5 + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-router-dom@7.14.2: + resolution: {integrity: sha512-YZcM5ES8jJSM+KrJ9BdvHHqlnGTg5tH3sC5ChFRj4inosKctdyzBDhOyyHdGk597q2OT6NTrCA1OvB/YDwfekQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + + react-router@7.14.2: + resolution: {integrity: sha512-yCqNne6I8IB6rVCH7XUvlBK7/QKyqypBFGv+8dj4QBFJiiRX+FG7/nkdAvGElyvVZ/HQP5N19wzteuTARXi5Gw==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + + react@19.2.5: + resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} + engines: {node: '>=0.10.0'} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + redis-errors@1.2.0: + resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} + engines: {node: '>=4'} + + redis-parser@3.0.0: + resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} + engines: {node: '>=4'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + resp-modifier@6.0.2: + resolution: {integrity: sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==} + engines: {node: '>= 0.8.0'} + + ret@0.2.2: + resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} + engines: {node: '>=4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rolldown@1.0.0-rc.17: + resolution: {integrity: sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + rotating-file-stream@3.2.6: + resolution: {integrity: sha512-r8yShzMWUvWXkRzbOXDM1fEaMpc3qo2PzK7bBH/0p0Nl/uz8Mud/Y+0XTQxe3kbSnDF7qBH2tSe83WDKA7o3ww==} + engines: {node: '>=14.0'} + + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rx@4.1.0: + resolution: {integrity: sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + send@0.19.1: + resolution: {integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==} + engines: {node: '>= 0.8.0'} + + send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} + + serve-favicon@2.5.1: + resolution: {integrity: sha512-JndLBslCLA/ebr7rS3d+/EKkzTsTi1jI2T9l+vHfAaGJ7A7NhtDpSZ0lx81HCNWnnE0yHncG+SSnVf9IMxOwXQ==} + engines: {node: '>= 0.8.0'} + + serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + + serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} + + server-destroy@1.0.1: + resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} + + set-cookie-parser@2.7.2: + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shoetest@1.2.2: + resolution: {integrity: sha512-iT8kIEFcGfUwo53VUFckm+glTkc0oLycRe+YqU/W4wQuIHGIWc5KMIpDnJVdavKCyEZKQTi8IDq27rDmB09QjA==} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + sift@17.1.3: + resolution: {integrity: sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + socket.io-adapter@2.5.5: + resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} + + socket.io-client@4.8.3: + resolution: {integrity: sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==} + engines: {node: '>=10.0.0'} + + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + + socket.io@4.8.3: + resolution: {integrity: sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==} + engines: {node: '>=10.2.0'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sparse-bitfield@3.0.3: + resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} + + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + sprintf-js@1.1.2: + resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + + stats-lite@2.2.0: + resolution: {integrity: sha512-/Kz55rgUIv2KP2MKphwYT/NCuSfAlbbMRv2ZWw7wyXayu230zdtzhxxuXXcvsc6EmmhS8bSJl3uS1wmMHFumbA==} + engines: {node: '>=2.0.0'} + + statuses@1.3.1: + resolution: {integrity: sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==} + engines: {node: '>= 0.6'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + + stream-chain@2.2.5: + resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==} + + stream-json@1.9.1: + resolution: {integrity: sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==} + + stream-throttle@0.1.3: + resolution: {integrity: sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==} + engines: {node: '>= 0.10.0'} + hasBin: true + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + striptags@3.2.0: + resolution: {integrity: sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==} + + strnum@1.1.2: + resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + tailwindcss@4.2.4: + resolution: {integrity: sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA==} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@1.1.1: + resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} + engines: {node: '>=18'} + + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + + tldts-core@7.0.28: + resolution: {integrity: sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ==} + + tldts@7.0.28: + resolution: {integrity: sha512-+Zg3vWhRUv8B1maGSTFdev9mjoo8Etn2Ayfs4cnjlD3CsGkxXX4QyW3j2WJ0wdjYcYmy7Lx2RDsZMhgCWafKIw==} + hasBin: true + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + token-stream@1.0.0: + resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} + + tough-cookie@6.0.1: + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} + engines: {node: '>=16'} + + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} + + tsc-alias@1.8.16: + resolution: {integrity: sha512-QjCyu55NFyRSBAl6+MTFwplpFcnm2Pq01rR/uxfqJoLMm6X3O14KEGtaSDZpJYaE1bJBGDjD0eSuiIWPe2T58g==} + engines: {node: '>=16.20.2'} + hasBin: true + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + engines: {node: '>=18.0.0'} + hasBin: true + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + ua-parser-js@1.0.40: + resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} + hasBin: true + + uid-safe@2.1.5: + resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} + engines: {node: '>= 0.8'} + + uikit@3.23.11: + resolution: {integrity: sha512-srUFBf5DfUxVpodcygibMQt1vgQjR9wlhIQo4GeWVpugk5+mKLPASJITDoY8wcwXQIHm7koELiPJ+FgNbzLv0A==} + + undici-types@7.8.0: + resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + + undici@7.25.0: + resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} + engines: {node: '>=20.18.1'} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite@8.0.10: + resolution: {integrity: sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.0 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.5: + resolution: {integrity: sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.5 + '@vitest/browser-preview': 4.1.5 + '@vitest/browser-webdriverio': 4.1.5 + '@vitest/coverage-istanbul': 4.1.5 + '@vitest/coverage-v8': 4.1.5 + '@vitest/ui': 4.1.5 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + web-encoding@1.1.5: + resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} + + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + + whatwg-url@16.0.1: + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + with@7.0.2: + resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} + engines: {node: '>= 10.0.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xml2js@0.6.2: + resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xmlhttprequest-ssl@2.1.2: + resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} + engines: {node: '>=0.4.0'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + +snapshots: + + '@adobe/css-tools@4.4.4': {} + + '@alloc/quick-lru@5.2.0': {} + + '@asamuzakjp/css-color@5.1.11': + dependencies: + '@asamuzakjp/generational-cache': 1.0.1 + '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@asamuzakjp/dom-selector@7.1.1': + dependencies: + '@asamuzakjp/generational-cache': 1.0.1 + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.2.1 + is-potential-custom-element-name: 1.0.1 + + '@asamuzakjp/generational-cache@1.0.1': {} + + '@asamuzakjp/nwsapi@2.3.9': {} + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/parser@7.27.7': + dependencies: + '@babel/types': 7.27.7 + + '@babel/runtime@7.29.2': {} + + '@babel/types@7.27.7': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@bramus/specificity@2.4.2': + dependencies: + css-tree: 3.2.1 + + '@csstools/color-helpers@6.0.2': {} + + '@csstools/css-calc@3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-color-parser@4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/color-helpers': 6.0.2 + '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.3(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 + + '@csstools/css-tokenizer@4.0.0': {} + + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@esbuild/aix-ppc64@0.25.5': + optional: true + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.25.5': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm@0.25.5': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-x64@0.25.5': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.25.5': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.25.5': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.25.5': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.25.5': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.25.5': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm@0.25.5': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.25.5': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.25.5': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.25.5': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-ppc64@0.25.5': + optional: true + + '@esbuild/linux-ppc64@0.27.7': + optional: true + + '@esbuild/linux-riscv64@0.25.5': + optional: true + + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.25.5': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true + + '@esbuild/linux-x64@0.25.5': + optional: true + + '@esbuild/linux-x64@0.27.7': + optional: true + + '@esbuild/netbsd-arm64@0.25.5': + optional: true + + '@esbuild/netbsd-arm64@0.27.7': + optional: true + + '@esbuild/netbsd-x64@0.25.5': + optional: true + + '@esbuild/netbsd-x64@0.27.7': + optional: true + + '@esbuild/openbsd-arm64@0.25.5': + optional: true + + '@esbuild/openbsd-arm64@0.27.7': + optional: true + + '@esbuild/openbsd-x64@0.25.5': + optional: true + + '@esbuild/openbsd-x64@0.27.7': + optional: true + + '@esbuild/openharmony-arm64@0.27.7': + optional: true + + '@esbuild/sunos-x64@0.25.5': + optional: true + + '@esbuild/sunos-x64@0.27.7': + optional: true + + '@esbuild/win32-arm64@0.25.5': + optional: true + + '@esbuild/win32-arm64@0.27.7': + optional: true + + '@esbuild/win32-ia32@0.25.5': + optional: true + + '@esbuild/win32-ia32@0.27.7': + optional: true + + '@esbuild/win32-x64@0.25.5': + optional: true + + '@esbuild/win32-x64@0.27.7': + optional: true + + '@exodus/bytes@1.15.0': {} + + '@fortawesome/fontawesome-free@6.7.2': {} + + '@ioredis/commands@1.2.0': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@kurkle/color@0.3.4': {} + + '@mongodb-js/saslprep@1.3.0': + dependencies: + sparse-bitfield: 3.0.3 + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + optional: true + + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.1 + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@oxc-project/types@0.127.0': {} + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + '@rolldown/binding-android-arm64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': + optional: true + + '@rolldown/pluginutils@1.0.0-rc.17': {} + + '@rolldown/pluginutils@1.0.0-rc.7': {} + + '@socket.io/component-emitter@3.1.2': {} + + '@standard-schema/spec@1.1.0': {} + + '@tailwindcss/node@4.2.4': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.21.0 + jiti: 2.6.1 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.2.4 + + '@tailwindcss/oxide-android-arm64@4.2.4': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.2.4': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.2.4': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.2.4': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.2.4': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.2.4': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.2.4': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.2.4': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.2.4': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.2.4': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.2.4': + optional: true + + '@tailwindcss/oxide@4.2.4': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.2.4 + '@tailwindcss/oxide-darwin-arm64': 4.2.4 + '@tailwindcss/oxide-darwin-x64': 4.2.4 + '@tailwindcss/oxide-freebsd-x64': 4.2.4 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.4 + '@tailwindcss/oxide-linux-arm64-gnu': 4.2.4 + '@tailwindcss/oxide-linux-arm64-musl': 4.2.4 + '@tailwindcss/oxide-linux-x64-gnu': 4.2.4 + '@tailwindcss/oxide-linux-x64-musl': 4.2.4 + '@tailwindcss/oxide-wasm32-wasi': 4.2.4 + '@tailwindcss/oxide-win32-arm64-msvc': 4.2.4 + '@tailwindcss/oxide-win32-x64-msvc': 4.2.4 + + '@tailwindcss/postcss@4.2.4': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.2.4 + '@tailwindcss/oxide': 4.2.4 + postcss: 8.5.10 + tailwindcss: 4.2.4 + + '@testing-library/dom@10.4.1': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/runtime': 7.29.2 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + picocolors: 1.1.1 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.9.1': + dependencies: + '@adobe/css-tools': 4.4.4 + aria-query: 5.3.2 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + picocolors: 1.1.1 + redent: 3.0.0 + + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@babel/runtime': 7.29.2 + '@testing-library/dom': 10.4.1 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/aria-query@5.0.4': {} + + '@types/body-parser@1.19.6': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 24.0.4 + + '@types/browser-sync@2.29.0': + dependencies: + '@types/micromatch': 2.3.35 + '@types/node': 24.0.4 + '@types/serve-static': 1.15.8 + chokidar: 3.6.0 + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/compression@1.8.1': + dependencies: + '@types/express': 5.0.3 + '@types/node': 24.0.4 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 24.0.4 + + '@types/cookie-parser@1.4.9(@types/express@5.0.3)': + dependencies: + '@types/express': 5.0.3 + + '@types/cors@2.8.19': + dependencies: + '@types/node': 24.0.4 + + '@types/deep-eql@4.0.2': {} + + '@types/estree@1.0.8': {} + + '@types/express-serve-static-core@5.0.6': + dependencies: + '@types/node': 24.0.4 + '@types/qs': 6.14.0 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.5 + + '@types/express-session@1.18.2': + dependencies: + '@types/express': 5.0.3 + + '@types/express@5.0.3': + dependencies: + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 5.0.6 + '@types/serve-static': 1.15.8 + + '@types/geoip-lite@1.4.4': {} + + '@types/http-errors@2.0.5': {} + + '@types/jsonwebtoken@9.0.10': + dependencies: + '@types/ms': 2.1.0 + '@types/node': 24.0.4 + + '@types/less@3.0.8': {} + + '@types/luxon@3.6.2': {} + + '@types/method-override@3.0.0(@types/express@5.0.3)': + dependencies: + '@types/express': 5.0.3 + + '@types/micromatch@2.3.35': + dependencies: + '@types/parse-glob': 3.0.32 + + '@types/mime@1.3.5': {} + + '@types/morgan@1.9.10': + dependencies: + '@types/node': 24.0.4 + + '@types/ms@2.1.0': {} + + '@types/multer@1.4.13': + dependencies: + '@types/express': 5.0.3 + + '@types/node@24.0.4': + dependencies: + undici-types: 7.8.0 + + '@types/nodemailer@6.4.17': + dependencies: + '@types/node': 24.0.4 + + '@types/numeral@2.0.5': {} + + '@types/parse-glob@3.0.32': {} + + '@types/qs@6.14.0': {} + + '@types/range-parser@1.2.7': {} + + '@types/send@0.17.5': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 24.0.4 + + '@types/serve-favicon@2.5.7': + dependencies: + '@types/express': 5.0.3 + + '@types/serve-static@1.15.8': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 24.0.4 + '@types/send': 0.17.5 + + '@types/uikit@3.14.5': {} + + '@types/uuid@10.0.0': {} + + '@types/webidl-conversions@7.0.3': {} + + '@types/whatwg-url@11.0.5': + dependencies: + '@types/webidl-conversions': 7.0.3 + + '@vitejs/plugin-react@6.0.1(vite@8.0.10(@types/node@24.0.4)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(tsx@4.21.0))': + dependencies: + '@rolldown/pluginutils': 1.0.0-rc.7 + vite: 8.0.10(@types/node@24.0.4)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(tsx@4.21.0) + + '@vitest/expect@4.1.5': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + chai: 6.2.2 + tinyrainbow: 3.1.0 + + '@vitest/mocker@4.1.5(vite@8.0.10(@types/node@24.0.4)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(tsx@4.21.0))': + dependencies: + '@vitest/spy': 4.1.5 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.10(@types/node@24.0.4)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(tsx@4.21.0) + + '@vitest/pretty-format@4.1.5': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/runner@4.1.5': + dependencies: + '@vitest/utils': 4.1.5 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.5': + dependencies: + '@vitest/pretty-format': 4.1.5 + '@vitest/utils': 4.1.5 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.5': {} + + '@vitest/utils@4.1.5': + dependencies: + '@vitest/pretty-format': 4.1.5 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + + '@zxing/text-encoding@0.9.0': + optional: true + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + accepts@2.0.0: + dependencies: + mime-types: 3.0.1 + negotiator: 1.0.0 + + acorn@7.4.1: {} + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansicolor@2.0.3: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + append-field@1.0.0: {} + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + aria-query@5.3.2: {} + + array-union@2.1.0: {} + + asap@2.0.6: {} + + assert-never@1.4.0: {} + + assertion-error@2.0.1: {} + + async-each-series@0.1.1: {} + + async@2.6.4: + dependencies: + lodash: 4.17.21 + + async@3.2.6: {} + + autoprefixer@10.5.0(postcss@8.5.10): + dependencies: + browserslist: 4.28.2 + caniuse-lite: 1.0.30001790 + fraction.js: 5.3.4 + picocolors: 1.1.1 + postcss: 8.5.10 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + babel-walk@3.0.0-canary-5: + dependencies: + '@babel/types': 7.27.7 + + balanced-match@1.0.2: {} + + base64id@2.0.0: {} + + baseline-browser-mapping@2.10.22: {} + + basic-auth@2.0.1: + dependencies: + safe-buffer: 5.1.2 + + batch@0.6.1: {} + + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + + binary-extensions@2.3.0: {} + + block-stream2@2.1.0: + dependencies: + readable-stream: 3.6.2 + + body-parser@2.2.0: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.1 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + on-finished: 2.4.1 + qs: 6.14.0 + raw-body: 3.0.0 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-or-node@2.1.1: {} + + browser-sync-client@3.0.4: + dependencies: + etag: 1.8.1 + fresh: 0.5.2 + mitt: 1.2.0 + + browser-sync-ui@3.0.4: + dependencies: + async-each-series: 0.1.1 + chalk: 4.1.2 + connect-history-api-fallback: 1.6.0 + immutable: 3.8.2 + server-destroy: 1.0.1 + socket.io-client: 4.8.3 + stream-throttle: 0.1.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + browser-sync@3.0.4: + dependencies: + browser-sync-client: 3.0.4 + browser-sync-ui: 3.0.4 + bs-recipes: 1.3.4 + chalk: 4.1.2 + chokidar: 3.6.0 + connect: 3.6.6 + connect-history-api-fallback: 1.6.0 + dev-ip: 1.0.1 + easy-extender: 2.3.4 + eazy-logger: 4.1.0 + etag: 1.8.1 + fresh: 0.5.2 + fs-extra: 3.0.1 + http-proxy: 1.18.1 + immutable: 3.8.2 + micromatch: 4.0.8 + opn: 5.3.0 + portscanner: 2.2.0 + raw-body: 2.5.2 + resp-modifier: 6.0.2 + rx: 4.1.0 + send: 0.19.1 + serve-index: 1.9.1 + serve-static: 1.16.2 + server-destroy: 1.0.1 + socket.io: 4.8.3 + ua-parser-js: 1.0.40 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.22 + caniuse-lite: 1.0.30001790 + electron-to-chromium: 1.5.344 + node-releases: 2.0.38 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + + bs-recipes@1.3.4: {} + + bson@6.10.4: {} + + buffer-crc32@0.2.13: {} + + buffer-crc32@1.0.0: {} + + buffer-equal-constant-time@1.0.1: {} + + buffer-from@1.1.2: {} + + bull@4.16.5: + dependencies: + cron-parser: 4.9.0 + get-port: 5.1.1 + ioredis: 5.6.0 + lodash: 4.17.21 + msgpackr: 1.11.4 + semver: 7.7.2 + uuid: 8.3.2 + transitivePeerDependencies: + - supports-color + + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 + + bytes@3.1.2: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + caniuse-lite@1.0.30001790: {} + + chai@6.2.2: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + character-parser@2.2.0: + dependencies: + is-regex: 1.2.1 + + chart.js@4.5.0: + dependencies: + '@kurkle/color': 0.3.4 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cluster-key-slot@1.1.2: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@2.20.3: {} + + commander@9.5.0: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.52.0 + + compression@1.8.0: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.0.2 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + concat-map@0.0.1: {} + + concat-stream@2.0.0: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + typedarray: 0.0.6 + + connect-history-api-fallback@1.6.0: {} + + connect-redis@8.0.2(express-session@1.18.1): + dependencies: + express-session: 1.18.1 + + connect@3.6.6: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.0 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + + constantinople@4.0.1: + dependencies: + '@babel/parser': 7.27.7 + '@babel/types': 7.27.7 + + content-disposition@1.0.0: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@2.0.0: {} + + cookie-parser@1.4.7: + dependencies: + cookie: 0.7.2 + cookie-signature: 1.0.6 + + cookie-signature@1.0.6: {} + + cookie-signature@1.0.7: {} + + cookie-signature@1.2.2: {} + + cookie@0.7.2: {} + + cookie@1.1.1: {} + + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cron-parser@4.9.0: + dependencies: + luxon: 3.6.1 + + cron@4.3.1: + dependencies: + '@types/luxon': 3.6.2 + luxon: 3.6.1 + + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + + css.escape@1.5.1: {} + + data-urls@7.0.0: + dependencies: + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1 + transitivePeerDependencies: + - '@noble/hashes' + + dayjs@1.11.13: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.1.0: + dependencies: + ms: 2.0.0 + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + debug@4.4.1: + dependencies: + ms: 2.1.3 + + decimal.js@10.6.0: {} + + decode-uri-component@0.2.2: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + denque@2.1.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destroy@1.2.0: {} + + detect-libc@2.0.4: {} + + dev-ip@1.0.1: {} + + diacritics@1.3.0: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + doctypes@1.1.0: {} + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + + dotenv@16.6.0: {} + + drange@1.1.1: {} + + dtp-cleantext@1.0.0: + dependencies: + diacritics: 1.3.0 + shoetest: 1.2.2 + stats-lite: 2.2.0 + striptags: 3.2.0 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + easy-extender@2.3.4: + dependencies: + lodash: 4.17.21 + + eazy-logger@4.1.0: + dependencies: + chalk: 4.1.2 + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.344: {} + + emoji-regex@8.0.0: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + engine.io-client@6.6.3: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + engine.io-parser: 5.2.3 + ws: 8.17.1 + xmlhttprequest-ssl: 2.1.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + engine.io-parser@5.2.3: {} + + engine.io@6.6.4: + dependencies: + '@types/cors': 2.8.19 + '@types/node': 24.0.4 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.7.2 + cors: 2.8.5 + debug: 4.3.7 + engine.io-parser: 5.2.3 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + enhanced-resolve@5.21.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + entities@8.0.0: {} + + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@2.0.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + esbuild@0.25.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.5 + '@esbuild/android-arm': 0.25.5 + '@esbuild/android-arm64': 0.25.5 + '@esbuild/android-x64': 0.25.5 + '@esbuild/darwin-arm64': 0.25.5 + '@esbuild/darwin-x64': 0.25.5 + '@esbuild/freebsd-arm64': 0.25.5 + '@esbuild/freebsd-x64': 0.25.5 + '@esbuild/linux-arm': 0.25.5 + '@esbuild/linux-arm64': 0.25.5 + '@esbuild/linux-ia32': 0.25.5 + '@esbuild/linux-loong64': 0.25.5 + '@esbuild/linux-mips64el': 0.25.5 + '@esbuild/linux-ppc64': 0.25.5 + '@esbuild/linux-riscv64': 0.25.5 + '@esbuild/linux-s390x': 0.25.5 + '@esbuild/linux-x64': 0.25.5 + '@esbuild/netbsd-arm64': 0.25.5 + '@esbuild/netbsd-x64': 0.25.5 + '@esbuild/openbsd-arm64': 0.25.5 + '@esbuild/openbsd-x64': 0.25.5 + '@esbuild/sunos-x64': 0.25.5 + '@esbuild/win32-arm64': 0.25.5 + '@esbuild/win32-ia32': 0.25.5 + '@esbuild/win32-x64': 0.25.5 + + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + etag@1.8.1: {} + + eventemitter3@4.0.7: {} + + eventemitter3@5.0.1: {} + + expect-type@1.3.0: {} + + express-rate-limit@7.5.1(express@5.1.0): + dependencies: + express: 5.1.0 + + express-session@1.18.1: + dependencies: + cookie: 0.7.2 + cookie-signature: 1.0.7 + debug: 2.6.9 + depd: 2.0.0 + on-headers: 1.0.2 + parseurl: 1.3.3 + safe-buffer: 5.2.1 + uid-safe: 2.1.5 + transitivePeerDependencies: + - supports-color + + express@5.1.0: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.0 + content-disposition: 1.0.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.1 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.0 + fresh: 2.0.0 + http-errors: 2.0.0 + merge-descriptors: 2.0.0 + mime-types: 3.0.1 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.14.0 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.0 + serve-static: 2.2.0 + statuses: 2.0.1 + type-is: 2.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-xml-parser@4.5.3: + dependencies: + strnum: 1.1.2 + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + filter-obj@1.1.0: {} + + finalhandler@1.1.0: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.3.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + finalhandler@2.1.0: + dependencies: + debug: 4.4.1 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + follow-redirects@1.15.9: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + forwarded@0.2.0: {} + + fraction.js@5.3.4: {} + + fresh@0.5.2: {} + + fresh@2.0.0: {} + + fs-extra@3.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 3.0.1 + universalify: 0.1.2 + + fs.realpath@1.0.0: {} + + fsevents@2.3.2: + optional: true + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + geoip-lite@1.4.10: + dependencies: + async: 2.6.4 + chalk: 4.1.2 + iconv-lite: 0.6.3 + ip-address: 5.9.4 + lazy: 1.0.11 + rimraf: 2.7.1 + yauzl: 2.10.0 + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-port@5.1.1: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@16.2.0: {} + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + has-flag@5.0.1: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + html-encoding-sniffer@6.0.0: + dependencies: + '@exodus/bytes': 1.15.0 + transitivePeerDependencies: + - '@noble/hashes' + + http-errors@1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.9 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ignore@5.3.2: {} + + image-size@0.5.5: + optional: true + + immutable@3.8.2: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ioredis@5.6.0: + dependencies: + '@ioredis/commands': 1.2.0 + cluster-key-slot: 1.1.2 + debug: 4.4.1 + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + + ip-address@5.9.4: + dependencies: + jsbn: 1.1.0 + lodash: 4.17.21 + sprintf-js: 1.1.2 + + ipaddr.js@1.9.1: {} + + ipaddr.js@2.2.0: {} + + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-expression@4.0.0: + dependencies: + acorn: 7.4.1 + object-assign: 4.1.1 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number-like@1.0.8: + dependencies: + lodash.isfinite: 3.3.2 + + is-number@7.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-promise@2.2.2: {} + + is-promise@4.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-what@3.14.1: {} + + is-wsl@1.1.0: {} + + isnumber@1.0.0: {} + + jiti@2.6.1: {} + + js-stringify@1.0.2: {} + + js-tokens@4.0.0: {} + + jsbn@1.1.0: {} + + jsdom@29.0.2: + dependencies: + '@asamuzakjp/css-color': 5.1.11 + '@asamuzakjp/dom-selector': 7.1.1 + '@bramus/specificity': 2.4.2 + '@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1) + '@exodus/bytes': 1.15.0 + css-tree: 3.2.1 + data-urls: 7.0.0 + decimal.js: 10.6.0 + html-encoding-sniffer: 6.0.0 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.3.5 + parse5: 8.0.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 6.0.1 + undici: 7.25.0 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - '@noble/hashes' + + jsonfile@3.0.1: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonwebtoken@9.0.2: + dependencies: + jws: 3.2.2 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.7.2 + + jstransformer@1.0.0: + dependencies: + is-promise: 2.2.2 + promise: 7.3.1 + + jwa@1.4.2: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@3.2.2: + dependencies: + jwa: 1.4.2 + safe-buffer: 5.2.1 + + kareem@2.6.3: {} + + lazy@1.0.11: {} + + less@4.3.0: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.0.4 + 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 + + limiter@1.1.5: {} + + lodash.defaults@4.2.0: {} + + lodash.includes@4.3.0: {} + + lodash.isarguments@3.1.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isfinite@3.3.2: {} + + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + + lodash.once@4.1.1: {} + + lodash@4.17.21: {} + + lru-cache@11.3.5: {} + + luxon@3.6.1: {} + + lz-string@1.5.0: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + + marked@16.0.0: {} + + math-intrinsics@1.1.0: {} + + mdn-data@2.27.1: {} + + media-typer@0.3.0: {} + + media-typer@1.1.0: {} + + memory-pager@1.5.0: {} + + merge-descriptors@2.0.0: {} + + merge2@1.4.1: {} + + method-override@3.0.0: + dependencies: + debug: 3.1.0 + methods: 1.1.2 + parseurl: 1.3.3 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + methods@1.1.2: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime-types@3.0.1: + dependencies: + mime-db: 1.54.0 + + mime@1.6.0: {} + + min-indent@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimist@1.2.8: {} + + minio@8.0.5: + dependencies: + async: 3.2.6 + block-stream2: 2.1.0 + browser-or-node: 2.1.1 + buffer-crc32: 1.0.0 + eventemitter3: 5.0.1 + fast-xml-parser: 4.5.3 + ipaddr.js: 2.2.0 + lodash: 4.17.21 + mime-types: 2.1.35 + query-string: 7.1.3 + stream-json: 1.9.1 + through2: 4.0.2 + web-encoding: 1.1.5 + xml2js: 0.6.2 + + mitt@1.2.0: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mongodb-connection-string-url@3.0.2: + dependencies: + '@types/whatwg-url': 11.0.5 + whatwg-url: 14.2.0 + + mongodb@6.17.0: + dependencies: + '@mongodb-js/saslprep': 1.3.0 + bson: 6.10.4 + mongodb-connection-string-url: 3.0.2 + + mongoose@8.16.1: + dependencies: + bson: 6.10.4 + kareem: 2.6.3 + mongodb: 6.17.0 + mpath: 0.9.0 + mquery: 5.0.0 + ms: 2.1.3 + sift: 17.1.3 + transitivePeerDependencies: + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' + - gcp-metadata + - kerberos + - mongodb-client-encryption + - snappy + - socks + - supports-color + + morgan@1.10.0: + dependencies: + basic-auth: 2.0.1 + debug: 2.6.9 + depd: 2.0.0 + on-finished: 2.3.0 + on-headers: 1.0.2 + transitivePeerDependencies: + - supports-color + + mpath@0.9.0: {} + + mquery@5.0.0: + dependencies: + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + ms@2.0.0: {} + + ms@2.1.3: {} + + msgpackr-extract@3.0.3: + dependencies: + node-gyp-build-optional-packages: 5.2.2 + optionalDependencies: + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 + optional: true + + msgpackr@1.11.4: + optionalDependencies: + msgpackr-extract: 3.0.3 + + multer@2.0.1: + dependencies: + append-field: 1.0.0 + busboy: 1.6.0 + concat-stream: 2.0.0 + mkdirp: 0.5.6 + object-assign: 4.1.1 + type-is: 1.6.18 + xtend: 4.0.2 + + mylas@2.1.14: {} + + nanoid@3.3.11: {} + + needle@3.3.1: + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.1 + optional: true + + negotiator@0.6.3: {} + + negotiator@0.6.4: {} + + negotiator@1.0.0: {} + + node-gyp-build-optional-packages@5.2.2: + dependencies: + detect-libc: 2.0.4 + optional: true + + node-releases@2.0.38: {} + + nodemailer@7.0.3: {} + + normalize-path@3.0.0: {} + + numeral@2.0.6: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + obug@2.1.1: {} + + ollama@0.6.3: + dependencies: + whatwg-fetch: 3.6.20 + + on-finished@2.3.0: + dependencies: + ee-first: 1.1.1 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + opn@5.3.0: + dependencies: + is-wsl: 1.1.0 + + parse-node-version@1.0.1: {} + + parse5@8.0.1: + dependencies: + entities: 8.0.0 + + parseurl@1.3.3: {} + + path-is-absolute@1.0.1: {} + + path-parse@1.0.7: {} + + path-to-regexp@8.2.0: {} + + path-type@4.0.0: {} + + pathe@2.0.3: {} + + pend@1.2.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.4: {} + + pify@4.0.1: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 + + plimit-lit@1.6.1: + dependencies: + queue-lit: 1.5.2 + + portscanner@2.2.0: + dependencies: + async: 2.6.4 + is-number-like: 1.0.8 + + possible-typed-array-names@1.1.0: {} + + postcss-value-parser@4.2.0: {} + + postcss@8.5.10: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + promise@7.3.1: + dependencies: + asap: 2.0.6 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + prr@1.0.1: + optional: true + + pug-attrs@3.0.0: + dependencies: + constantinople: 4.0.1 + js-stringify: 1.0.2 + pug-runtime: 3.0.1 + + pug-code-gen@3.0.3: + dependencies: + constantinople: 4.0.1 + doctypes: 1.1.0 + js-stringify: 1.0.2 + pug-attrs: 3.0.0 + pug-error: 2.1.0 + pug-runtime: 3.0.1 + void-elements: 3.1.0 + with: 7.0.2 + + pug-error@2.1.0: {} + + pug-filters@4.0.0: + dependencies: + constantinople: 4.0.1 + jstransformer: 1.0.0 + pug-error: 2.1.0 + pug-walk: 2.0.0 + resolve: 1.22.10 + + pug-lexer@5.0.1: + dependencies: + character-parser: 2.2.0 + is-expression: 4.0.0 + pug-error: 2.1.0 + + pug-linker@4.0.0: + dependencies: + pug-error: 2.1.0 + pug-walk: 2.0.0 + + pug-load@3.0.0: + dependencies: + object-assign: 4.1.1 + pug-walk: 2.0.0 + + pug-parser@6.0.0: + dependencies: + pug-error: 2.1.0 + token-stream: 1.0.0 + + pug-runtime@3.0.1: {} + + pug-strip-comments@2.0.0: + dependencies: + pug-error: 2.1.0 + + pug-walk@2.0.0: {} + + pug@3.0.3: + dependencies: + pug-code-gen: 3.0.3 + pug-filters: 4.0.0 + pug-lexer: 5.0.1 + pug-linker: 4.0.0 + pug-load: 3.0.0 + pug-parser: 6.0.0 + pug-runtime: 3.0.1 + pug-strip-comments: 2.0.0 + + punycode@2.3.1: {} + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + query-string@7.1.3: + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + + queue-lit@1.5.2: {} + + queue-microtask@1.2.3: {} + + randexp@0.5.3: + dependencies: + drange: 1.1.1 + ret: 0.2.2 + + random-bytes@1.0.0: {} + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + raw-body@3.0.0: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + unpipe: 1.0.0 + + react-dom@19.2.5(react@19.2.5): + dependencies: + react: 19.2.5 + scheduler: 0.27.0 + + react-is@17.0.2: {} + + react-router-dom@7.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + dependencies: + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-router: 7.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + + react-router@7.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + dependencies: + cookie: 1.1.1 + react: 19.2.5 + set-cookie-parser: 2.7.2 + optionalDependencies: + react-dom: 19.2.5(react@19.2.5) + + react@19.2.5: {} + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + redis-errors@1.2.0: {} + + redis-parser@3.0.0: + dependencies: + redis-errors: 1.2.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resp-modifier@6.0.2: + dependencies: + debug: 2.6.9 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + ret@0.2.2: {} + + reusify@1.1.0: {} + + rimraf@2.7.1: + dependencies: + glob: 7.2.3 + + rolldown@1.0.0-rc.17: + dependencies: + '@oxc-project/types': 0.127.0 + '@rolldown/pluginutils': 1.0.0-rc.17 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.17 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.17 + '@rolldown/binding-darwin-x64': 1.0.0-rc.17 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.17 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.17 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.17 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.17 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.17 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.17 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.17 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17 + + rotating-file-stream@3.2.6: {} + + router@2.2.0: + dependencies: + debug: 4.4.1 + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.2.0 + transitivePeerDependencies: + - supports-color + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rx@4.1.0: {} + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safer-buffer@2.1.2: {} + + sax@1.4.1: {} + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + scheduler@0.27.0: {} + + semver@5.7.2: + optional: true + + semver@7.7.2: {} + + send@0.19.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + send@0.19.1: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + send@1.2.0: + dependencies: + debug: 4.4.1 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.0 + mime-types: 3.0.1 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-favicon@2.5.1: + dependencies: + etag: 1.8.1 + fresh: 0.5.2 + ms: 2.1.3 + parseurl: 1.3.3 + safe-buffer: 5.2.1 + + serve-index@1.9.1: + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + + serve-static@2.2.0: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.0 + transitivePeerDependencies: + - supports-color + + server-destroy@1.0.1: {} + + set-cookie-parser@2.7.2: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + setprototypeof@1.1.0: {} + + setprototypeof@1.2.0: {} + + shoetest@1.2.2: + dependencies: + randexp: 0.5.3 + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + sift@17.1.3: {} + + siginfo@2.0.0: {} + + slash@3.0.0: {} + + socket.io-adapter@2.5.5: + dependencies: + debug: 4.3.7 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-client@4.8.3: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.4.1 + engine.io-client: 6.6.3 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-parser@4.2.4: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + + socket.io@4.8.3: + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.4.1 + engine.io: 6.6.4 + socket.io-adapter: 2.5.5 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + source-map-js@1.2.1: {} + + source-map@0.6.1: + optional: true + + sparse-bitfield@3.0.3: + dependencies: + memory-pager: 1.5.0 + + split-on-first@1.1.0: {} + + sprintf-js@1.1.2: {} + + stackback@0.0.2: {} + + standard-as-callback@2.1.0: {} + + stats-lite@2.2.0: + dependencies: + isnumber: 1.0.0 + + statuses@1.3.1: {} + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + std-env@4.1.0: {} + + stream-chain@2.2.5: {} + + stream-json@1.9.1: + dependencies: + stream-chain: 2.2.5 + + stream-throttle@0.1.3: + dependencies: + commander: 2.20.3 + limiter: 1.1.5 + + streamsearch@1.1.0: {} + + strict-uri-encode@2.0.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + striptags@3.2.0: {} + + strnum@1.1.2: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + symbol-tree@3.2.4: {} + + tailwindcss@4.2.4: {} + + tapable@2.3.3: {} + + through2@4.0.2: + dependencies: + readable-stream: 3.6.2 + + tinybench@2.9.0: {} + + tinyexec@1.1.1: {} + + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinyrainbow@3.1.0: {} + + tldts-core@7.0.28: {} + + tldts@7.0.28: + dependencies: + tldts-core: 7.0.28 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + token-stream@1.0.0: {} + + tough-cookie@6.0.1: + dependencies: + tldts: 7.0.28 + + tr46@5.1.1: + dependencies: + punycode: 2.3.1 + + tr46@6.0.0: + dependencies: + punycode: 2.3.1 + + tsc-alias@1.8.16: + dependencies: + chokidar: 3.6.0 + commander: 9.5.0 + get-tsconfig: 4.14.0 + globby: 11.1.0 + mylas: 2.1.14 + normalize-path: 3.0.0 + plimit-lit: 1.6.1 + + tslib@2.8.1: {} + + tsx@4.21.0: + dependencies: + esbuild: 0.27.7 + get-tsconfig: 4.14.0 + optionalDependencies: + fsevents: 2.3.3 + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.1 + + typedarray@0.0.6: {} + + typescript@5.8.3: {} + + ua-parser-js@1.0.40: {} + + uid-safe@2.1.5: + dependencies: + random-bytes: 1.0.0 + + uikit@3.23.11: {} + + undici-types@7.8.0: {} + + undici@7.25.0: {} + + universalify@0.1.2: {} + + unpipe@1.0.0: {} + + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.1.0 + is-typed-array: 1.1.15 + which-typed-array: 1.1.19 + + utils-merge@1.0.1: {} + + uuid@11.1.0: {} + + uuid@8.3.2: {} + + vary@1.1.2: {} + + vite@8.0.10(@types/node@24.0.4)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(tsx@4.21.0): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.10 + rolldown: 1.0.0-rc.17 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 24.0.4 + esbuild: 0.25.5 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.3.0 + tsx: 4.21.0 + + vitest@4.1.5(@types/node@24.0.4)(jsdom@29.0.2)(vite@8.0.10(@types/node@24.0.4)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(tsx@4.21.0)): + dependencies: + '@vitest/expect': 4.1.5 + '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@24.0.4)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(tsx@4.21.0)) + '@vitest/pretty-format': 4.1.5 + '@vitest/runner': 4.1.5 + '@vitest/snapshot': 4.1.5 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.1.1 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 8.0.10(@types/node@24.0.4)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(tsx@4.21.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.0.4 + jsdom: 29.0.2 + transitivePeerDependencies: + - msw + + void-elements@3.1.0: {} + + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + + web-encoding@1.1.5: + dependencies: + util: 0.12.5 + optionalDependencies: + '@zxing/text-encoding': 0.9.0 + + webidl-conversions@7.0.0: {} + + webidl-conversions@8.0.1: {} + + whatwg-fetch@3.6.20: {} + + whatwg-mimetype@5.0.0: {} + + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 + + whatwg-url@16.0.1: + dependencies: + '@exodus/bytes': 1.15.0 + tr46: 6.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + with@7.0.2: + dependencies: + '@babel/parser': 7.27.7 + '@babel/types': 7.27.7 + assert-never: 1.4.0 + babel-walk: 3.0.0-canary-5 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + ws@8.17.1: {} + + xml-name-validator@5.0.0: {} + + xml2js@0.6.2: + dependencies: + sax: 1.4.1 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xmlchars@2.2.0: {} + + xmlhttprequest-ssl@2.1.2: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 diff --git a/gadget-code/pnpm-workspace.yaml b/gadget-code/pnpm-workspace.yaml new file mode 100644 index 0000000..f461f99 --- /dev/null +++ b/gadget-code/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +onlyBuiltDependencies: + - esbuild + - msgpackr-extract + - vue-demi diff --git a/gadget-code/release b/gadget-code/release new file mode 100755 index 0000000..57ffaf7 --- /dev/null +++ b/gadget-code/release @@ -0,0 +1,54 @@ +#!/bin/bash + +# Exit immediately if a command exits with a non-zero status +set -e + +PRODUCTION_BRANCH="master" +DEVELOP_BRANCH="develop" + +REMOTE_NAME=${2:-origin} +RELEASE_TYPE=$1 + +# 1. Check for required argument +if [ -z "$RELEASE_TYPE" ]; then + echo "❌ Error: Must specify release type (major, minor, patch)." + echo "Usage: ./release [remote_name]" + exit 1 +fi + +# 2. Verify the remote exists +if ! git remote | grep -q "^$REMOTE_NAME$"; then + echo "❌ Error: Remote '$REMOTE_NAME' not found." + echo "Available remotes: $(git remote | tr '\n' ' ')" + exit 1 +fi + +# 3. Ensure working directory is clean (no uncommitted changes) +if [[ -n $(git status --porcelain) ]]; then + echo "❌ Error: Your working directory is dirty. Commit or stash changes first." + exit 1 +fi + +echo "🚀 Starting release on $REMOTE_NAME..." + +# 4. Sync Develop +git checkout "$DEVELOP_BRANCH" +git pull "$REMOTE_NAME" "$DEVELOP_BRANCH" +npm version "$RELEASE_TYPE" +git push "$REMOTE_NAME" "$DEVELOP_BRANCH" --follow-tags + +# 5. Sync Production +git checkout "$PRODUCTION_BRANCH" +git pull "$REMOTE_NAME" "$PRODUCTION_BRANCH" + +# Merge develop into production locally +# Using --no-ff preserves the release history in the git graph +git merge "$DEVELOP_BRANCH" --no-edit + +# 6. Push Production +git push "$REMOTE_NAME" "$PRODUCTION_BRANCH" + +# 7. Return to Develop +git checkout "$DEVELOP_BRANCH" + +echo "✅ Release complete!" diff --git a/gadget-code/src/config/browsersync.ts b/gadget-code/src/config/browsersync.ts new file mode 100644 index 0000000..dceb980 --- /dev/null +++ b/gadget-code/src/config/browsersync.ts @@ -0,0 +1,34 @@ +// browsersync.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import env from "./env.js"; + +import { Options as BrowserSyncOptions } from "browser-sync"; + +const options: BrowserSyncOptions = { + proxy: { + target: `https://${env.site.host}/`, + ws: true, + }, + host: env.site.domain, + open: false, + https: { + key: env.https.keyFile, + cert: env.https.crtFile, + }, + port: 3000, + cors: true, + ui: { + port: 3620, + }, + notify: false, + ghostMode: { + clicks: false, + forms: false, + scroll: true, + }, + logLevel: "info", +}; + +export default options; diff --git a/gadget-code/src/config/env.ts b/gadget-code/src/config/env.ts new file mode 100644 index 0000000..46e9c77 --- /dev/null +++ b/gadget-code/src/config/env.ts @@ -0,0 +1,167 @@ +// config/env.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import "dotenv/config"; +import type PackageJson from "../../package.json"; + +import assert from "node:assert"; +assert(process.env.DTP_USER_PASSWORD_SALT, "must define password salt in .env"); +assert(process.env.DTP_JWT_SECRET, "must define JSON Web Token secret"); + +import path, { dirname } from "node:path"; +import fs from "node:fs"; +import { fileURLToPath } from "node:url"; +const __dirname = dirname(fileURLToPath(import.meta.url)); // jshint ignore:line + +export const ROOT_DIR = path.resolve(__dirname, "..", ".."); +export const SRC_DIR = path.resolve(__dirname, ".."); + +async function readJsonFile(path: string): Promise { + const file = await fs.promises.readFile(path); + return JSON.parse(file.toString("utf-8")) as T; +} + +export interface ISiteDefinition { + company: string; + companyShort: string; + name: string; + shortName: string; + tagline: string; + sloagn: string; + description: string; + domain: string; + domainKey: string; + host: string; +} + +export default { + NODE_ENV: process.env.NODE_ENV, + timezone: process.env.DTP_TIMEZONE || "America/New_York", + root: ROOT_DIR, + src: SRC_DIR, + pkg: await readJsonFile( + path.join(ROOT_DIR, "package.json"), + ), + site: { + company: process.env.DTP_SITE_COMPANY || "Robert Colbert", + companyShort: process.env.DTP_SITE_COMPANY_SHORT || "Colbert", + name: process.env.DTP_SITE_NAME || "Gadget Code", + shortName: process.env.DTP_SITE_NAME || "Gadget Code", + slogan: process.env.DTP_SITE_SLOGAN || "Self-hosted Agentic Engineering Platform", + description: + process.env.DTP_SITE_DESCRIPTION || + "Gadget Code - A self-hosted Agentic Engineering Platform (AEP).", + domain: process.env.DTP_SITE_DOMAIN || "code-dev.g4dge7.com", + domainKey: + process.env.DTP_SITE_DOMAIN_KEY || "code-dev.g4dge7.com", + host: process.env.DTP_SITE_HOST || "code-dev.g4dge7.com", + }, + ai: { + ollama: { + apiUrl: process.env.DTP_OLLAMA_API_URL || "http://localhost:11434", + apiKey: process.env.DTP_OLLAMA_API_KEY || "", + }, + }, + auth: { + jwtSecret: process.env.DTP_JWT_SECRET, + }, + session: { + secret: process.env.DTP_SESSION_SECRET, + trustProxy: + process.env.NODE_ENV === "production" || + process.env.DTP_SESSION_TRUST_PROXY === "enabled", + cookie: { + secure: process.env.DTP_SESSION_COOKIE_SECURE === "enabled", + sameSite: process.env.DTP_SESSION_COOKIE_SAMESITE || false, + }, + }, + mongodb: { + host: process.env.DTP_MONGODB_HOST || "localhost", + database: process.env.DTP_MONGODB_DATABASE || "", + }, + redis: { + host: process.env.DTP_REDIS_HOST || "localhost", + port: parseInt(process.env.DTP_REDIS_PORT || "6379", 10), + password: process.env.DTP_REDIS_PASSWORD, + keyPrefix: process.env.DTP_REDIS_KEY_PREFIX || "dtp", + lazyConnect: process.env.DTP_REDIS_LAZYCONNECT === "enabled", + }, + minio: { + endpoint: process.env.DTP_MINIO_ENDPOINT || "localhost", + port: parseInt(process.env.DTP_MINIO_PORT || "9080", 10), + useSsl: process.env.DTP_MINIO_USE_SSL === "enabled", + accessKey: process.env.DTP_MINIO_ACCESS_KEY, + secretKey: process.env.DTP_MINIO_SECRET_KEY, + buckets: { + uploads: process.env.DTP_MINIO_UPLOAD_BUCKET || "dtp-uploads", + images: process.env.DTP_MINIO_IMAGE_BUCKET || "dtp-images", + videos: process.env.DTP_MINIO_VIDEO_BUCKET || "dtp-videos", + audios: process.env.DTP_MINIO_AUDIO_BUCKET || "dtp-audios", + }, + }, + user: { + signupEnabled: process.env.DTP_USER_SIGNUP === "enabled", + passwordSalt: process.env.DTP_USER_PASSWORD_SALT, + }, + https: { + enabled: process.env.DTP_HTTPS === "enabled", + address: process.env.DTP_HTTPS_HOST || "127.0.0.1", + port: parseInt(process.env.DTP_HTTPS_PORT || "3443", 10), + backlog: parseInt(process.env.DTP_HTTPS_BACKLOG || "16", 10), + keyFile: process.env.DTP_HTTPS_KEY_FILE, + crtFile: process.env.DTP_HTTPS_CRT_FILE, + uploadPath: process.env.DTP_HTTPS_UPLOAD_PATH || "/tmp", + }, + frontend: { + port: 5173, + }, + email: { + enabled: process.env.DTP_EMAIL_SERVICE === "enabled", + smtp: { + host: process.env.DTP_EMAIL_SMTP_HOST || "localhost", + port: parseInt(process.env.DTP_EMAIL_SMTP_PORT || "465", 10), + secure: process.env.DTP_EMAIL_SMTP_SECURE === "enabled", + from: + process.env.DTP_EMAIL_SMTP_FROM || + "Digital Telepresence Support ", + user: process.env.DTP_EMAIL_SMTP_USER, + password: process.env.DTP_EMAIL_SMTP_PASS, + pool: { + enabled: process.env.DTP_EMAIL_SMTP_POOL_ENABLED === "enabled", + maxConnections: parseInt( + process.env.DTP_EMAIL_SMTP_POOL_MAX_CONN || "5", + 10, + ), + maxMessages: parseInt( + process.env.DTP_EMAIL_SMTP_POOL_MAX_MSGS || "100", + 10, + ), + }, + }, + contact: { + to: + process.env.DTP_EMAIL_CONTACT_TO || + "DTP Support ", + }, + }, + log: { + https: { + enabled: process.env.DTP_LOG_HTTPS === "enabled" || false, + name: process.env.DTP_LOG_HTTPS_NAME || "gadget-code-https.log", + path: process.env.DTP_LOG_HTTPS_PATH || "/var/log/dtp", + format: process.env.DTP_LOG_HTTPS_FORMAT || "combined", + }, + console: { + enabled: process.env.DTP_LOG_CONSOLE === "enabled", + }, + file: { + enabled: process.env.DTP_LOG_FILE === "enabled", + }, + levels: { + debug: process.env.DTP_LOG_DEBUG === "enabled", + info: process.env.DTP_LOG_INFO === "enabled", + warn: process.env.DTP_LOG_WARN === "enabled", + }, + }, +}; diff --git a/gadget-code/src/controllers/api.ts b/gadget-code/src/controllers/api.ts new file mode 100644 index 0000000..9593249 --- /dev/null +++ b/gadget-code/src/controllers/api.ts @@ -0,0 +1,33 @@ +// src/controllers/api.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import env from "../config/env.js"; +import path from "node:path"; + +import { DtpController } from "../lib/controller.js"; + +export class ApiController extends DtpController { + get name(): string { + return "ApiController"; + } + get slug(): string { + return "api"; + } + get route(): string { + return "/api"; + } + + constructor() { + super(); + } + + async start(): Promise { + const envDir = env.NODE_ENV === "production" ? "dist" : "src"; + await this.loadChild( + path.join(env.root, envDir, "controllers", "api", "v1.js") + ); + } +} + +export default ApiController; diff --git a/gadget-code/src/controllers/api/v1.ts b/gadget-code/src/controllers/api/v1.ts new file mode 100644 index 0000000..1b292fe --- /dev/null +++ b/gadget-code/src/controllers/api/v1.ts @@ -0,0 +1,39 @@ +// src/controllers/api/v1.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import env from "../../config/env.js"; +import path from "node:path"; + +import { DtpController } from "../../lib/controller.js"; + +export class ApiControllerV1 extends DtpController { + get name(): string { + return "ApiControllerV1"; + } + get slug(): string { + return "v1"; + } + get route(): string { + return "/v1"; + } + + constructor() { + super(); + } + + async start(): Promise { + let basePath; + if (env.NODE_ENV === "production") { + basePath = path.join(env.root, "dist", "controllers", "api", "v1"); + } else { + basePath = path.join(env.root, "src", "controllers", "api", "v1"); + } + await this.loadChild(path.join(basePath, "auth.js")); + await this.loadChild(path.join(basePath, "contact.js")); + await this.loadChild(path.join(basePath, "drone.js")); + await this.loadChild(path.join(basePath, "user.js")); + } +} + +export default ApiControllerV1; diff --git a/gadget-code/src/controllers/api/v1/auth.ts b/gadget-code/src/controllers/api/v1/auth.ts new file mode 100644 index 0000000..57b7d56 --- /dev/null +++ b/gadget-code/src/controllers/api/v1/auth.ts @@ -0,0 +1,142 @@ +// src/controllers/api/v1/auth.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +// import env from "../config/env.js"; +import { Request, Response } from "express"; + +import { DtpController } from "../../../lib/controller.js"; + +import UserService from "../../../services/user.js"; +import SessionService, { SessionType } from "../../../services/session.js"; + +export class AuthApiControllerV1 extends DtpController { + get name(): string { + return "AuthApiControllerV1"; + } + get slug(): string { + return "authV1"; + } + get route(): string { + return "/auth"; + } + + constructor() { + super(); + } + + async start(): Promise { + this.router.post("/sign-in", this.postSignIn.bind(this)); + this.router.post("/renew-token", this.postRenewToken.bind(this)); + this.router.get("/sign-out", this.getSignOut.bind(this)); + } + + async postSignIn(req: Request, res: Response): Promise { + try { + this.log.info("authenticating user account", { + email: req.body.email, + }); + const user = await UserService.authenticate( + req.body.email, + req.body.password + ); + req.session.user = { + _id: user._id, + email: user.email, + displayName: user.displayName, + flags: user.flags, + }; + + this.log.info("creating JSON Web Token for user session", { + user: { _id: user._id }, + }); + const token = await SessionService.createJsonWebToken(user); + req.session.token = token; + req.session.type = SessionType.JWT; + + req.session.save((err: Error): void => { + if (err) { + res.status(err.statusCode || 500).json({ + success: false, + message: err.message, + }); + return; + } + res.status(200).json({ + success: true, + user: { + _id: user._id.toString(), + email: user.email, + displayName: user.displayName, + flags: user.flags, + }, + token, + }); + }); + } catch (error) { + this.log.error("failed to process user sign-in", { error }); + res.status((error as Error).statusCode || 500).json({ + success: false, + message: (error as Error).message, + }); + } + } + + async postRenewToken(req: Request, res: Response): Promise { + try { + const user = await SessionService.verifyJsonWebToken(req.body.token); + const token = await SessionService.createJsonWebToken(user); + req.session.token = token; + this.log.info("user session token renewed", { + user: { + _id: user._id, + displayName: user.displayName, + flags: user.flags, + }, + }); + res.status(200).json({ success: true, token }); + } catch (error) { + this.log.error("failed to process token renewal", { error }); + res.status((error as Error).statusCode || 500).json({ + success: false, + message: (error as Error).message, + }); + } + } + + async getSignOut(req: Request, res: Response): Promise { + const user = req.user; + if (req.session.token) { + try { + await SessionService.revokeJsonWebToken(req.session.token); + } catch (error) { + this.log.error("failed to revoke user session", { error }); + res.status((error as Error).statusCode || 500).json({ + success: false, + message: (error as Error).message, + }); + return; + } + } + req.session.destroy((err: Error): void => { + if (err) { + this.log.error("failed to destroy user session", { error: err }); + res.status(200).json({ + success: false, + message: err.message, + }); + return; + } + if (user) { + this.log.info("user session destroyed (sign out)", { + user: { _id: user._id }, + }); + } else { + this.log.info("userless session destroyed (sign out)"); + } + res.status(200).json({ success: true }); + }); + } +} + +export default AuthApiControllerV1; diff --git a/gadget-code/src/controllers/api/v1/contact.ts b/gadget-code/src/controllers/api/v1/contact.ts new file mode 100644 index 0000000..f4f9322 --- /dev/null +++ b/gadget-code/src/controllers/api/v1/contact.ts @@ -0,0 +1,82 @@ +// src/controllers/api/v1/contact.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +// import env from "../../../config/env.js"; + +import { Request, Response } from "express"; +// import ContactService from "../../../services/contact.js"; + +import { DtpController } from "../../../lib/controller.js"; + +export class ContactApiControllerV1 extends DtpController { + get name(): string { + return "ContactApiControllerV1"; + } + get slug(): string { + return "contactV1"; + } + get route(): string { + return "/contact"; + } + + constructor() { + super(); + } + + async start(): Promise { + const upload = this.createMulter(this.slug, { + dest: "/tmp/", + limits: { + fileSize: 1024 * 1024 * 10, + }, + }); + + const limiter = this.createLimiter( + 60 * 60, // 1-hour time window + 3, + "Too many messages sent. Please try again later.", + (req: Request, _res: Response) => { + if (!req.body || !req.body.email) { + return req.ip; + } + return req.ip + req.body.email; + } + ); + + this.router.post( + "/send-email", + limiter, + upload.single("attachment"), + this.postSendEmail.bind(this) + ); + } + + async postSendEmail(_req: Request, res: Response): Promise { + try { + // const jobs = [ + // ContactService.sendContactUsMessage( + // req, + // env.email.contact.to, + // `You have received a contact message at ${env.site.name}.` + // ), + // ContactService.sendContactUsMessage( + // req, + // req.body.email, + // `${env.site.name} has received your message. A representative will be in touch as soon as possible.` + // ), + // ]; + // await Promise.all(jobs); + + res.status(200).json({ success: true }); + } catch (error) { + this.log.error("failed to send email message", { error }); + res.status((error as Error).statusCode || 500).json({ + success: false, + message: (error as Error).message, + }); + } + } +} + +export default ContactApiControllerV1; diff --git a/gadget-code/src/controllers/api/v1/drone.ts b/gadget-code/src/controllers/api/v1/drone.ts new file mode 100644 index 0000000..f55a398 --- /dev/null +++ b/gadget-code/src/controllers/api/v1/drone.ts @@ -0,0 +1,99 @@ +// src/controllers/api/v1/drone.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Request, Response } from "express"; + +import DroneService from "../../../services/drone.ts"; +import UserService from "../../../services/user.ts"; + +import { DtpController } from "../../../lib/controller.js"; +import { populateDroneRegistrationById } from "@/controllers/lib/populators.js"; + +export class DroneApiControllerV1 extends DtpController { + get name(): string { + return "DroneApiControllerV1"; + } + get slug(): string { + return "ctrl:drone:v1"; + } + get route(): string { + return "/drone"; + } + + constructor() { + super(); + } + + async start(): Promise { + const multer = this.createMulter(this.slug, {}); + this.router.param("registrationId", populateDroneRegistrationById(this)); + + this.router.post( + "/registration", + multer.none(), + this.postRegistration.bind(this), + ); + + this.router.put( + "/registration/:registrationId/status", + this.putRegistrationStatus.bind(this), + ); + + this.router.delete( + "/registration/:registrationId", + this.deleteRegistration.bind(this), + ); + } + + async postRegistration(req: Request, res: Response): Promise { + try { + const user = await UserService.authenticate( + req.body.email, + req.body.password, + ); + const registration = await DroneService.register(user, req.body); + res.status(200).json({ + success: true, + data: registration, + }); + } catch (error) { + this.log.error("failed to process drone registration", { error }); + res.status((error as Error).statusCode || 500).json({ + success: false, + message: (error as Error).message, + }); + } + } + + async putRegistrationStatus(req: Request, res: Response): Promise { + try { + await DroneService.setStatus(res.locals.registration, req.body.status); + res.status(200).json({ success: true }); + } catch (error) { + this.log.error("failed to update drone status", { + _id: res.locals.registration._id.toHexString(), + error, + }); + res.status((error as Error).statusCode || 500).json({ + success: false, + message: (error as Error).message, + }); + } + } + + async deleteRegistration(_req: Request, res: Response): Promise { + try { + await DroneService.unregister(res.locals.registration); + res.status(200).json({ success: true }); + } catch (error) { + this.log.error("failed to unregister drone", { error }); + res.status((error as Error).statusCode || 500).json({ + success: false, + message: (error as Error).message, + }); + } + } +} + +export default DroneApiControllerV1; diff --git a/gadget-code/src/controllers/api/v1/user.ts b/gadget-code/src/controllers/api/v1/user.ts new file mode 100644 index 0000000..523fd00 --- /dev/null +++ b/gadget-code/src/controllers/api/v1/user.ts @@ -0,0 +1,40 @@ +// src/controllers/api/v1/user.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Request, Response } from "express"; + +import { DtpController } from "../../../lib/controller.js"; + +export class UserApiControllerV1 extends DtpController { + get name(): string { + return "UserApiControllerV1"; + } + get slug(): string { + return "userV1"; + } + get route(): string { + return "/user"; + } + + constructor() { + super(); + } + + async start(): Promise { + this.router.use(this.requireUser()); + + this.router.get("/", this.getUser.bind(this)); + } + + async getUser(req: Request, res: Response): Promise { + res.status(200).json({ + success: true, + data: { + user: req.user, + }, + }); + } +} + +export default UserApiControllerV1; diff --git a/gadget-code/src/controllers/auth.ts b/gadget-code/src/controllers/auth.ts new file mode 100644 index 0000000..97c3ac6 --- /dev/null +++ b/gadget-code/src/controllers/auth.ts @@ -0,0 +1,181 @@ +// src/controllers/auth.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +// import env from "../config/env.js"; +import { NextFunction, Request, Response } from "express"; + +import { DtpController } from "../lib/controller.js"; + +import UserService from "../services/user.js"; +import SessionService, { SessionType } from "../services/session.js"; + +export class AuthController extends DtpController { + get name(): string { + return "AuthController"; + } + get slug(): string { + return "auth"; + } + get route(): string { + return "/auth"; + } + + constructor() { + super(); + } + + async start(): Promise { + this.router.post("/sign-up", this.postSignUp.bind(this)); + this.router.post("/sign-in", this.postSignIn.bind(this)); + this.router.post("/renew-token", this.postRenewToken.bind(this)); + + this.router.get("/welcome", this.getWelcomeView.bind(this)); + this.router.get("/sign-up", this.getSignUpForm.bind(this)); + this.router.get("/sign-in", this.getSignInForm.bind(this)); + this.router.get("/sign-out", this.getSignOut.bind(this)); + } + + async postSignUp( + req: Request, + res: Response, + next: NextFunction + ): Promise { + try { + const user = await UserService.create( + req.body.email, + req.body.password, + req.body.displayName + ); + + req.session.user = { + _id: user._id, + email: user.email, + displayName: user.displayName, + flags: user.flags, + }; + + const token = await SessionService.createJsonWebToken(user); + req.session.token = token; + req.session.type = SessionType.WEB; + + req.session.save((err: Error) => { + if (err) { + return next(err); + } + res.status(201).json({ + success: true, + user: { + _id: user._id.toString(), + email: user.email, + displayName: user.displayName, + flags: user.flags, + }, + token, + }); + }); + } catch (error) { + this.log.error("failed to process new user sign-up", { error }); + return next(error); + } + } + + async postSignIn( + req: Request, + res: Response, + next: NextFunction + ): Promise { + try { + const user = await UserService.authenticate( + req.body.email, + req.body.password + ); + req.session.user = { + _id: user._id, + email: user.email, + displayName: user.displayName, + flags: user.flags, + }; + + const token = await SessionService.createJsonWebToken(user); + req.session.token = token; + req.session.type = SessionType.WEB; + + req.session.save((err: Error) => { + if (err) { + return next(err); + } + res.status(200).json({ + success: true, + user: { + _id: user._id.toString(), + email: user.email, + displayName: user.displayName, + flags: user.flags, + }, + token, + }); + }); + } catch (error) { + return next(error); + } + } + + async postRenewToken(req: Request, res: Response): Promise { + try { + const user = await SessionService.verifyJsonWebToken(req.body.token); + const token = await SessionService.createJsonWebToken(user); + req.session.token = token; + res.status(200).json({ success: true, token }); + } catch (error) { + this.log.error("failed to process token renewal", { error }); + res.status((error as Error).statusCode || 500).json({ + success: false, + message: (error as Error).message, + }); + } + } + + async getWelcomeView(_req: Request, res: Response): Promise { + res.status(200).json({ + success: true, + message: "Welcome to DTP Web Application", + }); + } + + async getSignUpForm(_req: Request, res: Response): Promise { + res.status(200).json({ + success: true, + form: "sign-up", + }); + } + async getSignInForm(_req: Request, res: Response): Promise { + res.status(200).json({ + success: true, + form: "sign-in", + }); + } + + async getSignOut( + req: Request, + res: Response, + next: NextFunction + ): Promise { + if (req.session.token) { + try { + await SessionService.revokeJsonWebToken(req.session.token); + } catch (error) { + this.log.error("failed to revoke JSON Web Token", { error }); + } + } + req.session.destroy((err: Error) => { + if (err) { + this.log.error("failed to destroy user session", { error: err }); + return next(err); + } + res.status(200).json({ success: true, message: "Signed out successfully" }); + }); + } +} + +export default AuthController; diff --git a/gadget-code/src/controllers/home.ts b/gadget-code/src/controllers/home.ts new file mode 100644 index 0000000..2944cc7 --- /dev/null +++ b/gadget-code/src/controllers/home.ts @@ -0,0 +1,57 @@ +// src/controllers/home.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { NextFunction, Request, Response } from "express"; + +import { DtpController } from "../lib/controller.js"; + +export class HomeController extends DtpController { + get name(): string { + return "HomeController"; + } + get slug(): string { + return "home"; + } + get route(): string { + return "/"; + } + + constructor() { + super(); + } + + async start(): Promise { + this.router.get("/", this.getHome.bind(this)); + } + + async getHome( + req: Request, + res: Response, + next: NextFunction + ): Promise { + try { + if (!req.user) { + res.status(200).json({ + success: true, + authenticated: false, + }); + return; + } + res.status(200).json({ + success: true, + authenticated: true, + user: { + _id: req.user._id.toString(), + email: req.user.email, + displayName: req.user.displayName, + }, + }); + } catch (error) { + this.log.error("failed to present the home page", { error }); + return next(error); + } + } +} + +export default HomeController; diff --git a/gadget-code/src/controllers/lib/populators.ts b/gadget-code/src/controllers/lib/populators.ts new file mode 100644 index 0000000..26fa1a5 --- /dev/null +++ b/gadget-code/src/controllers/lib/populators.ts @@ -0,0 +1,75 @@ +// src/controllers/lib/populators.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import assert from "node:assert"; + +import { Types } from "mongoose"; + +import { NextFunction, Request, RequestHandler, Response } from "express"; +import { DtpController } from "../../lib/controller.ts"; + +import DroneService from "../../services/drone.ts"; +import UserService from "../../services/user.ts"; + +export interface PopulateOptions { + requireObject?: boolean; +} + +export function populateUserById( + controller: DtpController, + options?: PopulateOptions, +): RequestHandler { + options = Object.assign({ requireObject: true }, options); + return async function ( + _req: Request, + res: Response, + next: NextFunction, + userId?: string, + ): Promise { + assert(userId, "User ID is required"); + try { + const userIdObj = Types.ObjectId.createFromHexString(userId); + res.locals.userAccount = await UserService.getById(userIdObj); + if (options.requireObject && !res.locals.user) { + const error = new Error("User not found"); + error.statusCode = 404; + throw error; + } + return next(); + } catch (error) { + controller.log.error("failed to populate User by ID", { + userId, + error, + }); + return next(error); + } + }; +} + +export function populateDroneRegistrationById( + controller: DtpController, + options?: PopulateOptions, +): RequestHandler { + options = Object.assign({ requireObject: true }, options); + return async function ( + _req: Request, + res: Response, + next: NextFunction, + registrationId?: string, + ): Promise { + assert(registrationId, "Drone registration ID is required"); + try { + const registrationIdObj = + Types.ObjectId.createFromHexString(registrationId); + res.locals.registration = await DroneService.getById(registrationIdObj); + return next(); + } catch (error) { + controller.log.error("failed to populate User by ID", { + registrationId, + error, + }); + return next(error); + } + }; +} diff --git a/gadget-code/src/controllers/user.ts b/gadget-code/src/controllers/user.ts new file mode 100644 index 0000000..4dbfd30 --- /dev/null +++ b/gadget-code/src/controllers/user.ts @@ -0,0 +1,84 @@ +// src/controllers/user.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { NextFunction, Request, Response } from "express"; + +import UserService from "../services/user.js"; +import { populateUserById } from "./lib/populators.js"; + +import { DtpController } from "../lib/controller.js"; + +export class UserController extends DtpController { + get name(): string { + return "UserController"; + } + get slug(): string { + return "user"; + } + get route(): string { + return "/user"; + } + + constructor() { + super(); + } + + async start(): Promise { + const requireAdmin = this.requireAdmin(); + + this.router.param("userId", populateUserById(this)); + + this.router.post("/:userId", requireAdmin, this.postUserUpdate.bind(this)); + + this.router.get("/:userId", requireAdmin, this.getUserView.bind(this)); + this.router.get("/", requireAdmin, this.getUserHome.bind(this)); + } + + async postUserUpdate( + req: Request, + res: Response, + next: NextFunction + ): Promise { + try { + await UserService.updateForUser(res.locals.userAccount, req.body); + res.status(200).json({ + success: true, + user: res.locals.userAccount, + }); + } catch (error) { + this.log.error("failed to update user", { error }); + next(error); + } + } + + async getUserView(_req: Request, res: Response): Promise { + res.status(200).json({ + success: true, + message: "User profile view", + }); + } + + async getUserHome( + req: Request, + res: Response, + next: NextFunction + ): Promise { + try { + const pagination = this.getPaginationParameters(req, 20); + + const query = req.query.q ? req.query.q.toString() : undefined; + const recentUsers = await UserService.getRecent(pagination, query); + + res.status(200).json({ + success: true, + users: recentUsers, + }); + } catch (error) { + this.log.error("failed to present User Admin home", { error }); + next(error); + } + } +} + +export default UserController; diff --git a/gadget-code/src/lib/code-session.ts b/gadget-code/src/lib/code-session.ts new file mode 100644 index 0000000..7bdc46f --- /dev/null +++ b/gadget-code/src/lib/code-session.ts @@ -0,0 +1,34 @@ +// src/lib/code-session.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Socket } from "socket.io"; +import { SocketSession, SocketSessionType } from "./socket-session"; +import { IUser } from "@/models/user"; + +export class CodeSession extends SocketSession { + protected type: SocketSessionType = SocketSessionType.Code; + + constructor(socket: Socket, user: IUser) { + super(socket, user); + } + + register() { + super.register(); + + this.socket.on("thinking", this.onThinking.bind(this)); + this.socket.on("response", this.onResponse.bind(this)); + this.socket.on("tool-call", this.onToolCall.bind(this)); + } + + async onThinking(): Promise {} + + async onResponse(): Promise {} + + async onToolCall(): Promise { + this.log.info("tool call received", { + params: { thing: 1 }, + response: "Woooo!", + }); + } +} diff --git a/gadget-code/src/lib/component.ts b/gadget-code/src/lib/component.ts new file mode 100644 index 0000000..6f226b1 --- /dev/null +++ b/gadget-code/src/lib/component.ts @@ -0,0 +1,8 @@ +// src/lib/component.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +export interface DtpComponent { + get name(): string; + get slug(): string; +} diff --git a/gadget-code/src/lib/controller.ts b/gadget-code/src/lib/controller.ts new file mode 100644 index 0000000..39aec88 --- /dev/null +++ b/gadget-code/src/lib/controller.ts @@ -0,0 +1,356 @@ +// src/lib/controller.js +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import env from "../config/env.js"; + +import path from "node:path"; +import { v4 as uuidv4 } from "uuid"; +import { rateLimit } from "express-rate-limit"; + +import { Types } from "mongoose"; +import { + Router, + Request, + Response, + NextFunction, + RequestHandler, +} from "express"; + +import multer from "multer"; + +import dayjs from "dayjs"; + +export interface CsrfTokenOptions { + name: string; + expiresMinutes: number; + allowReuse: boolean; +} + +import { ApiClientStatus } from "../models/api-client.js"; +import { CsrfToken, ICsrfToken } from "../models/csrf-token.js"; +import { IUser } from "../models/user.js"; + +import { DtpComponent } from "./component.js"; +import { DtpPaginationParameters } from "./pagination-parameters.js"; +import { DtpLog } from "./log.js"; + +import ApiClientService from "../services/api-client.js"; +import CryptoService from "../services/crypto.js"; + +/** + * The base class for all Web application controllers. A controller binds to an + * HTTP application REST route, and processes requests received on that route. + * + * This is usually accomplished by calling service methods congigured using + * request parameters, headers, and body content, then rendering HTML page or + * JSON object responses. + */ +export abstract class DtpController implements DtpComponent { + log: DtpLog; + router: Router; + + abstract get name(): string; + abstract get slug(): string; + abstract get route(): string; + + constructor() { + this.log = new DtpLog(this); + this.router = Router(); + this.router.use(this.middleware.bind(this)); + } + + abstract start(): Promise; + + /** + * Middleware common to all controllers that populates the view model with + * some commonly expected values. + * @param _req Request The request being processed. + * @param res Response The response being generated. + * @param next NextFunction The next function to call when done. + */ + middleware(req: Request, res: Response, next: NextFunction) { + res.locals.request = req; + res.locals.currentView = this.slug; + res.locals.signupEnabled = env.user.signupEnabled; + next(); + } + + hmacMiddleware() { + return async (req: Request, res: Response, next: NextFunction) => { + if (!req.rawBody) { + this.log.error("No raw body found"); + res.status(401).json({ + success: false, + message: "No raw body found", + }); + return; + } + + const apiClientId = req.headers["x-dtp-client-id"]; + if (!apiClientId) { + this.log.error("API Client ID is required"); + res.status(401).json({ + success: false, + message: "API Client ID is required", + }); + return; + } + + const apiClientIdObj = Types.ObjectId.createFromHexString( + apiClientId as string + ); + const apiClient = await ApiClientService.getById(apiClientIdObj); + if (!apiClient) { + this.log.error("API client not found", { _id: apiClientId }); + res.status(404).json({ + success: false, + message: "API Client not found", + }); + return; + } + + if (apiClient.status !== ApiClientStatus.Active) { + this.log.error("inactive API client", { + _id: apiClientId, + status: apiClient.status, + }); + res.status(403).json({ + success: false, + message: "API client is not active", + }); + return; + } + + const hmacHeader = req.headers["x-dtp-hmac"]; + if (!hmacHeader) { + this.log.error("No HMAC header found"); + res.status(401).json({ + success: false, + message: "No HMAC header found", + }); + return; + } + + const hmacBody = CryptoService.createHmac(apiClient.secret, req.rawBody); + if (hmacHeader !== hmacBody) { + this.log.error("HMAC header does not match body", { + hmacHeader, + hmacBody, + }); + res.status(401).json({ + success: false, + message: "HMAC header does not match body", + }); + return; + } + + this.log.debug("HMAC header matches body"); + + next(); + }; + } + + requireUser(): RequestHandler { + return async ( + req: Request, + res: Response, + next: NextFunction + ): Promise => { + if (!req.user) { + res.status(403).json({ success: false, message: "Authentication required" }); + return; + } + next(); + }; + } + + requireAdmin(): RequestHandler { + return async ( + req: Request, + res: Response, + next: NextFunction + ): Promise => { + const user: IUser | null | undefined = req.user; + if (!user || !user.flags.isAdmin) { + res.status(403).json({ success: false, message: "Admin access required" }); + return; + } + next(); + }; + } + + async loadChild(filename: string): Promise { + const pathObj = path.parse(filename); + this.log.info("loading child controller", { + script: pathObj.name, + path: filename, + }); + + const ControllerClass = (await import(filename)).default; + if (!ControllerClass) { + this.log.error( + "failed to receive a default export class from child controller", + { + script: pathObj.name, + } + ); + throw new Error("Child controller failed to provide a default export"); + } + + const controller: DtpController = new ControllerClass(ControllerClass); + + this.log.info("starting child controller", { + name: ControllerClass.name, + }); + await controller.start(); + + const childRoute = this.route + controller.route; + this.log.info("mounting child controller", { + name: ControllerClass.name, + childRoute, + }); + this.router.use(controller.route, controller.router); + + return controller; + } + + /** + * Retrieves set pagination parameters from the request. + * @param req Request The request being processed. + * @param maxPerPage number The maximum number of records to display per page. + * @param pageParamName string The name of the page index parameter. + * @param cppParamName string The name of the count-per-page parameter. + * @returns A new DtpPaginationParameters instance containing pagination + * parameter values. + */ + getPaginationParameters( + req: Request, + maxPerPage: number, + pageParamName: string = "p", + cppParamName: string = "cpp" + ): DtpPaginationParameters { + const pageParam: string = req.query[pageParamName] + ? (req.query[pageParamName] as string) + : "1"; + const cppParam: string = req.query[cppParamName] + ? (req.query[cppParamName] as string) + : maxPerPage.toString(); + const pagination: DtpPaginationParameters = { + p: parseInt(pageParam, 10), + skip: 0, + cpp: parseInt(cppParam, 10), + }; + if (pagination.p < 1) { + pagination.p = 1; + } + if (pagination.cpp > maxPerPage) { + pagination.cpp = maxPerPage; + } + pagination.skip = (pagination.p - 1) * pagination.cpp; + return pagination; + } + + createLimiter( + seconds: number, + limit: number, + message: string, + keyGenerator?: (req: Request, res: Response) => string + ): RequestHandler { + return rateLimit({ + windowMs: seconds * 1000, + limit, + message: message || "Too many requests. Please try again later.", + standardHeaders: "draft-8", + legacyHeaders: false, + statusCode: 429, + keyGenerator, + }); + } + + /** + * Creates a `multipart/form-encoded` HTTP POST processor using the + * [multer](https://www.npmjs.com/package/multer) estension. + * @param slug string The path slug into which files will be stored. + * @param options multer.Options Options for the form processor. + * @returns An ExpressJS middleware that enables a route to receive files. + */ + createMulter(slug: string, options: multer.Options): multer.Multer { + if (!!slug && typeof slug === "object") { + options = slug; + slug = this.slug; + } else { + slug = slug || this.slug; + } + + options = Object.assign( + { + dest: path.join(env.https.uploadPath, slug), + }, + options || {} + ); + + return multer(options); + } + + /** + * Generates a CSRF token used in forms to help prevent XSS attacks. + * @param req Request The request for which a CSRF token will be generated. + * @param options CsrfTokenOptions The options to be used when creating the + * token. + * @returns The new CsrfToken for use. + */ + async createCsrfToken( + req: Request, + options: CsrfTokenOptions + ): Promise { + const NOW = new Date(); + + options = Object.assign( + { + expiresMinutes: 30, + }, + options + ); + + if (options.expiresMinutes > 120) { + const e = new Error("CSRF tokens have a max lifespan of 120 minutes"); + e.statusCode = 400; + throw e; + } + + const token = new CsrfToken(); + token.created = NOW; + token.expires = dayjs(NOW).add(options.expiresMinutes, "minute").toDate(); + if (req.user) { + token.user = req.user._id; + } + if (req.ip) { + token.ip = req.ip; + } + token.token = uuidv4(); + await token.save(); + + const tokenObj = token.toObject(); + tokenObj.name = `csrf-token-${options.name}`; + + return tokenObj; + } + + /** + * Force-save the current user session and ensure it's written before + * proceeding. + * @param req Express.Request The request being processed. + * @returns A promise that resolves when the session is saved. + */ + async saveSession(req: Request): Promise { + return new Promise((resolve, reject) => { + req.session.save((err) => { + if (err) { + return reject(err); + } + resolve(); + }); + }); + } +} diff --git a/gadget-code/src/lib/db.ts b/gadget-code/src/lib/db.ts new file mode 100644 index 0000000..701afd6 --- /dev/null +++ b/gadget-code/src/lib/db.ts @@ -0,0 +1,15 @@ +// src/lib/db.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import mongoose from "mongoose"; + +import { DtpLog } from "./log.js"; +const log = new DtpLog({ name: "db", slug: "db" }); + +const DB_URL = `mongodb://${process.env.DTP_MONGODB_HOST}/${process.env.DTP_MONGODB_DATABASE}`; + +log.info("connecting to MongoDB", DB_URL); +export const db = mongoose.connect(DB_URL); + +export default db; diff --git a/gadget-code/src/lib/drone-session.ts b/gadget-code/src/lib/drone-session.ts new file mode 100644 index 0000000..8e06277 --- /dev/null +++ b/gadget-code/src/lib/drone-session.ts @@ -0,0 +1,22 @@ +// src/lib/drone-session.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { IDroneRegistration } from "@/models/drone-registration"; +import { SocketSession, SocketSessionType } from "./socket-session"; +import { Socket } from "socket.io"; +import { IUser } from "@/models/user"; + +export class DroneSession extends SocketSession { + protected type: SocketSessionType = SocketSessionType.Drone; + registration: IDroneRegistration; + + constructor(socket: Socket, registration: IDroneRegistration) { + super(socket, registration.user as IUser); + this.registration = registration; + } + + register() { + super.register(); + } +} diff --git a/gadget-code/src/lib/log-file.ts b/gadget-code/src/lib/log-file.ts new file mode 100644 index 0000000..66a3587 --- /dev/null +++ b/gadget-code/src/lib/log-file.ts @@ -0,0 +1,60 @@ +// src/lib/log-file.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import fs from "node:fs"; +import path from "node:path"; + +import numeral from "numeral"; + +import { Writable, WritableOptions } from "stream"; + +type StreamCallback = (error?: Error | null) => void; + +export interface DtpLogFileOptions extends WritableOptions { + basePath: string; + name: string; + maxWritesPerFile: number; + maxFiles: number; +} + +export class DtpLogFile extends Writable { + options: DtpLogFileOptions; + file?: fs.WriteStream; + + fileIdx: number = 0; + writeCount: number = 0; + + constructor(options: DtpLogFileOptions) { + super(options); + this.options = options; + } + + open(): void { + fs.mkdirSync(this.options.basePath, { recursive: true }); + const filename = path.join( + this.options.basePath, + `${this.options.name}.${numeral(this.fileIdx).format("000")}.log` + ); + this.file = fs.createWriteStream(filename, { encoding: "utf-8" }); + this.writeCount = 0; + } + + _write( + chunk: unknown, + encoding: BufferEncoding, + callback: StreamCallback + ): boolean { + if (!this.file) { + return false; + } + if (this.writeCount > this.options.maxWritesPerFile) { + this.file.close(); + if (++this.fileIdx > this.options.maxFiles) { + this.fileIdx = 0; + } + this.open(); + } + return this.file.write(chunk, encoding, callback); + } +} diff --git a/gadget-code/src/lib/log-transport-console.ts b/gadget-code/src/lib/log-transport-console.ts new file mode 100644 index 0000000..1229940 --- /dev/null +++ b/gadget-code/src/lib/log-transport-console.ts @@ -0,0 +1,62 @@ +// src/lib/log-transport-console.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import * as util from "node:util"; + +import dayjs from "dayjs"; +import color from "ansicolor"; + +import { DtpLogLevel } from "./log.js"; +import { DtpLogTransport } from "./log-transport.js"; +import { DtpComponent } from "./component.ts"; + +export class DtpLogTransportConsole implements DtpLogTransport { + async writeLog( + timestamp: Date, + component: DtpComponent, + level: DtpLogLevel, + message: string, + metadata?: unknown + ): Promise { + let clevel = level.padEnd(5); + switch (level) { + case "debug": + clevel = color.darkGray(clevel); + break; + case "info": + clevel = color.green(clevel); + break; + case "warn": + clevel = color.yellow(clevel); + break; + case "alert": + clevel = color.red(clevel); + break; + case "error": + clevel = color.bgRed.white(clevel); + break; + case "crit": + clevel = color.bgRed.yellow(clevel); + break; + case "fatal": + clevel = color.bgRed.darkGray(clevel); + break; + } + + const ccomponent = color.cyan(component.name); + const ctimestamp = color.darkGray( + dayjs(timestamp).format("YYYY-MM-DD HH:mm:ss.SSS") + ); + const cmessage = color.darkGray(message); + + if (metadata) { + console.log( + `${ctimestamp} ${clevel} ${ccomponent} ${cmessage}`, + util.inspect(metadata, false, Infinity, true) + ); + } else { + console.log(`${ctimestamp} ${clevel} ${ccomponent} ${cmessage}`); + } + } +} diff --git a/gadget-code/src/lib/log-transport-file.ts b/gadget-code/src/lib/log-transport-file.ts new file mode 100644 index 0000000..1022687 --- /dev/null +++ b/gadget-code/src/lib/log-transport-file.ts @@ -0,0 +1,42 @@ +// src/lib/log-transport-file.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Writable } from "node:stream"; + +import { DtpLogLevel } from "./log.js"; +import { DtpLogTransport } from "./log-transport.js"; +import { DtpComponent } from "./component.ts"; + +export class DtpLogTransportFile implements DtpLogTransport { + file: Writable; + + constructor(file: Writable) { + this.file = file; + } + + async writeLog( + timestamp: Date, + component: DtpComponent, + level: DtpLogLevel, + message: string, + metadata?: unknown + ): Promise { + return new Promise((resolve, reject) => { + const logMessage = JSON.stringify({ + timestamp, + component, + level, + message, + metadata, + }); + const chunk = Buffer.from(logMessage + "\r\n"); + this.file.write(chunk, (error: Error | null | undefined): void => { + if (error) { + return reject(error); + } + return resolve(); + }); + }); + } +} diff --git a/gadget-code/src/lib/log-transport.ts b/gadget-code/src/lib/log-transport.ts new file mode 100644 index 0000000..a7eaee5 --- /dev/null +++ b/gadget-code/src/lib/log-transport.ts @@ -0,0 +1,16 @@ +// src/lib/log-transport.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { DtpComponent } from "./component.ts"; +import { DtpLogLevel } from "./log.js"; + +export abstract class DtpLogTransport { + abstract writeLog( + timestamp: Date, + component: DtpComponent, + level: DtpLogLevel, + message: string, + metadata?: unknown + ): Promise; +} diff --git a/gadget-code/src/lib/log.ts b/gadget-code/src/lib/log.ts new file mode 100644 index 0000000..bb79ab0 --- /dev/null +++ b/gadget-code/src/lib/log.ts @@ -0,0 +1,81 @@ +// src/lib/log.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import env from "../config/env.js"; + +import { DtpComponent } from "./component.ts"; +import { DtpLogTransportConsole } from "./log-transport-console.js"; +import { DtpLogTransportFile } from "./log-transport-file.js"; +import { DtpLogTransport } from "./log-transport.js"; +import { DtpLogFile } from "./log-file.js"; + +export enum DtpLogLevel { + debug = "debug", + info = "info", + warn = "warn", + alert = "alert", + error = "error", + crit = "crit", + fatal = "fatal", +} + +export class DtpLog { + component: DtpComponent; + transports: Array = []; + + constructor(component: DtpComponent, file?: DtpLogFile) { + this.component = component; + + if (env.log.console.enabled) { + this.transports.push(new DtpLogTransportConsole()); + } + if (env.log.file.enabled && file) { + this.transports.push(new DtpLogTransportFile(file)); + } + } + + async debug(message: string, metadata?: unknown) { + if (!env.log.levels.debug) { + return; + } + return this.writeLog(DtpLogLevel.debug, message, metadata); + } + + async info(message: string, metadata?: unknown) { + if (!env.log.levels.info) { + return; + } + return this.writeLog(DtpLogLevel.info, message, metadata); + } + + async warn(message: string, metadata?: unknown) { + if (!env.log.levels.warn) { + return; + } + return this.writeLog(DtpLogLevel.warn, message, metadata); + } + + async alert(message: string, metadata?: unknown) { + return this.writeLog(DtpLogLevel.alert, message, metadata); + } + + async error(message: string, metadata?: unknown) { + return this.writeLog(DtpLogLevel.error, message, metadata); + } + + async crit(message: string, metadata?: unknown) { + return this.writeLog(DtpLogLevel.crit, message, metadata); + } + + async fatal(message: string, metadata?: unknown) { + this.writeLog(DtpLogLevel.fatal, message, metadata); + } + + async writeLog(level: DtpLogLevel, message: string, metadata?: unknown) { + const NOW = new Date(); + for (const transport of this.transports) { + transport.writeLog(NOW, this.component, level, message, metadata); + } + } +} diff --git a/gadget-code/src/lib/ollama.ts b/gadget-code/src/lib/ollama.ts new file mode 100644 index 0000000..de4de68 --- /dev/null +++ b/gadget-code/src/lib/ollama.ts @@ -0,0 +1,5 @@ +// src/lib/ollama.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +export { createAiApi } from "@gadget/ai"; \ No newline at end of file diff --git a/gadget-code/src/lib/pagination-parameters.ts b/gadget-code/src/lib/pagination-parameters.ts new file mode 100644 index 0000000..9857261 --- /dev/null +++ b/gadget-code/src/lib/pagination-parameters.ts @@ -0,0 +1,9 @@ +// src/lib/pagination-parameters.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +export class DtpPaginationParameters { + p: number = 1; // page number + cpp: number = 20; // count per page + skip: number = 0; +} diff --git a/gadget-code/src/lib/process.ts b/gadget-code/src/lib/process.ts new file mode 100644 index 0000000..dbc752e --- /dev/null +++ b/gadget-code/src/lib/process.ts @@ -0,0 +1,17 @@ +// src/lib/process.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { DtpComponent } from "./component.js"; +import { DtpLog } from "./log.js"; + +export abstract class DtpProcess implements DtpComponent { + log: DtpLog; + + abstract get name(): string; + abstract get slug(): string; + + constructor() { + this.log = new DtpLog(this); + } +} diff --git a/gadget-code/src/lib/redis.ts b/gadget-code/src/lib/redis.ts new file mode 100644 index 0000000..b05bba2 --- /dev/null +++ b/gadget-code/src/lib/redis.ts @@ -0,0 +1,19 @@ +// src/lib/redis.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import env from "../config/env.js"; +import { Redis } from "ioredis"; + +import { DtpLog } from "./log.js"; +const log = new DtpLog({ name: "redis", slug: "redis" }); + +log.info("connecting to Redis", { + host: env.redis.host, + port: env.redis.port, +}); + +const redis = new Redis(env.redis); +redis.setMaxListeners(64); + +export default redis; diff --git a/gadget-code/src/lib/service.ts b/gadget-code/src/lib/service.ts new file mode 100644 index 0000000..aa3c13a --- /dev/null +++ b/gadget-code/src/lib/service.ts @@ -0,0 +1,22 @@ +// src/lib/service.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +// import env from "../config/env.js"; + +import { DtpComponent } from "./component.js"; +import { DtpLog } from "./log.js"; + +export abstract class DtpService implements DtpComponent { + log: DtpLog; + + abstract get name(): string; + abstract get slug(): string; + + constructor() { + this.log = new DtpLog(this); + } + + abstract start(): Promise; + abstract stop(): Promise; +} diff --git a/gadget-code/src/lib/socket-session.ts b/gadget-code/src/lib/socket-session.ts new file mode 100644 index 0000000..24231d7 --- /dev/null +++ b/gadget-code/src/lib/socket-session.ts @@ -0,0 +1,48 @@ +// src/lib/socket-session.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Socket } from "socket.io"; +import { IUser } from "@/models/user"; +import { DtpLog } from "./log"; + +export enum SocketSessionType { + Code = "code", + Drone = "drone", +} + +export abstract class SocketSession { + protected log: DtpLog; + protected socket: Socket; + protected _user: IUser; + + get user() { + return this._user; + } + + protected abstract type: SocketSessionType; + + constructor(socket: Socket, user: IUser) { + this.log = new DtpLog({ + name: "SocketSession", + slug: "lib:socket-session", + }); + this.socket = socket; + this._user = user; + } + + /** + * Registers socket event and message handlers intended to be processed by all + * socket sessions of all types. + */ + register() { + this.socket.on("disconnect", this.onSocketDisconnect.bind(this)); + } + + async onSocketDisconnect(): Promise { + this.log.info("socket disconnected", { + id: this.socket.id, + user: this.user, + }); + } +} diff --git a/gadget-code/src/lib/validators.ts b/gadget-code/src/lib/validators.ts new file mode 100644 index 0000000..6e9d015 --- /dev/null +++ b/gadget-code/src/lib/validators.ts @@ -0,0 +1,42 @@ +// src/lib/validators.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +/** + * Validates if a given string is a valid Firebase user ID. + * + * A valid Firebase user ID must meet the following criteria: + * 1. Must be between 6 and 50 characters long (inclusive) + * 2. Can only contain alphanumeric characters, underscore (_), dot (.), + * hyphen (-), plus (+), and slash (/) characters + * 3. Cannot start or end with a special character + * + * @param {string} userId - The string to validate as a Firebase user ID + * @returns {boolean} True if the string is a valid Firebase user ID, false + * otherwise + */ +export function isValidFirebaseUserId(userId: string): boolean { + // Check length requirements + const minLength = 6; + const maxLength = 50; + + if ( + typeof userId !== "string" || + userId.length < minLength || + userId.length > maxLength + ) { + return false; + } + + // Define allowed special characters + const specialChars = ["_", ".", "-", "+", "/"]; + + // Regular expression to match the Firebase user ID pattern + const regex = new RegExp( + `^[A-Za-z0-9]+(${specialChars + .map((c) => `\\${c}`) + .join("|")}[A-Za-z0-9]*)*$` + ); + + return regex.test(userId); +} diff --git a/gadget-code/src/lib/worker.ts b/gadget-code/src/lib/worker.ts new file mode 100644 index 0000000..a6e4dd4 --- /dev/null +++ b/gadget-code/src/lib/worker.ts @@ -0,0 +1,32 @@ +// src/lib/controller.js +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import env from "../config/env.js"; +import BullQueue from "bull"; + +import { DtpLog } from "./log.js"; +import { DtpComponent } from "./component.js"; + +export abstract class DtpWorker implements DtpComponent { + log: DtpLog; + jobQueue: BullQueue.Queue | undefined; + + abstract get name(): string; + abstract get slug(): string; + abstract get queueName(): string; + + constructor() { + this.log = new DtpLog(this); + } + + async start(): Promise { + this.log.info("Starting worker"); + this.log.info("connecting to Bull queue on Redis", { + queueName: this.queueName, + }); + this.jobQueue = new BullQueue(this.queueName, { redis: env.redis }); + } + + abstract stop(): Promise; +} diff --git a/gadget-code/src/models/ai-provider.ts b/gadget-code/src/models/ai-provider.ts new file mode 100644 index 0000000..2b9859e --- /dev/null +++ b/gadget-code/src/models/ai-provider.ts @@ -0,0 +1,124 @@ +// src/models/ai-provider.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Schema, Document, model } from "mongoose"; + +export type AiApiType = "ollama" | "openai"; + +/** + * Normalised capability flags stored with each model record. These are + * populated during model refresh from provider-specific metadata and drive + * slot-based filtering in the UI (e.g. only canCallTools models for Agent). + */ +export interface IAiModelSettings { + temperature?: number; + topP?: number; + topK?: number; + numCtx?: number; +} + +export interface IAiModelCapabilities { + /** Model supports structured function / tool calling via the API. */ + canCallTools: boolean; + /** Model accepts image inputs (multimodal / vision). */ + hasVision: boolean; + /** Model can produce vector embeddings (required for the Vector slot). */ + hasEmbedding: boolean; + /** Model has an explicit reasoning / thinking phase (e.g. o1, QwQ). */ + hasThinking: boolean; + /** Model is instruction-tuned / chat-tuned (as opposed to a base model). */ + isInstructTuned: boolean; +} + +export const AiModelCapabilitiesSchema = new Schema( + { + canCallTools: { type: Boolean, default: false }, + hasVision: { type: Boolean, default: false }, + hasEmbedding: { type: Boolean, default: false }, + hasThinking: { type: Boolean, default: false }, + isInstructTuned: { type: Boolean, default: false }, + }, + { _id: false }, +); + +export interface IAiModel { + id: string; + name: string; + /** + * Raw parameter count in billions (float). Use parameterLabel for display. + */ + parameterCount?: number; + /** + * Human-readable parameter size label sourced directly from the provider, + * e.g. "7b", "70b", "3.8b". + */ + parameterLabel?: string; + contextWindow?: number; + capabilities: IAiModelCapabilities; + settings?: IAiModelSettings; +} + +export const AiModelSettingsSchema = new Schema( + { + temperature: { type: Number }, + topP: { type: Number }, + topK: { type: Number }, + numCtx: { type: Number }, + }, + { _id: false }, +); + +export const AiModelSchema = new Schema( + { + id: { type: String, required: true }, + name: { type: String, required: true }, + parameterCount: { type: Number }, + parameterLabel: { type: String }, + contextWindow: { type: Number }, + capabilities: { + type: AiModelCapabilitiesSchema, + default: () => ({ + canCallTools: false, + hasVision: false, + hasEmbedding: false, + hasThinking: false, + isInstructTuned: false, + }), + }, + settings: { + type: AiModelSettingsSchema, + default: undefined, + }, + }, + { _id: false }, +); + +export interface IAiProvider extends Document { + name: string; + apiType: AiApiType; + baseUrl: string; + apiKey: string; + enabled: boolean; + models: IAiModel[]; + lastModelRefresh: Date; +} + +export const AiProviderSchema = new Schema({ + name: { type: String, required: true }, + apiType: { type: String, enum: ["ollama", "openai"], required: true }, + baseUrl: { type: String, required: true }, + apiKey: { type: String, required: true, select: false }, + enabled: { type: Boolean, default: true, required: true }, + models: { type: [AiModelSchema], default: [], required: true }, + lastModelRefresh: { type: Date, default: Date.now }, +}); + +AiProviderSchema.index({ name: 1 }, { unique: true }); + +export const AiProvider = model("AiProvider", AiProviderSchema); +export default AiProvider; + +// Note: Index synchronization is now handled during application startup +// to ensure the database connection is established first. +// See src/lib/db.ts for the syncDatabaseIndexes function. diff --git a/gadget-code/src/models/api-client-log.ts b/gadget-code/src/models/api-client-log.ts new file mode 100644 index 0000000..b85def3 --- /dev/null +++ b/gadget-code/src/models/api-client-log.ts @@ -0,0 +1,43 @@ +// src/models/api-client-log.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Types, Schema, Document, model } from "mongoose"; + +import { DtpLog } from "../lib/log.js"; +import { IApiClient } from "./api-client.js"; +const log = new DtpLog({ + name: "ApiClientModel", + slug: "apiClient", +}); + +export interface IApiClientLog extends Document { + _id: Types.ObjectId; + client: IApiClient | Types.ObjectId; + createdAt: Date; + method: string; + url: string; +} +export const ApiClientLogSchema = new Schema({ + client: { type: Types.ObjectId, required: true, index: 1, ref: "ApiClient" }, + createdAt: { + type: Date, + default: Date.now, + required: true, + index: -1, + expires: "30d", + }, + method: { type: String, required: true }, + url: { type: String, required: true }, +}); + +export const ApiClientLog = model( + "ApiClientLog", + ApiClientLogSchema +); +export default ApiClientLog; + +(async () => { + log.info("Syncing indexes..."); + await ApiClientLog.syncIndexes(); +})(); diff --git a/gadget-code/src/models/api-client.ts b/gadget-code/src/models/api-client.ts new file mode 100644 index 0000000..8db3c54 --- /dev/null +++ b/gadget-code/src/models/api-client.ts @@ -0,0 +1,49 @@ +// src/models/api-client.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Types, Schema, Document, model } from "mongoose"; + +import { DtpLog } from "../lib/log.js"; +const log = new DtpLog({ + name: "ApiClientModel", + slug: "apiClient", +}); + +export enum ApiClientStatus { + Active = "active", + Inactive = "inactive", + Archived = "archived", +} + +export interface IApiClient extends Document { + _id: Types.ObjectId; + createdAt: Date; + updatedAt: Date; + status: ApiClientStatus; + name: string; + description?: string; + secret: string; +} +const ApiClientSchema = new Schema({ + createdAt: { type: Date, required: true }, + updatedAt: { type: Date, required: true }, + status: { + type: String, + enum: ApiClientStatus, + default: ApiClientStatus.Active, + required: true, + index: 1, + }, + name: { type: String, required: true }, + description: { type: String }, + secret: { type: String, required: true }, +}); + +export const ApiClient = model("ApiClient", ApiClientSchema); +export default ApiClient; + +(async () => { + log.info("Syncing indexes..."); + await ApiClient.syncIndexes(); +})(); diff --git a/gadget-code/src/models/chat-session.ts b/gadget-code/src/models/chat-session.ts new file mode 100644 index 0000000..2f067e7 --- /dev/null +++ b/gadget-code/src/models/chat-session.ts @@ -0,0 +1,66 @@ +// src/models/chat-session.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Types, Schema, Document, model } from "mongoose"; + +import { IUser } from "./user.js"; +import { IProject } from "./project.js"; + +export enum ChatSessionMode { + Plan = "plan", // for planning and brainstorming + Build = "build", // for building and coding + Test = "test", // for testing and debugging + Ship = "ship", // for finalizing and shipping + Develop = "dev", // for working on the Gadget Code harness itself +} + +export interface IChatSessionPin { + _id?: Types.ObjectId; + content: string; +} +export const ChatSessionPinSchema = new Schema({ + content: { type: String, required: true }, +}); + +export interface IChatSession extends Document { + createdAt: Date; + lastMessageAt?: Date; + user: IUser | Types.ObjectId; + project: IProject | Types.ObjectId; + name: string; + mode: ChatSessionMode; + stats: { + turnCount: number; + toolCallCount: number; + inputTokens: number; + outputTokens: number; + }; + pins: IChatSessionPin[]; +} +export const ChatSessionSchema = new Schema({ + createdAt: { type: Date, default: Date.now, required: true }, + lastMessageAt: { type: Date }, + user: { type: Types.ObjectId, required: true, index: 1, ref: "User" }, + project: { type: Types.ObjectId, required: false, index: 1, ref: "Project" }, + name: { type: String, default: "New Session", required: true }, + mode: { + type: String, + enum: ChatSessionMode, + default: ChatSessionMode.Build, + required: true, + }, + stats: { + turnCount: { type: Number, default: 0, required: true }, + toolCallCount: { type: Number, default: 0, required: true }, + inputTokens: { type: Number, default: 0, required: true }, + outputTokens: { type: Number, default: 0, required: true }, + }, + pins: { type: [ChatSessionPinSchema], default: [], required: true }, +}); + +export const ChatSession = model( + "ChatSession", + ChatSessionSchema, +); +export default ChatSession; diff --git a/gadget-code/src/models/chat-turn.ts b/gadget-code/src/models/chat-turn.ts new file mode 100644 index 0000000..f01768e --- /dev/null +++ b/gadget-code/src/models/chat-turn.ts @@ -0,0 +1,146 @@ +// src/models/chat-turn.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Types, Schema, Document, model } from "mongoose"; + +import { IUser } from "./user.js"; +import { IProject } from "./project.js"; +import { ChatSessionMode, IChatSession } from "./chat-session.js"; +import { IAiProvider } from "./ai-provider.js"; + +export enum ChatTurnStatus { + Processing = "processing", + Finished = "finished", + Error = "error", +} + +export interface IChatTurnStats { + toolCallCount: number; // total number of tool functions called this turn + inputTokens: number; // total number of input tokens processed this turn + thinkingTokenCount: number; // total number of thinking tokens generated this turn + responseTokens: number; // total number of response/output tokens generated this turn + durationMs: number; // total turn runtime in seconds + durationLabel: string; // total turn runtime as hh:mm:ss +} +export const ChatTurnStatsSchema = new Schema({ + toolCallCount: { type: Number, default: 0, required: true }, + inputTokens: { type: Number, default: 0, required: true }, + thinkingTokenCount: { type: Number, default: 0, required: true }, + responseTokens: { type: Number, default: 0, required: true }, + durationMs: { type: Number, default: 0, required: true }, + durationLabel: { type: String, default: "pending", required: true }, +}); + +export interface IChatToolCall { + name: string; // tool function name being called + parameters: string; // JSON.stringify of input parameters + response: string; // the tool's response +} +export const ChatToolCallSchema = new Schema({ + name: { type: String, required: true }, + parameters: { type: String, required: false }, + response: { type: String, required: false }, +}); + +export interface IChatSubagentProcess { + prompt: string; + thinking?: string; + response: string; + toolCalls: IChatToolCall[]; + stats: IChatTurnStats; +} +export const ChatSubagentProcessSchema = new Schema({ + prompt: { type: String, required: true }, + thinking: { type: String, required: false }, + response: { type: String, required: false }, + toolCalls: { type: [ChatToolCallSchema], default: [], required: true }, + stats: { type: ChatTurnStatsSchema, default: {}, required: true }, +}); + +/** + * A chat turn is a single prompt/response pair with tool call accounting. It + * stores all data generated by one run of the Agentic Workflow Loop by a Gadget + * Drone process. + */ +export interface IChatTurn extends Document { + _id: Types.ObjectId; + createdAt: Date; + user: IUser | Types.ObjectId; + project: IProject | Types.ObjectId; + session: IChatSession | Types.ObjectId; + provider: IAiProvider | Types.ObjectId; + llm: string; // id/name of the model used to process the prompt + mode: ChatSessionMode; // session mode for this turn/prompt + status: ChatTurnStatus; + prompt: string; + thinking?: string; + response?: string; + toolCalls: IChatToolCall[]; + subagents: IChatSubagentProcess[]; // subagents used while processing this turn + stats: IChatTurnStats; +} +export const ChatTurnSchema = new Schema({ + createdAt: { type: Date, default: Date.now, required: true }, + user: { type: Types.ObjectId, required: true, ref: "User" }, + project: { type: Types.ObjectId, required: false, ref: "Project" }, + session: { type: Types.ObjectId, required: true, ref: "ChatSession" }, + provider: { type: Types.ObjectId, required: true, ref: "AiProvider" }, + llm: { type: String, required: true }, // id/name of the model used to process the prompt + mode: { + type: String, + enum: ChatSessionMode, + default: ChatSessionMode.Build, + required: true, + }, + status: { + type: String, + enum: ChatTurnStatus, + default: ChatTurnStatus.Processing, + required: true, + }, + prompt: { type: String, required: true }, + thinking: { type: String, required: false }, + response: { type: String, required: false }, + toolCalls: { type: [ChatToolCallSchema], default: [], required: true }, + subagents: { type: [ChatSubagentProcessSchema], default: [], required: true }, + stats: { + toolCallCount: { type: Number, default: 0, required: true }, + inputTokens: { type: Number, default: 0, required: true }, + thinkingTokens: { type: Number, default: 0, required: true }, + responseTokens: { type: Number, default: 0, required: true }, + durationMs: { type: Number, default: 0, required: true }, + durationLabel: { type: String, default: "pending", required: true }, + }, +}); + +ChatTurnSchema.index( + { + user: 1, + project: 1, + session: 1, + }, + { + name: "chat-turn-user-project-session-index", + }, +); + +ChatTurnSchema.index( + { + user: 1, + prompt: "text", + thinking: "text", + response: "text", + }, + { + weights: { + prompt: 10, + response: 5, + thinking: 1, + }, + name: "chat-turn-user-text-index", + }, +); + +export const ChatTurn = model("ChatTurn", ChatTurnSchema); +export default ChatTurn; diff --git a/gadget-code/src/models/csrf-token.ts b/gadget-code/src/models/csrf-token.ts new file mode 100644 index 0000000..3e771a8 --- /dev/null +++ b/gadget-code/src/models/csrf-token.ts @@ -0,0 +1,50 @@ +// src/models/csrf-token.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Schema, Types, model } from "mongoose"; +import { IUser } from "./user.js"; + +import { DtpLog } from "../lib/log.js"; +const log = new DtpLog({ + name: "CsrfTokenModel", + slug: "csrfToken", +}); + +export interface ICsrfToken { + _id: Types.ObjectId; + created: Date; + expires: Date; + claimed?: Date; + token: string; + user?: IUser | Types.ObjectId; + ip: string; + + /* + * not saved + */ + name?: string; +} + +const CsrfTokenSchema = new Schema({ + created: { + type: Date, + required: true, + default: Date.now, + index: -1, + expires: "72h", + }, + expires: { type: Date, required: true, default: Date.now, index: -1 }, + claimed: { type: Date }, + token: { type: String, required: true, index: 1 }, + user: { type: Types.ObjectId, ref: "User" }, + ip: { type: String, required: true }, +}); + +export const CsrfToken = model("CsrfToken", CsrfTokenSchema); +export default CsrfToken; + +(async () => { + log.info("Syncing indexes..."); + await CsrfToken.syncIndexes(); +})(); diff --git a/gadget-code/src/models/drone-monitor.ts b/gadget-code/src/models/drone-monitor.ts new file mode 100644 index 0000000..4601e4b --- /dev/null +++ b/gadget-code/src/models/drone-monitor.ts @@ -0,0 +1,77 @@ +// src/models/drone-monitor.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Types, Schema, Document, model } from "mongoose"; +import { IDroneRegistration } from "./drone-registration"; + +/* + * Memory Monitor interface & schema + */ +export interface IMemoryMonitor { + count: number; + bytes: number; +} +export const MemoryMonitorSchema = new Schema({ + count: { type: Number, default: 0, required: true }, + bytes: { type: Number, default: 0, required: true }, +}); + +/* + * DroneMonitor interface & schema + */ +export interface IDroneMonitor extends Document { + _id: Types.ObjectId; + registration: IDroneRegistration | Types.ObjectId; + timestamp: Date; + memory: { + rss: number; + v8: { + heapTotal: number; + heapUsed: number; + heapExternal: number; + }; + os: { + total: number; + free: number; + }; + ai: { + subagents: IMemoryMonitor; + fileOperations: IMemoryMonitor; + toolCalls: IMemoryMonitor; + }; + logs: IMemoryMonitor; + }; +} +export const DroneMonitorSchema = new Schema({ + registration: { type: Types.ObjectId, required: true, index: 1 }, + timestamp: { type: Date, required: true, index: -1 }, + memory: { + rss: { type: Number, required: true }, + v8: { + heapTotal: { type: Number, required: true }, + heapUsed: { type: Number, required: true }, + heapExternal: { type: Number, required: true, default: 0 }, + }, + os: { + total: { type: Number, required: true }, + free: { type: Number, required: true }, + }, + ai: { + subagents: { type: MemoryMonitorSchema, required: true }, + fileOperations: { type: MemoryMonitorSchema, required: true }, + toolCalls: { type: MemoryMonitorSchema, required: true }, + }, + logs: { type: MemoryMonitorSchema, required: true }, + }, +}); + +export const DroneMonitor = model( + "DroneMonitor", + DroneMonitorSchema, +); +export default DroneMonitor; + +(async () => { + await DroneMonitor.syncIndexes(); +})(); diff --git a/gadget-code/src/models/drone-registration.ts b/gadget-code/src/models/drone-registration.ts new file mode 100644 index 0000000..60ea221 --- /dev/null +++ b/gadget-code/src/models/drone-registration.ts @@ -0,0 +1,52 @@ +// src/models/drone-registration.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Document, Schema, Types, model } from "mongoose"; +import { IUser } from "./user"; + +export enum DroneStatus { + Starting = "starting", + Available = "available", + Busy = "busy", + Offline = "offline", +} + +export interface IDroneRegistration extends Document { + _id: Types.ObjectId; + createdAt: Date; + updatedAt: Date; + user: IUser | Types.ObjectId; + hostname: string; + status: DroneStatus; + currentJobId?: string; +} + +export const DroneRegistrationSchema = new Schema({ + createdAt: { type: Date, required: true }, + updatedAt: { type: Date, required: false }, + user: { type: Schema.Types.ObjectId, ref: "User", required: true }, + hostname: { type: String, required: true }, + status: { + type: String, + enum: DroneStatus, + default: DroneStatus.Starting, + required: true, + }, + currentJobId: { type: String, required: false }, +}); + +DroneRegistrationSchema.index({ + user: 1, + status: 1, +}); + +export const DroneRegistration = model( + "DroneRegistration", + DroneRegistrationSchema, +); +export default DroneRegistration; + +(async () => { + await DroneRegistration.syncIndexes(); +})(); diff --git a/gadget-code/src/models/email-log.ts b/gadget-code/src/models/email-log.ts new file mode 100644 index 0000000..31d459e --- /dev/null +++ b/gadget-code/src/models/email-log.ts @@ -0,0 +1,37 @@ +// src/models/email-log.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Schema, Types, Document, model } from "mongoose"; + +import { DtpLog } from "../lib/log.js"; +const log = new DtpLog({ + name: "EmailLogModel", + slug: "emailLog", +}); + +export interface IEmailLog extends Document { + _id: Types.ObjectId; + created: Date; + from: string; + to: string; + to_lc: string; + subject: string; + messageId: string; +} +export const EmailLogSchema = new Schema({ + created: { type: Date, default: Date.now, required: true, index: -1 }, + from: { type: String, required: true }, + to: { type: String, required: true }, + to_lc: { type: String, required: true, lowercase: true, index: 1 }, + subject: { type: String, required: true }, + messageId: { type: String }, +}); + +export const EmailLog = model("EmailLog", EmailLogSchema); +export default EmailLog; + +(async () => { + log.info("Syncing indexes..."); + await EmailLog.syncIndexes(); +})(); diff --git a/gadget-code/src/models/email-verification.ts b/gadget-code/src/models/email-verification.ts new file mode 100644 index 0000000..40c0a4d --- /dev/null +++ b/gadget-code/src/models/email-verification.ts @@ -0,0 +1,47 @@ +// src/models/email-verification.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Schema, Types, model } from "mongoose"; + +import { DtpLog } from "../lib/log.js"; +import { IUser } from "./user.js"; +const log = new DtpLog({ + name: "EmailVerificationModel", + slug: "emailVerification", +}); + +export enum EmailVerificationStatus { + Pending = "pending", + Verified = "verified", + Expired = "expired", +} + +export interface IEmailVerification { + createdAt: Date; + user: IUser | Types.ObjectId; + code: string; + status: EmailVerificationStatus; +} +export const EmailVerificationSchema = new Schema({ + createdAt: { type: Date, required: true, default: Date.now }, + user: { type: Schema.Types.ObjectId, required: true, index: 1, ref: "User" }, + code: { type: String, required: true, unique: true }, + status: { + type: String, + enum: EmailVerificationStatus, + required: true, + default: EmailVerificationStatus.Pending, + }, +}); + +export const EmailVerification = model( + "EmailVerification", + EmailVerificationSchema +); +export default EmailVerification; + +(async () => { + log.info("Syncing indexes..."); + await EmailVerification.syncIndexes(); +})(); diff --git a/gadget-code/src/models/postal-code.ts b/gadget-code/src/models/postal-code.ts new file mode 100644 index 0000000..70cc978 --- /dev/null +++ b/gadget-code/src/models/postal-code.ts @@ -0,0 +1,48 @@ +import { Schema, model } from "mongoose"; + +import { DtpLog } from "../lib/log.js"; +const log = new DtpLog({ name: "PostalCodeModel", slug: "postalCode" }); + +/* + * This model provides storage for the Postal Code database found here: + * https://data.opendatasoft.com/explore/dataset/geonames-postal-code@public/export/?flg=en-us + * + * When uniqued by country+postalCode, there are many dupes. So the ingest + * routine filters them out. + */ + +export interface IPostalCode { + country: string; // "country code" + postalCode: string; // "postal code" + city: string; // "place name" + state: string; // "admin name1" + stateCode: string; // "admin code1" + county: string; // "admin name2" +} +export const PostalCodeSchema = new Schema({ + country: { type: String, required: true }, + postalCode: { type: String, required: true }, + city: { type: String }, + state: { type: String }, + stateCode: { type: String }, + county: { type: String }, +}); + +PostalCodeSchema.index( + { + country: 1, + postalCode: 1, + }, + { + unique: true, + name: "postal_code_unique", + } +); + +export const PostalCode = model("PostalCode", PostalCodeSchema); +export default PostalCode; + +(async () => { + log.info("Syncing indexes..."); + await PostalCode.syncIndexes(); +})(); diff --git a/gadget-code/src/models/project.ts b/gadget-code/src/models/project.ts new file mode 100644 index 0000000..513d72e --- /dev/null +++ b/gadget-code/src/models/project.ts @@ -0,0 +1,53 @@ +// src/models/project.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Types, Schema, Document, model } from "mongoose"; +import { IUser } from "./user.js"; + +export interface IProject extends Document { + createdAt: Date; + user: IUser | Types.ObjectId; + name: string; + slug: string; + gitUrl?: string; +} + +export const ProjectSchema = new Schema({ + createdAt: { type: Date, default: Date.now, required: true }, + user: { type: Types.ObjectId, required: true, index: 1, ref: "User" }, + name: { type: String, default: "New Project", required: true }, + slug: { + type: String, + default: "new-project", + lowercase: true, + required: true, + }, + gitUrl: { type: String }, +}); + +ProjectSchema.index( + { + user: 1, + slug: 1, + }, + { + unique: true, + }, +); + +ProjectSchema.index( + { + user: 1, + gitUrl: 1, + }, + { + partialFilterExpression: { + gitUrl: { $exists: true }, + }, + unique: true, + }, +); + +export const Project = model("Project", ProjectSchema); +export default Project; diff --git a/gadget-code/src/models/user.ts b/gadget-code/src/models/user.ts new file mode 100644 index 0000000..1982ec6 --- /dev/null +++ b/gadget-code/src/models/user.ts @@ -0,0 +1,53 @@ +// src/models/user.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Types, Schema, Document, model } from "mongoose"; + +import { DtpLog } from "../lib/log.js"; +const log = new DtpLog({ + name: "UserModel", + slug: "user", +}); + +export interface IUserFlags { + isEmailVerified: boolean; + isAdmin: boolean; + isTest: boolean; + isBanned: boolean; +} +export const UserFlagsSchema = new Schema( + { + isEmailVerified: { type: Boolean, default: false, required: true }, + isAdmin: { type: Boolean, default: false, required: true }, + isTest: { type: Boolean, default: false, required: true }, + isBanned: { type: Boolean, default: false, required: true }, + }, + { _id: false } +); + +export interface IUser extends Document { + _id: Types.ObjectId; + email: string; + email_lc: string; + passwordSalt?: string; + password?: string; + displayName: string; + flags: IUserFlags; +} +export const UserSchema = new Schema({ + email: { type: String, required: true }, + email_lc: { type: String, required: true, lowercase: true, unique: true }, + passwordSalt: { type: String, required: true, select: false }, + password: { type: String, required: true, select: false }, + displayName: { type: String, minlength: 3, maxlength: 30, required: true }, + flags: { type: UserFlagsSchema, required: true }, +}); + +export const User = model("User", UserSchema); +export default User; + +(async () => { + log.info("Syncing indexes..."); + await User.syncIndexes(); +})(); diff --git a/gadget-code/src/models/web-token.ts b/gadget-code/src/models/web-token.ts new file mode 100644 index 0000000..067acde --- /dev/null +++ b/gadget-code/src/models/web-token.ts @@ -0,0 +1,34 @@ +// app/models/web-token.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Schema, Types, model } from "mongoose"; +import { IUser } from "./user.js"; + +import { DtpLog } from "../lib/log.js"; +const log = new DtpLog({ + name: "WebTokenModel", + slug: "webToken", +}); + +export interface IWebToken { + _id: Types.ObjectId; + created: Date; + expires: Date; + user: IUser | Types.ObjectId; + token: string; +} +export const WebTokenSchema = new Schema({ + created: { type: Date, required: true, index: 1 }, + expires: { type: Date, required: true, index: -1 }, + user: { type: Schema.Types.ObjectId, required: true, ref: "User" }, + token: { type: String, required: true }, +}); + +export const WebToken = model("WebToken", WebTokenSchema); +export default WebToken; + +(async () => { + log.info("Syncing indexes..."); + await WebToken.syncIndexes(); +})(); diff --git a/gadget-code/src/models/web-visit.ts b/gadget-code/src/models/web-visit.ts new file mode 100644 index 0000000..234d044 --- /dev/null +++ b/gadget-code/src/models/web-visit.ts @@ -0,0 +1,52 @@ +// src/models/web-visit.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { Schema, Types, Document, model } from "mongoose"; + +import { DtpLog } from "../lib/log.js"; +import { IUser } from "./user.js"; +const log = new DtpLog({ + name: "WebVisitModel", + slug: "webVisit", +}); + +export interface IWebVisit extends Document { + _id: Types.ObjectId; + created: Date; + url: string; + user?: IUser | Types.ObjectId; + userAgent?: string; + referrer?: string; + ipAddress?: string; + country?: string; + region?: string; + eu: boolean; + timezone?: string; + city?: string; + latitude?: number; + longitude?: number; + metroCode?: number; +} +export const WebVisitSchema = new Schema({ + created: { type: Date, default: Date.now }, + url: { type: String, required: true }, + user: { type: Types.ObjectId, index: 1, ref: "User" }, + userAgent: { type: String }, + referrer: { type: String }, + ipAddress: { type: String }, + country: { type: String }, + region: { type: String }, + eu: { type: Boolean, default: false }, + timezone: { type: String }, + city: { type: String }, + latitude: { type: Number }, + longitude: { type: Number }, + metroCode: { type: Number }, +}); +export const WebVisit = model("WebVisit", WebVisitSchema); + +(async () => { + log.info("Syncing indexes..."); + await WebVisit.syncIndexes(); +})(); diff --git a/gadget-code/src/services/api-client.ts b/gadget-code/src/services/api-client.ts new file mode 100644 index 0000000..a6f2482 --- /dev/null +++ b/gadget-code/src/services/api-client.ts @@ -0,0 +1,108 @@ +// services/api-client.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +// import env, { getCountryName } from "../config/env.js"; +import assert from "node:assert"; + +import { + Types, + // MongooseQueryOptions, + // MongooseUpdateQueryOptions, +} from "mongoose"; +import { Request } from "express"; + +import { filterText } from "dtp-cleantext"; +import { v4 as uuidv4 } from "uuid"; + +import ApiClient, { + ApiClientStatus, + IApiClient, +} from "../models/api-client.js"; +import ApiClientLog, { IApiClientLog } from "../models/api-client-log.js"; + +import { DtpService } from "../lib/service.js"; + +class ApiClientService extends DtpService { + get name(): string { + return "ApiClientService"; + } + get slug(): string { + return "apiClient"; + } + + constructor() { + super(); + } + + async start(): Promise {} + + async stop(): Promise {} + + async create(definition: Partial): Promise { + const NOW = new Date(); + const apiClient = new ApiClient(); + apiClient.createdAt = NOW; + apiClient.updatedAt = NOW; + apiClient.status = ApiClientStatus.Active; + + assert(definition.name, "ApiClient name is required"); + apiClient.name = filterText(definition.name); + + if (definition.description) { + apiClient.description = filterText(definition.description); + } + + apiClient.secret = uuidv4(); + + await apiClient.save(); + + return apiClient.toObject(); + } + + async setStatus( + client: IApiClient, + status: ApiClientStatus, + ): Promise { + this.log.info("updating ApiClient status", { _id: client._id, status }); + + const newClient = await ApiClient.findOneAndUpdate( + { _id: client._id }, + { $set: { status } }, + { new: true }, + ); + if (!newClient) { + const error = new Error("ApiClient not found"); + error.statusCode = 404; + throw error; + } + + return newClient; + } + + async getById(clientId: Types.ObjectId): Promise { + const client = await ApiClient.findOne({ _id: clientId }); + return client; + } + + async logRequest(client: IApiClient, req: Request): Promise { + const NOW = new Date(); + const log = new ApiClientLog(); + + log.client = client._id; + log.createdAt = NOW; + log.method = req.method; + log.url = req.url; + + await log.save(); + + return log.toObject(); + } + + async remove(client: IApiClient): Promise { + this.log.info("removing API client", { _id: client._id }); + await ApiClient.deleteOne({ _id: client._id }); + } +} + +export default new ApiClientService(); diff --git a/gadget-code/src/services/contact.ts b/gadget-code/src/services/contact.ts new file mode 100644 index 0000000..2a6d3bf --- /dev/null +++ b/gadget-code/src/services/contact.ts @@ -0,0 +1,178 @@ +// src/services/contact.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import env from "../config/env.js"; +// import assert from "node:assert"; +import crypto from "node:crypto"; + +import nodemailer from "nodemailer"; +import Mail from "nodemailer/lib/mailer"; + +import EmailLog, { IEmailLog } from "../models/email-log.js"; +import EmailVerification, { + EmailVerificationStatus, + IEmailVerification, +} from "../models/email-verification.js"; +import { IUser } from "../models/user.js"; + +import UserService from "./user.js"; +import { DtpService } from "../lib/service.js"; +import { PopulateOptions } from "mongoose"; + +export type EmailAddress = Mail.Address | string; + +export interface EmailMessage { + from: EmailAddress; + replyTo?: EmailAddress; + to: EmailAddress; + cc?: EmailAddress; + subject: string; + text?: string; + html?: string; + attachments?: Array; +} + +class ContactService extends DtpService { + private transport?: nodemailer.Transporter; + private populateEmailVerification: PopulateOptions[] = []; + + get name(): string { + return "ContactService"; + } + get slug(): string { + return "contact"; + } + + async start(): Promise { + this.log.info("creating SMTP transport", { + host: env.email.smtp.host, + port: env.email.smtp.port, + }); + const transportOptions = { + host: env.email.smtp.host, + port: env.email.smtp.port, + secure: env.email.smtp.secure, + auth: { + user: env.email.smtp.user, + pass: env.email.smtp.password, + }, + pool: env.email.smtp.pool.enabled, + maxConnections: env.email.smtp.pool.maxConnections, + maxMessages: env.email.smtp.pool.maxMessages, + }; + this.transport = nodemailer.createTransport(transportOptions); + + this.populateEmailVerification = [ + { + path: "user", + }, + ]; + } + + async stop(): Promise {} + + async sendEmail(message: EmailMessage): Promise { + if (!this.transport) { + const error = new Error("Email transport required"); + error.statusCode = 503; + throw error; + } + + const NOW = new Date(); + + this.log.info("sending email", { to: message.to }); + const response = await this.transport.sendMail(message); + this.log.debug("email sent", { to: message.to, response }); + + const from = + typeof message.from === "object" ? message.from.address : message.from; + const to = typeof message.to === "object" ? message.to.address : message.to; + const log = await EmailLog.create({ + created: NOW, + from, + to, + to_lc: to.toLowerCase(), + subject: message.subject, + messageId: response.messageId, + }); + + return log.toObject(); + } + + sendVerificationEmail(user: IUser): Promise { + const NOW = new Date(); + + const verification = new EmailVerification(); + verification.createdAt = NOW; + verification.code = crypto.randomBytes(20).toString("hex").toUpperCase(); + verification.status = EmailVerificationStatus.Pending; + verification.user = user._id; + + const verificationLink = `https://${env.site.host}/auth/email-verify?code=${verification.code}`; + const message: EmailMessage = { + from: env.email.contact.to, + to: user.email, + subject: `Please verify your email address (${env.site.name})`, + text: `Hello ${user.displayName}, + +Please verify your email address for use at ${env.site.name} by clicking the link below: + +${verificationLink} + +If you did not create an account with us, please ignore this email. + +Thank you, +The ${env.site.name} Team +`, + }; + + return this.sendEmail(message); + } + + async verifyEmailCode(code: string): Promise { + const verification = await EmailVerification.findOne({ code }).lean(); + if (!verification) { + const error = new Error("Invalid verification code"); + error.statusCode = 400; + throw error; + } + + if (verification.status !== EmailVerificationStatus.Pending) { + const error = new Error( + `Verification code is not pending (status: ${verification.status})` + ); + error.statusCode = 400; + throw error; + } + + const NOW = new Date(); + const elapsedMs = NOW.getTime() - verification.createdAt.getTime(); + const elapsedHours = elapsedMs / (1000 * 60 * 60); + if (elapsedHours > 24) { + const error = new Error("Verification code has expired"); + error.statusCode = 400; + throw error; + } + + verification.status = EmailVerificationStatus.Verified; + const newVerification = await EmailVerification.findOneAndUpdate( + { _id: verification._id }, + { + status: EmailVerificationStatus.Verified, + }, + { new: true, populate: this.populateEmailVerification, lean: true } + ); + if (!newVerification) { + const error = new Error("Failed to update verification status"); + error.statusCode = 500; + throw error; + } + + await UserService.setEmailVerified(verification.user as IUser, true); + + return newVerification; + } +} + +export default new ContactService(); diff --git a/gadget-code/src/services/crypto.ts b/gadget-code/src/services/crypto.ts new file mode 100644 index 0000000..8d62b61 --- /dev/null +++ b/gadget-code/src/services/crypto.ts @@ -0,0 +1,50 @@ +// src/services/crypto.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { DtpService } from "../lib/service.js"; +import env from "../config/env.js"; +import assert from "node:assert"; + +import crypto from "node:crypto"; + +class CryptoService extends DtpService { + get name(): string { + return "CryptoService"; + } + get slug(): string { + return "crypto"; + } + + async start(): Promise {} + async stop(): Promise {} + + async maskPassword(passwordSalt: string, password: string): Promise { + assert(env.user.passwordSalt, "Password salt is required"); + const hash = crypto.createHash("sha256"); + + hash.update(env.user.passwordSalt); // environment + hash.update(passwordSalt); // per-user + hash.update(password); + + return hash.digest("hex"); + } + + createHash(content: string | Buffer, algorithm: string = "sha256"): string { + const hash = crypto.createHash(algorithm); + hash.update(content); + return hash.digest("hex"); + } + + createHmac( + secret: string, + content: string | Buffer, + algorithm: string = "sha256" + ): string { + const hmac = crypto.createHmac(algorithm, secret); + hmac.update(content); + return hmac.digest("hex"); + } +} + +export default new CryptoService(); diff --git a/gadget-code/src/services/drone.ts b/gadget-code/src/services/drone.ts new file mode 100644 index 0000000..576be90 --- /dev/null +++ b/gadget-code/src/services/drone.ts @@ -0,0 +1,107 @@ +// services/drone.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import DroneRegistration, { + DroneStatus, + IDroneRegistration, +} from "@/models/drone-registration.js"; +import { DtpService } from "../lib/service.js"; +import { IUser } from "@/models/user.js"; +import { PopulateOptions, Types } from "mongoose"; + +export interface IDroneDefinition { + hostname: string; +} + +class DroneService extends DtpService { + private populateDroneRegistration: PopulateOptions[]; + + constructor() { + super(); + this.populateDroneRegistration = [ + { + path: "user", + select: "-passwordSalt -password", + }, + ]; + } + + get name(): string { + return "DroneService"; + } + + get slug(): string { + return "svc:drone"; + } + + async start(): Promise { + this.log.info("service started"); + } + + async stop(): Promise { + this.log.info("service stopped"); + } + + async register( + user: IUser, + definition: IDroneDefinition, + ): Promise { + const NOW = new Date(); + let registration = new DroneRegistration(); + + registration.createdAt = NOW; + registration.updatedAt = NOW; + registration.user = user._id; + registration.hostname = definition.hostname; + registration.status = DroneStatus.Starting; + + this.log.info("registering drone", { hostname: registration.hostname }); + await registration.save(); + + return registration.populate(this.populateDroneRegistration); + } + + async unregister( + registration: IDroneRegistration, + ): Promise { + this.log.info("unregistering drone", { hostname: registration.hostname }); + return this.setStatus(registration, DroneStatus.Offline); + } + + async getById(registrationId: Types.ObjectId): Promise { + const registration = await DroneRegistration.findById( + registrationId, + ).populate(this.populateDroneRegistration); + if (!registration) { + const error = new Error("drone registration not found"); + error.statusCode = 404; + throw error; + } + return registration; + } + + async setStatus( + registration: IDroneRegistration, + status: DroneStatus, + ): Promise { + this.log.info("setting drone status", { + hostname: registration.hostname, + old: registration.status, + new: status, + }); + const newRegistration = await DroneRegistration.findOneAndUpdate( + { _id: registration._id }, + { $set: { status } }, + { new: true, populate: this.populateDroneRegistration }, + ); + if (!newRegistration) { + const error = new Error("drone registration has been removed"); + error.statusCode = 404; + throw error; + } + return newRegistration; + } +} + +export default new DroneService(); diff --git a/gadget-code/src/services/notification.ts b/gadget-code/src/services/notification.ts new file mode 100644 index 0000000..4af0539 --- /dev/null +++ b/gadget-code/src/services/notification.ts @@ -0,0 +1,19 @@ +// services/notification.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { DtpService } from "../lib/service.js"; + +class NotificationService extends DtpService { + get name(): string { + return "NotificationService"; + } + get slug(): string { + return "notification"; + } + + async start(): Promise {} + async stop(): Promise {} +} + +export default new NotificationService(); diff --git a/gadget-code/src/services/session.ts b/gadget-code/src/services/session.ts new file mode 100644 index 0000000..d9bcad3 --- /dev/null +++ b/gadget-code/src/services/session.ts @@ -0,0 +1,144 @@ +// src/services/session.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import env from "../config/env.js"; + +import { Types } from "mongoose"; +import { Request } from "express"; + +import jwt from "jsonwebtoken"; +import dayjs from "dayjs"; +import geoip from "geoip-lite"; + +import { IUser } from "../models/user.js"; +import { IWebToken, WebToken } from "../models/web-token.js"; +import { WebVisit } from "../models/web-visit.js"; + +import UserService from "../services/user.js"; +import { DtpService } from "../lib/service.js"; + +export enum SessionType { + WEB = "web", + JWT = "jwt", +} + +interface UserWebToken { + _id: string; + email: string; + displayName: string; + webToken: IWebToken | Types.ObjectId; +} + +class SessionService extends DtpService { + get name(): string { + return "SessionService"; + } + get slug(): string { + return "session"; + } + + async start(): Promise {} + async stop(): Promise {} + + async createJsonWebToken(user: IUser): Promise { + const NOW = new Date(); + const webToken = new WebToken(); + webToken.created = NOW; + webToken.expires = dayjs(NOW).add(1, "hour").toDate(); + webToken.user = user._id; + + const payload: UserWebToken = { + _id: user._id.toString(), + email: user.email, + displayName: user.displayName, + webToken: webToken._id, + }; + const token = jwt.sign(payload, env.auth.jwtSecret, { + expiresIn: "1h", + }); + + webToken.token = token; + await webToken.save(); + + return token; + } + + async verifyJsonWebToken(token: string): Promise { + try { + const NOW = new Date(); + const payload = jwt.verify(token, env.auth.jwtSecret) as UserWebToken; + const userId = Types.ObjectId.createFromHexString(payload._id); + + const webToken = await WebToken.findOne({ _id: payload.webToken }); + if (!webToken) { + const error = new Error("Invalid JSON Web Token"); + error.name = "InvalidToken"; + error.statusCode = 401; + throw error; + } + if (webToken.expires < NOW) { + await WebToken.deleteOne({ _id: webToken._id }); + const error = new Error("JSON Web Token has expired"); + error.name = "ExpiredToken"; + error.statusCode = 401; + throw error; + } + if (!userId.equals(webToken.user._id)) { + const error = new Error("JSON Web Token ownership mismatch"); + error.name = "TokenOwnershipMismatch"; + error.statusCode = 401; + throw error; + } + + const user = await UserService.getById(userId); + return user; + } catch (cause) { + this.log.error("failed to verify JSON Web Token", { + token, + error: cause, + }); + const error = new Error("Invalid JSON Web Token", { cause }); + error.name = "TokenVerifyError"; + error.statusCode = 401; + throw error; + } + } + + async revokeJsonWebToken(token: string): Promise { + const payload = jwt.verify(token, env.auth.jwtSecret) as UserWebToken; + this.log.info("revoking JSON Web Token", { tokenId: payload.webToken }); + await WebToken.deleteOne({ _id: payload.webToken }); + } + + async recordWebVisit(req: Request): Promise { + const NOW = new Date(); + const visit = new WebVisit(); + visit.created = NOW; + visit.url = req.url; + if (req.user) { + visit.user = req.user._id; + } + visit.userAgent = req.headers["user-agent"]; + visit.referrer = req.headers["referer"]; + visit.ipAddress = req.ip; + + if (req.ip) { + const ipLookup = geoip.lookup(req.ip); + if (ipLookup) { + visit.country = ipLookup.country; + visit.region = ipLookup.region; + visit.eu = ipLookup.eu === "1"; + visit.timezone = ipLookup.timezone; + visit.city = ipLookup.city; + visit.latitude = ipLookup.ll[0]; + visit.longitude = ipLookup.ll[1]; + visit.metroCode = ipLookup.metro; + } + } + + await visit.save(); + } +} + +export default new SessionService(); diff --git a/gadget-code/src/services/storage.ts b/gadget-code/src/services/storage.ts new file mode 100644 index 0000000..83a0274 --- /dev/null +++ b/gadget-code/src/services/storage.ts @@ -0,0 +1,201 @@ +// src/services/storage.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import env from "../config/env.js"; + +import { Stream as NodeStream } from "node:stream"; + +import { Client as MinioClient, BucketItemStat } from "minio"; + +/* + * WebApp needs the type, and it's not exposed any other way. It's not even an + * uncommon type. If there's a better way to expose the type, I don't know it. + */ +import { UploadedObjectInfo } from "../../node_modules/minio/dist/esm/internal/type.mjs"; + +export type MinioObjectMetadata = Record; + +export interface MinioFile { + bucket: string; + key: string; + filePath?: string; + metadata?: MinioObjectMetadata; +} + +export interface MinioStreamFileRange { + offset: number; + length: number; +} + +export interface MinioStreamFile extends MinioFile { + range?: MinioStreamFileRange; +} + +export interface MinioBuffer { + bucket: string; + key: string; + buffer: Buffer; + metadata?: MinioObjectMetadata; +} + +import { DtpService } from "../lib/service.js"; + +class StorageService extends DtpService { + minio?: MinioClient; + + get name(): string { + return "StorageService"; + } + get slug(): string { + return "storage"; + } + + constructor() { + super(); + } + + async start(): Promise { + try { + this.log.info("creating MinIO transport", { + endPoint: env.minio.endpoint, + port: env.minio.port, + useSSL: env.minio.useSsl, + accessKey: env.minio.accessKey, + }); + this.minio = new MinioClient({ + endPoint: env.minio.endpoint, + port: env.minio.port, + useSSL: env.minio.useSsl, + accessKey: env.minio.accessKey, + secretKey: env.minio.secretKey, + }); + } catch (error) { + this.log.error("failed to connect to S3/MinIO", { error }); + const e = new Error("Not connected to storage", { cause: error }); + e.statusCode = 500; + throw e; + } + } + + async stop(): Promise {} + + async uploadBuffer(buffer: MinioBuffer): Promise { + if (!this.minio) { + const error = new Error("Not connected to storage"); + error.statusCode = 503; + throw error; + } + const response = await this.minio.putObject( + buffer.bucket, + buffer.key, + buffer.buffer, + buffer.buffer.length, + buffer.metadata, + ); + this.log.debug("uploaded buffer to storage", { response }); + } + + async uploadFile(fileInfo: MinioFile): Promise { + if (!this.minio) { + const error = new Error("Not connected to storage"); + error.statusCode = 503; + throw error; + } + if (!fileInfo.filePath) { + const error = new Error("Must specify filePath of file to upload"); + error.statusCode = 400; + throw error; + } + return this.minio.fPutObject( + fileInfo.bucket, + fileInfo.key, + fileInfo.filePath, + fileInfo.metadata, + ); + } + + async statFile(file: MinioFile): Promise { + return this.statObject(file.bucket, file.key); + } + + async statObject(bucket: string, key: string): Promise { + if (!this.minio) { + const error = new Error("Not connected to storage"); + error.statusCode = 503; + throw error; + } + this.log.debug("retrieving object status", { bucket, key }); + return this.minio.statObject(bucket, key); + } + + async downloadFile(fileInfo: MinioFile): Promise { + if (!this.minio) { + const error = new Error("Not connected to storage"); + error.statusCode = 503; + throw error; + } + if (!fileInfo.filePath) { + const error = new Error("Must specify filePath of file to download"); + error.statusCode = 400; + throw error; + } + this.log.debug("downloading object to file", { + bucket: fileInfo.bucket, + key: fileInfo.key, + filePath: fileInfo.filePath, + }); + return this.minio.fGetObject( + fileInfo.bucket, + fileInfo.key, + fileInfo.filePath, + ); + } + + async openDownloadStream(fileInfo: MinioStreamFile): Promise { + if (!this.minio) { + const error = new Error("Not connected to storage"); + error.statusCode = 503; + throw error; + } + + if (fileInfo.range) { + this.log.debug("fetching partial object", { + bucket: fileInfo.bucket, + key: fileInfo.key, + range: fileInfo.range, + }); + const stream: NodeStream = await this.minio.getPartialObject( + fileInfo.bucket, + fileInfo.key, + fileInfo.range.offset, + fileInfo.range.length, + ); + return stream; + } + + this.log.debug("fetching object", { + bucket: fileInfo.bucket, + key: fileInfo.key, + }); + const stream: NodeStream = await this.minio.getObject( + fileInfo.bucket, + fileInfo.key, + ); + return stream; + } + + async removeObject(bucket: string, key: string): Promise { + if (!this.minio) { + const error = new Error("Not connected to storage"); + error.statusCode = 503; + throw error; + } + this.log.debug("removing object", { bucket, key }); + await this.minio.removeObject(bucket, key); + } +} + +export { NodeStream }; + +export default new StorageService(); diff --git a/gadget-code/src/services/user.ts b/gadget-code/src/services/user.ts new file mode 100644 index 0000000..8d31e8e --- /dev/null +++ b/gadget-code/src/services/user.ts @@ -0,0 +1,312 @@ +// src/services/user.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import assert from "node:assert"; + +import { MongooseBaseQueryOptions, Types } from "mongoose"; +import { v4 as uuidv4 } from "uuid"; +import { filterText } from "dtp-cleantext"; + +import User, { IUser } from "../models/user.ts"; +import ContactService from "./contact.ts"; +import CryptoService from "./crypto.ts"; + +import { DtpPaginationParameters } from "../lib/pagination-parameters.ts"; + +import { DtpService } from "../lib/service.js"; + +export interface IUserUpdate { + email: string; + displayName?: string; + password?: string; +} + +export interface IUserAdminUpdate { + email: string; + displayName?: string; + password?: string; + "flags.isEmailVerified": string; + "flags.isAdmin": string; + "flags.isTest": string; + "flags.isBanned": string; +} +export interface IUserLibrary { + users: IUser[]; + totalUserCount: number; +} + +class UserService extends DtpService { + get name(): string { + return "UserService"; + } + get slug(): string { + return "user"; + } + + async start(): Promise {} + async stop(): Promise {} + + async createDeferred( + email: string, + password: string, + displayName?: string, + ): Promise { + if (!email) { + const error = new Error("must specify email address"); + error.statusCode = 400; + throw error; + } + if (!password) { + const error = new Error("must specify password"); + error.statusCode = 400; + throw error; + } + + if (displayName) { + displayName = filterText(displayName); + if (displayName.length < 3 || displayName.length > 30) { + const err = new Error( + "Display Name must be between 3-30 characters in length.", + ); + err.statusCode = 400; + throw err; + } + } + + /* + * If we have an existing user, abort. + */ + + if (await this.getByEmail(email)) { + const err = new Error("That email address is already registered."); + err.statusCode = 400; + throw err; + } + + /* + * Create a new User + */ + + const user = new User(); + user.email = filterText(email); + user.email_lc = user.email.toLowerCase(); + + user.passwordSalt = uuidv4(); + user.password = await CryptoService.maskPassword( + user.passwordSalt, + password.trim(), + ); + + if (displayName) { + user.displayName = displayName; + } + + user.flags = { + isEmailVerified: false, + isAdmin: false, + isTest: false, + isBanned: false, + }; + + return user; + } + + async create( + email: string, + password: string, + displayName?: string, + ): Promise { + const user = await this.createDeferred(email, password, displayName); + await user.save(); + + await ContactService.sendVerificationEmail(user); + + return user.toObject(); + } + + async updateForUser(user: IUser, def: IUserUpdate): Promise { + const update: MongooseBaseQueryOptions = { $set: {} }; + let needsEmailVerification = false; + + if (def.email && def.email !== user.email) { + update.$set.email = filterText(def.email); + update.$set.email_lc = update.$set.email.toLowerCase(); + update.$set["flags.isEmailVerified"] = false; + needsEmailVerification = true; + this.log.info("updating user email address", { + user: { _id: user._id }, + email: update.$set.email, + }); + } + + if (def.password) { + this.log.info("updating user password", { user: { _id: user._id } }); + update.$set.passwordSalt = uuidv4(); + update.$set.password = await CryptoService.maskPassword( + update.$set.passwordSalt, + def.password.trim(), + ); + } + + const newUser = await User.findOneAndUpdate({ _id: user._id }, update, { + new: true, + }); + if (!newUser) { + const error = new Error(`User ${user._id} not found`); + error.statusCode = 400; + throw error; + } + + if (needsEmailVerification) { + await ContactService.sendVerificationEmail(newUser); + } + + return newUser; + } + + async updateForAdmin(user: IUser, def: IUserAdminUpdate): Promise { + const update: MongooseBaseQueryOptions = { $set: {} }; + + if (def.email && def.email !== user.email) { + update.$set.email = filterText(def.email); + update.$set.email_lc = update.$set.email.toLowerCase(); + this.log.info("updating user email address", { + user: { _id: user._id }, + email: update.$set.email, + }); + } + + if (def.password) { + this.log.info("updating user password", { user: { _id: user._id } }); + update.$set.passwordSalt = uuidv4(); + update.$set.password = await CryptoService.maskPassword( + update.$set.passwordSalt, + def.password.trim(), + ); + } + + update.$set["flags.isEmailVerified"] = + def["flags.isEmailVerified"] === "on"; + update.$set["flags.isAdmin"] = def["flags.isAdmin"] === "on"; + update.$set["flags.isTest"] = def["flags.isTest"] === "on"; + update.$set["flags.isBanned"] = def["flags.isBanned"] === "on"; + + this.log.info("updating user flags", { + user: { _id: user._id }, + flags: { + isEmailVerified: update.$set["flags.isEmailVerified"], + isAdmin: update.$set["flags.isAdmin"], + isTest: update.$set["flags.isTest"], + isBanned: update.$set["flags.isBanned"], + }, + }); + + await User.updateOne({ _id: user._id }, update); + } + + async setEmailVerified(user: IUser, isVerified: boolean): Promise { + this.log.info("setting user email verified status", { + user: { _id: user._id }, + isVerified, + }); + + const newUser = await User.findOneAndUpdate( + { _id: user._id }, + { $set: { "flags.isEmailVerified": isVerified } }, + { new: true }, + ); + if (!newUser) { + const error = new Error(`User ${user._id} not found`); + error.statusCode = 400; + throw error; + } + + return newUser; + } + + async getRecent( + pagination: DtpPaginationParameters, + query?: string, + ): Promise { + const search: MongooseBaseQueryOptions = {}; + if (query) { + this.log.debug("searching User", { query }); + search.$text = { $search: query }; + } + const users = await User.find(search) + .sort({ created: -1 }) + .skip(pagination.skip) + .limit(pagination.cpp); + const totalUserCount = await User.countDocuments(search); + return { users, totalUserCount }; + } + + async getByEmail(email: string): Promise { + if (!email) { + throw new Error("must specify email address"); + } + const user = await User.findOne({ email_lc: email.trim().toLowerCase() }); + if (!user) { + return; + } + return user; + } + + async getById(userId: Types.ObjectId): Promise { + if (!userId) { + const error = new Error("must specify email address"); + error.statusCode = 400; + throw error; + } + + const user = await User.findOne({ _id: userId }); + if (!user) { + const err = new Error(`User ${userId} not found`); + err.statusCode = 400; + throw err; + } + + return user; + } + + async authenticate(email: string, password: string): Promise { + if (!email) { + const error = new Error("Must provide your email address"); + error.statusCode = 400; + throw error; + } + if (!password) { + const error = new Error("Must provide your password"); + error.statusCode = 400; + throw error; + } + + const emailLc = email.trim().toLowerCase(); + const user = await User.findOne({ email_lc: emailLc }).select( + "+passwordSalt +password", + ); + if (!user) { + const error = new Error("Invalid email address or password"); + error.statusCode = 400; + throw error; + } + assert(user.password && user.passwordSalt, "user authentication failed"); + + const maskedPassword = await CryptoService.maskPassword( + user.passwordSalt, + password.trim(), + ); + if (maskedPassword !== user.password) { + const error = new Error("Invalid email address or password"); + error.statusCode = 400; + throw error; + } + + delete user.passwordSalt; + delete user.password; + return user; + } +} + +export default new UserService(); diff --git a/gadget-code/src/web-app.ts b/gadget-code/src/web-app.ts new file mode 100644 index 0000000..677b75c --- /dev/null +++ b/gadget-code/src/web-app.ts @@ -0,0 +1,551 @@ +// web-app.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import env from "./config/env.js"; +import assert from "node:assert"; + +import path from "node:path"; +import http from "node:http"; + +import { + DisconnectReason, + ExtendedError, + Socket, + Server as SocketIOServer, +} from "socket.io"; + +import "./lib/db.js"; +import redis from "./lib/redis.js"; + +import cookieParser from "cookie-parser"; +import compress from "compression"; +import methodOverride from "method-override"; +import favicon from "serve-favicon"; + +import session, { SessionOptions } from "express-session"; +import { RedisStore } from "connect-redis"; + +import express, { NextFunction, Request, Response } from "express"; +import morgan from "morgan"; +import * as rfs from "rotating-file-stream"; + +import dayjs from "dayjs"; +import relativeTime from "dayjs/plugin/relativeTime.js"; +dayjs.extend(relativeTime); + +import numeral from "numeral"; + +type SameSiteOption = boolean | "lax" | "strict" | "none" | undefined; + +import { DtpLog } from "./lib/log.js"; +import { DtpComponent } from "./lib/component.js"; + +import { ApiController } from "./controllers/api.js"; +import { AuthController } from "./controllers/auth.js"; +import { HomeController } from "./controllers/home.js"; +import { UserController } from "./controllers/user.js"; + +import ApiClient from "./services/api-client.js"; +import ContactService from "./services/contact.js"; +import DroneService from "./services/drone.js"; +import SessionService, { SessionType } from "./services/session.js"; +import StorageService from "./services/storage.js"; + +import { Types } from "mongoose"; +import { User } from "./models/user.js"; + +import { SocketSessionType } from "./lib/socket-session.js"; +import { CodeSession } from "./lib/code-session.js"; +import { DroneSession } from "./lib/drone-session.js"; + +class DtpWebAppServer implements DtpComponent { + private log: DtpLog; + + private app?: express.Application; + private server?: http.Server; + public io?: SocketIOServer; + + private codeSessions: Map = new Map< + string, + CodeSession + >(); + private droneSessions: Map = new Map< + string, + DroneSession + >(); + + get name(): string { + return "DtpWebAppServer"; + } + get slug(): string { + return "web-app"; + } + + constructor() { + this.log = new DtpLog(this); + } + + async start(): Promise { + this.hookProcessSignals(); + + await this.startServices(); + await this.createExpressApp(); + await this.startHttpServer(); + + this.log.info( + `DTP application server online at http://${env.https.address}:${env.https.port}/`, + ); + } + + async stop(): Promise { + await this.stopHttpServer(); + return 0; + } + + async startServices(): Promise { + await ApiClient.start(); + await ContactService.start(); + await StorageService.start(); + } + + async createExpressApp(): Promise { + this.log.info("creating ExpressJS app"); + this.app = express(); + this.app.set("trust proxy", true); + this.app.set("x-powered-by", false); + + this.app.locals.env = env; + this.app.locals.pkg = env.pkg; + this.app.locals.site = env.site; + this.app.locals.dayjs = dayjs; + this.app.locals.numeral = numeral; + + if (env.log.https.enabled) { + this.log.info("creating HTTPS access log", { + name: env.log.https.name, + path: env.log.https.path, + }); + const httpLogStream = rfs.createStream( + env.log.https.name || "gadget-code-access.log", + { + interval: "1d", + path: env.log.https.path, + compress: "gzip", + }, + ); + this.app.use(morgan(env.log.https.format, { stream: httpLogStream })); + } + + /* + * Static file services + */ + this.app.use( + favicon(path.join(env.root, "assets", "icon", "icon-32x32.png")), + ); + this.app.use("/assets", express.static(path.resolve(env.root, "assets"))); + this.app.use( + "/client", + express.static(path.resolve(env.root, "dist", "client")), + ); + + /* + * REST, User, and Session support + */ + + this.app.use(async (req: Request, res: Response, next: NextFunction) => { + await SessionService.recordWebVisit(req); + + if (req.query) { + res.locals.query = req.query; + } + + const contentType = req.get("content-type") || ""; + if (!contentType.includes("application/json")) { + return next(); + } + + let data: string = ""; + req.on("data", (chunk) => { + data += chunk.toString(); + }); + req.on("end", () => { + req.rawBody = data; + try { + const parsedData = JSON.parse(data); + req.body = parsedData; + } catch (err) { + return next(err); + } + next(); + }); + }); + + this.app.use(express.json()); + this.app.use(express.urlencoded({ extended: true })); + this.app.use(cookieParser(env.session.secret)); + this.app.use(compress()); + this.app.use(methodOverride()); + + const ONE_WEEK = 1000 * 60 * 60 * 24 * 7; + const SESSION_DURATION = ONE_WEEK; + + /* + * ExpressJS session configuration + */ + + const store = new RedisStore({ + client: redis, + }); + + assert(env.session.secret, "Must define an HTTP session secret"); + const sessionConfig: SessionOptions = { + name: `mtsess-${env.site.domainKey}-${env.NODE_ENV}`, + secret: env.session.secret, + resave: true, + saveUninitialized: true, + proxy: env.session.trustProxy, + cookie: { + path: "/", + httpOnly: true, + secure: env.session.cookie.secure, + sameSite: env.session.cookie.sameSite as SameSiteOption, + maxAge: SESSION_DURATION, + }, + store, + }; + this.app.use(session(sessionConfig)); + this.app.use(this.restoreUserSession.bind(this)); + + this.app.use("/", await this.createAppRouter()); + + this.app.use(this.defaultErrorHandler.bind(this)); + } + + async createAppRouter(): Promise { + const router: express.Router = express.Router(); + + const authController = new AuthController(); + await authController.start(); + this.log.info("mounting AuthController", { route: authController.route }); + router.use(authController.route, authController.router); + + const apiController = new ApiController(); + await apiController.start(); + this.log.info("mounting ApiController", { + route: apiController.route, + }); + router.use(apiController.route, apiController.router); + + const userController = new UserController(); + await userController.start(); + this.log.info("mounting UserController", { + route: userController.route, + }); + router.use(userController.route, userController.router); + + const homeController = new HomeController(); + await homeController.start(); + this.log.info("mounting HomeController", { route: homeController.route }); + router.use(homeController.route, homeController.router); + + return router; + } + + async startHttpServer(): Promise { + return new Promise((resolve) => { + assert(this.app, "ExpressJS app instance is required"); + this.log.info("starting HTTP server", { + address: env.https.address, + port: env.https.port, + }); + + /* + * Create HTTP server + */ + this.server = http.createServer(this.app); + + /* + * Create Socket.io server + */ + this.io = new SocketIOServer(this.server, { + cors: { + origin: "*", + methods: ["GET", "POST"], + }, + }); + this.io.use(this.onSocketAuth.bind(this)); + this.io.on("connection", this.onSocketConnection.bind(this)); + this.log.info("socket.io server initialized"); + + /* + * Start HTTP server + */ + this.server.listen( + env.https.port, + env.https.address, + env.https.backlog, + () => { + this.log.debug("HTTP server started"); + resolve(); + }, + ); + }); + } + + async onSocketAuth(socket: Socket, next: (err?: ExtendedError) => void) { + const token = socket.handshake.auth.token; + this.log.debug("received socket authentication request", { token }); + if (!token) { + this.log.warn("socket connection rejected: no token provided"); + return next(new Error("Authentication required")); + } + + /* + * Try first to validate as a User JWT session + */ + try { + const user = await SessionService.verifyJsonWebToken(token); + this.log.info("socket authenticated as User"); + + const session: CodeSession = new CodeSession(socket, user); + this.codeSessions.set(socket.id, session); + + socket.data = { sessionType: SocketSessionType.Code }; + socket.on("disconnect", (reason: DisconnectReason, extra?: unknown) => { + this.onSocketDisconnect(socket, reason, extra); + }); + + return next(); + } catch (cause) { + const error = cause as Error; + if (error.name !== "TokenVerifyError") { + this.log.warn("socket connection rejected: invalid token", { + error, + }); + return next(new Error("Invalid authentication token")); + } + // fall through to next test + } + + /* + * If not a User JWT, try to validate as a Drone session + */ + try { + const registrationId = Types.ObjectId.createFromHexString(token); + const registration = await DroneService.getById(registrationId); + this.log.info("socket authenticated as Drone"); + + const droneSession: DroneSession = new DroneSession(socket, registration); + this.droneSessions.set(socket.id, droneSession); + + socket.data = { sessionType: SocketSessionType.Drone }; + socket.on("disconnect", (reason: DisconnectReason, extra?: unknown) => { + this.onSocketDisconnect(socket, reason, extra); + }); + + return next(); + } catch (error) { + this.log.warn("socket connection rejected: invalid auth token", { + error, + }); + next(new Error("Invalid authentication token")); + } + } + + onSocketConnection(socket: Socket) { + switch (socket.data.sessionType) { + case SocketSessionType.Code: + return this.onSocketConnectCode(socket); + case SocketSessionType.Drone: + return this.onSocketConnectDrone(socket); + default: + break; + } + this.log.error("invalid socket session type during connect"); + } + + onSocketDisconnect( + socket: Socket, + reason: DisconnectReason, + extra?: unknown, + ) { + this.log.info("socket disconnect", { reason, extra }); + switch (socket.data.sessionType) { + case SocketSessionType.Code: + this.log.info("closing code socket session", { id: socket.id }); + this.codeSessions.delete(socket.id); + return; + + case SocketSessionType.Drone: + this.log.info("closing drone socket session", { id: socket.id }); + this.droneSessions.delete(socket.id); + return; + + default: + break; + } + + this.log.error("invalid session type in socket disconnect", { + id: socket.id, + data: socket.data, + }); + } + + onSocketConnectCode(socket: Socket) { + const session = this.codeSessions.get(socket.id); + if (!session) { + this.log.warn("invalid code session during connect"); + socket.disconnect(true); + return; + } + this.log.info("code socket connected", { + id: socket.id, + userId: session.user._id.toHexString(), + email: session.user.email, + }); + } + + onSocketConnectDrone(socket: Socket) { + const session = this.droneSessions.get(socket.id); + if (!session) { + this.log.warn("invalid drone session during connect"); + socket.disconnect(true); + return; + } + this.log.info("drone socket connected", { + id: socket.id, + userId: session.user._id.toHexString(), + email: session.user.email, + registration: session.registration, + }); + } + + async stopHttpServer(): Promise { + return new Promise((resolve, reject) => { + if (!this.server) { + return; + } + + this.log.info("closing all HTTP connections"); + this.server.closeAllConnections(); + + if (!this.server.listening) { + delete this.server; + return resolve(); + } + + this.log.info("closing HTTP server"); + this.server.close((error) => { + if (error) { + return reject(error); + } + delete this.server; + resolve(); + }); + }); + } + + async defaultErrorHandler( + err: Error, + req: Request, + res: Response, + _next: NextFunction, + ) { + this.log.error("ExpressJS error", { error: err }); + res.locals.errorCode = err.statusCode || 500; + res.locals.error = err; + if (req.session && req.session.type == SessionType.JWT) { + res.status(res.locals.errorCode).json({ + success: false, + message: err.message, + }); + return; + } + + res.status(res.locals.errorCode).json({ + success: false, + message: err.message, + }); + } + + async restoreUserSession( + req: Request, + res: Response, + next: NextFunction, + ): Promise { + let token; + if (req.headers["authorization"]) { + const tokens = req.headers["authorization"].split(" "); + token = tokens[tokens.length - 1]; + } + if (!token && (!req.session || !req.session.user)) { + return next(); + } + + if (token) { + this.log.debug("restoring session from JWT", { token }); + req.user = await SessionService.verifyJsonWebToken(token); + } else { + const userId = Types.ObjectId.createFromHexString(req.session.user._id); + this.log.debug("restoring session from HTTP session", { + sessionId: req.session.id, + }); + req.user = await User.findOne({ _id: userId }); + } + + res.locals.user = req.user; + if (!res.locals.user) { + req.session.destroy((err: Error) => { + if (err) { + return next(err); + } + return next(); + }); + return; + } + + return next(); + } + + hookProcessSignals(): void { + process.title = this.name; + process.on("unhandledRejection", async (error: Error, p) => { + this.log.error("Unhandled rejection", { + error: error, + promise: p, + stack: error.stack, + }); + + const exitCode: number = await this.stop(); + process.nextTick(() => { + process.exit(exitCode); + }); + }); + + process.on("warning", (error) => { + if (error.name === "DeprecationWarning") { + return; + } + this.log.alert("warning", { error }); + }); + + process.once("SIGINT", async () => { + this.log.info("SIGINT received (requesting shutdown)"); + const exitCode = await this.stop(); + process.nextTick(() => { + process.exit(exitCode); + }); + }); + } +} + +(async () => { + try { + const server = new DtpWebAppServer(); + await server.start(); + } catch (error) { + console.error("DTP Web App server error", { error }); + process.exit(-1); + } +})(); diff --git a/gadget-code/src/web-cli.ts b/gadget-code/src/web-cli.ts new file mode 100644 index 0000000..9d47a68 --- /dev/null +++ b/gadget-code/src/web-cli.ts @@ -0,0 +1,341 @@ +// src/web-cli.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { v4 as uuidv4 } from "uuid"; +import { Types } from "mongoose"; + +import "./lib/db.js"; + +import ApiClient, { ApiClientStatus } from "./models/api-client.js"; +import User from "./models/user.js"; + +import ApiClientService from "./services/api-client.js"; +import CryptoService from "./services/crypto.js"; +import UserService from "./services/user.js"; + +import { DtpProcess } from "./lib/process.js"; + +class DtpWebCli extends DtpProcess { + get name(): string { + return "DtpWebCli"; + } + get slug(): string { + return "dtp-web-cli"; + } + + constructor() { + super(); + } + + async run(argv: string[]): Promise { + const cmd = argv.shift(); + if (!cmd) { + throw new Error("must specify command"); + } + switch (cmd) { + case "admin": + return this.onAdminCmd(argv); + + case "api-client": + return this.onApiClientCmd(argv); + + case "user": + return this.onUserCmd(argv); + + default: + break; + } + throw new Error(`unknown command: ${cmd}`); + } + + async onAdminCmd(argv: string[]): Promise { + const action = argv.shift(); + if (!action) { + throw new Error("must specify user command action"); + } + switch (action) { + case "grant": + return this.onAdminGrant(argv); + case "revoke": + return this.onAdminRevoke(argv); + default: + break; + } + throw new Error(`unknown user command action: ${action}`); + } + + async onAdminGrant(argv: string[]): Promise { + const email = argv.shift(); + if (!email) { + throw new Error("must specify email for admin grant"); + } + const user = await User.findOne({ + email_lc: email.trim().toLowerCase(), + }); + if (!user) { + throw new Error(`user ${email} not found`); + } + + user.flags.isAdmin = true; + await user.save(); + + this.log.info(`admin rights granted to ${email}`); + } + + async onAdminRevoke(argv: string[]): Promise { + const email = argv.shift(); + if (!email) { + throw new Error("must specify email for admin revoke"); + } + + const user = await User.findOne({ + email_lc: email.trim().toLowerCase(), + }); + if (!user) { + throw new Error(`user ${email} not found`); + } + + user.flags.isAdmin = false; + await user.save(); + + this.log.info(`admin rights revoked from ${email}`); + } + + async onApiClientCmd(argv: string[]): Promise { + const action = argv.shift(); + if (!action) { + throw new Error("must specify api client command action"); + } + switch (action) { + case "add": + return this.onApiClientAdd(argv); + + case "ls": + return this.onApiClientList(argv); + + case "status": + return this.onApiClientSetStatus(argv); + + case "remove": + return this.onApiClientRemove(argv); + + default: + break; + } + throw new Error(`unknown api client command action: ${action}`); + } + + async onApiClientAdd(argv: string[]): Promise { + const name = argv.shift(); + const description = argv.shift(); + + const client = await ApiClientService.create({ + name, + description, + }); + this.log.info("api client added", { + client: { + _id: client._id, + secret: client.secret, + name: client.name, + }, + }); + } + + async onApiClientList(_argv: string[]): Promise { + const clients = await ApiClient.find({ status: ApiClientStatus.Active }) + .sort({ name: 1 }) + .lean(); + console.log("Name".padEnd(20), "Client ID".padEnd(24), "Secret"); + console.log( + "--------------------------------------------------------------------------------" + ); + for (const client of clients) { + console.log(client.name.padEnd(20), client._id.toString(), client.secret); + } + } + + async onApiClientSetStatus(argv: string[]): Promise { + const clientId = argv.shift(); + if (!clientId) { + throw new Error("client ID is required"); + } + const clientIdObj = Types.ObjectId.createFromHexString(clientId); + const client = await ApiClientService.getById(clientIdObj); + if (!client) { + throw new Error("Client not found"); + } + + const status = argv.shift() as ApiClientStatus; + if (!status) { + throw new Error("New client status is required"); + } + + await ApiClientService.setStatus(client, status); + this.log.info("API client status updated", { _id: clientId, status }); + } + + async onApiClientRemove(argv: string[]): Promise { + const clientId = argv.shift(); + if (!clientId) { + throw new Error("client ID is required"); + } + const clientIdObj = Types.ObjectId.createFromHexString(clientId); + const client = await ApiClientService.getById(clientIdObj); + if (!client) { + throw new Error("Client not found"); + } + await ApiClientService.remove(client); + this.log.info("API client removed", { _id: clientId }); + } + + async onUserCmd(argv: string[]): Promise { + const action = argv.shift(); + if (!action) { + throw new Error("must specify user command action"); + } + switch (action) { + case "add": + return this.onUserAdd(argv); + case "password": + return this.onUserPassword(argv); + case "remove": + return this.onUserRemove(argv); + case "ban": + return this.onUserBan(argv); + default: + break; + } + throw new Error(`unknown user command action: ${action}`); + } + + async onUserAdd(argv: string[]): Promise { + const email = argv.shift(); + if (!email) { + throw new Error("must specify email address"); + } + + const password = argv.shift(); + if (!password) { + throw new Error("must specify password"); + } + + const displayName: string | undefined = argv.shift(); + + const user = await UserService.create(email, password, displayName); + + this.log.info( + `user created: id:${user._id.toHexString()}, email:${user.email}` + ); + } + + async onUserRemove(argv: string[]): Promise { + let email = argv.shift(); + if (!email) { + throw new Error("must specify email address"); + } + + email = email.trim().toLowerCase(); + const user = await User.findOne({ email }).lean(); + if (!user) { + throw new Error(`user not found: ${email}`); + } + + await User.deleteOne({ _id: user._id }); + this.log.info(`user ${email} removed`); + } + + async onUserBan(argv: string[]): Promise { + const email = argv.shift(); + if (!email) { + throw new Error("must specify email address"); + } + + const email_lc = email.trim().toLowerCase(); + const user = await User.findOne({ email_lc }).lean(); + if (!user) { + throw new Error(`user not found: ${email}`); + } + + await User.updateOne( + { _id: user._id }, + { + $set: { + "flags.isBanned": true, + }, + } + ); + this.log.info(`user ${email} banned`); + } + + async onUserUnban(argv: string[]): Promise { + const email = argv.shift(); + if (!email) { + throw new Error("must specify email address"); + } + + const email_lc = email.trim().toLowerCase(); + const user = await User.findOne({ email_lc }).lean(); + if (!user) { + throw new Error(`user not found: ${email}`); + } + + await User.updateOne( + { _id: user._id }, + { + $set: { + "flags.isBanned": false, + }, + } + ); + this.log.info(`user ${email} unbanned`); + } + + async onUserPassword(argv: string[]): Promise { + let email = argv.shift(); + if (!email) { + throw new Error("must specify email address"); + } + + const password = argv.shift(); + if (!password) { + throw new Error("must specify password"); + } + + const email_lc = email.trim().toLowerCase(); + const user = await User.findOne({ email_lc }); + if (!user) { + throw new Error(`user not found: ${email}`); + } + + user.passwordSalt = uuidv4(); + user.password = await CryptoService.maskPassword( + user.passwordSalt, + password + ); + await user.save(); + + this.log.info(`user ${email} password changed`); + } + + async start(): Promise { + await this.startServices(); + } + + async startServices(): Promise { + await ApiClientService.start(); + } +} + +(async () => { + try { + const cli = new DtpWebCli(); + await cli.start(); + await cli.run(process.argv.slice(2)); + process.exit(0); + } catch (error) { + console.error((error as Error).message); + process.exit(-1); + } +})(); diff --git a/gadget-code/ssl/install-certs b/gadget-code/ssl/install-certs new file mode 100755 index 0000000..9e02dca --- /dev/null +++ b/gadget-code/ssl/install-certs @@ -0,0 +1,37 @@ +#!/bin/bash +set -e # stop and exit on any error + +PROJECT_DOMAIN="code-dev.g4dge7.com" +PROJECT_NAME="Gadget Code" + +# +# Add certificates to OS store for general system use +# + +echo "Installing Root CA..." +sudo cp "${PROJECT_DOMAIN}.rootCA.crt" /usr/local/share/ca-certificates/ + +echo "Installing self-signed development certificate..." +sudo cp "${PROJECT_DOMAIN}.crt" /usr/local/share/ca-certificates/ + +sudo update-ca-certificates --fresh + +# +# Add development certificates to NSS database for Chromium and others +# + +certutil -A -d ~/.pki/nssdb/ \ + -t "T,T,T" \ + -i "${PROJECT_DOMAIN}.rootCA.crt" \ + -n "${PROJECT_NAME} Root CA" + +certutil -A -d ~/.pki/nssdb/ \ + -t "C,C,C" \ + -i "${PROJECT_DOMAIN}.crt" \ + -n "${PROJECT_NAME} Development" + +# +# Display list of registered certificates in NSS database +# + +certutil -L -d ~/.pki/nssdb/ diff --git a/gadget-code/ssl/mkcert b/gadget-code/ssl/mkcert new file mode 100755 index 0000000..f1671b9 --- /dev/null +++ b/gadget-code/ssl/mkcert @@ -0,0 +1,97 @@ +#!/bin/bash +set -e # stop and exit on any error + +PROJECT_DOMAIN="code-dev.g4dge7.com" +PROJECT_NAME="Gadget Code" + +WITH_INSTALL=1 + +for arg in "$@"; do + if [ "$arg" == "--without-install" ]; then + WITH_INSTALL=0 + fi +done + +# Clean up old files +rm -f *crt *key + +# +# ROOT CA +# + +# Generate Root CA private key +echo "Generating Root CA..." +openssl genrsa -des3 -out ${PROJECT_DOMAIN}.rootCA.key 2048 + +# Create Root CA self-signed certificate +openssl req -x509 \ + -new -nodes -key ${PROJECT_DOMAIN}.rootCA.key \ + -sha256 -days 1024 \ + -out ${PROJECT_DOMAIN}.rootCA.crt \ + -subj "/C=US/ST=Pennsylvania/L=Pittsburgh/O=DTP Technologies, LLC/CN=${PROJECT_NAME} Root CA" + +# +# DEVELOPMENT CERTIFICATE +# + +# Create an OpenSSL configuration file for the development certificate +echo "Creating OpenSSL configuration file for development certificate..." +cat > ${PROJECT_DOMAIN}.cnf < { + describe('Backend Build', () => { + it('should have dist/web-app.js output', () => { + const distPath = path.join(ROOT_DIR, 'dist', 'web-app.js'); + expect(fs.existsSync(distPath)).toBe(true); + }); + }); + + describe('Frontend Build', () => { + it('should build frontend without errors', async () => { + const { stdout, stderr } = await execAsync('cd frontend && pnpm build', { + cwd: ROOT_DIR, + timeout: 120000, + }); + expect(stderr).toBe(''); + expect(stdout).toContain('built in'); + }, 120000); + + it('should have dist/client/index.html output', () => { + const indexPath = path.join(ROOT_DIR, 'dist', 'client', 'index.html'); + expect(fs.existsSync(indexPath)).toBe(true); + }); + + it('should have dist/client/assets output', () => { + const assetsDir = path.join(ROOT_DIR, 'dist', 'client', 'assets'); + expect(fs.existsSync(assetsDir)).toBe(true); + const jsFiles = fs.readdirSync(assetsDir).filter(f => f.endsWith('.js')); + const cssFiles = fs.readdirSync(assetsDir).filter(f => f.endsWith('.css')); + expect(jsFiles.length).toBeGreaterThan(0); + expect(cssFiles.length).toBeGreaterThan(0); + }); + }); + + describe('Configuration Tests', () => { + it('should have SSL certificates', () => { + const keyPath = path.join(ROOT_DIR, 'ssl', 'code-dev.g4dge7.com.key'); + const crtPath = path.join(ROOT_DIR, 'ssl', 'code-dev.g4dge7.com.crt'); + expect(fs.existsSync(keyPath)).toBe(true); + expect(fs.existsSync(crtPath)).toBe(true); + }); + + it('should have valid SSL key file', () => { + const keyPath = path.join(ROOT_DIR, 'ssl', 'code-dev.g4dge7.com.key'); + const content = fs.readFileSync(keyPath, 'utf-8'); + expect(content).toContain('-----BEGIN PRIVATE KEY-----'); + }); + + it('should have valid SSL certificate', () => { + const crtPath = path.join(ROOT_DIR, 'ssl', 'code-dev.g4dge7.com.crt'); + const content = fs.readFileSync(crtPath, 'utf-8'); + expect(content).toContain('-----BEGIN CERTIFICATE-----'); + }); + }); +}); + +describe('DTP Web Application Runtime Tests', () => { + let backendRunning = false; + let frontendRunning = false; + + afterAll(async () => { + // Clean up if we started processes (in real tests, you'd manage lifecycle differently) + }); + + describe('Backend Server', () => { + it('should respond on configured port', async () => { + // This test checks if the backend is reachable + // Note: In a real test, you'd start the backend process first + const options = { + hostname: 'localhost', + port: BACKEND_PORT, + method: 'GET', + path: '/', + }; + + return new Promise((resolve, reject) => { + const req = http.request(options, (res) => { + // Expect some response (will be 404 for / but proves server is running) + expect(res.statusCode).toBeDefined(); + resolve(); + }); + + req.on('error', (err) => { + // If connection refused, backend isn't running (this is expected for manual testing) + if (err.code === 'ECONNREFUSED') { + resolve(); + } else { + reject(err); + } + }); + + req.end(); + }); + }); + }); + + describe('Frontend Proxy Configuration', () => { + it('should have vite config with correct proxy settings', () => { + const viteConfigPath = path.join(ROOT_DIR, 'frontend', 'vite.config.ts'); + const content = fs.readFileSync(viteConfigPath, 'utf-8'); + + // Verify proxy targets backend port + expect(content).toContain(`target: 'http://localhost:${BACKEND_PORT}'`); + + // Verify Socket.io proxy with websockets + expect(content).toContain("'/socket.io'"); + expect(content).toContain('ws: true'); + + // Verify auth proxy + expect(content).toContain("'/auth'"); + + // Verify api proxy + expect(content).toContain("'/api'"); + }); + + it('should have vite config with HTTPS', () => { + const viteConfigPath = path.join(ROOT_DIR, 'frontend', 'vite.config.ts'); + const content = fs.readFileSync(viteConfigPath, 'utf-8'); + + expect(content).toContain('https:'); + expect(content).toContain('.key'); + expect(content).toContain('.crt'); + }); + + it('should have correct frontend port in config', () => { + const viteConfigPath = path.join(ROOT_DIR, 'frontend', 'vite.config.ts'); + const content = fs.readFileSync(viteConfigPath, 'utf-8'); + + expect(content).toContain(`port: ${FRONTEND_PORT}`); + }); + }); +}); + +describe('Environment Configuration', () => { + it('should have environment variables for HTTPS', () => { + const envPath = path.join(ROOT_DIR, 'src', 'config', 'env.ts'); + const content = fs.readFileSync(envPath, 'utf-8'); + + expect(content).toContain('https'); + expect(content).toContain('port: parseInt'); + expect(content).toContain('keyFile'); + expect(content).toContain('crtFile'); + }); + + it('should have frontend port configured', () => { + const envPath = path.join(ROOT_DIR, 'src', 'config', 'env.ts'); + const content = fs.readFileSync(envPath, 'utf-8'); + + expect(content).toContain('frontend'); + expect(content).toContain('port:'); + }); +}); + +describe('Dependencies', () => { + it('should have all required dependencies in root package.json', () => { + const pkgPath = path.join(ROOT_DIR, 'package.json'); + const pkgContent = fs.readFileSync(pkgPath, 'utf-8'); + const pkg = JSON.parse(pkgContent); + + // Backend dependencies + expect(pkg.dependencies).toHaveProperty('socket.io'); + expect(pkg.dependencies).toHaveProperty('express'); + expect(pkg.dependencies).toHaveProperty('express-session'); + + // Frontend dependencies + expect(pkg.dependencies).toHaveProperty('react'); + expect(pkg.dependencies).toHaveProperty('react-dom'); + + // Dev dependencies + expect(pkg.devDependencies).toHaveProperty('vite'); + expect(pkg.devDependencies).toHaveProperty('typescript'); + expect(pkg.devDependencies).toHaveProperty('vitest'); + }); +}); \ No newline at end of file diff --git a/gadget-code/tests/e2e/auth.test.ts b/gadget-code/tests/e2e/auth.test.ts new file mode 100644 index 0000000..815b6f6 --- /dev/null +++ b/gadget-code/tests/e2e/auth.test.ts @@ -0,0 +1,38 @@ +import { chromium, test, expect } from '@playwright/test'; + +test.describe('Authentication Flow', () => { + test('should sign in and show authenticated home', async ({ page }) => { + await page.goto('https://code-dev.g4dge7.com:5174/sign-in'); + await page.waitForLoadState('networkidle'); + + await page.fill('#email', 'rob@digitaltelepresence.com'); + await page.fill('#password', 'ionfrali'); + await page.click('button[type="submit"]'); + await page.waitForTimeout(3000); + + const userData = await page.evaluate(() => localStorage.getItem('dtp_user')); + expect(userData).toBeDefined(); + + const content = await page.content(); + expect(content).toContain('Welcome'); + expect(content).toContain('Rob Colbert'); + }); + + test('should sign out and show unauthenticated home', async ({ page }) => { + await page.goto('https://code-dev.g4dge7.com:5174/sign-in'); + await page.waitForLoadState('networkidle'); + await page.fill('#email', 'rob@digitaltelepresence.com'); + await page.fill('#password', 'ionfrali'); + await page.click('button[type="submit"]'); + await page.waitForTimeout(2000); + + await page.click('button:has-text("Sign Out")'); + await page.waitForTimeout(2000); + + const userData = await page.evaluate(() => localStorage.getItem('dtp_user')); + expect(userData).toBeNull(); + + const content = await page.content(); + expect(content).toContain('Sign Up Today!'); + }); +}); \ No newline at end of file diff --git a/gadget-code/tests/e2e/manual-test.ts b/gadget-code/tests/e2e/manual-test.ts new file mode 100644 index 0000000..6741d23 --- /dev/null +++ b/gadget-code/tests/e2e/manual-test.ts @@ -0,0 +1,67 @@ +import { test, expect, chromium } from '@playwright/test'; + +async function runTest() { + const browser = await chromium.launch({ headless: true }); + const context = await browser.newContext({ + ignoreHTTPSErrors: true, + }); + const page = await context.newPage(); + + page.on('console', msg => console.log('BROWSER:', msg.text())); + + try { + await page.goto('https://code-dev.g4dge7.com:5174/sign-in', { + ignoreHTTPSErrors: true, + }); + await page.waitForLoadState('networkidle'); + + console.log('Filling form...'); + await page.fill('#email', 'rob@digitaltelepresence.com'); + await page.fill('#password', 'ionfrali'); + + // Also evaluate directly in page context to see what's happening + await page.evaluate(() => { + console.log('Testing fetch directly...'); + fetch('/auth/sign-in', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({ + email: 'rob@digitaltelepresence.com', + password: 'ionfrali' + }) + }).then(r => r.json()).then(d => { + console.log('Direct fetch result:', JSON.stringify(d)); + }); + }); + + console.log('Clicking submit...'); + await page.click('button[type="submit"]'); + + // Wait and check + await page.waitForTimeout(3000); + + const userData = await page.evaluate(() => localStorage.getItem('dtp_user')); + const tokenData = await page.evaluate(() => localStorage.getItem('dtp_auth_token')); + + console.log('=== RESULTS ==='); + console.log('User in localStorage:', userData ? 'YES' : 'NO'); + console.log('Token in localStorage:', tokenData ? 'YES' : 'NO'); + + const content = await page.content(); + const welcomeVisible = content.includes('Welcome'); + console.log('Welcome visible:', welcomeVisible); + + if (welcomeVisible) { + console.log('\n✅ PASSED'); + } else { + console.log('\n❌ FAILED'); + } + + } catch (e) { + console.error('Error:', e.message); + } finally { + await browser.close(); + } +} + +runTest(); \ No newline at end of file diff --git a/gadget-code/tsconfig.json b/gadget-code/tsconfig.json new file mode 100644 index 0000000..860528e --- /dev/null +++ b/gadget-code/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["es2022", "dom", "dom.iterable"], + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "module": "ESNext", + "rootDir": "./src", + "paths": { + "@/*": ["./src/*"] + }, + "moduleResolution": "bundler", + "typeRoots": ["node_modules/@types", "types"], + "allowImportingTsExtensions": true, + "rewriteRelativeImportExtensions": true, + "resolveJsonModule": true, + "declaration": false, + "sourceMap": true, + "outDir": "dist", + "removeComments": false, + "importHelpers": true, + "sourceRoot": "./src", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "alwaysStrict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedIndexedAccess": true, + "pretty": true, + "skipDefaultLibCheck": true, + "skipLibCheck": true + }, + "include": ["src/**/*.ts"], + "exclude": ["data", "node_modules"], + "files": [ + "types/error.d.ts", + "types/express-session.d.ts", + "types/express.d.ts", + "types/window.d.ts" + ] +} diff --git a/gadget-code/types/error.d.ts b/gadget-code/types/error.d.ts new file mode 100644 index 0000000..2e46fcc --- /dev/null +++ b/gadget-code/types/error.d.ts @@ -0,0 +1,7 @@ +// types/error.d.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +interface Error { + statusCode?: number; +} diff --git a/gadget-code/types/express-session.d.ts b/gadget-code/types/express-session.d.ts new file mode 100644 index 0000000..c666b53 --- /dev/null +++ b/gadget-code/types/express-session.d.ts @@ -0,0 +1,18 @@ +// types/express-session.d.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { SessionData } from "express-session"; +import { IUser } from "../models/user.js"; + +declare module "express-session" { + interface SessionData { + type?: string; + user?: IUser | null; + token?: string; + captcha: { + [key: string]: string; + // add custom session vars here + }; + } +} diff --git a/gadget-code/types/express.d.ts b/gadget-code/types/express.d.ts new file mode 100644 index 0000000..49c74de --- /dev/null +++ b/gadget-code/types/express.d.ts @@ -0,0 +1,26 @@ +// types/express.d.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { IUser } from "../src/models/user.js"; + +declare global { + namespace Express { + interface Locals { + user?: IUser | null; + // define custom locals properties here + } + + interface Request { + rawBody?: string; + user?: IUser | null; + // define custom request properties here + } + + // req.params + interface ParamsDictionary { + [key: string]: unknown; + // add custom parameters here + } + } +} diff --git a/gadget-code/types/window.d.ts b/gadget-code/types/window.d.ts new file mode 100644 index 0000000..f36f047 --- /dev/null +++ b/gadget-code/types/window.d.ts @@ -0,0 +1,17 @@ +// types/window.d.ts +// Copyright (C) 2026 Robert Colbert +// All Rights Reserved + +import { DtpGlobals } from "client/js/lib/globals.ts"; +import { DtpWebApp } from "../src/client/js/web-app.ts"; + +declare global { + interface Window { + dtp: DtpGlobals; + app: DtpWebApp; + } + interface GlobalThis extends Window { + dtp: DtpGlobals; + app: DtpWebApp; + } +} diff --git a/gadget-code/vitest.config.ts b/gadget-code/vitest.config.ts new file mode 100644 index 0000000..1586d5b --- /dev/null +++ b/gadget-code/vitest.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from 'vitest/config'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +export default defineConfig({ + test: { + globals: true, + environment: 'node', + include: ['tests/**/*.test.ts', '!tests/e2e/**/*.test.ts'], + coverage: { + provider: 'v8', + reporter: ['text', 'json', 'html'], + }, + }, +}); \ No newline at end of file diff --git a/gadget-drone/.gitignore b/gadget-drone/.gitignore new file mode 100644 index 0000000..1bf742c --- /dev/null +++ b/gadget-drone/.gitignore @@ -0,0 +1,6 @@ +.env + +dist +logs + +node_modules \ No newline at end of file diff --git a/gadget-drone/.vscode/launch.json b/gadget-drone/.vscode/launch.json new file mode 100644 index 0000000..7243e73 --- /dev/null +++ b/gadget-drone/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Launch Program", + "skipFiles": ["/**"], + "program": "${workspaceFolder}/dist/gadget-drone.js", + "preLaunchTask": "tsc: build - tsconfig.json", + "console": "integratedTerminal", + "outFiles": ["${workspaceFolder}/dist/**/*.js"] + } + ] +} diff --git a/gadget-drone/AGENTS.md b/gadget-drone/AGENTS.md new file mode 100644 index 0000000..6f19db0 --- /dev/null +++ b/gadget-drone/AGENTS.md @@ -0,0 +1,30 @@ +# AGENTS.md + +## Dev Commands + +```bash +pnpm dev # Run with tsx (src/gadget-drone.ts) +pnpm build # Compile TypeScript to dist/ +pnpm start # Run built code (dist/gadget-drone.js) +``` + +## Requirements + +- **Redis** must be running (configure via `GADGET_REDIS_HOST`, `GADGET_REDIS_PORT`) +- **Platform credentials** required in `.env`: + - `GADGET_PLATFORM_URL` + - `GADGET_PLATFORM_KEY` + +## Architecture + +- **Entry**: `src/gadget-drone.ts` - extends `GadgetProcess`, registers with platform, attaches to Bull queue +- **Services**: `AgentService`, `PlatformService` in `src/services/` +- **Queue**: Bull queue named `gadget-drone`, job type `prompt` + +## Build + +`tsc` with `module: NodeNext` outputs to `dist/`. ES modules only. + +## Tests + +None configured (`pnpm test` exits with error). \ No newline at end of file diff --git a/gadget-drone/LICENSE b/gadget-drone/LICENSE new file mode 100644 index 0000000..d741e4c --- /dev/null +++ b/gadget-drone/LICENSE @@ -0,0 +1,201 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to the Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, + the Licensor for the purpose of discussing and improving the Work, + but excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + where such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR + PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claimed as a result of, Your acceptance of such + obligations or act on Your behalf. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/gadget-drone/docs/agentic-workflow-loop.md b/gadget-drone/docs/agentic-workflow-loop.md new file mode 100644 index 0000000..2286154 --- /dev/null +++ b/gadget-drone/docs/agentic-workflow-loop.md @@ -0,0 +1,126 @@ +# Gadget Drone: The Agentic Workflow Loop + +[Gadget Drone](./gadget-drone.md) exists primarily to run the Agentic Workflow Loop (AWL) within the Gadget Code ecosystem. + +The User is using a chat interface in an HTML5 web application connected to the Gadget Code web server using Socket.IO. Gadget Drone is also connected to the Gadget Code web server using Socket.IO. The User submits prompts for processing in the chat interface, and the web server packages them as Work Order jobs for Gadget Drone to process. + +As the drone is calling AI APIs to have the chat processed and receiving streaming responses, it emits messages to the web server to update the User's chat session context and the AI service provider's statistics. + +## The Work Order + +Each Gadget Drone registered by the User implements a named Bull job queue. Gadget Code will create a Work Order job for the Drone to process, and place it into a selected drone's job queue for processing. + +The Work Order is a JSON object that contains information about the project, AI service provider and model, and also the User's prompt. + +````typescript +/* + * Chat session context is made of chat messages with a timestamp and role. The + * role is "system", "user", "assistant", or "tool". The assistant can have + * reasoning or "thinking" content. When thinking content is being included, we + * merge the thinking + response by enclosing the thinking content in a + * element in the content. + * + * ``` + * I need to research the project... + * I found the bug! + * ``` + */ +interface IChatMessage { + createdAt: Date; + role: string; + content: string; +} + +interface IWorkOrder { + project: { + _id: string; + name: string; + slug: string; + gitUrl: string; + }; + provider: { + sdk: "ollama" | "openai"; + baseUrl: string; + apiKey: string; + modelId: string; + params: { + temperature: number; + topP: number; + topK: number; + }; + }; + chatSession: { + _id: string; + name: string; + context: IChatMessage[]; + }; + chatTurn: { + _id: string; + mode: string; + prompt: string; + }; +} +```` + +## The Workflow Loop + +When a Work Order job is received a Gadget Drone, it performs a series of steps in preparation to work on the prompt contained in the work order. + +1. Check if the workspace directory currently has the project cloned. If not, clone the project from git into the workspace directory. + +2. Instantiate the correct AI API client object configured with the credentials provided in the work order. + +```typescript +/** + * Called when the drone receives a Work Order job for processing. The Gadget + * Code web server will have already created the `ChatTurn` within the + * `ChatSession` happening within the `Project`, and is passing all information + * needed by the drone to execute the prompt. + */ +async function onWorkOrder(job: Bull.Job): Promise { + // this turn's context (system, history, prompt, work) + const messages = []; + + const systemPrompt = buildSystemPrompt(session); + messages.push({ role: "system", content: systemPrompt }); + + // recall full session history into messages array + buildSessionContext(job, messages); + + // push the User's latest prompt to the context + messages.push({ role: "user", content: job.data.prompt }); + + let keepProcessing = true; + do { + const response = await aiApiCall(messages); + keeProcessing = response.tool_calls.length > 0; + for (const tool_call of response.tool_calls) { + const response = await callTool(tool_call.name, tool_call.args); + messages.push({ role: "tool", content: response }); + /* emit turn-tool-call socket message */ + } + } while (keepProcessing); + + /* emit turn-finished socket message */ +} + +function buildSessionContext( + job: Bull.Job, + messages: IChatMessage[], +): void { + for (const message of job.data.chatSession.context) { + if (message.role === "system") { + continue; // we don't + } + messages.push(message); + } +} + +/** + * To optimize context, reduce clutter, and help the agent focus, full outputs + * of older file reads and edits are summarized once a newer version is available. + */ +function pruneSessionContext(messages: IChatMessage[]): void { + // TODO +} +``` diff --git a/gadget-drone/docs/gadget-drone.md b/gadget-drone/docs/gadget-drone.md new file mode 100644 index 0000000..7eb176a --- /dev/null +++ b/gadget-drone/docs/gadget-drone.md @@ -0,0 +1,55 @@ +# Gadget Drone + +Gadget Drone is a worker component in the Gadget Code ecosystem. It is built and maintained separately from this project. Gadget Drone operates as a standalone process running on a host in a directory of the User's choosing. + +The User can operate more than one Gadget Drone per host by running them in separate Gadget Drone Workspace Directories. + +## Workspace Directory + +A Gadget Drone Workspace Directory is simply `process.cwd()` at startup. It is the directory in which the drone has been started. The drone will manage the contents of the directory, and expects the directory to be empty the first time the drone is started. + +If the workspace directory isn't empty at startup, and the directory doesn't contain the `.gadget` subdirectory with a stored `.registration.json`, it refuses to start. + +If the directory is already a workspace directory, the drone reads the `.registration.json` file and uses that information to connect to the Gadget Code web service. + +## Startup Procedure + +At startup, Gadget Drone: + +1. Attempts to take ownership of process.cwd() as a Gadget Drone Workspace Directory. A workspace will contain clones of git repositories stored in directories matching the `Project.slug`. + + , and verifies that: + 1. The directory is already a workspace directory; or + 2. Empty. + + If not a Gadget Drone directory, and if also not empty, Gadget Drone refuses to start with a message printed to the console, and terminates. + +2. Creates the `.gadget` and `.gadget-cache` directories in the directory on launch if they are not there. + +It authenticates to the Gadget Code web service, receives a `DroneRegistration` and `DroneSocketSession`, connects to the Socket.IO session, and waits for commands. + +Commands are sent from the Gadget Code web server to the Gadget Drone process as a Socket message. The drone processes the message, and will emit status and update events as it works. These status and update events are sent to the Gadget Code web service, where they are processed into a `ChatHistory` record as part of a `ChatSession` being operated by the User in an HTML5 browser client. + +## `ChatSession` and `ChatHistory` + +The User will enter prompts to be processed by the Gadget Code Agent, which runs in Gadget Done. One message the system sends to Gadget Drone is `prompt`, which is a message containing all details needed to execute a prompt, such as the project in which the prompt is being executed, and other details. + +The drone then executes the prompt in the project's directory to work on the project, emitting updates as it streams the response from the AI API in use, and sending a `prompt-finished` message upon completion to close out the `ChatSession` turn. + +A `ChatSession` turn equals one `ChatHistory` record in the database, and is made of: + +1. The User's input prompt +2. The Agent's Thinking content +3. The Agent's Response content +4. All tool calls made by the Agent, to include: + 1. The name of the tool function being called + 2. The input parameters to the tool call + 3. The response from the tool call + +Gadget Drone: + +## `.gadget` directory + +When the Gadget Drone starts and initializes, + +## `.gadget-cache` directory diff --git a/gadget-drone/gadget-drone.code-workspace b/gadget-drone/gadget-drone.code-workspace new file mode 100644 index 0000000..e529cc2 --- /dev/null +++ b/gadget-drone/gadget-drone.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": ".", + }, + ], + "settings": {}, +} diff --git a/gadget-drone/package.json b/gadget-drone/package.json new file mode 100644 index 0000000..f9f7154 --- /dev/null +++ b/gadget-drone/package.json @@ -0,0 +1,40 @@ +{ + "name": "@gadget/drone", + "version": "1.0.0", + "description": "Gadget Code drone process", + "type": "module", + "main": "./dist/gadget-drone.js", + "scripts": { + "dev": "tsx src/gadget-drone.ts", + "dev:watch": "tsx watch src/gadget-drone.ts", + "build": "tsc", + "start": "node dist/gadget-drone.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "gadget", + "drone", + "worker" + ], + "author": "Rob Colbert", + "license": "Apache-2.0", + "packageManager": "pnpm@10.33.2+sha512.a90faf6feeab71ad6c6e57f94e0fe1a12f5dcc22cd754db40ae9593eb6a3e0b6b12e3540218bb37ae083404b1f2ce6db2a4121e979829b4aff94b99f49da1cf8", + "dependencies": { + "@gadget/ai": "workspace:*", + "ansicolor": "^2.0.3", + "dayjs": "^1.11.20", + "dotenv": "^17.4.2", + "numeral": "^2.0.6", + "ollama": "^0.6.3", + "openai": "^6.34.0", + "socket.io-client": "^4.8.3" + }, + "devDependencies": { + "@types/node": "^25.6.0", + "@types/numeral": "^2.0.5", + "prettier": "^3.8.3", + "tsc-alias": "^1.8.16", + "tsx": "^4.21.0", + "typescript": "^6.0.3" + } +} diff --git a/gadget-drone/pnpm-lock.yaml b/gadget-drone/pnpm-lock.yaml new file mode 100644 index 0000000..47740e0 --- /dev/null +++ b/gadget-drone/pnpm-lock.yaml @@ -0,0 +1,702 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + ansicolor: + specifier: ^2.0.3 + version: 2.0.3 + dayjs: + specifier: ^1.11.20 + version: 1.11.20 + dotenv: + specifier: ^17.4.2 + version: 17.4.2 + numeral: + specifier: ^2.0.6 + version: 2.0.6 + ollama: + specifier: ^0.6.3 + version: 0.6.3 + openai: + specifier: ^6.34.0 + version: 6.34.0 + devDependencies: + '@types/node': + specifier: ^25.6.0 + version: 25.6.0 + '@types/numeral': + specifier: ^2.0.5 + version: 2.0.5 + prettier: + specifier: ^3.8.3 + version: 3.8.3 + tsc-alias: + specifier: ^1.8.16 + version: 1.8.16 + tsx: + specifier: ^4.21.0 + version: 4.21.0 + typescript: + specifier: ^6.0.3 + version: 6.0.3 + +packages: + + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@types/node@25.6.0': + resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} + + '@types/numeral@2.0.5': + resolution: {integrity: sha512-kH8I7OSSwQu9DS9JYdFWbuvhVzvFRoCPCkGxNwoGgaPeDfEPJlcxNvEOypZhQ3XXHsGbfIuYcxcJxKUfJHnRfw==} + + ansicolor@2.0.3: + resolution: {integrity: sha512-pzusTqk9VHrjgMCcTPDTTvfJfx6Q3+L5tQ6yKC8Diexmoit4YROTFIkxFvRTNL9y5s0Q8HrSrgerCD5bIC+Kiw==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + dayjs@1.11.20: + resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dotenv@17.4.2: + resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} + engines: {node: '>=12'} + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mylas@2.1.14: + resolution: {integrity: sha512-BzQguy9W9NJgoVn2mRWzbFrFWWztGCcng2QI9+41frfk+Athwgx3qhqhvStz7ExeUUu7Kzw427sNzHpEZNINog==} + engines: {node: '>=16.0.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + numeral@2.0.6: + resolution: {integrity: sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==} + + ollama@0.6.3: + resolution: {integrity: sha512-KEWEhIqE5wtfzEIZbDCLH51VFZ6Z3ZSa6sIOg/E/tBV8S51flyqBOXi+bRxlOYKDf8i327zG9eSTb8IJxvm3Zg==} + + openai@6.34.0: + resolution: {integrity: sha512-yEr2jdGf4tVFYG6ohmr3pF6VJuveP0EA/sS8TBx+4Eq5NT10alu5zg2dmxMXMgqpihRDQlFGpRt2XwsGj+Fyxw==} + hasBin: true + peerDependencies: + ws: ^8.18.0 + zod: ^3.25 || ^4.0 + peerDependenciesMeta: + ws: + optional: true + zod: + optional: true + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + plimit-lit@1.6.1: + resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} + engines: {node: '>=12'} + + prettier@3.8.3: + resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} + engines: {node: '>=14'} + hasBin: true + + queue-lit@1.5.2: + resolution: {integrity: sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==} + engines: {node: '>=12'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tsc-alias@1.8.16: + resolution: {integrity: sha512-QjCyu55NFyRSBAl6+MTFwplpFcnm2Pq01rR/uxfqJoLMm6X3O14KEGtaSDZpJYaE1bJBGDjD0eSuiIWPe2T58g==} + engines: {node: '>=16.20.2'} + hasBin: true + + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + engines: {node: '>=18.0.0'} + hasBin: true + + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@7.19.2: + resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} + + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + +snapshots: + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-ppc64@0.27.7': + optional: true + + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true + + '@esbuild/linux-x64@0.27.7': + optional: true + + '@esbuild/netbsd-arm64@0.27.7': + optional: true + + '@esbuild/netbsd-x64@0.27.7': + optional: true + + '@esbuild/openbsd-arm64@0.27.7': + optional: true + + '@esbuild/openbsd-x64@0.27.7': + optional: true + + '@esbuild/openharmony-arm64@0.27.7': + optional: true + + '@esbuild/sunos-x64@0.27.7': + optional: true + + '@esbuild/win32-arm64@0.27.7': + optional: true + + '@esbuild/win32-ia32@0.27.7': + optional: true + + '@esbuild/win32-x64@0.27.7': + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@types/node@25.6.0': + dependencies: + undici-types: 7.19.2 + + '@types/numeral@2.0.5': {} + + ansicolor@2.0.3: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.2 + + array-union@2.1.0: {} + + binary-extensions@2.3.0: {} + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + commander@9.5.0: {} + + dayjs@1.11.20: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dotenv@17.4.2: {} + + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + fsevents@2.3.3: + optional: true + + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + ignore@5.3.2: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mylas@2.1.14: {} + + normalize-path@3.0.0: {} + + numeral@2.0.6: {} + + ollama@0.6.3: + dependencies: + whatwg-fetch: 3.6.20 + + openai@6.34.0: {} + + path-type@4.0.0: {} + + picomatch@2.3.2: {} + + plimit-lit@1.6.1: + dependencies: + queue-lit: 1.5.2 + + prettier@3.8.3: {} + + queue-lit@1.5.2: {} + + queue-microtask@1.2.3: {} + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.2 + + resolve-pkg-maps@1.0.0: {} + + reusify@1.1.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + slash@3.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tsc-alias@1.8.16: + dependencies: + chokidar: 3.6.0 + commander: 9.5.0 + get-tsconfig: 4.14.0 + globby: 11.1.0 + mylas: 2.1.14 + normalize-path: 3.0.0 + plimit-lit: 1.6.1 + + tsx@4.21.0: + dependencies: + esbuild: 0.27.7 + get-tsconfig: 4.14.0 + optionalDependencies: + fsevents: 2.3.3 + + typescript@6.0.3: {} + + undici-types@7.19.2: {} + + whatwg-fetch@3.6.20: {} diff --git a/gadget-drone/pnpm-workspace.yaml b/gadget-drone/pnpm-workspace.yaml new file mode 100644 index 0000000..10188a9 --- /dev/null +++ b/gadget-drone/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +allowBuilds: + msgpackr-extract: true diff --git a/gadget-drone/src/config/env.ts b/gadget-drone/src/config/env.ts new file mode 100644 index 0000000..127acb1 --- /dev/null +++ b/gadget-drone/src/config/env.ts @@ -0,0 +1,73 @@ +// config/env.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +import "dotenv/config"; +import type PackageJson from "../../package.json"; + +import assert from "node:assert"; + +import path, { dirname } from "node:path"; +import fs from "node:fs"; +import { fileURLToPath } from "node:url"; +const __dirname = dirname(fileURLToPath(import.meta.url)); // jshint ignore:line + +assert( + process.env.GADGET_PLATFORM_URL, + "must define GADGET_PLATFORM_URL in .env", +); +assert( + process.env.GADGET_PLATFORM_KEY, + "must define GADGET_PLATFORM_KEY in .env", +); + +const ROOT_DIR = path.resolve(__dirname, "..", ".."); +const SRC_DIR = path.resolve(__dirname, ".."); + +async function readJsonFile(path: string): Promise { + const file = await fs.promises.readFile(path); + return JSON.parse(file.toString("utf-8")) as T; +} + +/* eslint-disable no-process-env */ +export default { + NODE_ENV: process.env.NODE_ENV, + timezone: process.env.GADGET_TIMEZONE || "America/New_York", + root: ROOT_DIR, + src: SRC_DIR, + pkg: await readJsonFile( + path.join(ROOT_DIR, "package.json"), + ), + platform: { + baseUrl: process.env.GADGET_PLATFORM_URL, + apiKey: process.env.GADGET_PLATFORM_KEY, + }, + redis: { + host: process.env.GADGET_REDIS_HOST || "localhost", + port: parseInt(process.env.GADGET_REDIS_PORT || "6379", 10), + password: process.env.GADGET_REDIS_PASSWORD, + keyPrefix: process.env.GADGET_REDIS_KEY_PREFIX || "dnews", + lazyConnect: process.env.GADGET_REDIS_LAZYCONNECT === "enabled", + }, + log: { + console: { + enabled: process.env.GADGET_LOG_CONSOLE === "enabled", + }, + file: { + enabled: process.env.GADGET_LOG_FILE === "enabled", + path: process.env.GADGET_LOG_FILE_PATH || path.join(ROOT_DIR, "logs"), + name: process.env.GADGET_LOG_FILE_NAME || "gadget-drone", + maxWritesPerFile: parseInt( + process.env.GADGET_LOG_FILE_MAX_WRITES || "10000", + 10, + ), + maxFiles: parseInt(process.env.GADGET_LOG_FILE_MAX_FILES || "10", 10), + }, + levels: { + debug: process.env.GADGET_LOG_DEBUG === "enabled", + info: process.env.GADGET_LOG_INFO === "enabled", + warn: process.env.GADGET_LOG_WARN === "enabled", + }, + }, +}; +/* eslint-enable no-process-env */ diff --git a/gadget-drone/src/gadget-drone.ts b/gadget-drone/src/gadget-drone.ts new file mode 100644 index 0000000..d8317dc --- /dev/null +++ b/gadget-drone/src/gadget-drone.ts @@ -0,0 +1,172 @@ +// src/gadget-drone.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +import env from "./config/env.ts"; +import assert from "node:assert"; + +import { io, ManagerOptions, SocketOptions, Socket } from "socket.io-client"; + +import AgentService, { IAgentWorkOrder } from "./services/agent.ts"; +import AiService from "./services/ai.ts"; +import PlatformService, { + DroneStatus, + PlatformRegistration, +} from "./services/platform.ts"; + +import { GadgetProcess } from "./lib/process.ts"; + +class GadgetDrone extends GadgetProcess { + private registration: PlatformRegistration | undefined; + private socket: Socket | undefined; + private isShuttingDown: boolean = false; + + get name(): string { + return "GadgetDrone"; + } + + get slug(): string { + return "gadget-drone"; + } + + constructor() { + super(); + } + + async start(): Promise { + /* + * Initialize the system + */ + + this.hookProcessSignals(); + await this.startServices(); + + /* + * Register this Drone with the Gadget Code web services platform. + */ + + const email = "rob@digitaltelepresence.com"; + const password = "ionfrali"; + this.registration = await PlatformService.register(email, password); + this.log.info("registered with platform", { + registration: this.registration, + }); + + /* + * Connect to the Gadget Code web services platform and configure the real- + * time messaging system on Socket.IO. + */ + await this.connectSocket(); + + /* + * Mark this Drone as available and ready to accept work orders. + */ + + await PlatformService.setStatus(DroneStatus.Available); + this.log.info(`Gadget Drone v${env.pkg.version} started`); + } + + async stop(): Promise { + this.log.info(`Gadget Drone v${env.pkg.version} shutting down`); + + if (this.socket) { + this.socket.disconnect(); + delete this.socket; + } + + await PlatformService.unregister(); + await this.stopServices(); + + return 0; + } + + async startServices(): Promise { + this.log.info("starting services"); + + await AgentService.start(); + await AiService.start(); + await PlatformService.start(); + + this.log.info("services started"); + } + + async stopServices(): Promise { + this.log.info("stopping services"); + + await AgentService.stop(); + await AiService.stop(); + await PlatformService.stop(); + + this.log.info("services stopped"); + } + + async connectSocket(): Promise { + return new Promise((resolve, reject) => { + assert(this.registration, "must be registered with Gadget Code platform"); + const options: Partial = { + auth: { token: this.registration._id }, + reconnectionAttempts: 10, + timeout: 5000, + transports: ["websocket"], + }; + + /* + * Allow self-signed certs in non-production environments + */ + if (env.NODE_ENV !== "production") { + options.rejectUnauthorized = false; + } + + this.log.debug("connecting to Gadget Code platform..."); + this.socket = io("https://code-dev.g4dge7.com:5174/", options); + this.socket.on("connect_error", (err) => { + this.log.error("socket connect error", { err }); + reject(err); + }); + this.socket.on("connect", () => { + this.log.info("connected to Gadget Code platform."); + resolve(); + }); + }); + } + + hookProcessSignals(): void { + process.title = this.name; + + process.on("unhandledRejection", async (error: Error, p) => { + this.log.error("Unhandled rejection", { + error, + promise: p, + stack: error.stack, + }); + + const exitCode = await this.stop(); + process.exit(exitCode); + }); + + process.on("warning", (error) => { + if (error.name === "DeprecationWarning") return; + this.log.alert("warning", { error }); + }); + + process.on("SIGINT", async () => { + this.log.info("SIGINT received"); + if (this.isShuttingDown) return; + + this.log.info("requesting shutdown"); + const exitCode = await this.stop(); + + process.exit(exitCode); + }); + } +} + +(async () => { + try { + const drone = new GadgetDrone(); + await drone.start(); + } catch (error) { + console.error("failed to start gadget-drone", error); + process.exit(-1); + } +})(); diff --git a/gadget-drone/src/lib/component.ts b/gadget-drone/src/lib/component.ts new file mode 100644 index 0000000..4aa05d0 --- /dev/null +++ b/gadget-drone/src/lib/component.ts @@ -0,0 +1,8 @@ +// src/lib/component.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +export interface GadgetComponent { + get name(): string; + get slug(): string; +} diff --git a/gadget-drone/src/lib/log-file.ts b/gadget-drone/src/lib/log-file.ts new file mode 100644 index 0000000..f4f88da --- /dev/null +++ b/gadget-drone/src/lib/log-file.ts @@ -0,0 +1,73 @@ +// src/lib/log-file.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +import env from "../config/env.js"; + +import fs from "node:fs"; +import path from "node:path"; + +import numeral from "numeral"; + +import { Writable, WritableOptions } from "stream"; + +type StreamCallback = (error?: Error | null) => void; + +export interface GadgetLogFileOptions extends WritableOptions { + basePath: string; + name: string; + maxWritesPerFile: number; + maxFiles: number; +} + +export class GadgetLogFile extends Writable { + options: GadgetLogFileOptions; + file?: fs.WriteStream; + + fileIdx: number = 0; + writeCount: number = 0; + + constructor(options: GadgetLogFileOptions) { + super(options); + this.options = options; + } + + open(): void { + fs.mkdirSync(this.options.basePath, { recursive: true }); + const filename = path.join( + this.options.basePath, + `${this.options.name}.${numeral(this.fileIdx).format("000")}.log`, + ); + this.file = fs.createWriteStream(filename, { encoding: "utf-8" }); + this.writeCount = 0; + } + + _write( + chunk: unknown, + encoding: BufferEncoding, + callback: StreamCallback, + ): boolean { + if (!this.file) { + return false; + } + if (this.writeCount > this.options.maxWritesPerFile) { + this.file.close(); + if (++this.fileIdx > this.options.maxFiles) { + this.fileIdx = 0; + } + this.open(); + } + return this.file.write(chunk, encoding, callback); + } +} + +const defaultLogFileOptions = { + basePath: env.log.file.path || "/var/log/gadget-code", + name: env.log.file.name || env.pkg.name, + maxWritesPerFile: env.log.file.maxWritesPerFile, + maxFiles: env.log.file.maxFiles, +}; +const defaultLogFile = new GadgetLogFile(defaultLogFileOptions); +defaultLogFile.open(); + +export { defaultLogFile }; diff --git a/gadget-drone/src/lib/log-transport-console.ts b/gadget-drone/src/lib/log-transport-console.ts new file mode 100644 index 0000000..9c65740 --- /dev/null +++ b/gadget-drone/src/lib/log-transport-console.ts @@ -0,0 +1,62 @@ +// src/lib/log-transport-console.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +import * as util from "node:util"; + +import dayjs from "dayjs"; +import color from "ansicolor"; + +import { GadgetLogLevel } from "./log.js"; +import { GadgetLogTransport } from "./log-transport.js"; +import { GadgetComponent } from "./component.ts"; + +export class GadgetLogTransportConsole implements GadgetLogTransport { + async writeLog( + timestamp: Date, + component: GadgetComponent, + level: GadgetLogLevel, + message: string, + metadata?: unknown, + ): Promise { + let clevel = level.padEnd(5); + switch (level) { + case "debug": + clevel = color.darkGray(clevel); + break; + case "info": + clevel = color.green(clevel); + break; + case "warn": + clevel = color.yellow(clevel); + break; + case "alert": + clevel = color.red(clevel); + break; + case "error": + clevel = color.bgRed.white(clevel); + break; + case "crit": + clevel = color.bgRed.yellow(clevel); + break; + case "fatal": + clevel = color.bgRed.darkGray(clevel); + break; + } + + const ccomponent = color.cyan(component.name); + const ctimestamp = color.darkGray( + dayjs(timestamp).format("YYYY-MM-DD HH:mm:ss.SSS"), + ); + const cmessage = color.darkGray(message); + + if (metadata) { + console.log( + `${ctimestamp} ${clevel} ${ccomponent} ${cmessage}`, + util.inspect(metadata, false, Infinity, true), + ); + } else { + console.log(`${ctimestamp} ${clevel} ${ccomponent} ${cmessage}`); + } + } +} diff --git a/gadget-drone/src/lib/log-transport-file.ts b/gadget-drone/src/lib/log-transport-file.ts new file mode 100644 index 0000000..10576d9 --- /dev/null +++ b/gadget-drone/src/lib/log-transport-file.ts @@ -0,0 +1,53 @@ +// src/lib/log-transport-file.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +import util from "node:util"; +import { Writable } from "node:stream"; + +import dayjs from "dayjs"; + +import { GadgetLogLevel } from "./log.js"; +import { GadgetLogTransport } from "./log-transport.js"; +import { GadgetComponent } from "./component.ts"; + +interface LogFilePayload { + timestamp: Date; + component: string; + level: GadgetLogLevel; + message: string; + metadata?: unknown; +} + +export class GadgetLogTransportFile implements GadgetLogTransport { + file: Writable; + + constructor(file: Writable) { + this.file = file; + } + + async writeLog( + timestamp: Date, + component: GadgetComponent, + level: GadgetLogLevel, + message: string, + metadata?: unknown, + ): Promise { + return new Promise((resolve, reject) => { + const stimestamp = dayjs(timestamp).format("YYYY-MM-DD HH:mm:ss.SSS"); + + let sLogMessage = `${stimestamp} ${level} ${component.slug} ${message}`; + if (metadata) { + sLogMessage += " " + util.inspect(metadata, false, Infinity, false); + } + + const chunk = Buffer.from(sLogMessage + "\n"); + this.file.write(chunk, (error: Error | null | undefined): void => { + if (error) { + return reject(error); + } + return resolve(); + }); + }); + } +} diff --git a/gadget-drone/src/lib/log-transport.ts b/gadget-drone/src/lib/log-transport.ts new file mode 100644 index 0000000..acb324f --- /dev/null +++ b/gadget-drone/src/lib/log-transport.ts @@ -0,0 +1,16 @@ +// src/lib/log-transport.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +import { GadgetComponent } from "./component.ts"; +import { GadgetLogLevel } from "./log.js"; + +export abstract class GadgetLogTransport { + abstract writeLog( + timestamp: Date, + component: GadgetComponent, + level: GadgetLogLevel, + message: string, + metadata?: unknown, + ): Promise; +} diff --git a/gadget-drone/src/lib/log.ts b/gadget-drone/src/lib/log.ts new file mode 100644 index 0000000..33306b2 --- /dev/null +++ b/gadget-drone/src/lib/log.ts @@ -0,0 +1,101 @@ +// src/lib/log.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +import env from "../config/env.js"; + +import { GadgetComponent } from "./component.ts"; +import { GadgetLogTransportConsole } from "./log-transport-console.js"; +import { GadgetLogTransportFile } from "./log-transport-file.js"; +import { GadgetLogTransport } from "./log-transport.js"; +import { GadgetLogFile, defaultLogFile } from "./log-file.js"; + +export enum GadgetLogLevel { + debug = "debug", + info = "info", + warn = "warn", + alert = "alert", + error = "error", + crit = "crit", + fatal = "fatal", +} + +export class GadgetLog { + component: GadgetComponent; + transports: GadgetLogTransport[] = []; + + private static defaultTransports: GadgetLogTransport[] = []; + private file: GadgetLogFile; + + constructor(component: GadgetComponent, file?: GadgetLogFile) { + this.component = component; + this.file = file || defaultLogFile; + this.transports.push(...GadgetLog.defaultTransports); + + if (env.log.console.enabled) { + this.transports.push(new GadgetLogTransportConsole()); + } + if (env.log.file.enabled) { + this.transports.push(new GadgetLogTransportFile(this.file)); + } + } + + public static addDefaultTransport(transport: GadgetLogTransport): void { + GadgetLog.defaultTransports.push(transport); + } + + public static removeDefaultTransport(transport: GadgetLogTransport): void { + const index = GadgetLog.defaultTransports.indexOf(transport); + if (index > -1) { + GadgetLog.defaultTransports.splice(index, 1); + } + } + + public static getDefaultTransports(): GadgetLogTransport[] { + return GadgetLog.defaultTransports; + } + + async debug(message: string, metadata?: unknown) { + if (!env.log.levels.debug) { + return; + } + return this.writeLog(GadgetLogLevel.debug, message, metadata); + } + + async info(message: string, metadata?: unknown) { + if (!env.log.levels.info) { + return; + } + return this.writeLog(GadgetLogLevel.info, message, metadata); + } + + async warn(message: string, metadata?: unknown) { + if (!env.log.levels.warn) { + return; + } + return this.writeLog(GadgetLogLevel.warn, message, metadata); + } + + async alert(message: string, metadata?: unknown) { + return this.writeLog(GadgetLogLevel.alert, message, metadata); + } + + async error(message: string, metadata?: unknown) { + return this.writeLog(GadgetLogLevel.error, message, metadata); + } + + async crit(message: string, metadata?: unknown) { + return this.writeLog(GadgetLogLevel.crit, message, metadata); + } + + async fatal(message: string, metadata?: unknown) { + this.writeLog(GadgetLogLevel.fatal, message, metadata); + } + + async writeLog(level: GadgetLogLevel, message: string, metadata?: unknown) { + const NOW = new Date(); + for (const transport of this.transports) { + transport.writeLog(NOW, this.component, level, message, metadata); + } + } +} diff --git a/gadget-drone/src/lib/process.ts b/gadget-drone/src/lib/process.ts new file mode 100644 index 0000000..24a9501 --- /dev/null +++ b/gadget-drone/src/lib/process.ts @@ -0,0 +1,20 @@ +// src/lib/process.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +import { GadgetComponent } from "./component.ts"; +import { GadgetLog } from "./log.ts"; + +export abstract class GadgetProcess implements GadgetComponent { + protected log: GadgetLog; + + constructor() { + this.log = new GadgetLog(this); + } + + abstract get name(): string; + abstract get slug(): string; + + abstract start(): Promise; + abstract stop(): Promise; +} diff --git a/gadget-drone/src/lib/service.ts b/gadget-drone/src/lib/service.ts new file mode 100644 index 0000000..83ae137 --- /dev/null +++ b/gadget-drone/src/lib/service.ts @@ -0,0 +1,22 @@ +// src/lib/service.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +// import env from "../config/env.js"; + +import { GadgetComponent } from "./component.js"; +import { GadgetLog } from "./log.js"; + +export abstract class GadgetService implements GadgetComponent { + protected log: GadgetLog; + + constructor() { + this.log = new GadgetLog(this); + } + + abstract get name(): string; + abstract get slug(): string; + + abstract start(): Promise; + abstract stop(): Promise; +} diff --git a/gadget-drone/src/services/agent.ts b/gadget-drone/src/services/agent.ts new file mode 100644 index 0000000..b212aff --- /dev/null +++ b/gadget-drone/src/services/agent.ts @@ -0,0 +1,152 @@ +// src/services/agent.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +import assert from "node:assert"; +import path from "node:path"; +import fs from "node:fs"; + +import dayjs from "dayjs"; + +import { type IAiProvider, type IContextChatMessage } from "@gadget/ai"; + +import AiService from "./ai.ts"; + +import { GadgetService } from "../lib/service.ts"; + +export interface IProject { + _id: string; + name: string; + slug: string; + gitUrl: string; +} + +export interface IToolCall { + name: string; + params: string; + call_id?: string; + response?: string; + error?: Error; +} + +export interface IChatMessage { + role: string; + content: string; +} + +export interface IChatTurn { + _id: string; + mode: string; + modelId?: string; + prompts: { + system: string; + user: string; + }; +} + +export interface IChatSession { + _id: string; + name: string; + context: IContextChatMessage[]; +} + +export interface IAgentWorkOrder { + project: IProject; + provider: IAiProvider; + session: IChatSession; + turn: IChatTurn; +} + +class AgentService extends GadgetService { + get name(): string { + return "AgentService"; + } + get slug(): string { + return "svc:agent"; + } + + async start(): Promise { + this.log.info("started"); + } + + async stop(): Promise { + this.log.info("stopped"); + } + + async process(workOrder: IAgentWorkOrder): Promise { + const { project, provider, session, turn } = workOrder; + + async function aiCallTool(name: string, args: string) { + return "[all tool calls are stubbed out]"; + } + + // this turn's context (system, history, prompt, work) + const messages: IChatMessage[] = []; + + messages.push({ role: "system", content: turn.prompts.system }); + + // recall full session history into messages array + this.buildSessionContext(session, messages); + + // push the User's latest prompt to the context + messages.push({ role: "user", content: workOrder.turn.prompts.user }); + + const modelConfig = { + provider: workOrder.provider, + modelId: workOrder.turn.modelId ?? workOrder.provider.defaultModelId ?? "llama3.2", + params: { + reasoning: false, + temperature: 0.8, + topP: 0.9, + topK: 40, + }, + }; + + const chatOptions = { + context: session.context, + }; + + let keepProcessing = true; + do { + const response = await AiService.chat(workOrder.provider, modelConfig, chatOptions); + keepProcessing = (response.tool_calls?.length ?? 0) > 0; + for (const tool_call of response.tool_calls ?? []) { + const result = await aiCallTool(tool_call.function.name, tool_call.function.arguments); + messages.push({ role: "tool", content: result }); + /* emit turn-tool-call socket message */ + } + } while (keepProcessing); + + /* emit turn-finished socket message */ + } + + buildSessionContext(session: IChatSession, messages: IChatMessage[]): void { + let content; + for (const message of session.context) { + switch (message.role) { + case "system": + continue; + case "user": + content = message.content; + break; + case "assistant": + content = message.content; + break; + case "tool": + content = message.content; + break; + } + messages.push({ role: message.role, content: message.content }); + } + } + + /** + * To optimize context, reduce clutter, and help the agent focus, full outputs + * of older file reads and edits are summarized once a newer version is available. + */ + pruneSessionContext(messages: IContextChatMessage[]): void { + // TODO + } +} + +export default new AgentService(); diff --git a/gadget-drone/src/services/ai.ts b/gadget-drone/src/services/ai.ts new file mode 100644 index 0000000..3063932 --- /dev/null +++ b/gadget-drone/src/services/ai.ts @@ -0,0 +1,95 @@ +// src/services/ai.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +import { GadgetService } from "../lib/service.ts"; +import { + type IAiChatOptions, + type IAiChatResponse, + type IAiGenerateOptions, + type IAiGenerateResponse, + type IAiModelConfig, + type IAiProvider, + type IAiResponseStreamFn, + createAiApi, +} from "@gadget/ai"; + +/** + * An abstraction of the backend AI APIs (Ollama, OpenAI) that provides one + * common interface and contract for working with different AI APIs. + * + * We are Ollama-first and prefer the Ollama API because it offers more actual + * control over the AI models, their performance, and their results at runtime. + * + * OpenAI, however, is the most ubiquitous API, and expands the range of service + * providers developers can use with the Gadget ecosystem. + */ +class AiService extends GadgetService { + get name(): string { + return "AiService"; + } + get slug(): string { + return "svc:ai"; + } + + async start(): Promise { + this.log.info("started"); + } + + async stop(): Promise { + this.log.info("stopped"); + } + + /** + * Query the list of models available from the provider, then queries the + * models for their individual capabilities. The results are cached in the Gadget + */ + async discovery(provider: IAiProvider): Promise { + this.log.info("discovering provider model list", { + name: provider.name, + sdk: provider.sdk, + }); + const api = this.getApi(provider); + const response = await api.listModels(); + this.log.debug("listModels response", { response }); + } + + async generate( + provider: IAiProvider, + model: IAiModelConfig, + options: IAiGenerateOptions, + streamCallback?: IAiResponseStreamFn, + ): Promise { + this.log.info("calling provider to generate a response", { + name: provider.name, + sdk: provider.sdk, + haveStreamCallback: !!streamCallback, + options, + }); + const api = this.getApi(provider); + return api.generate(model, options, streamCallback); + } + + async chat( + provider: IAiProvider, + model: IAiModelConfig, + options: IAiChatOptions, + streamCallback?: IAiResponseStreamFn, + ): Promise { + this.log.info("calling provider to process chat", { + provider: provider.name, + sdk: provider.sdk, + haveStreamCallback: !!streamCallback, + model, + options, + }); + const api = this.getApi(provider); + return await api.chat(model, options, streamCallback); + } + + getApi(provider: IAiProvider) { + return createAiApi(provider, this.log); + } +} + +export default new AiService(); diff --git a/gadget-drone/src/services/platform.ts b/gadget-drone/src/services/platform.ts new file mode 100644 index 0000000..acaadd7 --- /dev/null +++ b/gadget-drone/src/services/platform.ts @@ -0,0 +1,168 @@ +// src/services/platform.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +import env from "../config/env.ts"; + +import assert from "node:assert"; +import path from "node:path"; +import os from "node:os"; + +import { GadgetService } from "../lib/service.ts"; + +export enum DroneStatus { + Starting = "starting", + Available = "available", + Busy = "busy", + Offline = "offline", +} + +export interface PlatformRegistration { + _id: string; // your drone's registration ID, channel, and queue + user: { + _id: string; + username: string; + }; +} + +interface PlatformApiResponse { + success: boolean; + message?: string; +} + +interface PlatformRegistrationResponse extends PlatformApiResponse { + data: PlatformRegistration; +} + +class PlatformService extends GadgetService { + registration: PlatformRegistration | undefined; + + get name(): string { + return "PlatformService"; + } + get slug(): string { + return "svc:platform"; + } + + async start(): Promise { + this.log.info("started"); + } + + async stop(): Promise { + this.log.info("stopped"); + } + + async register( + email: string, + password: string, + ): Promise { + const url = this.getApiUrl("/drone/registration"); + const body = JSON.stringify({ + email, + password, + hostname: os.hostname(), + }); + const response = await fetch(url, { + method: "POST", + headers: { + Accept: "application/json", + "Content-Type": "application/json", + "Content-Length": body.length.toString(), + "X-Gadget-Key": env.platform.apiKey, + }, + body, + }); + + const json = (await response.json()) as PlatformRegistrationResponse; + if (!json.success) { + const error = new Error("failed to register drone with Platform"); + error.name = "PlatformError"; + error.statusCode = response.status; + throw error; + } + if (!json.data || !json.data._id) { + const error = new Error( + "registration response did not contain required data", + ); + error.name = "PlatformError"; + throw error; + } + + if (!json.data.user || !json.data.user._id) { + const error = new Error( + "registration response did not contain required user account data", + ); + error.name = "PlatformError"; + throw error; + } + + this.registration = json.data; + + return json.data; + } + + async unregister(): Promise { + if (!this.registration) { + return; + } + + const url = this.getApiUrl(`/drone/registration/${this.registration._id}`); + const body = JSON.stringify({ registration: this.registration }); + const response = await fetch(url, { + method: "DELETE", + headers: { + Accept: "application/json", + "Content-Type": "application/json", + "Content-Length": body.length.toString(), + "X-Gadget-Key": env.platform.apiKey, + }, + body, + }); + + const json = (await response.json()) as PlatformRegistrationResponse; + if (!json.success) { + const error = new Error("failed to register drone with Platform"); + error.name = "PlatformError"; + error.statusCode = response.status; + throw error; + } + } + + async setStatus(status: DroneStatus): Promise { + assert( + this.registration, + "must register with platform before setting status", + ); + + const url = this.getApiUrl( + `/drone/registration/${this.registration._id}/status`, + ); + const body = JSON.stringify({ status }); + const response = await fetch(url, { + method: "PUT", + headers: { + Accept: "application/json", + "Content-Type": "application/json", + "Content-Length": body.length.toString(), + "X-Gadget-Key": env.platform.apiKey, + }, + body, + }); + + const json = (await response.json()) as PlatformRegistrationResponse; + if (!json.success) { + const error = new Error("failed to register drone with Platform"); + error.name = "PlatformError"; + error.statusCode = response.status; + throw error; + } + + this.log.info("drone status updated on platform", { status }); + } + + getApiUrl(url: string): string { + return `${env.platform.baseUrl}/api/v1${url}`; + } +} + +export default new PlatformService(); diff --git a/gadget-drone/tsconfig.json b/gadget-drone/tsconfig.json new file mode 100644 index 0000000..f86d33b --- /dev/null +++ b/gadget-drone/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "lib": ["ES2022"], + "outDir": "./dist", + "rootDir": "./src", + "typeRoots": ["node_modules/@types", "types"], + "types": ["node"], + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "allowImportingTsExtensions": true, + "rewriteRelativeImportExtensions": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"], + "files": ["types/error.d.ts"] +} diff --git a/gadget-drone/types/error.d.ts b/gadget-drone/types/error.d.ts new file mode 100644 index 0000000..b681acf --- /dev/null +++ b/gadget-drone/types/error.d.ts @@ -0,0 +1,7 @@ +// types/error.d.ts +// Copyright (C) 2025 DTP Technologies, LLC +// All Rights Reserved + +interface Error { + statusCode?: number; +} diff --git a/gadget.code-workspace b/gadget.code-workspace new file mode 100644 index 0000000..876a149 --- /dev/null +++ b/gadget.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": {} +} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..84c463f --- /dev/null +++ b/package.json @@ -0,0 +1,8 @@ +{ + "name": "gadget-workspace", + "version": "1.0.0", + "private": true, + "description": "Gadget Code monorepo workspace root", + "packageManager": "pnpm@10.33.2", + "license": "Apache-2.0" +} \ No newline at end of file diff --git a/packages/ai/.gitignore b/packages/ai/.gitignore new file mode 100644 index 0000000..53c37a1 --- /dev/null +++ b/packages/ai/.gitignore @@ -0,0 +1 @@ +dist \ No newline at end of file diff --git a/packages/ai/README.md b/packages/ai/README.md new file mode 100644 index 0000000..ddc0670 --- /dev/null +++ b/packages/ai/README.md @@ -0,0 +1,98 @@ +# @gadget/ai + +Gadget Code's AI API abstraction layer. Provides a single internal API contract for calling AI providers (Ollama, OpenAI) without consumer code knowing which provider is configured. + +## Principles + +1. **One interface, all providers.** Consumer code calls `createAiApi()` once and holds the resulting `AiApi`. It never checks `provider.sdk` again. +2. **All AI SDK knowledge is contained here.** No consumer imports `ollama` or `openai` SDKs directly. +3. **Responses are normalized.** All provider responses are translated to Gadget Code's internal interface types before returning. + +## Usage + +```typescript +import { createAiApi } from "@gadget/ai"; + +const provider = { + _id: "local-ollama", + name: "Local Ollama", + sdk: "ollama", + baseUrl: "http://localhost:11434", + apiKey: "", + defaultModelId: "llama3.2", +}; + +const modelConfig = { + provider, + modelId: "llama3.2", + params: { + reasoning: false, + temperature: 0.8, + topP: 0.9, + topK: 40, + }, +}; + +const ai = createAiApi(provider, logger); + +const result = await ai.generate(modelConfig, { + prompt: "Explain what this code does", + systemPrompt: "You are a code reviewer.", +}); +console.log(result.response); +console.log(result.stats.duration.text); // formatted, e.g. "00:00:02" +``` + +## API + +### Factory + +**`createAiApi(provider, logger?)`** — Returns an `AiApi` instance for the given provider. `logger` is optional and defaults to a no-op logger. Pass your own logger to receive debug output. + +### AiApi + +Abstract base class. Currently implemented: + +- **`AiOllamaApi`** — Ollama provider +- **`AiOpenAiApi`** — OpenAI provider (stubbed) + +#### `ai.generate(model, options, streamCallback?)` + +Single-prompt generation. Returns `IAiGenerateResponse`. + +#### `ai.chat(model, options, streamCallback?)` + +Chat with conversation history. Pass `options.context` for multi-turn对话. Returns `IAiChatResponse`. + +### Interfaces + +All interfaces are exported for use by consumers: + +- **`IAiProvider`** — AI provider configuration +- **`IAiModelConfig`** — Model + runtime parameters +- **`IAiGenerateOptions`** / **`IAiGenerateResponse`** +- **`IAiChatOptions`** / **`IAiChatResponse`** — includes `tool_calls` for function-calling models +- **`IAiInferenceStats`** — token counts and duration (both raw `seconds` number and formatted `text` string) +- **`IAiLogger`** — injectable logger interface (`debug`, `info`, `warn`, `error`) + +## Providers + +### Ollama + +Configured via `IAiProvider` with `sdk: "ollama"`. Uses the `ollama` npm package. Handles streaming responses and normalizes Ollama-specific response fields (thinking tokens, token counts, duration). + +### OpenAI + +Configured via `IAiProvider` with `sdk: "openai"`. Stubbed — `chat()` and `generate()` throw `"Not yet implemented"`. Implement by wiring the `openai` npm package following the same pattern as `AiOllamaApi`. + +## Duration Formatting + +The library uses `numeral` to provide a consistent formatted duration string (`stats.duration.text`) in `hh:mm:ss` format. The raw nanosecond value is also returned in `stats.duration.seconds` for consumers that need the raw number. + +## Adding a New Provider + +1. Create `packages/ai/src/.ts` — extend `AiApi`, implement all abstract methods +2. Update `packages/ai/src/index.ts` — add the new class to the `createAiApi` factory switch +3. Update this README + +No consumer code changes required. \ No newline at end of file diff --git a/packages/ai/package.json b/packages/ai/package.json new file mode 100644 index 0000000..a290381 --- /dev/null +++ b/packages/ai/package.json @@ -0,0 +1,31 @@ +{ + "name": "@gadget/ai", + "version": "1.0.0", + "description": "Gadget Code AI API abstraction layer", + "type": "module", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "import": "./dist/index.js", + "types": "./dist/index.d.ts" + } + }, + "scripts": { + "build": "tsc", + "dev": "tsc --watch" + }, + "keywords": ["gadget", "ai", "ollama", "openai", "abstraction"], + "author": "Rob Colbert", + "license": "Apache-2.0", + "dependencies": { + "numeral": "^2.0.6", + "ollama": "^0.6.3", + "openai": "^6.34.0" + }, + "devDependencies": { + "@types/node": "^25.6.0", + "@types/numeral": "^2.0.5", + "typescript": "^6.0.3" + } +} \ No newline at end of file diff --git a/packages/ai/src/api.ts b/packages/ai/src/api.ts new file mode 100644 index 0000000..264d3f2 --- /dev/null +++ b/packages/ai/src/api.ts @@ -0,0 +1,132 @@ +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +export type AiSdkType = "ollama" | "openai"; + +export interface IAiProvider { + _id: string; + name: string; + sdk: AiSdkType; + baseUrl: string; + apiKey: string; + defaultModelId?: string; +} + +export interface IAiModelConfig { + provider: IAiProvider; + modelId: string; + params: { + reasoning: boolean | "high" | "medium" | "low"; + temperature: number; + topP: number; + topK: number; + }; +} + +export interface IAiInferenceStats { + tokenCounts: { + input: number; + thinking: number; + response: number; + }; + duration: { + seconds: number; + text: string; + }; +} + +export interface IAiGenerateOptions { + prompt: string; + systemPrompt?: string; +} + +export interface IAiGenerateResponse { + response: string; + thinking?: string; + stats: IAiInferenceStats; + done: boolean; + doneReason?: string; +} + +export interface IContextChatMessage { + createdAt: Date; + role: string; + content: string; + user?: { + _id: string; + username: string; + displayName: string; + }; +} + +export interface IAiChatOptions { + systemPrompt?: string; + userPrompt?: string; + context?: IContextChatMessage[]; +} + +export interface IToolCall { + call_id: string; + function: { + name: string; + arguments: string; + }; +} + +export interface IAiChatResponse { + response: string; + thinking?: string; + stats: IAiInferenceStats; + done: boolean; + doneReason?: string; + tool_calls?: IToolCall[]; +} + +export interface IAiStreamChunk { + data: string; +} + +export type IAiResponseStreamFn = (chunk: IAiStreamChunk) => Promise; + +export interface IAiLogger { + debug(message: string, metadata?: unknown): Promise | void; + info(message: string, metadata?: unknown): Promise | void; + warn(message: string, metadata?: unknown): Promise | void; + error(message: string, metadata?: unknown): Promise | void; +} + +const noOpLogger: IAiLogger = { + debug: () => {}, + info: () => {}, + warn: () => {}, + error: () => {}, +}; + +export function defaultLogger(): IAiLogger { + return noOpLogger; +} + +export abstract class AiApi { + protected provider: IAiProvider; + protected log: IAiLogger; + + constructor(provider: IAiProvider, logger?: IAiLogger) { + this.provider = provider; + this.log = logger ?? defaultLogger(); + } + + abstract listModels(): Promise; + abstract probeModel(modelId: string): Promise; + + abstract generate( + model: IAiModelConfig, + options: IAiGenerateOptions, + streamCallback?: IAiResponseStreamFn, + ): Promise; + + abstract chat( + model: IAiModelConfig, + options: IAiChatOptions, + streamCallback?: IAiResponseStreamFn, + ): Promise; +} \ No newline at end of file diff --git a/packages/ai/src/index.ts b/packages/ai/src/index.ts new file mode 100644 index 0000000..59d9250 --- /dev/null +++ b/packages/ai/src/index.ts @@ -0,0 +1,40 @@ +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +export { + type AiSdkType, + type IAiProvider, + type IAiModelConfig, + type IAiInferenceStats, + type IAiGenerateOptions, + type IAiGenerateResponse, + type IContextChatMessage, + type IAiChatOptions, + type IAiChatResponse, + type IToolCall, + type IAiStreamChunk, + type IAiResponseStreamFn, + type IAiLogger, + defaultLogger, + AiApi, +} from "./api.js"; + +export { AiOllamaApi } from "./ollama.js"; +export { AiOpenAiApi } from "./openai.js"; + +import { AiOllamaApi } from "./ollama.js"; +import { AiOpenAiApi } from "./openai.js"; +import type { IAiProvider } from "./api.js"; +import type { IAiLogger } from "./api.js"; +import type { AiApi } from "./api.js"; + +export function createAiApi(provider: IAiProvider, logger?: IAiLogger): AiApi { + switch (provider.sdk) { + case "ollama": + return new AiOllamaApi(provider, logger); + case "openai": + return new AiOpenAiApi(provider, logger); + default: + throw new Error(`Unknown AI SDK: ${(provider as IAiProvider).sdk}`); + } +} \ No newline at end of file diff --git a/packages/ai/src/ollama.ts b/packages/ai/src/ollama.ts new file mode 100644 index 0000000..9b484b9 --- /dev/null +++ b/packages/ai/src/ollama.ts @@ -0,0 +1,125 @@ +// src/ollama.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +import assert from "node:assert"; + +import { Ollama } from "ollama"; +import numeral from "numeral"; +import { + AiApi, + IAiChatOptions, + IAiChatResponse, + IAiGenerateOptions, + IAiGenerateResponse, + IAiLogger, + IAiModelConfig, + IAiProvider, + IAiResponseStreamFn, +} from "./api.js"; + +export class AiOllamaApi extends AiApi { + protected client: Ollama; + + constructor(provider: IAiProvider, logger?: IAiLogger) { + super(provider, logger); + this.client = new Ollama({ + host: this.provider.baseUrl, + headers: { Authorization: `Bearer ${this.provider.apiKey}` }, + }); + } + + async listModels(): Promise { + await this.log.debug("AiOllamaApi.listModels called"); + } + + async probeModel(modelId: string): Promise { + await this.log.debug("AiOllamaApi.probeModel called", { modelId }); + } + + async generate( + model: IAiModelConfig, + options: IAiGenerateOptions, + streamCallback?: IAiResponseStreamFn, + ): Promise { + await this.log.debug("AiOllamaApi.generate called", { + provider: model.provider.name, + modelId: model.modelId, + }); + + const response = await this.client.generate({ + model: model.modelId, + prompt: options.prompt, + system: options.systemPrompt, + stream: true, + }); + + let lastChunk; + for await (const chunk of response) { + await this.log.debug("stream chunk received", { chunk }); + lastChunk = chunk; + } + assert(lastChunk, "no stream response chunks received"); + + return { + done: lastChunk.done, + doneReason: lastChunk.done_reason, + response: lastChunk.response, + thinking: lastChunk.thinking, + stats: { + duration: { + seconds: lastChunk.total_duration, + text: numeral(lastChunk.total_duration).format("hh:mm:ss"), + }, + tokenCounts: { + input: lastChunk.prompt_eval_count, + response: lastChunk.eval_count, + thinking: 0, + }, + }, + }; + } + + async chat( + model: IAiModelConfig, + options: IAiChatOptions, + streamCallback?: IAiResponseStreamFn, + ): Promise { + await this.log.debug("AiOllamaApi.chat called", { + provider: model.provider.name, + modelId: model.modelId, + }); + + const response = await this.client.chat({ + model: model.modelId, + messages: options.context, + stream: true, + think: model.params.reasoning, + }); + + let lastChunk; + for await (const chunk of response) { + await this.log.debug("stream chunk received", { chunk }); + lastChunk = chunk; + } + assert(lastChunk, "no response chunks received"); + + return { + done: lastChunk.done, + doneReason: lastChunk.done_reason, + response: lastChunk.message.content, + thinking: lastChunk.message.thinking, + stats: { + duration: { + seconds: lastChunk.total_duration, + text: numeral(lastChunk.total_duration).format("hh:mm:ss"), + }, + tokenCounts: { + input: lastChunk.prompt_eval_count, + response: lastChunk.eval_count, + thinking: 0, + }, + }, + }; + } +} diff --git a/packages/ai/src/openai.ts b/packages/ai/src/openai.ts new file mode 100644 index 0000000..d0fa633 --- /dev/null +++ b/packages/ai/src/openai.ts @@ -0,0 +1,45 @@ +// src/openai.ts +// Copyright (C) 2026 Rob Colbert +// Licensed under the Apache License, Version 2.0 + +import { + AiApi, + IAiChatOptions, + IAiChatResponse, + IAiGenerateOptions, + IAiGenerateResponse, + IAiLogger, + IAiModelConfig, + IAiProvider, + IAiResponseStreamFn, +} from "./api.js"; + +export class AiOpenAiApi extends AiApi { + constructor(provider: IAiProvider, logger?: IAiLogger) { + super(provider, logger); + } + + async listModels(): Promise { + await this.log.debug("AiOpenAiApi.listModels called"); + } + + async probeModel(modelId: string): Promise { + await this.log.debug("AiOpenAiApi.probeModel called", { modelId }); + } + + async generate( + _model: IAiModelConfig, + _options: IAiGenerateOptions, + _streamCallback?: IAiResponseStreamFn, + ): Promise { + throw new Error("Not yet implemented"); + } + + async chat( + _model: IAiModelConfig, + _options: IAiChatOptions, + _streamCallback?: IAiResponseStreamFn, + ): Promise { + throw new Error("Not yet implemented"); + } +} diff --git a/packages/ai/tsconfig.json b/packages/ai/tsconfig.json new file mode 100644 index 0000000..6414465 --- /dev/null +++ b/packages/ai/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "lib": ["ES2022"], + "outDir": "./dist", + "rootDir": "./src", + "typeRoots": ["node_modules/@types", "types"], + "types": ["node"], + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "allowImportingTsExtensions": true, + "rewriteRelativeImportExtensions": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "src/**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/ai/types/error.d.ts b/packages/ai/types/error.d.ts new file mode 100644 index 0000000..b681acf --- /dev/null +++ b/packages/ai/types/error.d.ts @@ -0,0 +1,7 @@ +// types/error.d.ts +// Copyright (C) 2025 DTP Technologies, LLC +// All Rights Reserved + +interface Error { + statusCode?: number; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..f3ff179 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,5951 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: {} + + gadget-code: + dependencies: + '@fortawesome/fontawesome-free': + specifier: ^6.7.2 + version: 6.7.2 + '@gadget/ai': + specifier: workspace:* + version: link:../packages/ai + ansicolor: + specifier: ^2.0.3 + version: 2.0.3 + bull: + specifier: ^4.16.5 + version: 4.16.5 + chart.js: + specifier: ^4.5.0 + version: 4.5.1 + compression: + specifier: ^1.8.0 + version: 1.8.1 + connect-redis: + specifier: ^8.0.2 + version: 8.1.0(express-session@1.19.0) + cookie-parser: + specifier: ^1.4.7 + version: 1.4.7 + cron: + specifier: ^4.3.1 + version: 4.4.0 + dayjs: + specifier: ^1.11.13 + version: 1.11.20 + dotenv: + specifier: ^16.6.0 + version: 16.6.1 + dtp-cleantext: + specifier: ^1.0.0 + version: 1.0.0 + express: + specifier: ^5.1.0 + version: 5.2.1 + express-rate-limit: + specifier: ^7.5.1 + version: 7.5.1(express@5.2.1) + express-session: + specifier: ^1.18.1 + version: 1.19.0 + geoip-lite: + specifier: ^1.4.10 + version: 1.4.10 + has-flag: + specifier: ^5.0.1 + version: 5.0.1 + ioredis: + specifier: ^5.6.0 + version: 5.10.1 + jsonwebtoken: + specifier: ^9.0.2 + version: 9.0.3 + marked: + specifier: ^16.0.0 + version: 16.4.2 + method-override: + specifier: ^3.0.0 + version: 3.0.0 + minio: + specifier: ^8.0.5 + version: 8.0.7 + mongoose: + specifier: ^8.16.1 + version: 8.23.1 + morgan: + specifier: ^1.10.0 + version: 1.10.1 + multer: + specifier: ^2.0.1 + version: 2.1.1 + nodemailer: + specifier: ^7.0.3 + version: 7.0.13 + numeral: + specifier: ^2.0.6 + version: 2.0.6 + pug: + specifier: ^3.0.3 + version: 3.0.4 + react: + specifier: ^19.2.5 + version: 19.2.5 + react-dom: + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) + react-router-dom: + specifier: ^7.14.2 + version: 7.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + rotating-file-stream: + specifier: ^3.2.6 + version: 3.2.9 + serve-favicon: + specifier: ^2.5.1 + version: 2.5.1 + socket.io: + specifier: ^4.8.3 + version: 4.8.3 + socket.io-client: + specifier: ^4.8.3 + version: 4.8.3 + uikit: + specifier: ^3.23.11 + version: 3.25.16 + uuid: + specifier: ^11.1.0 + version: 11.1.0 + devDependencies: + '@playwright/test': + specifier: ^1.59.1 + version: 1.59.1 + '@tailwindcss/postcss': + specifier: ^4.2.4 + version: 4.2.4 + '@testing-library/jest-dom': + specifier: ^6.9.1 + version: 6.9.1 + '@testing-library/react': + specifier: ^16.3.2 + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@types/browser-sync': + specifier: ^2.29.0 + version: 2.29.1 + '@types/compression': + specifier: ^1.8.1 + version: 1.8.1 + '@types/cookie-parser': + specifier: ^1.4.9 + version: 1.4.10(@types/express@5.0.6) + '@types/express': + specifier: ^5.0.3 + version: 5.0.6 + '@types/express-session': + specifier: ^1.18.2 + version: 1.19.0 + '@types/geoip-lite': + specifier: ^1.4.4 + version: 1.4.4 + '@types/jsonwebtoken': + specifier: ^9.0.10 + version: 9.0.10 + '@types/less': + specifier: ^3.0.8 + version: 3.0.8 + '@types/method-override': + specifier: ^3.0.0 + version: 3.0.0(@types/express@5.0.6) + '@types/morgan': + specifier: ^1.9.10 + version: 1.9.10 + '@types/multer': + specifier: ^1.4.13 + version: 1.4.13 + '@types/node': + specifier: ^24.0.4 + version: 24.12.2 + '@types/nodemailer': + specifier: ^6.4.17 + version: 6.4.23 + '@types/numeral': + specifier: ^2.0.5 + version: 2.0.5 + '@types/react': + specifier: ^19.2.14 + version: 19.2.14 + '@types/serve-favicon': + specifier: ^2.5.7 + version: 2.5.7 + '@types/uikit': + specifier: ^3.14.5 + version: 3.23.0 + '@types/uuid': + specifier: ^10.0.0 + version: 10.0.0 + '@vitejs/plugin-react': + specifier: ^6.0.1 + version: 6.0.1(vite@8.0.10(@types/node@24.12.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.6.4)(tsx@4.21.0)) + autoprefixer: + specifier: ^10.5.0 + version: 10.5.0(postcss@8.5.12) + browser-sync: + specifier: ^3.0.4 + version: 3.0.4 + esbuild: + specifier: ^0.25.5 + version: 0.25.12 + globals: + specifier: ^16.2.0 + version: 16.5.0 + jsdom: + specifier: ^29.0.2 + version: 29.1.0 + less: + specifier: ^4.3.0 + version: 4.6.4 + postcss: + specifier: ^8.5.10 + version: 8.5.12 + tailwindcss: + specifier: ^4.2.4 + version: 4.2.4 + tsc-alias: + specifier: ^1.0.7 + version: 1.8.16 + tslib: + specifier: ^2.8.1 + version: 2.8.1 + tsx: + specifier: ^4.19.2 + version: 4.21.0 + typescript: + specifier: ^5.8.3 + version: 5.9.3 + vite: + specifier: ^8.0.10 + version: 8.0.10(@types/node@24.12.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.6.4)(tsx@4.21.0) + vitest: + specifier: ^4.1.5 + version: 4.1.5(@types/node@24.12.2)(jsdom@29.1.0)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.6.4)(tsx@4.21.0)) + + gadget-drone: + dependencies: + '@gadget/ai': + specifier: workspace:* + version: link:../packages/ai + ansicolor: + specifier: ^2.0.3 + version: 2.0.3 + dayjs: + specifier: ^1.11.20 + version: 1.11.20 + dotenv: + specifier: ^17.4.2 + version: 17.4.2 + numeral: + specifier: ^2.0.6 + version: 2.0.6 + ollama: + specifier: ^0.6.3 + version: 0.6.3 + openai: + specifier: ^6.34.0 + version: 6.34.0(ws@8.18.3) + socket.io-client: + specifier: ^4.8.3 + version: 4.8.3 + devDependencies: + '@types/node': + specifier: ^25.6.0 + version: 25.6.0 + '@types/numeral': + specifier: ^2.0.5 + version: 2.0.5 + prettier: + specifier: ^3.8.3 + version: 3.8.3 + tsc-alias: + specifier: ^1.8.16 + version: 1.8.16 + tsx: + specifier: ^4.21.0 + version: 4.21.0 + typescript: + specifier: ^6.0.3 + version: 6.0.3 + + packages/ai: + dependencies: + numeral: + specifier: ^2.0.6 + version: 2.0.6 + ollama: + specifier: ^0.6.3 + version: 0.6.3 + openai: + specifier: ^6.34.0 + version: 6.34.0(ws@8.18.3) + devDependencies: + '@types/node': + specifier: ^25.6.0 + version: 25.6.0 + '@types/numeral': + specifier: ^2.0.5 + version: 2.0.5 + typescript: + specifier: ^6.0.3 + version: 6.0.3 + +packages: + + '@adobe/css-tools@4.4.4': + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@asamuzakjp/css-color@5.1.11': + resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/dom-selector@7.1.1': + resolution: {integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/generational-cache@1.0.1': + resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true + + '@csstools/color-helpers@6.0.2': + resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} + engines: {node: '>=20.19.0'} + + '@csstools/css-calc@3.2.0': + resolution: {integrity: sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-color-parser@4.1.0': + resolution: {integrity: sha512-U0KhLYmy2GVj6q4T3WaAe6NPuFYCPQoE3b0dRGxejWDgcPp8TP7S5rVdM5ZrFaqu4N67X8YaPBw14dQSYx3IyQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.3': + resolution: {integrity: sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} + + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@exodus/bytes@1.15.0': + resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + + '@fortawesome/fontawesome-free@6.7.2': + resolution: {integrity: sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==} + engines: {node: '>=6'} + + '@ioredis/commands@1.5.1': + resolution: {integrity: sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@kurkle/color@0.3.4': + resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} + + '@mongodb-js/saslprep@1.4.9': + resolution: {integrity: sha512-RXSxsokhAF/4nWys8An8npsqOI33Ex1Hlzqjw2pZOO+GKtMAR2noGnUdsFiGwsaO/xXI+56mtjTmDA3JXJsvmA==} + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} + cpu: [arm64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} + cpu: [x64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} + cpu: [arm64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} + cpu: [arm] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} + cpu: [x64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + cpu: [x64] + os: [win32] + + '@napi-rs/wasm-runtime@1.1.4': + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@nodable/entities@2.1.0': + resolution: {integrity: sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@oxc-project/types@0.127.0': + resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + '@rolldown/binding-android-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-rc.17': + resolution: {integrity: sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-rc.17': + resolution: {integrity: sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': + resolution: {integrity: sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': + resolution: {integrity: sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': + resolution: {integrity: sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': + resolution: {integrity: sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': + resolution: {integrity: sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': + resolution: {integrity: sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': + resolution: {integrity: sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0-rc.17': + resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} + + '@rolldown/pluginutils@1.0.0-rc.7': + resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} + + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@tailwindcss/node@4.2.4': + resolution: {integrity: sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA==} + + '@tailwindcss/oxide-android-arm64@4.2.4': + resolution: {integrity: sha512-e7MOr1SAn9U8KlZzPi1ZXGZHeC5anY36qjNwmZv9pOJ8E4Q6jmD1vyEHkQFmNOIN7twGPEMXRHmitN4zCMN03g==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.2.4': + resolution: {integrity: sha512-tSC/Kbqpz/5/o/C2sG7QvOxAKqyd10bq+ypZNf+9Fi2TvbVbv1zNpcEptcsU7DPROaSbVgUXmrzKhurFvo5eDg==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.2.4': + resolution: {integrity: sha512-yPyUXn3yO/ufR6+Kzv0t4fCg2qNr90jxXc5QqBpjlPNd0NqyDXcmQb/6weunH/MEDXW5dhyEi+agTDiqa3WsGg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.2.4': + resolution: {integrity: sha512-BoMIB4vMQtZsXdGLVc2z+P9DbETkiopogfWZKbWwM8b/1Vinbs4YcUwo+kM/KeLkX3Ygrf4/PsRndKaYhS8Eiw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4': + resolution: {integrity: sha512-7pIHBLTHYRAlS7V22JNuTh33yLH4VElwKtB3bwchK/UaKUPpQ0lPQiOWcbm4V3WP2I6fNIJ23vABIvoy2izdwA==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.2.4': + resolution: {integrity: sha512-+E4wxJ0ZGOzSH325reXTWB48l42i93kQqMvDyz5gqfRzRZ7faNhnmvlV4EPGJU3QJM/3Ab5jhJ5pCRUsKn6OQw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-arm64-musl@4.2.4': + resolution: {integrity: sha512-bBADEGAbo4ASnppIziaQJelekCxdMaxisrk+fB7Thit72IBnALp9K6ffA2G4ruj90G9XRS2VQ6q2bCKbfFV82g==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-linux-x64-gnu@4.2.4': + resolution: {integrity: sha512-7Mx25E4WTfnht0TVRTyC00j3i0M+EeFe7wguMDTlX4mRxafznw0CA8WJkFjWYH5BlgELd1kSjuU2JiPnNZbJDA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-x64-musl@4.2.4': + resolution: {integrity: sha512-2wwJRF7nyhOR0hhHoChc04xngV3iS+akccHTGtz965FwF0up4b2lOdo6kI1EbDaEXKgvcrFBYcYQQ/rrnWFVfA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-wasm32-wasi@4.2.4': + resolution: {integrity: sha512-FQsqApeor8Fo6gUEklzmaa9994orJZZDBAlQpK2Mq+DslRKFJeD6AjHpBQ0kZFQohVr8o85PPh8eOy86VlSCmw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.2.4': + resolution: {integrity: sha512-L9BXqxC4ToVgwMFqj3pmZRqyHEztulpUJzCxUtLjobMCzTPsGt1Fa9enKbOpY2iIyVtaHNeNvAK8ERP/64sqGQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.2.4': + resolution: {integrity: sha512-ESlKG0EpVJQwRjXDDa9rLvhEAh0mhP1sF7sap9dNZT0yyl9SAG6T7gdP09EH0vIv0UNTlo6jPWyujD6559fZvw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.2.4': + resolution: {integrity: sha512-9El/iI069DKDSXwTvB9J4BwdO5JhRrOweGaK25taBAvBXyXqJAX+Jqdvs8r8gKpsI/1m0LeJLyQYTf/WLrBT1Q==} + engines: {node: '>= 20'} + + '@tailwindcss/postcss@4.2.4': + resolution: {integrity: sha512-wgAVj6nUWAolAu8YFvzT2cTBIElWHkjZwFYovF+xsqKsW2ADxM/X2opxj5NsF/qVccAOjRNe8X2IdPzMsWyHTg==} + + '@testing-library/dom@10.4.1': + resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@6.9.1': + resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/react@16.3.2': + resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + + '@types/browser-sync@2.29.1': + resolution: {integrity: sha512-jAMsEkLpNURfpS4XIN9BX7SY+uCoTkPjLIovwssV/3e/FPwg9hYusbCXmGNfC3T6W/6d3iP3clxy9cvevjFKtQ==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/compression@1.8.1': + resolution: {integrity: sha512-kCFuWS0ebDbmxs0AXYn6e2r2nrGAb5KwQhknjSPSPgJcGd8+HVSILlUyFhGqML2gk39HcG7D1ydW9/qpYkN00Q==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/cookie-parser@1.4.10': + resolution: {integrity: sha512-B4xqkqfZ8Wek+rCOeRxsjMS9OgvzebEzzLYw7NHYuvzb7IdxOkI0ZHGgeEBX4PUM7QGVvNSK60T3OvWj3YfBRg==} + peerDependencies: + '@types/express': '*' + + '@types/cors@2.8.19': + resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/express-serve-static-core@5.1.1': + resolution: {integrity: sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==} + + '@types/express-session@1.19.0': + resolution: {integrity: sha512-GbypG0bog68UbOq2tSAp7SclvCUm3ha1uDi58OPRGK1NfRvCIu7Gz0M7fTGtpNG1T9a29GpuurQj9zEcT/lMXQ==} + + '@types/express@5.0.6': + resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==} + + '@types/geoip-lite@1.4.4': + resolution: {integrity: sha512-2uVfn+C6bX/H356H6mjxsWUA5u8LO8dJgSBIRO/NFlpMe4DESzacutD/rKYrTDKm1Ugv78b4Wz1KvpHrlv3jSw==} + + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + + '@types/jsonwebtoken@9.0.10': + resolution: {integrity: sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==} + + '@types/less@3.0.8': + resolution: {integrity: sha512-Gjm4+H9noDJgu5EdT3rUw5MhPBag46fiOy27BefvWkNL8mlZnKnCaVVVTLKj6RYXed9b62CPKnPav9govyQDzA==} + + '@types/luxon@3.7.1': + resolution: {integrity: sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==} + + '@types/method-override@3.0.0': + resolution: {integrity: sha512-7XFHR6j7JljprBpzzRZatakUXm1kEGAM3PL/GSsGRHtDvOAKYCdmnXX/5YSl1eQrpJymGs9tRekSWEGaG+Ntjw==} + peerDependencies: + '@types/express': '*' + + '@types/micromatch@2.3.35': + resolution: {integrity: sha512-J749bHo/Zu56w0G0NI/IGHLQPiSsjx//0zJhfEVAN95K/xM5C8ZDmhkXtU3qns0sBOao7HuQzr8XV1/2o5LbXA==} + + '@types/morgan@1.9.10': + resolution: {integrity: sha512-sS4A1zheMvsADRVfT0lYbJ4S9lmsey8Zo2F7cnbYjWHP67Q0AwMYuuzLlkIM2N8gAbb9cubhIVFwcIN2XyYCkA==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/multer@1.4.13': + resolution: {integrity: sha512-bhhdtPw7JqCiEfC9Jimx5LqX9BDIPJEh2q/fQ4bqbBPtyEZYr3cvF22NwG0DmPZNYA0CAf2CnqDB4KIGGpJcaw==} + + '@types/node@24.12.2': + resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==} + + '@types/node@25.6.0': + resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} + + '@types/nodemailer@6.4.23': + resolution: {integrity: sha512-aFV3/NsYFLSx9mbb5gtirBSXJnAlrusoKNuPbxsASWc7vrKLmIrTQRpdcxNcSFL3VW2A2XpeLEavwb2qMi6nlQ==} + + '@types/numeral@2.0.5': + resolution: {integrity: sha512-kH8I7OSSwQu9DS9JYdFWbuvhVzvFRoCPCkGxNwoGgaPeDfEPJlcxNvEOypZhQ3XXHsGbfIuYcxcJxKUfJHnRfw==} + + '@types/parse-glob@3.0.32': + resolution: {integrity: sha512-n4xmml2WKR12XeQprN8L/sfiVPa8FHS3k+fxp4kSr/PA2GsGUgFND+bvISJxM0y5QdvzNEGjEVU3eIrcKks/pA==} + + '@types/qs@6.15.0': + resolution: {integrity: sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} + + '@types/serve-favicon@2.5.7': + resolution: {integrity: sha512-z9TNUQXdQ+W/OJMP1e3KOYUZ99qJS4+ZfFOIrPGImcayqKoyifbJSEFkVq1MCKBbqjMZpjPj3B5ilrQAR2+TOw==} + + '@types/serve-static@2.2.0': + resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} + + '@types/uikit@3.23.0': + resolution: {integrity: sha512-GTn8/K+f4AjFxtLqRKWzjaVKckQp/rHcl20IO09salh2VjyFb9CqeFugL95skO6qbbJLil3PE1MmNajrSj5gMg==} + + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + + '@types/webidl-conversions@7.0.3': + resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} + + '@types/whatwg-url@11.0.5': + resolution: {integrity: sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + + '@vitejs/plugin-react@6.0.1': + resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + vite: ^8.0.0 + peerDependenciesMeta: + '@rolldown/plugin-babel': + optional: true + babel-plugin-react-compiler: + optional: true + + '@vitest/expect@4.1.5': + resolution: {integrity: sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==} + + '@vitest/mocker@4.1.5': + resolution: {integrity: sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.5': + resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==} + + '@vitest/runner@4.1.5': + resolution: {integrity: sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==} + + '@vitest/snapshot@4.1.5': + resolution: {integrity: sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==} + + '@vitest/spy@4.1.5': + resolution: {integrity: sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==} + + '@vitest/utils@4.1.5': + resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansicolor@2.0.3: + resolution: {integrity: sha512-pzusTqk9VHrjgMCcTPDTTvfJfx6Q3+L5tQ6yKC8Diexmoit4YROTFIkxFvRTNL9y5s0Q8HrSrgerCD5bIC+Kiw==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + append-field@1.0.0: + resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + assert-never@1.4.0: + resolution: {integrity: sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + async-each-series@0.1.1: + resolution: {integrity: sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==} + engines: {node: '>=0.8.0'} + + async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + autoprefixer@10.5.0: + resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + babel-walk@3.0.0-canary-5: + resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} + engines: {node: '>= 10.0.0'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + + baseline-browser-mapping@2.10.23: + resolution: {integrity: sha512-xwVXGqevyKPsiuQdLj+dZMVjidjJV508TBqexND5HrF89cGdCYCJFB3qhcxRHSeMctdCfbR1jrxBajhDy7o29g==} + engines: {node: '>=6.0.0'} + hasBin: true + + basic-auth@2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} + + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + block-stream2@2.1.0: + resolution: {integrity: sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==} + + body-parser@2.2.2: + resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} + engines: {node: '>=18'} + + brace-expansion@1.1.14: + resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browser-or-node@2.1.1: + resolution: {integrity: sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==} + + browser-sync-client@3.0.4: + resolution: {integrity: sha512-+ew5ubXzGRKVjquBL3u6najS40TG7GxCdyBll0qSRc/n+JRV9gb/yDdRL1IAgRHqjnJTdqeBKKIQabjvjRSYRQ==} + engines: {node: '>=8.0.0'} + + browser-sync-ui@3.0.4: + resolution: {integrity: sha512-5Po3YARCZ/8yQHFzvrSjn8+hBUF7ZWac39SHsy8Tls+7tE62iq6pYWxpVU6aOOMAGD21RwFQhQeqmJPf70kHEQ==} + + browser-sync@3.0.4: + resolution: {integrity: sha512-mcYOIy4BW6sWSEnTSBjQwWsnbx2btZX78ajTTjdNfyC/EqQVcIe0nQR6894RNAMtvlfAnLaH9L2ka97zpvgenA==} + engines: {node: '>= 8.0.0'} + hasBin: true + + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-recipes@1.3.4: + resolution: {integrity: sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==} + + bson@6.10.4: + resolution: {integrity: sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==} + engines: {node: '>=16.20.1'} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + bull@4.16.5: + resolution: {integrity: sha512-lDsx2BzkKe7gkCYiT5Acj02DpTwDznl/VNN7Psn7M3USPG7Vs/BaClZJJTAG+ufAR9++N1/NiUTdaFBWDIl5TQ==} + engines: {node: '>=12'} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + caniuse-lite@1.0.30001791: + resolution: {integrity: sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + character-parser@2.2.0: + resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} + + chart.js@4.5.1: + resolution: {integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==} + engines: {pnpm: '>=8'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + cluster-key-slot@1.1.2: + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} + engines: {node: '>=0.10.0'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} + + connect-history-api-fallback@1.6.0: + resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} + engines: {node: '>=0.8'} + + connect-redis@8.1.0: + resolution: {integrity: sha512-Km0EYLDlmExF52UCss5gLGTtrukGC57G6WCC2aqEMft5Vr4xNWuM4tL+T97kWrw+vp40SXFteb6Xk/7MxgpwdA==} + engines: {node: '>=18'} + peerDependencies: + express-session: '>=1' + + connect@3.6.6: + resolution: {integrity: sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==} + engines: {node: '>= 0.10.0'} + + constantinople@4.0.1: + resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} + + content-disposition@1.1.0: + resolution: {integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==} + engines: {node: '>=18'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-parser@1.4.7: + resolution: {integrity: sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==} + engines: {node: '>= 0.8.0'} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} + + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} + engines: {node: '>=18'} + + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + + cors@2.8.6: + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} + engines: {node: '>= 0.10'} + + cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} + engines: {node: '>=12.0.0'} + + cron@4.4.0: + resolution: {integrity: sha512-fkdfq+b+AHI4cKdhZlppHveI/mgz2qpiYxcm+t5E5TsxX7QrLS1VE0+7GENEk9z0EeGPcpSciGv6ez24duWhwQ==} + engines: {node: '>=18.x'} + + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + dayjs@1.11.20: + resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.1.0: + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + dev-ip@1.0.1: + resolution: {integrity: sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==} + engines: {node: '>= 0.8.0'} + hasBin: true + + diacritics@1.3.0: + resolution: {integrity: sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctypes@1.1.0: + resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + engines: {node: '>=12'} + + dotenv@17.4.2: + resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} + engines: {node: '>=12'} + + drange@1.1.1: + resolution: {integrity: sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==} + engines: {node: '>=4'} + + dtp-cleantext@1.0.0: + resolution: {integrity: sha512-V6+fTe/pv+w0+/z/P1ypjezUi9bBmuryuubAtXHknEG+PKLuWfPMsW/Xs7wyD3ZYUR7mLAXM4DXt1AiZ+PTKMw==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + easy-extender@2.3.4: + resolution: {integrity: sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==} + engines: {node: '>= 4.0.0'} + + eazy-logger@4.1.0: + resolution: {integrity: sha512-+mn7lRm+Zf1UT/YaH8WXtpU6PIV2iOjzP6jgKoiaq/VNrjYKp+OHZGe2znaLgDeFkw8cL9ffuaUm+nNnzcYyGw==} + engines: {node: '>= 0.8.0'} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.344: + resolution: {integrity: sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + engine.io-client@6.6.4: + resolution: {integrity: sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==} + + engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + + engine.io@6.6.7: + resolution: {integrity: sha512-DgOngfDKM2EviOH3Mr9m7ks1q8roetLy/IMmYthAYzbpInMbYc/GS+fWFA3rl1gvwKVsQrVV61fo5emD1y3OJQ==} + engines: {node: '>=10.2.0'} + + enhanced-resolve@5.21.0: + resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==} + engines: {node: '>=10.13.0'} + + entities@8.0.0: + resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} + engines: {node: '>=20.19.0'} + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + + express-rate-limit@7.5.1: + resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==} + engines: {node: '>= 16'} + peerDependencies: + express: '>= 4.11' + + express-session@1.19.0: + resolution: {integrity: sha512-0csaMkGq+vaiZTmSMMGkfdCOabYv192VbytFypcvI0MANrp+4i/7yEkJ0sbAEhycQjntaKGzYfjfXQyVb7BHMA==} + engines: {node: '>= 0.8.0'} + + express@5.2.1: + resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} + engines: {node: '>= 18'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-xml-builder@1.1.5: + resolution: {integrity: sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==} + + fast-xml-parser@5.7.2: + resolution: {integrity: sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==} + hasBin: true + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + + finalhandler@1.1.0: + resolution: {integrity: sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==} + engines: {node: '>= 0.8'} + + finalhandler@2.1.1: + resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} + engines: {node: '>= 18.0.0'} + + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + + fs-extra@3.0.1: + resolution: {integrity: sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + geoip-lite@1.4.10: + resolution: {integrity: sha512-4N69uhpS3KFd97m00wiFEefwa+L+HT5xZbzPhwu+sDawStg6UN/dPwWtUfkQuZkGIY1Cj7wDVp80IsqNtGMi2w==} + engines: {node: '>=10.3.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-port@5.1.1: + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} + engines: {node: '>=18'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-flag@5.0.1: + resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} + engines: {node: '>=12'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + engines: {node: '>= 0.4'} + + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + immutable@3.8.3: + resolution: {integrity: sha512-AUY/VyX0E5XlibOmWt10uabJzam1zlYjwiEgQSDc5+UIkFNaF9WM0JxXKaNMGf+F/ffUF+7kRKXM9A7C0xXqMg==} + engines: {node: '>=0.10.0'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ioredis@5.10.1: + resolution: {integrity: sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==} + engines: {node: '>=12.22.0'} + + ip-address@5.9.4: + resolution: {integrity: sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==} + engines: {node: '>= 0.10'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + ipaddr.js@2.3.0: + resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==} + engines: {node: '>= 10'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-expression@4.0.0: + resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number-like@1.0.8: + resolution: {integrity: sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + + is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + + isnumber@1.0.0: + resolution: {integrity: sha512-JLiSz/zsZcGFXPrB4I/AGBvtStkt+8QmksyZBZnVXnnK9XdTEyz0tX8CRYljtwYDuIuZzih6DpHQdi+3Q6zHPw==} + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + + js-stringify@1.0.2: + resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jsdom@29.1.0: + resolution: {integrity: sha512-YNUc7fB9QuvSSQWfrH0xF+TyABkxUwx8sswgIDaCrw4Hol8BghdZDkITtZheRJeMtzWlnTfsM3bBBusRvpO1wg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + + jsonfile@3.0.1: + resolution: {integrity: sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==} + + jsonwebtoken@9.0.3: + resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} + engines: {node: '>=12', npm: '>=6'} + + jstransformer@1.0.0: + resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} + + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} + + jws@4.0.1: + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} + + kareem@2.6.3: + resolution: {integrity: sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==} + engines: {node: '>=12.0.0'} + + lazy@1.0.11: + resolution: {integrity: sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==} + engines: {node: '>=0.2.0'} + + less@4.6.4: + resolution: {integrity: sha512-OJmO5+HxZLLw0RLzkqaNHzcgEAQG7C0y3aMbwtCzIUFZsLMNNq/1IdAdHEycQ58CwUO3jPTHmoN+tE5I7FQxNg==} + engines: {node: '>=18'} + hasBin: true + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + + limiter@1.1.5: + resolution: {integrity: sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==} + + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isarguments@3.1.0: + resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isfinite@3.3.2: + resolution: {integrity: sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + + lru-cache@11.3.5: + resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} + engines: {node: 20 || >=22} + + luxon@3.7.2: + resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} + engines: {node: '>=12'} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + marked@16.4.2: + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} + engines: {node: '>= 20'} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + + memory-pager@1.5.0: + resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} + + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + method-override@3.0.0: + resolution: {integrity: sha512-IJ2NNN/mSl9w3kzWB92rcdHpz+HjkxhDJWNDBqSlas+zQdP8wBiJzITPg08M/k2uVvMow7Sk41atndNtt/PHSA==} + engines: {node: '>= 0.10'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minio@8.0.7: + resolution: {integrity: sha512-E737MgufW8CeQAsTAtnEMrxZ9scMSf29kkhZoXzDTKj/Jszzo2SfeZUH9wbDQH2Rsq6TCtl/yQL0+XdVKZansQ==} + engines: {node: ^16 || ^18 || >=20} + + mitt@1.2.0: + resolution: {integrity: sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==} + + mongodb-connection-string-url@3.0.2: + resolution: {integrity: sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==} + + mongodb@6.20.0: + resolution: {integrity: sha512-Tl6MEIU3K4Rq3TSHd+sZQqRBoGlFsOgNrH5ltAcFBV62Re3Fd+FcaVf8uSEQFOJ51SDowDVttBTONMfoYWrWlQ==} + engines: {node: '>=16.20.1'} + peerDependencies: + '@aws-sdk/credential-providers': ^3.188.0 + '@mongodb-js/zstd': ^1.1.0 || ^2.0.0 + gcp-metadata: ^5.2.0 + kerberos: ^2.0.1 + mongodb-client-encryption: '>=6.0.0 <7' + snappy: ^7.3.2 + socks: ^2.7.1 + peerDependenciesMeta: + '@aws-sdk/credential-providers': + optional: true + '@mongodb-js/zstd': + optional: true + gcp-metadata: + optional: true + kerberos: + optional: true + mongodb-client-encryption: + optional: true + snappy: + optional: true + socks: + optional: true + + mongoose@8.23.1: + resolution: {integrity: sha512-gHSPD8qEwRmiXapK17hEnFWZdcFENMegHTcw5XIIg2+7R8eXQvdwSiMpD/A2oG8tKzFLLHyRXd8/eaDPAVwZgQ==} + engines: {node: '>=16.20.1'} + + morgan@1.10.1: + resolution: {integrity: sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==} + engines: {node: '>= 0.8.0'} + + mpath@0.9.0: + resolution: {integrity: sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==} + engines: {node: '>=4.0.0'} + + mquery@5.0.0: + resolution: {integrity: sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==} + engines: {node: '>=14.0.0'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + hasBin: true + + msgpackr@1.11.10: + resolution: {integrity: sha512-iCZNq+HszvF+fC3anCm4nBmWEnbeIAfpDs6IStAEKhQ2YSgkjzVG2FF9XJqwwQh5bH3N9OUTUt4QwVN6MLMLtA==} + + multer@2.1.1: + resolution: {integrity: sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==} + engines: {node: '>= 10.16.0'} + + mylas@2.1.14: + resolution: {integrity: sha512-BzQguy9W9NJgoVn2mRWzbFrFWWztGCcng2QI9+41frfk+Athwgx3qhqhvStz7ExeUUu7Kzw427sNzHpEZNINog==} + engines: {node: '>=16.0.0'} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + needle@3.5.0: + resolution: {integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==} + engines: {node: '>= 4.4.x'} + hasBin: true + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + + node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true + + node-releases@2.0.38: + resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==} + + nodemailer@7.0.13: + resolution: {integrity: sha512-PNDFSJdP+KFgdsG3ZzMXCgquO7I6McjY2vlqILjtJd0hy8wEvtugS9xKRF2NWlPNGxvLCXlTNIae4serI7dinw==} + engines: {node: '>=6.0.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + numeral@2.0.6: + resolution: {integrity: sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + + ollama@0.6.3: + resolution: {integrity: sha512-KEWEhIqE5wtfzEIZbDCLH51VFZ6Z3ZSa6sIOg/E/tBV8S51flyqBOXi+bRxlOYKDf8i327zG9eSTb8IJxvm3Zg==} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + openai@6.34.0: + resolution: {integrity: sha512-yEr2jdGf4tVFYG6ohmr3pF6VJuveP0EA/sS8TBx+4Eq5NT10alu5zg2dmxMXMgqpihRDQlFGpRt2XwsGj+Fyxw==} + hasBin: true + peerDependencies: + ws: ^8.18.0 + zod: ^3.25 || ^4.0 + peerDependenciesMeta: + ws: + optional: true + zod: + optional: true + + opn@5.3.0: + resolution: {integrity: sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==} + engines: {node: '>=4'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + parse5@8.0.1: + resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-expression-matcher@1.5.0: + resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==} + engines: {node: '>=14.0.0'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@8.4.2: + resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + + plimit-lit@1.6.1: + resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} + engines: {node: '>=12'} + + portscanner@2.2.0: + resolution: {integrity: sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==} + engines: {node: '>=0.4', npm: '>=1.0.0'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.12: + resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==} + engines: {node: ^10 || ^12 || >=14} + + prettier@3.8.3: + resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + pug-attrs@3.0.0: + resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} + + pug-code-gen@3.0.4: + resolution: {integrity: sha512-6okWYIKdasTyXICyEtvobmTZAVX57JkzgzIi4iRJlin8kmhG+Xry2dsus+Mun/nGCn6F2U49haHI5mkELXB14g==} + + pug-error@2.1.0: + resolution: {integrity: sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==} + + pug-filters@4.0.0: + resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} + + pug-lexer@5.0.1: + resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} + + pug-linker@4.0.0: + resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} + + pug-load@3.0.0: + resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} + + pug-parser@6.0.0: + resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} + + pug-runtime@3.0.1: + resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} + + pug-strip-comments@2.0.0: + resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} + + pug-walk@2.0.0: + resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} + + pug@3.0.4: + resolution: {integrity: sha512-kFfq5mMzrS7+wrl5pLJzZEzemx34OQ0w4SARfhy/3yxTlhbstsudDwJzhf1hP02yHzbjoVMSXUj/Sz6RNfMyXg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.15.1: + resolution: {integrity: sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==} + engines: {node: '>=0.6'} + + query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + + queue-lit@1.5.2: + resolution: {integrity: sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==} + engines: {node: '>=12'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + randexp@0.5.3: + resolution: {integrity: sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==} + engines: {node: '>=4'} + + random-bytes@1.0.0: + resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} + engines: {node: '>= 0.8'} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} + engines: {node: '>= 0.8'} + + raw-body@3.0.2: + resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} + engines: {node: '>= 0.10'} + + react-dom@19.2.5: + resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} + peerDependencies: + react: ^19.2.5 + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-router-dom@7.14.2: + resolution: {integrity: sha512-YZcM5ES8jJSM+KrJ9BdvHHqlnGTg5tH3sC5ChFRj4inosKctdyzBDhOyyHdGk597q2OT6NTrCA1OvB/YDwfekQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + + react-router@7.14.2: + resolution: {integrity: sha512-yCqNne6I8IB6rVCH7XUvlBK7/QKyqypBFGv+8dj4QBFJiiRX+FG7/nkdAvGElyvVZ/HQP5N19wzteuTARXi5Gw==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + + react@19.2.5: + resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} + engines: {node: '>=0.10.0'} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + redis-errors@1.2.0: + resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} + engines: {node: '>=4'} + + redis-parser@3.0.0: + resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} + engines: {node: '>=4'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + engines: {node: '>= 0.4'} + hasBin: true + + resp-modifier@6.0.2: + resolution: {integrity: sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==} + engines: {node: '>= 0.8.0'} + + ret@0.2.2: + resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} + engines: {node: '>=4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rolldown@1.0.0-rc.17: + resolution: {integrity: sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + rotating-file-stream@3.2.9: + resolution: {integrity: sha512-i9i0KkHh12ryl4xtELg+0gyoFre2PJ9RcQQLzquWsiqygyYsrZLckrqqYrthhnJZGZb4g+KUHtcoWYVq34gaug==} + engines: {node: '>=14.0'} + + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rx@4.1.0: + resolution: {integrity: sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + engines: {node: '>=11.0.0'} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} + engines: {node: '>= 0.8.0'} + + send@1.2.1: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} + engines: {node: '>= 18'} + + serve-favicon@2.5.1: + resolution: {integrity: sha512-JndLBslCLA/ebr7rS3d+/EKkzTsTi1jI2T9l+vHfAaGJ7A7NhtDpSZ0lx81HCNWnnE0yHncG+SSnVf9IMxOwXQ==} + engines: {node: '>= 0.8.0'} + + serve-index@1.9.2: + resolution: {integrity: sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} + engines: {node: '>= 0.8.0'} + + serve-static@2.2.1: + resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} + engines: {node: '>= 18'} + + server-destroy@1.0.1: + resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} + + set-cookie-parser@2.7.2: + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shoetest@1.2.2: + resolution: {integrity: sha512-iT8kIEFcGfUwo53VUFckm+glTkc0oLycRe+YqU/W4wQuIHGIWc5KMIpDnJVdavKCyEZKQTi8IDq27rDmB09QjA==} + + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + sift@17.1.3: + resolution: {integrity: sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + socket.io-adapter@2.5.6: + resolution: {integrity: sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==} + + socket.io-client@4.8.3: + resolution: {integrity: sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==} + engines: {node: '>=10.0.0'} + + socket.io-parser@4.2.6: + resolution: {integrity: sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==} + engines: {node: '>=10.0.0'} + + socket.io@4.8.3: + resolution: {integrity: sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==} + engines: {node: '>=10.2.0'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sparse-bitfield@3.0.3: + resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} + + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + sprintf-js@1.1.2: + resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + + stats-lite@2.2.0: + resolution: {integrity: sha512-/Kz55rgUIv2KP2MKphwYT/NCuSfAlbbMRv2ZWw7wyXayu230zdtzhxxuXXcvsc6EmmhS8bSJl3uS1wmMHFumbA==} + engines: {node: '>=2.0.0'} + + statuses@1.3.1: + resolution: {integrity: sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==} + engines: {node: '>= 0.6'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + + stream-chain@2.2.5: + resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==} + + stream-json@1.9.1: + resolution: {integrity: sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==} + + stream-throttle@0.1.3: + resolution: {integrity: sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==} + engines: {node: '>= 0.10.0'} + hasBin: true + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + striptags@3.2.0: + resolution: {integrity: sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==} + + strnum@2.2.3: + resolution: {integrity: sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + tailwindcss@4.2.4: + resolution: {integrity: sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA==} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@1.1.1: + resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} + engines: {node: '>=18'} + + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + + tldts-core@7.0.28: + resolution: {integrity: sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ==} + + tldts@7.0.28: + resolution: {integrity: sha512-+Zg3vWhRUv8B1maGSTFdev9mjoo8Etn2Ayfs4cnjlD3CsGkxXX4QyW3j2WJ0wdjYcYmy7Lx2RDsZMhgCWafKIw==} + hasBin: true + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + token-stream@1.0.0: + resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} + + tough-cookie@6.0.1: + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} + engines: {node: '>=16'} + + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} + + tsc-alias@1.8.16: + resolution: {integrity: sha512-QjCyu55NFyRSBAl6+MTFwplpFcnm2Pq01rR/uxfqJoLMm6X3O14KEGtaSDZpJYaE1bJBGDjD0eSuiIWPe2T58g==} + engines: {node: '>=16.20.2'} + hasBin: true + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + engines: {node: '>=18.0.0'} + hasBin: true + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + + ua-parser-js@1.0.41: + resolution: {integrity: sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==} + hasBin: true + + uid-safe@2.1.5: + resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} + engines: {node: '>= 0.8'} + + uikit@3.25.16: + resolution: {integrity: sha512-zTpbaNMWTTsWZOiFJkFHa+zia1pRgY3FA6hEAckVgk4aJ19+qie7M/qH9GJgI1nlxP97xMcGH/MXw0qWaKURfQ==} + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + + undici-types@7.19.2: + resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} + + undici@7.25.0: + resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} + engines: {node: '>=20.18.1'} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite@8.0.10: + resolution: {integrity: sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.0 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.5: + resolution: {integrity: sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.5 + '@vitest/browser-preview': 4.1.5 + '@vitest/browser-webdriverio': 4.1.5 + '@vitest/coverage-istanbul': 4.1.5 + '@vitest/coverage-v8': 4.1.5 + '@vitest/ui': 4.1.5 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} + + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + + whatwg-url@16.0.1: + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + with@7.0.2: + resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} + engines: {node: '>= 10.0.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xml2js@0.6.2: + resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xmlhttprequest-ssl@2.1.2: + resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} + engines: {node: '>=0.4.0'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + +snapshots: + + '@adobe/css-tools@4.4.4': {} + + '@alloc/quick-lru@5.2.0': {} + + '@asamuzakjp/css-color@5.1.11': + dependencies: + '@asamuzakjp/generational-cache': 1.0.1 + '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@asamuzakjp/dom-selector@7.1.1': + dependencies: + '@asamuzakjp/generational-cache': 1.0.1 + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.2.1 + is-potential-custom-element-name: 1.0.1 + + '@asamuzakjp/generational-cache@1.0.1': {} + + '@asamuzakjp/nwsapi@2.3.9': {} + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/parser@7.29.2': + dependencies: + '@babel/types': 7.29.0 + + '@babel/runtime@7.29.2': {} + + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@bramus/specificity@2.4.2': + dependencies: + css-tree: 3.2.1 + + '@csstools/color-helpers@6.0.2': {} + + '@csstools/css-calc@3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-color-parser@4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/color-helpers': 6.0.2 + '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.3(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 + + '@csstools/css-tokenizer@4.0.0': {} + + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.27.7': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/linux-x64@0.27.7': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.27.7': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.27.7': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.27.7': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.27.7': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.27.7': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.27.7': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.27.7': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.27.7': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@esbuild/win32-x64@0.27.7': + optional: true + + '@exodus/bytes@1.15.0': {} + + '@fortawesome/fontawesome-free@6.7.2': {} + + '@ioredis/commands@1.5.1': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@kurkle/color@0.3.4': {} + + '@mongodb-js/saslprep@1.4.9': + dependencies: + sparse-bitfield: 3.0.3 + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + optional: true + + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.1 + optional: true + + '@nodable/entities@2.1.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@oxc-project/types@0.127.0': {} + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + '@rolldown/binding-android-arm64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': + optional: true + + '@rolldown/pluginutils@1.0.0-rc.17': {} + + '@rolldown/pluginutils@1.0.0-rc.7': {} + + '@socket.io/component-emitter@3.1.2': {} + + '@standard-schema/spec@1.1.0': {} + + '@tailwindcss/node@4.2.4': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.21.0 + jiti: 2.6.1 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.2.4 + + '@tailwindcss/oxide-android-arm64@4.2.4': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.2.4': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.2.4': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.2.4': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.2.4': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.2.4': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.2.4': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.2.4': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.2.4': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.2.4': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.2.4': + optional: true + + '@tailwindcss/oxide@4.2.4': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.2.4 + '@tailwindcss/oxide-darwin-arm64': 4.2.4 + '@tailwindcss/oxide-darwin-x64': 4.2.4 + '@tailwindcss/oxide-freebsd-x64': 4.2.4 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.4 + '@tailwindcss/oxide-linux-arm64-gnu': 4.2.4 + '@tailwindcss/oxide-linux-arm64-musl': 4.2.4 + '@tailwindcss/oxide-linux-x64-gnu': 4.2.4 + '@tailwindcss/oxide-linux-x64-musl': 4.2.4 + '@tailwindcss/oxide-wasm32-wasi': 4.2.4 + '@tailwindcss/oxide-win32-arm64-msvc': 4.2.4 + '@tailwindcss/oxide-win32-x64-msvc': 4.2.4 + + '@tailwindcss/postcss@4.2.4': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.2.4 + '@tailwindcss/oxide': 4.2.4 + postcss: 8.5.12 + tailwindcss: 4.2.4 + + '@testing-library/dom@10.4.1': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/runtime': 7.29.2 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + picocolors: 1.1.1 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.9.1': + dependencies: + '@adobe/css-tools': 4.4.4 + aria-query: 5.3.2 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + picocolors: 1.1.1 + redent: 3.0.0 + + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@babel/runtime': 7.29.2 + '@testing-library/dom': 10.4.1 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/aria-query@5.0.4': {} + + '@types/body-parser@1.19.6': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 24.12.2 + + '@types/browser-sync@2.29.1': + dependencies: + '@types/micromatch': 2.3.35 + '@types/node': 24.12.2 + '@types/serve-static': 2.2.0 + chokidar: 3.6.0 + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/compression@1.8.1': + dependencies: + '@types/express': 5.0.6 + '@types/node': 24.12.2 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 24.12.2 + + '@types/cookie-parser@1.4.10(@types/express@5.0.6)': + dependencies: + '@types/express': 5.0.6 + + '@types/cors@2.8.19': + dependencies: + '@types/node': 24.12.2 + + '@types/deep-eql@4.0.2': {} + + '@types/estree@1.0.8': {} + + '@types/express-serve-static-core@5.1.1': + dependencies: + '@types/node': 24.12.2 + '@types/qs': 6.15.0 + '@types/range-parser': 1.2.7 + '@types/send': 1.2.1 + + '@types/express-session@1.19.0': + dependencies: + '@types/express': 5.0.6 + + '@types/express@5.0.6': + dependencies: + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 5.1.1 + '@types/serve-static': 2.2.0 + + '@types/geoip-lite@1.4.4': {} + + '@types/http-errors@2.0.5': {} + + '@types/jsonwebtoken@9.0.10': + dependencies: + '@types/ms': 2.1.0 + '@types/node': 24.12.2 + + '@types/less@3.0.8': {} + + '@types/luxon@3.7.1': {} + + '@types/method-override@3.0.0(@types/express@5.0.6)': + dependencies: + '@types/express': 5.0.6 + + '@types/micromatch@2.3.35': + dependencies: + '@types/parse-glob': 3.0.32 + + '@types/morgan@1.9.10': + dependencies: + '@types/node': 24.12.2 + + '@types/ms@2.1.0': {} + + '@types/multer@1.4.13': + dependencies: + '@types/express': 5.0.6 + + '@types/node@24.12.2': + dependencies: + undici-types: 7.16.0 + + '@types/node@25.6.0': + dependencies: + undici-types: 7.19.2 + + '@types/nodemailer@6.4.23': + dependencies: + '@types/node': 24.12.2 + + '@types/numeral@2.0.5': {} + + '@types/parse-glob@3.0.32': {} + + '@types/qs@6.15.0': {} + + '@types/range-parser@1.2.7': {} + + '@types/react@19.2.14': + dependencies: + csstype: 3.2.3 + + '@types/send@1.2.1': + dependencies: + '@types/node': 24.12.2 + + '@types/serve-favicon@2.5.7': + dependencies: + '@types/express': 5.0.6 + + '@types/serve-static@2.2.0': + dependencies: + '@types/http-errors': 2.0.5 + '@types/node': 24.12.2 + + '@types/uikit@3.23.0': {} + + '@types/uuid@10.0.0': {} + + '@types/webidl-conversions@7.0.3': {} + + '@types/whatwg-url@11.0.5': + dependencies: + '@types/webidl-conversions': 7.0.3 + + '@types/ws@8.18.1': + dependencies: + '@types/node': 24.12.2 + + '@vitejs/plugin-react@6.0.1(vite@8.0.10(@types/node@24.12.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.6.4)(tsx@4.21.0))': + dependencies: + '@rolldown/pluginutils': 1.0.0-rc.7 + vite: 8.0.10(@types/node@24.12.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.6.4)(tsx@4.21.0) + + '@vitest/expect@4.1.5': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + chai: 6.2.2 + tinyrainbow: 3.1.0 + + '@vitest/mocker@4.1.5(vite@8.0.10(@types/node@24.12.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.6.4)(tsx@4.21.0))': + dependencies: + '@vitest/spy': 4.1.5 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.10(@types/node@24.12.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.6.4)(tsx@4.21.0) + + '@vitest/pretty-format@4.1.5': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/runner@4.1.5': + dependencies: + '@vitest/utils': 4.1.5 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.5': + dependencies: + '@vitest/pretty-format': 4.1.5 + '@vitest/utils': 4.1.5 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.5': {} + + '@vitest/utils@4.1.5': + dependencies: + '@vitest/pretty-format': 4.1.5 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + accepts@2.0.0: + dependencies: + mime-types: 3.0.2 + negotiator: 1.0.0 + + acorn@7.4.1: {} + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansicolor@2.0.3: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.2 + + append-field@1.0.0: {} + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + aria-query@5.3.2: {} + + array-union@2.1.0: {} + + asap@2.0.6: {} + + assert-never@1.4.0: {} + + assertion-error@2.0.1: {} + + async-each-series@0.1.1: {} + + async@2.6.4: + dependencies: + lodash: 4.18.1 + + async@3.2.6: {} + + autoprefixer@10.5.0(postcss@8.5.12): + dependencies: + browserslist: 4.28.2 + caniuse-lite: 1.0.30001791 + fraction.js: 5.3.4 + picocolors: 1.1.1 + postcss: 8.5.12 + postcss-value-parser: 4.2.0 + + babel-walk@3.0.0-canary-5: + dependencies: + '@babel/types': 7.29.0 + + balanced-match@1.0.2: {} + + base64id@2.0.0: {} + + baseline-browser-mapping@2.10.23: {} + + basic-auth@2.0.1: + dependencies: + safe-buffer: 5.1.2 + + batch@0.6.1: {} + + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + + binary-extensions@2.3.0: {} + + block-stream2@2.1.0: + dependencies: + readable-stream: 3.6.2 + + body-parser@2.2.2: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.3 + http-errors: 2.0.1 + iconv-lite: 0.7.2 + on-finished: 2.4.1 + qs: 6.15.1 + raw-body: 3.0.2 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + + brace-expansion@1.1.14: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-or-node@2.1.1: {} + + browser-sync-client@3.0.4: + dependencies: + etag: 1.8.1 + fresh: 0.5.2 + mitt: 1.2.0 + + browser-sync-ui@3.0.4: + dependencies: + async-each-series: 0.1.1 + chalk: 4.1.2 + connect-history-api-fallback: 1.6.0 + immutable: 3.8.3 + server-destroy: 1.0.1 + socket.io-client: 4.8.3 + stream-throttle: 0.1.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + browser-sync@3.0.4: + dependencies: + browser-sync-client: 3.0.4 + browser-sync-ui: 3.0.4 + bs-recipes: 1.3.4 + chalk: 4.1.2 + chokidar: 3.6.0 + connect: 3.6.6 + connect-history-api-fallback: 1.6.0 + dev-ip: 1.0.1 + easy-extender: 2.3.4 + eazy-logger: 4.1.0 + etag: 1.8.1 + fresh: 0.5.2 + fs-extra: 3.0.1 + http-proxy: 1.18.1 + immutable: 3.8.3 + micromatch: 4.0.8 + opn: 5.3.0 + portscanner: 2.2.0 + raw-body: 2.5.3 + resp-modifier: 6.0.2 + rx: 4.1.0 + send: 0.19.2 + serve-index: 1.9.2 + serve-static: 1.16.3 + server-destroy: 1.0.1 + socket.io: 4.8.3 + ua-parser-js: 1.0.41 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.23 + caniuse-lite: 1.0.30001791 + electron-to-chromium: 1.5.344 + node-releases: 2.0.38 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + + bs-recipes@1.3.4: {} + + bson@6.10.4: {} + + buffer-crc32@0.2.13: {} + + buffer-crc32@1.0.0: {} + + buffer-equal-constant-time@1.0.1: {} + + buffer-from@1.1.2: {} + + bull@4.16.5: + dependencies: + cron-parser: 4.9.0 + get-port: 5.1.1 + ioredis: 5.10.1 + lodash: 4.18.1 + msgpackr: 1.11.10 + semver: 7.7.4 + uuid: 8.3.2 + transitivePeerDependencies: + - supports-color + + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 + + bytes@3.1.2: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + caniuse-lite@1.0.30001791: {} + + chai@6.2.2: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + character-parser@2.2.0: + dependencies: + is-regex: 1.2.1 + + chart.js@4.5.1: + dependencies: + '@kurkle/color': 0.3.4 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cluster-key-slot@1.1.2: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@2.20.3: {} + + commander@9.5.0: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.1: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.1.0 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + concat-map@0.0.1: {} + + concat-stream@2.0.0: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + typedarray: 0.0.6 + + connect-history-api-fallback@1.6.0: {} + + connect-redis@8.1.0(express-session@1.19.0): + dependencies: + express-session: 1.19.0 + + connect@3.6.6: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.0 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + + constantinople@4.0.1: + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + + content-disposition@1.1.0: {} + + content-type@1.0.5: {} + + convert-source-map@2.0.0: {} + + cookie-parser@1.4.7: + dependencies: + cookie: 0.7.2 + cookie-signature: 1.0.6 + + cookie-signature@1.0.6: {} + + cookie-signature@1.0.7: {} + + cookie-signature@1.2.2: {} + + cookie@0.7.2: {} + + cookie@1.1.1: {} + + copy-anything@3.0.5: + dependencies: + is-what: 4.1.16 + + cors@2.8.6: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cron-parser@4.9.0: + dependencies: + luxon: 3.7.2 + + cron@4.4.0: + dependencies: + '@types/luxon': 3.7.1 + luxon: 3.7.2 + + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + + css.escape@1.5.1: {} + + csstype@3.2.3: {} + + data-urls@7.0.0: + dependencies: + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1 + transitivePeerDependencies: + - '@noble/hashes' + + dayjs@1.11.20: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.1.0: + dependencies: + ms: 2.0.0 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decimal.js@10.6.0: {} + + decode-uri-component@0.2.2: {} + + denque@2.1.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destroy@1.2.0: {} + + detect-libc@2.1.2: {} + + dev-ip@1.0.1: {} + + diacritics@1.3.0: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + doctypes@1.1.0: {} + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + + dotenv@16.6.1: {} + + dotenv@17.4.2: {} + + drange@1.1.1: {} + + dtp-cleantext@1.0.0: + dependencies: + diacritics: 1.3.0 + shoetest: 1.2.2 + stats-lite: 2.2.0 + striptags: 3.2.0 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + easy-extender@2.3.4: + dependencies: + lodash: 4.18.1 + + eazy-logger@4.1.0: + dependencies: + chalk: 4.1.2 + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.344: {} + + emoji-regex@8.0.0: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + engine.io-client@6.6.4: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.4.3 + engine.io-parser: 5.2.3 + ws: 8.18.3 + xmlhttprequest-ssl: 2.1.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + engine.io-parser@5.2.3: {} + + engine.io@6.6.7: + dependencies: + '@types/cors': 2.8.19 + '@types/node': 24.12.2 + '@types/ws': 8.18.1 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.7.2 + cors: 2.8.6 + debug: 4.4.3 + engine.io-parser: 5.2.3 + ws: 8.18.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + enhanced-resolve@5.21.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + entities@8.0.0: {} + + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@2.1.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + etag@1.8.1: {} + + eventemitter3@4.0.7: {} + + eventemitter3@5.0.4: {} + + expect-type@1.3.0: {} + + express-rate-limit@7.5.1(express@5.2.1): + dependencies: + express: 5.2.1 + + express-session@1.19.0: + dependencies: + cookie: 0.7.2 + cookie-signature: 1.0.7 + debug: 2.6.9 + depd: 2.0.0 + on-headers: 1.1.0 + parseurl: 1.3.3 + safe-buffer: 5.2.1 + uid-safe: 2.1.5 + transitivePeerDependencies: + - supports-color + + express@5.2.1: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.2 + content-disposition: 1.1.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.3 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.1 + fresh: 2.0.0 + http-errors: 2.0.1 + merge-descriptors: 2.0.0 + mime-types: 3.0.2 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.15.1 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.1 + serve-static: 2.2.1 + statuses: 2.0.2 + type-is: 2.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-xml-builder@1.1.5: + dependencies: + path-expression-matcher: 1.5.0 + + fast-xml-parser@5.7.2: + dependencies: + '@nodable/entities': 2.1.0 + fast-xml-builder: 1.1.5 + path-expression-matcher: 1.5.0 + strnum: 2.2.3 + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + filter-obj@1.1.0: {} + + finalhandler@1.1.0: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.3.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + finalhandler@2.1.1: + dependencies: + debug: 4.4.3 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + follow-redirects@1.16.0: {} + + forwarded@0.2.0: {} + + fraction.js@5.3.4: {} + + fresh@0.5.2: {} + + fresh@2.0.0: {} + + fs-extra@3.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 3.0.1 + universalify: 0.1.2 + + fs.realpath@1.0.0: {} + + fsevents@2.3.2: + optional: true + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + geoip-lite@1.4.10: + dependencies: + async: 2.6.4 + chalk: 4.1.2 + iconv-lite: 0.6.3 + ip-address: 5.9.4 + lazy: 1.0.11 + rimraf: 2.7.1 + yauzl: 2.10.0 + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.3 + math-intrinsics: 1.1.0 + + get-port@5.1.1: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.5 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@16.5.0: {} + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + has-flag@5.0.1: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.3: + dependencies: + function-bind: 1.1.2 + + html-encoding-sniffer@6.0.0: + dependencies: + '@exodus/bytes': 1.15.0 + transitivePeerDependencies: + - '@noble/hashes' + + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.16.0 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.7.2: + dependencies: + safer-buffer: 2.1.2 + + ignore@5.3.2: {} + + image-size@0.5.5: + optional: true + + immutable@3.8.3: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ioredis@5.10.1: + dependencies: + '@ioredis/commands': 1.5.1 + cluster-key-slot: 1.1.2 + debug: 4.4.3 + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + + ip-address@5.9.4: + dependencies: + jsbn: 1.1.0 + lodash: 4.18.1 + sprintf-js: 1.1.2 + + ipaddr.js@1.9.1: {} + + ipaddr.js@2.3.0: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.3 + + is-expression@4.0.0: + dependencies: + acorn: 7.4.1 + object-assign: 4.1.1 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number-like@1.0.8: + dependencies: + lodash.isfinite: 3.3.2 + + is-number@7.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-promise@2.2.2: {} + + is-promise@4.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.3 + + is-what@4.1.16: {} + + is-wsl@1.1.0: {} + + isnumber@1.0.0: {} + + jiti@2.6.1: {} + + js-stringify@1.0.2: {} + + js-tokens@4.0.0: {} + + jsbn@1.1.0: {} + + jsdom@29.1.0: + dependencies: + '@asamuzakjp/css-color': 5.1.11 + '@asamuzakjp/dom-selector': 7.1.1 + '@bramus/specificity': 2.4.2 + '@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1) + '@exodus/bytes': 1.15.0 + css-tree: 3.2.1 + data-urls: 7.0.0 + decimal.js: 10.6.0 + html-encoding-sniffer: 6.0.0 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.3.5 + parse5: 8.0.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 6.0.1 + undici: 7.25.0 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - '@noble/hashes' + + jsonfile@3.0.1: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonwebtoken@9.0.3: + dependencies: + jws: 4.0.1 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.7.4 + + jstransformer@1.0.0: + dependencies: + is-promise: 2.2.2 + promise: 7.3.1 + + jwa@2.0.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@4.0.1: + dependencies: + jwa: 2.0.1 + safe-buffer: 5.2.1 + + kareem@2.6.3: {} + + lazy@1.0.11: {} + + less@4.6.4: + dependencies: + copy-anything: 3.0.5 + parse-node-version: 1.0.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.5.0 + source-map: 0.6.1 + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + 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 + + limiter@1.1.5: {} + + lodash.defaults@4.2.0: {} + + lodash.includes@4.3.0: {} + + lodash.isarguments@3.1.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isfinite@3.3.2: {} + + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + + lodash.once@4.1.1: {} + + lodash@4.18.1: {} + + lru-cache@11.3.5: {} + + luxon@3.7.2: {} + + lz-string@1.5.0: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + + marked@16.4.2: {} + + math-intrinsics@1.1.0: {} + + mdn-data@2.27.1: {} + + media-typer@0.3.0: {} + + media-typer@1.1.0: {} + + memory-pager@1.5.0: {} + + merge-descriptors@2.0.0: {} + + merge2@1.4.1: {} + + method-override@3.0.0: + dependencies: + debug: 3.1.0 + methods: 1.1.2 + parseurl: 1.3.3 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + methods@1.1.2: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + + mime@1.6.0: {} + + min-indent@1.0.1: {} + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.14 + + minio@8.0.7: + dependencies: + async: 3.2.6 + block-stream2: 2.1.0 + browser-or-node: 2.1.1 + buffer-crc32: 1.0.0 + eventemitter3: 5.0.4 + fast-xml-parser: 5.7.2 + ipaddr.js: 2.3.0 + lodash: 4.18.1 + mime-types: 2.1.35 + query-string: 7.1.3 + stream-json: 1.9.1 + through2: 4.0.2 + xml2js: 0.6.2 + + mitt@1.2.0: {} + + mongodb-connection-string-url@3.0.2: + dependencies: + '@types/whatwg-url': 11.0.5 + whatwg-url: 14.2.0 + + mongodb@6.20.0: + dependencies: + '@mongodb-js/saslprep': 1.4.9 + bson: 6.10.4 + mongodb-connection-string-url: 3.0.2 + + mongoose@8.23.1: + dependencies: + bson: 6.10.4 + kareem: 2.6.3 + mongodb: 6.20.0 + mpath: 0.9.0 + mquery: 5.0.0 + ms: 2.1.3 + sift: 17.1.3 + transitivePeerDependencies: + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' + - gcp-metadata + - kerberos + - mongodb-client-encryption + - snappy + - socks + - supports-color + + morgan@1.10.1: + dependencies: + basic-auth: 2.0.1 + debug: 2.6.9 + depd: 2.0.0 + on-finished: 2.3.0 + on-headers: 1.1.0 + transitivePeerDependencies: + - supports-color + + mpath@0.9.0: {} + + mquery@5.0.0: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + ms@2.0.0: {} + + ms@2.1.3: {} + + msgpackr-extract@3.0.3: + dependencies: + node-gyp-build-optional-packages: 5.2.2 + optionalDependencies: + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 + optional: true + + msgpackr@1.11.10: + optionalDependencies: + msgpackr-extract: 3.0.3 + + multer@2.1.1: + dependencies: + append-field: 1.0.0 + busboy: 1.6.0 + concat-stream: 2.0.0 + type-is: 1.6.18 + + mylas@2.1.14: {} + + nanoid@3.3.11: {} + + needle@3.5.0: + dependencies: + iconv-lite: 0.6.3 + sax: 1.6.0 + optional: true + + negotiator@0.6.3: {} + + negotiator@0.6.4: {} + + negotiator@1.0.0: {} + + node-gyp-build-optional-packages@5.2.2: + dependencies: + detect-libc: 2.1.2 + optional: true + + node-releases@2.0.38: {} + + nodemailer@7.0.13: {} + + normalize-path@3.0.0: {} + + numeral@2.0.6: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + obug@2.1.1: {} + + ollama@0.6.3: + dependencies: + whatwg-fetch: 3.6.20 + + on-finished@2.3.0: + dependencies: + ee-first: 1.1.1 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.1.0: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + openai@6.34.0(ws@8.18.3): + optionalDependencies: + ws: 8.18.3 + + opn@5.3.0: + dependencies: + is-wsl: 1.1.0 + + parse-node-version@1.0.1: {} + + parse5@8.0.1: + dependencies: + entities: 8.0.0 + + parseurl@1.3.3: {} + + path-expression-matcher@1.5.0: {} + + path-is-absolute@1.0.1: {} + + path-parse@1.0.7: {} + + path-to-regexp@8.4.2: {} + + path-type@4.0.0: {} + + pathe@2.0.3: {} + + pend@1.2.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.4: {} + + pify@4.0.1: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 + + plimit-lit@1.6.1: + dependencies: + queue-lit: 1.5.2 + + portscanner@2.2.0: + dependencies: + async: 2.6.4 + is-number-like: 1.0.8 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.12: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prettier@3.8.3: {} + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + promise@7.3.1: + dependencies: + asap: 2.0.6 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + prr@1.0.1: + optional: true + + pug-attrs@3.0.0: + dependencies: + constantinople: 4.0.1 + js-stringify: 1.0.2 + pug-runtime: 3.0.1 + + pug-code-gen@3.0.4: + dependencies: + constantinople: 4.0.1 + doctypes: 1.1.0 + js-stringify: 1.0.2 + pug-attrs: 3.0.0 + pug-error: 2.1.0 + pug-runtime: 3.0.1 + void-elements: 3.1.0 + with: 7.0.2 + + pug-error@2.1.0: {} + + pug-filters@4.0.0: + dependencies: + constantinople: 4.0.1 + jstransformer: 1.0.0 + pug-error: 2.1.0 + pug-walk: 2.0.0 + resolve: 1.22.12 + + pug-lexer@5.0.1: + dependencies: + character-parser: 2.2.0 + is-expression: 4.0.0 + pug-error: 2.1.0 + + pug-linker@4.0.0: + dependencies: + pug-error: 2.1.0 + pug-walk: 2.0.0 + + pug-load@3.0.0: + dependencies: + object-assign: 4.1.1 + pug-walk: 2.0.0 + + pug-parser@6.0.0: + dependencies: + pug-error: 2.1.0 + token-stream: 1.0.0 + + pug-runtime@3.0.1: {} + + pug-strip-comments@2.0.0: + dependencies: + pug-error: 2.1.0 + + pug-walk@2.0.0: {} + + pug@3.0.4: + dependencies: + pug-code-gen: 3.0.4 + pug-filters: 4.0.0 + pug-lexer: 5.0.1 + pug-linker: 4.0.0 + pug-load: 3.0.0 + pug-parser: 6.0.0 + pug-runtime: 3.0.1 + pug-strip-comments: 2.0.0 + + punycode@2.3.1: {} + + qs@6.15.1: + dependencies: + side-channel: 1.1.0 + + query-string@7.1.3: + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + + queue-lit@1.5.2: {} + + queue-microtask@1.2.3: {} + + randexp@0.5.3: + dependencies: + drange: 1.1.1 + ret: 0.2.2 + + random-bytes@1.0.0: {} + + range-parser@1.2.1: {} + + raw-body@2.5.3: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + raw-body@3.0.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.7.2 + unpipe: 1.0.0 + + react-dom@19.2.5(react@19.2.5): + dependencies: + react: 19.2.5 + scheduler: 0.27.0 + + react-is@17.0.2: {} + + react-router-dom@7.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + dependencies: + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-router: 7.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + + react-router@7.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + dependencies: + cookie: 1.1.1 + react: 19.2.5 + set-cookie-parser: 2.7.2 + optionalDependencies: + react-dom: 19.2.5(react@19.2.5) + + react@19.2.5: {} + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.2 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + redis-errors@1.2.0: {} + + redis-parser@3.0.0: + dependencies: + redis-errors: 1.2.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.12: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resp-modifier@6.0.2: + dependencies: + debug: 2.6.9 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + ret@0.2.2: {} + + reusify@1.1.0: {} + + rimraf@2.7.1: + dependencies: + glob: 7.2.3 + + rolldown@1.0.0-rc.17: + dependencies: + '@oxc-project/types': 0.127.0 + '@rolldown/pluginutils': 1.0.0-rc.17 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.17 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.17 + '@rolldown/binding-darwin-x64': 1.0.0-rc.17 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.17 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.17 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.17 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.17 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.17 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.17 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.17 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.17 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17 + + rotating-file-stream@3.2.9: {} + + router@2.2.0: + dependencies: + debug: 4.4.3 + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.4.2 + transitivePeerDependencies: + - supports-color + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rx@4.1.0: {} + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sax@1.6.0: {} + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + scheduler@0.27.0: {} + + semver@5.7.2: + optional: true + + semver@7.7.4: {} + + send@0.19.2: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.1 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + send@1.2.1: + dependencies: + debug: 4.4.3 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.1 + mime-types: 3.0.2 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + serve-favicon@2.5.1: + dependencies: + etag: 1.8.1 + fresh: 0.5.2 + ms: 2.1.3 + parseurl: 1.3.3 + safe-buffer: 5.2.1 + + serve-index@1.9.2: + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.8.1 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.3: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.2 + transitivePeerDependencies: + - supports-color + + serve-static@2.2.1: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.1 + transitivePeerDependencies: + - supports-color + + server-destroy@1.0.1: {} + + set-cookie-parser@2.7.2: {} + + setprototypeof@1.2.0: {} + + shoetest@1.2.2: + dependencies: + randexp: 0.5.3 + + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + sift@17.1.3: {} + + siginfo@2.0.0: {} + + slash@3.0.0: {} + + socket.io-adapter@2.5.6: + dependencies: + debug: 4.4.3 + ws: 8.18.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-client@4.8.3: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.4.3 + engine.io-client: 6.6.4 + socket.io-parser: 4.2.6 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-parser@4.2.6: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + socket.io@4.8.3: + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.6 + debug: 4.4.3 + engine.io: 6.6.7 + socket.io-adapter: 2.5.6 + socket.io-parser: 4.2.6 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + source-map-js@1.2.1: {} + + source-map@0.6.1: + optional: true + + sparse-bitfield@3.0.3: + dependencies: + memory-pager: 1.5.0 + + split-on-first@1.1.0: {} + + sprintf-js@1.1.2: {} + + stackback@0.0.2: {} + + standard-as-callback@2.1.0: {} + + stats-lite@2.2.0: + dependencies: + isnumber: 1.0.0 + + statuses@1.3.1: {} + + statuses@1.5.0: {} + + statuses@2.0.2: {} + + std-env@4.1.0: {} + + stream-chain@2.2.5: {} + + stream-json@1.9.1: + dependencies: + stream-chain: 2.2.5 + + stream-throttle@0.1.3: + dependencies: + commander: 2.20.3 + limiter: 1.1.5 + + streamsearch@1.1.0: {} + + strict-uri-encode@2.0.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + striptags@3.2.0: {} + + strnum@2.2.3: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + symbol-tree@3.2.4: {} + + tailwindcss@4.2.4: {} + + tapable@2.3.3: {} + + through2@4.0.2: + dependencies: + readable-stream: 3.6.2 + + tinybench@2.9.0: {} + + tinyexec@1.1.1: {} + + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinyrainbow@3.1.0: {} + + tldts-core@7.0.28: {} + + tldts@7.0.28: + dependencies: + tldts-core: 7.0.28 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + token-stream@1.0.0: {} + + tough-cookie@6.0.1: + dependencies: + tldts: 7.0.28 + + tr46@5.1.1: + dependencies: + punycode: 2.3.1 + + tr46@6.0.0: + dependencies: + punycode: 2.3.1 + + tsc-alias@1.8.16: + dependencies: + chokidar: 3.6.0 + commander: 9.5.0 + get-tsconfig: 4.14.0 + globby: 11.1.0 + mylas: 2.1.14 + normalize-path: 3.0.0 + plimit-lit: 1.6.1 + + tslib@2.8.1: {} + + tsx@4.21.0: + dependencies: + esbuild: 0.27.7 + get-tsconfig: 4.14.0 + optionalDependencies: + fsevents: 2.3.3 + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.2 + + typedarray@0.0.6: {} + + typescript@5.9.3: {} + + typescript@6.0.3: {} + + ua-parser-js@1.0.41: {} + + uid-safe@2.1.5: + dependencies: + random-bytes: 1.0.0 + + uikit@3.25.16: {} + + undici-types@7.16.0: {} + + undici-types@7.19.2: {} + + undici@7.25.0: {} + + universalify@0.1.2: {} + + unpipe@1.0.0: {} + + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + uuid@11.1.0: {} + + uuid@8.3.2: {} + + vary@1.1.2: {} + + vite@8.0.10(@types/node@24.12.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.6.4)(tsx@4.21.0): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.12 + rolldown: 1.0.0-rc.17 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 24.12.2 + esbuild: 0.25.12 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.6.4 + tsx: 4.21.0 + + vitest@4.1.5(@types/node@24.12.2)(jsdom@29.1.0)(vite@8.0.10(@types/node@24.12.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.6.4)(tsx@4.21.0)): + dependencies: + '@vitest/expect': 4.1.5 + '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@24.12.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.6.4)(tsx@4.21.0)) + '@vitest/pretty-format': 4.1.5 + '@vitest/runner': 4.1.5 + '@vitest/snapshot': 4.1.5 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.1.1 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 8.0.10(@types/node@24.12.2)(esbuild@0.25.12)(jiti@2.6.1)(less@4.6.4)(tsx@4.21.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.12.2 + jsdom: 29.1.0 + transitivePeerDependencies: + - msw + + void-elements@3.1.0: {} + + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + + webidl-conversions@7.0.0: {} + + webidl-conversions@8.0.1: {} + + whatwg-fetch@3.6.20: {} + + whatwg-mimetype@5.0.0: {} + + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 + + whatwg-url@16.0.1: + dependencies: + '@exodus/bytes': 1.15.0 + tr46: 6.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + with@7.0.2: + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + assert-never: 1.4.0 + babel-walk: 3.0.0-canary-5 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + ws@8.18.3: {} + + xml-name-validator@5.0.0: {} + + xml2js@0.6.2: + dependencies: + sax: 1.6.0 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xmlchars@2.2.0: {} + + xmlhttprequest-ssl@2.1.2: {} + + y18n@5.0.8: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..fda4af6 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +packages: + - 'packages/*' + - 'gadget-code' + - 'gadget-drone' \ No newline at end of file