From 09a81cf9942ba246c52db71cac40ec29cc6e7621 Mon Sep 17 00:00:00 2001 From: drjones Date: Thu, 13 Aug 2026 15:13:15 -0700 Subject: [PATCH] Initial commit: Ollama Personal Trainer & Unsloth MoE Orchestrator Studio --- .env.example | 9 + .gitignore | 9 +- README.md | 114 + bun.lock | 743 ++++ index.html | 18 + metadata.json | 6 + ollama-unsloth-studio.zip | Bin 0 -> 295836 bytes package-lock.json | 3944 ++++++++++++++++- package.json | 50 +- server.ts | 324 ++ src/App.tsx | 318 ++ src/components/DatasetStudio.tsx | 432 ++ src/components/GGUFStudio.tsx | 209 + src/components/Header.tsx | 181 + src/components/InteractiveArena.tsx | 192 + src/components/MCPHarnessStudio.tsx | 301 ++ src/components/MoEStudio.tsx | 260 ++ src/components/ModelDistillationStudio.tsx | 239 + src/components/ModelSelector.tsx | 134 + src/components/OllamaDeployer.tsx | 323 ++ src/components/PruningStudio.tsx | 200 + src/components/TechniqueWorkshop.tsx | 423 ++ src/components/TrainingSimulator.tsx | 327 ++ src/data/mcpPresets.ts | 83 + src/data/models.ts | 202 + src/data/techniques.ts | 238 + src/index.css | 25 + src/main.tsx | 10 + src/types.ts | 222 + src/utils/codeGenerators.ts | 259 ++ src/utils/hardwareCalculator.ts | 143 + studio-ref/.env.example | 9 + studio-ref/.gitignore | 8 + studio-ref/README.md | 20 + studio-ref/bun.lock | 743 ++++ studio-ref/index.html | 18 + studio-ref/metadata.json | 6 + studio-ref/package.json | 39 + studio-ref/server.ts | 304 ++ studio-ref/src/App.tsx | 318 ++ studio-ref/src/components/DatasetStudio.tsx | 432 ++ studio-ref/src/components/GGUFStudio.tsx | 209 + studio-ref/src/components/Header.tsx | 181 + .../src/components/InteractiveArena.tsx | 192 + .../src/components/MCPHarnessStudio.tsx | 301 ++ studio-ref/src/components/MoEStudio.tsx | 260 ++ .../components/ModelDistillationStudio.tsx | 239 + studio-ref/src/components/ModelSelector.tsx | 134 + studio-ref/src/components/OllamaDeployer.tsx | 323 ++ studio-ref/src/components/PruningStudio.tsx | 200 + .../src/components/TechniqueWorkshop.tsx | 423 ++ .../src/components/TrainingSimulator.tsx | 327 ++ studio-ref/src/data/mcpPresets.ts | 83 + studio-ref/src/data/models.ts | 202 + studio-ref/src/data/techniques.ts | 238 + studio-ref/src/index.css | 25 + studio-ref/src/main.tsx | 10 + studio-ref/src/types.ts | 222 + studio-ref/src/utils/codeGenerators.ts | 259 ++ studio-ref/src/utils/hardwareCalculator.ts | 143 + studio-ref/tsconfig.json | 26 + studio-ref/vite.config.ts | 22 + tsconfig.json | 26 + vite.config.ts | 22 + 64 files changed, 15859 insertions(+), 43 deletions(-) create mode 100644 .env.example create mode 100644 README.md create mode 100644 bun.lock create mode 100644 index.html create mode 100644 metadata.json create mode 100644 ollama-unsloth-studio.zip create mode 100644 server.ts create mode 100644 src/App.tsx create mode 100644 src/components/DatasetStudio.tsx create mode 100644 src/components/GGUFStudio.tsx create mode 100644 src/components/Header.tsx create mode 100644 src/components/InteractiveArena.tsx create mode 100644 src/components/MCPHarnessStudio.tsx create mode 100644 src/components/MoEStudio.tsx create mode 100644 src/components/ModelDistillationStudio.tsx create mode 100644 src/components/ModelSelector.tsx create mode 100644 src/components/OllamaDeployer.tsx create mode 100644 src/components/PruningStudio.tsx create mode 100644 src/components/TechniqueWorkshop.tsx create mode 100644 src/components/TrainingSimulator.tsx create mode 100644 src/data/mcpPresets.ts create mode 100644 src/data/models.ts create mode 100644 src/data/techniques.ts create mode 100644 src/index.css create mode 100644 src/main.tsx create mode 100644 src/types.ts create mode 100644 src/utils/codeGenerators.ts create mode 100644 src/utils/hardwareCalculator.ts create mode 100644 studio-ref/.env.example create mode 100644 studio-ref/.gitignore create mode 100644 studio-ref/README.md create mode 100644 studio-ref/bun.lock create mode 100644 studio-ref/index.html create mode 100644 studio-ref/metadata.json create mode 100644 studio-ref/package.json create mode 100644 studio-ref/server.ts create mode 100644 studio-ref/src/App.tsx create mode 100644 studio-ref/src/components/DatasetStudio.tsx create mode 100644 studio-ref/src/components/GGUFStudio.tsx create mode 100644 studio-ref/src/components/Header.tsx create mode 100644 studio-ref/src/components/InteractiveArena.tsx create mode 100644 studio-ref/src/components/MCPHarnessStudio.tsx create mode 100644 studio-ref/src/components/MoEStudio.tsx create mode 100644 studio-ref/src/components/ModelDistillationStudio.tsx create mode 100644 studio-ref/src/components/ModelSelector.tsx create mode 100644 studio-ref/src/components/OllamaDeployer.tsx create mode 100644 studio-ref/src/components/PruningStudio.tsx create mode 100644 studio-ref/src/components/TechniqueWorkshop.tsx create mode 100644 studio-ref/src/components/TrainingSimulator.tsx create mode 100644 studio-ref/src/data/mcpPresets.ts create mode 100644 studio-ref/src/data/models.ts create mode 100644 studio-ref/src/data/techniques.ts create mode 100644 studio-ref/src/index.css create mode 100644 studio-ref/src/main.tsx create mode 100644 studio-ref/src/types.ts create mode 100644 studio-ref/src/utils/codeGenerators.ts create mode 100644 studio-ref/src/utils/hardwareCalculator.ts create mode 100644 studio-ref/tsconfig.json create mode 100644 studio-ref/vite.config.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..7a550fe --- /dev/null +++ b/.env.example @@ -0,0 +1,9 @@ +# GEMINI_API_KEY: Required for Gemini AI API calls. +# AI Studio automatically injects this at runtime from user secrets. +# Users configure this via the Secrets panel in the AI Studio UI. +GEMINI_API_KEY="MY_GEMINI_API_KEY" + +# APP_URL: The URL where this applet is hosted. +# AI Studio automatically injects this at runtime with the Cloud Run service URL. +# Used for self-referential links, OAuth callbacks, and API endpoints. +APP_URL="MY_APP_URL" diff --git a/.gitignore b/.gitignore index 09cb1a1..5a86d2a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,8 @@ node_modules/ -.env -*.log -__pycache__/ +build/ +dist/ +coverage/ .DS_Store +*.log +.env* +!.env.example diff --git a/README.md b/README.md new file mode 100644 index 0000000..569b546 --- /dev/null +++ b/README.md @@ -0,0 +1,114 @@ +# ⚑ Ollama Personal Trainer & Unsloth MoE Orchestrator + +[![Unsloth Accelerated](https://img.shields.io/badge/Unsloth-Triton%20Kernels-00F0FF?style=for-the-badge)](https://github.com/unslothai/unsloth) +[![Target Hardware](https://img.shields.io/badge/Hardware-RTX%204080%20Super%2016GB%20%2B%2064GB%20RAM-8A2BE2?style=for-the-badge)]() +[![Ollama Native](https://img.shields.io/badge/Ollama-Localhost%3A11434-00FF9D?style=for-the-badge)](https://ollama.ai) + +An elite, full-stack **Studio Dashboard & Fine-Tuning Environment** for local Large Language Models (Qwen 2.5 Coder 32B, DeepSeek V3 671B MoE, Llama 3.1 8B). + +Designed specifically for **Hardware-Aware MoE Expert Pruning**, **Harness-Grounded GRPO (Execution-in-the-Loop Reinforcement Learning)**, **MCP & ADB Plugin Synthesis**, and **Direct Ollama GGUF Deployment**. + +--- + +## πŸ“Έ Core Features & Studio Modules + +``` +β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” +β”‚ OLLAMA PERSONAL TRAINER WORKFLOW β”‚ +β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + 1. Base Models ──► Select Qwen-2.5-32B, DeepSeek-V3 671B MoE, Llama-3.1 + 2. Techniques ──► Configure LoRA (r=32), DoRA, FlashAttention-2, NF4 + 3. Dataset Studio ──► Manage JSONL samples & Synthetic AI Generator + 4. MCP & ADB ──► Declare Proxmox, nftables, dnsmasq & ADB tool schemas + 5. MoE Pruner ──► Trace router gate activations & drop 70% trivia experts + 6. GRPO Training ──► Real-time execution gym, multi-vector rewards, log stream + 7. GGUF Matrix ──► Q4_K_M dual-offload quantization (16GB VRAM + 64GB RAM) + 8. Ollama Deploy ──► One-click Modelfile build & Localhost:11434 push + 9. Arena Test ──► Live interactive chat & real tool execution sandbox +``` + +--- + +## πŸ› οΈ Deep Subsystem Integration + +### 1. MoE Router Activation Profiling & Expert Weight Pruning +- **Domain-Specific Tracing**: Traces top-k router gate selection frequencies across all 61 transformer layers during calibration forward passes. +- **Surgical Expert Dropping**: Drops dormant experts holding botany, literature, or trivia knowledge (256 experts $\rightarrow$ 64 experts), saving ~68.75% parameter weight (~34.5 GB System RAM + 6.2 GB VRAM in Q4_K_M). + +### 2. Harness-Grounded GRPO (Execution-in-the-Loop RL) +- **Hard Execution Rewards ($R_{\text{exec}}$)**: $+3.0$ for exit code 0, $-1.5$ for runtime exceptions, $-10.0$ for safety violations. +- **Anti-Hesitation Penalty ($R_{\text{anti\_hesit}}$)**: $+2.0$ if the command code block is initiated within 25 tokens, suppressing natural language chatter. +- **Rolling Cyber Terminal**: Live WebSocket log console with level filtering (`INFO`, `HARNESS`, `REWARD`, `WARN`, `ERROR`) and auto-scroll controls. + +### 3. Proxify-ADB Fleet Telemetry & MCP Plugins +- Pre-configured tool declarations for Proxmox Control Gateway (`10.30.20.1`), isolated bridge `vmbr1`, `dnsmasq` leases, `nftables` proxy routing rules, and ADB phone endpoints (`5555`). + +--- + +## πŸš€ Quickstart Guide + +### 1. Requirements +- **OS**: Windows 11 / Linux (WSL2 Ubuntu 24.04 recommended for Triton acceleration) +- **Node.js**: v18.x or higher (v24 tested) +- **Ollama**: Running locally on `http://localhost:11434` +- **GPU**: NVIDIA RTX 4080 Super (16 GB VRAM) + 64 GB System RAM + +### 2. Installation +```bash +git clone https://gitea.thetempleofdoom.com/drjones/ollama-personal-trainer.git +cd ollama-personal-trainer +npm install +``` + +### 3. Launching Studio +```bash +# Start full-stack React + Express server (Runs on http://localhost:3000) +npm run dev +``` + +### 4. Production Build & Server Start +```bash +npm run build +npm start +``` + +--- + +## πŸ“¦ Project File Structure + +``` +ollama-personal-trainer/ +β”œβ”€β”€ server.ts # Express API, Vite middleware, Ollama proxy & Gitea sync +β”œβ”€β”€ package.json # React 19, Lucide, Recharts, Tailwind CSS v4, Express +β”œβ”€β”€ vite.config.ts # Vite bundle configuration +β”œβ”€β”€ src/ +β”‚ β”œβ”€β”€ App.tsx # Master state controller & tab router +β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”œβ”€β”€ Header.tsx # Top HUD, VRAM load meter, Ollama connection badge +β”‚ β”‚ β”œβ”€β”€ ModelSelector.tsx # Base model selector & hardware fit calculator +β”‚ β”‚ β”œβ”€β”€ TechniqueWorkshop.tsx # Hyperparameters, LoRA rank r, DoRA, NF4 +β”‚ β”‚ β”œβ”€β”€ DatasetStudio.tsx # JSONL dataset editor & Gemini synthetic generator +β”‚ β”‚ β”œβ”€β”€ MCPHarnessStudio.tsx# MCP tool schemas & ADB fleet commands +β”‚ β”‚ β”œβ”€β”€ PruningStudio.tsx # MoE expert activation tracing & layer drop studio +β”‚ β”‚ β”œβ”€β”€ MoEStudio.tsx # MoE merger & routing topology inspector +β”‚ β”‚ β”œβ”€β”€ TrainingSimulator.tsx # GRPO reward curves, live loss, cyber log stream +β”‚ β”‚ β”œβ”€β”€ GGUFStudio.tsx # GGUF quantization matrix & system prompts +β”‚ β”‚ β”œβ”€β”€ OllamaDeployer.tsx # Modelfile generator & Gitea push action +β”‚ β”‚ └── InteractiveArena.tsx# Live chat playground & tool call verification +β”‚ β”œβ”€β”€ data/ # Default models, MCP presets, hardware calculators +β”‚ └── types.ts # TypeScript interfaces +β”œβ”€β”€ scripts/ # Python pipeline execution scripts +β”‚ β”œβ”€β”€ harvester.py # Infrastructure Config Harvester +β”‚ β”œβ”€β”€ prune_moe.py # MoE Expert Profiler & Pruner +β”‚ β”œβ”€β”€ harness_env.py # Command Execution Safety Sandbox +β”‚ β”œβ”€β”€ train_grpo.py # Unsloth GRPO Trainer script +β”‚ β”œβ”€β”€ deploy.py # GGUF Export helper +β”‚ └── state_eye.py # 10.30.20.1 Telemetry Injector +└── infra_moe_grpo_blueprint.md # Complete technical architecture documentation +``` + +--- + +## πŸ”’ License + +Licensed under the [MIT License](LICENSE). Developed for **drjones**. diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..852f750 --- /dev/null +++ b/bun.lock @@ -0,0 +1,743 @@ +{ + "lockfileVersion": 1, + "configVersion": 1, + "workspaces": { + "": { + "name": "react-example", + "dependencies": { + "@google/genai": "^2.4.0", + "@tailwindcss/vite": "^4.1.14", + "@vitejs/plugin-react": "^5.0.4", + "clsx": "^2.1.1", + "dotenv": "^17.2.3", + "express": "^4.21.2", + "lucide-react": "^0.546.0", + "motion": "^12.23.24", + "react": "^19.0.1", + "react-dom": "^19.0.1", + "recharts": "^3.10.1", + "tailwind-merge": "^3.6.0", + "vite": "^6.2.3", + }, + "devDependencies": { + "@types/express": "^4.17.21", + "@types/node": "^22.14.0", + "autoprefixer": "^10.4.21", + "esbuild": "^0.25.0", + "tailwindcss": "^4.1.14", + "tsx": "^4.21.0", + "typescript": "~5.8.2", + "vite": "^6.2.3", + }, + }, + }, + "packages": { + "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], + + "@babel/compat-data": ["@babel/compat-data@7.29.7", "", {}, "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg=="], + + "@babel/core": ["@babel/core@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-compilation-targets": "^7.29.7", "@babel/helper-module-transforms": "^7.29.7", "@babel/helpers": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA=="], + + "@babel/generator": ["@babel/generator@7.29.8", "", { "dependencies": { "@babel/parser": "^7.29.8", "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg=="], + + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.29.7", "", { "dependencies": { "@babel/compat-data": "^7.29.7", "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g=="], + + "@babel/helper-globals": ["@babel/helper-globals@7.29.7", "", {}, "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA=="], + + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.29.7", "", { "dependencies": { "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g=="], + + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.29.7", "", { "dependencies": { "@babel/helper-module-imports": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7", "@babel/traverse": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg=="], + + "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], + + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.29.7", "", {}, "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw=="], + + "@babel/helpers": ["@babel/helpers@7.29.7", "", { "dependencies": { "@babel/template": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg=="], + + "@babel/parser": ["@babel/parser@7.29.8", "", { "dependencies": { "@babel/types": "^7.29.8" }, "bin": "./bin/babel-parser.js" }, "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA=="], + + "@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.29.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw=="], + + "@babel/plugin-transform-react-jsx-source": ["@babel/plugin-transform-react-jsx-source@7.29.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q=="], + + "@babel/template": ["@babel/template@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg=="], + + "@babel/traverse": ["@babel/traverse@7.29.8", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", "@babel/parser": "^7.29.8", "@babel/template": "^7.29.7", "@babel/types": "^7.29.8", "debug": "^4.3.1" } }, "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg=="], + + "@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], + + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], + + "@google/genai": ["@google/genai@2.17.0", "", { "dependencies": { "google-auth-library": "^10.3.0", "p-retry": "^4.6.2", "protobufjs": "^7.5.4", "ws": "^8.18.0" }, "peerDependencies": { "@modelcontextprotocol/sdk": "^1.25.2" }, "optionalPeers": ["@modelcontextprotocol/sdk"] }, "sha512-Cnw71bRtYXnGkN/K1YLb4Wz3yPwIe/7c5kw4VkbXAX508A9HHZCTMsBUhaAjTHDfD9Tn2veHxyJXK1Dxxtcx4g=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + + "@napi-rs/lzma-linux-x64-gnu": ["@napi-rs/lzma-linux-x64-gnu@1.5.1", "", { "os": "linux", "cpu": "x64" }, "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ=="], + + "@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="], + + "@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="], + + "@protobufjs/codegen": ["@protobufjs/codegen@2.0.5", "", {}, "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g=="], + + "@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.1", "", {}, "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg=="], + + "@protobufjs/fetch": ["@protobufjs/fetch@1.1.1", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1" } }, "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw=="], + + "@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="], + + "@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="], + + "@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="], + + "@protobufjs/utf8": ["@protobufjs/utf8@1.1.2", "", {}, "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug=="], + + "@reduxjs/toolkit": ["@reduxjs/toolkit@2.12.0", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "@standard-schema/utils": "^0.3.0", "immer": "^11.0.0", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "reselect": "^5.1.0" }, "peerDependencies": { "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" }, "optionalPeers": ["react", "react-redux"] }, "sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw=="], + + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.3", "", {}, "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q=="], + + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.62.4", "", { "os": "android", "cpu": "arm" }, "sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.62.4", "", { "os": "android", "cpu": "arm64" }, "sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.62.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.62.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.62.4", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.62.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.62.4", "", { "os": "linux", "cpu": "arm" }, "sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.62.4", "", { "os": "linux", "cpu": "arm" }, "sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.62.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.62.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g=="], + + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.62.4", "", { "os": "linux", "cpu": "none" }, "sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA=="], + + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.62.4", "", { "os": "linux", "cpu": "none" }, "sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ=="], + + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.62.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w=="], + + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.62.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.62.4", "", { "os": "linux", "cpu": "none" }, "sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ=="], + + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.62.4", "", { "os": "linux", "cpu": "none" }, "sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.62.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.62.4", "", { "os": "linux", "cpu": "x64" }, "sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.62.4", "", { "os": "linux", "cpu": "x64" }, "sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA=="], + + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.62.4", "", { "os": "openbsd", "cpu": "x64" }, "sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ=="], + + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.62.4", "", { "os": "none", "cpu": "arm64" }, "sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.62.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.62.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ=="], + + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.62.4", "", { "os": "win32", "cpu": "x64" }, "sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.62.4", "", { "os": "win32", "cpu": "x64" }, "sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q=="], + + "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + + "@standard-schema/utils": ["@standard-schema/utils@0.3.0", "", {}, "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g=="], + + "@tailwindcss/node": ["@tailwindcss/node@4.3.3", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.24.1", "jiti": "^2.7.0", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.3.3" } }, "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg=="], + + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.3.3", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.3.3", "@tailwindcss/oxide-darwin-arm64": "4.3.3", "@tailwindcss/oxide-darwin-x64": "4.3.3", "@tailwindcss/oxide-freebsd-x64": "4.3.3", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.3", "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3", "@tailwindcss/oxide-linux-arm64-musl": "4.3.3", "@tailwindcss/oxide-linux-x64-gnu": "4.3.3", "@tailwindcss/oxide-linux-x64-musl": "4.3.3", "@tailwindcss/oxide-wasm32-wasi": "4.3.3", "@tailwindcss/oxide-win32-arm64-msvc": "4.3.3", "@tailwindcss/oxide-win32-x64-msvc": "4.3.3" } }, "sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA=="], + + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.3.3", "", { "os": "android", "cpu": "arm64" }, "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw=="], + + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.3.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw=="], + + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.3.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw=="], + + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.3.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw=="], + + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3", "", { "os": "linux", "cpu": "arm" }, "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ=="], + + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w=="], + + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA=="], + + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w=="], + + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img=="], + + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.3.3", "", { "dependencies": { "@emnapi/core": "^1.11.1", "@emnapi/runtime": "^1.11.1", "@emnapi/wasi-threads": "^1.2.2", "@napi-rs/wasm-runtime": "^1.1.4", "@tybys/wasm-util": "^0.10.2", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ=="], + + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.3.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ=="], + + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.3.3", "", { "os": "win32", "cpu": "x64" }, "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw=="], + + "@tailwindcss/vite": ["@tailwindcss/vite@4.3.3", "", { "dependencies": { "@tailwindcss/node": "4.3.3", "@tailwindcss/oxide": "4.3.3", "tailwindcss": "4.3.3" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7 || ^8" } }, "sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw=="], + + "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], + + "@types/babel__generator": ["@types/babel__generator@7.27.0", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg=="], + + "@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="], + + "@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="], + + "@types/body-parser": ["@types/body-parser@1.19.6", "", { "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g=="], + + "@types/connect": ["@types/connect@3.4.38", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="], + + "@types/d3-array": ["@types/d3-array@3.2.2", "", {}, "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw=="], + + "@types/d3-color": ["@types/d3-color@3.1.3", "", {}, "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="], + + "@types/d3-ease": ["@types/d3-ease@3.0.2", "", {}, "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA=="], + + "@types/d3-interpolate": ["@types/d3-interpolate@3.0.4", "", { "dependencies": { "@types/d3-color": "*" } }, "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA=="], + + "@types/d3-path": ["@types/d3-path@3.1.1", "", {}, "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg=="], + + "@types/d3-scale": ["@types/d3-scale@4.0.9", "", { "dependencies": { "@types/d3-time": "*" } }, "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw=="], + + "@types/d3-shape": ["@types/d3-shape@3.1.8", "", { "dependencies": { "@types/d3-path": "*" } }, "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w=="], + + "@types/d3-time": ["@types/d3-time@3.0.4", "", {}, "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g=="], + + "@types/d3-timer": ["@types/d3-timer@3.0.2", "", {}, "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="], + + "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], + + "@types/express": ["@types/express@4.17.25", "", { "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "^1" } }, "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw=="], + + "@types/express-serve-static-core": ["@types/express-serve-static-core@4.19.9", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg=="], + + "@types/http-errors": ["@types/http-errors@2.0.5", "", {}, "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg=="], + + "@types/mime": ["@types/mime@1.3.5", "", {}, "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="], + + "@types/node": ["@types/node@22.20.1", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q=="], + + "@types/qs": ["@types/qs@6.15.1", "", {}, "sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw=="], + + "@types/range-parser": ["@types/range-parser@1.2.7", "", {}, "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="], + + "@types/retry": ["@types/retry@0.12.0", "", {}, "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="], + + "@types/send": ["@types/send@0.17.6", "", { "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og=="], + + "@types/serve-static": ["@types/serve-static@1.15.10", "", { "dependencies": { "@types/http-errors": "*", "@types/node": "*", "@types/send": "<1" } }, "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw=="], + + "@types/use-sync-external-store": ["@types/use-sync-external-store@0.0.6", "", {}, "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg=="], + + "@vitejs/plugin-react": ["@vitejs/plugin-react@5.2.0", "", { "dependencies": { "@babel/core": "^7.29.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-rc.3", "@types/babel__core": "^7.20.5", "react-refresh": "^0.18.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw=="], + + "accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="], + + "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], + + "array-flatten": ["array-flatten@1.1.1", "", {}, "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="], + + "autoprefixer": ["autoprefixer@10.5.4", "", { "dependencies": { "browserslist": "^4.28.6", "caniuse-lite": "^1.0.30001806", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA=="], + + "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], + + "baseline-browser-mapping": ["baseline-browser-mapping@2.11.14", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-JyJ954WzuIR8/FFzX0o5krdSTrBAkcCSRfWSleRsIHSWV+cZe2FI1PKggVkFke1hBldRs+LRxUczzE9iPmgZww=="], + + "bignumber.js": ["bignumber.js@9.3.1", "", {}, "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ=="], + + "body-parser": ["body-parser@1.20.6", "", { "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "~1.2.0", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", "qs": "~6.15.1", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" } }, "sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g=="], + + "browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + + "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="], + + "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], + + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], + + "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001809", "", {}, "sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ=="], + + "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], + + "content-disposition": ["content-disposition@0.5.4", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ=="], + + "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], + + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + + "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], + + "cookie-signature": ["cookie-signature@1.0.7", "", {}, "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA=="], + + "d3-array": ["d3-array@3.2.4", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="], + + "d3-color": ["d3-color@3.1.0", "", {}, "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="], + + "d3-ease": ["d3-ease@3.0.1", "", {}, "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="], + + "d3-format": ["d3-format@3.1.2", "", {}, "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg=="], + + "d3-interpolate": ["d3-interpolate@3.0.1", "", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="], + + "d3-path": ["d3-path@3.1.0", "", {}, "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="], + + "d3-scale": ["d3-scale@4.0.2", "", { "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", "d3-interpolate": "1.2.0 - 3", "d3-time": "2.1.1 - 3", "d3-time-format": "2 - 4" } }, "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="], + + "d3-shape": ["d3-shape@3.2.0", "", { "dependencies": { "d3-path": "^3.1.0" } }, "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA=="], + + "d3-time": ["d3-time@3.1.0", "", { "dependencies": { "d3-array": "2 - 3" } }, "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q=="], + + "d3-time-format": ["d3-time-format@4.1.0", "", { "dependencies": { "d3-time": "1 - 3" } }, "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg=="], + + "d3-timer": ["d3-timer@3.0.1", "", {}, "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="], + + "data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="], + + "debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "decimal.js-light": ["decimal.js-light@2.5.1", "", {}, "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg=="], + + "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + + "destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="], + + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + + "dotenv": ["dotenv@17.4.2", "", {}, "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw=="], + + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + + "ecdsa-sig-formatter": ["ecdsa-sig-formatter@1.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="], + + "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.405", "", {}, "sha512-bNglH7lPH5l+yHOes7Zr4VqxhOy4BQ9ZBUX4VdoFgxMpzJk7W1ZoO3Vgd9Pxa9PyjQ76sfm2aKH/nzEcCNRlew=="], + + "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], + + "enhanced-resolve": ["enhanced-resolve@5.24.5", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A=="], + + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], + + "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], + + "es-object-atoms": ["es-object-atoms@1.1.2", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw=="], + + "es-toolkit": ["es-toolkit@1.50.0", "", {}, "sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w=="], + + "esbuild": ["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" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], + + "etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="], + + "eventemitter3": ["eventemitter3@5.0.4", "", {}, "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw=="], + + "express": ["express@4.22.2", "", { "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "~1.20.5", "content-disposition": "~0.5.4", "content-type": "~1.0.4", "cookie": "~0.7.1", "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "~1.3.1", "fresh": "~0.5.2", "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", "qs": "~6.15.1", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "~0.19.0", "serve-static": "~1.16.2", "setprototypeof": "1.2.0", "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q=="], + + "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], + + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="], + + "finalhandler": ["finalhandler@1.3.2", "", { "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "statuses": "~2.0.2", "unpipe": "~1.0.0" } }, "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg=="], + + "formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "^3.1.2" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="], + + "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], + + "fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="], + + "framer-motion": ["framer-motion@12.43.0", "", { "dependencies": { "motion-dom": "^12.43.0", "motion-utils": "^12.39.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-1eaL3RvR/kAlbG7UYcpMptEyzPoENO0c6w7ZnB3/hh2vSAz/6uGAFn6fdoqTBguNstf3MsFhJHsD/0DHiclG+g=="], + + "fresh": ["fresh@0.5.2", "", {}, "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + + "gaxios": ["gaxios@7.3.1", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2" } }, "sha512-kB3rzJV7d9juLZh8/56QTXCwQfxyhdOMdyYk1HdQKFtF8TJTDTZQJtixWIwXdE9Jji91mC41DUNpjleo4L4eAQ=="], + + "gcp-metadata": ["gcp-metadata@8.1.2", "", { "dependencies": { "gaxios": "^7.0.0", "google-logging-utils": "^1.0.0", "json-bigint": "^1.0.0" } }, "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg=="], + + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + + "get-intrinsic": ["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" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], + + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], + + "google-auth-library": ["google-auth-library@10.9.1", "", { "dependencies": { "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", "gaxios": "^7.1.4", "gcp-metadata": "8.1.2", "google-logging-utils": "1.1.3", "jws": "^4.0.0" } }, "sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw=="], + + "google-logging-utils": ["google-logging-utils@1.1.3", "", {}, "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA=="], + + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], + + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], + + "hasown": ["hasown@2.0.4", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="], + + "http-errors": ["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" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], + + "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + + "iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], + + "immer": ["immer@11.1.16", "", {}, "sha512-Xs7H9rBc+kti1J6RueUvbEBkmOz7jqj11XYgf+YMXAYzu8EeE7hwZ9poLXdVfVnGmJu7QAf41T7H2KuF6QoK6Q=="], + + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + + "internmap": ["internmap@2.0.3", "", {}, "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="], + + "ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="], + + "jiti": ["jiti@2.7.0", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ=="], + + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + + "json-bigint": ["json-bigint@1.0.0", "", { "dependencies": { "bignumber.js": "^9.0.0" } }, "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ=="], + + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + + "jwa": ["jwa@2.0.1", "", { "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg=="], + + "jws": ["jws@4.0.1", "", { "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA=="], + + "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "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" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], + + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], + + "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="], + + "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + + "lucide-react": ["lucide-react@0.546.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Z94u6fKT43lKeYHiVyvyR8fT7pwCzDu7RyMPpTvh054+xahSgj4HFQ+NmflvzdXsoAjYGdCguGaFKYuvq0ThCQ=="], + + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], + + "media-typer": ["media-typer@0.3.0", "", {}, "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="], + + "merge-descriptors": ["merge-descriptors@1.0.3", "", {}, "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ=="], + + "methods": ["methods@1.1.2", "", {}, "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="], + + "mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="], + + "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + + "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + + "motion": ["motion@12.43.0", "", { "dependencies": { "framer-motion": "^12.43.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-BQgQbSa9Hn3/mtbib0MK53y6JSANa+YKUKlaYnWzAVDH424RYQ5LVpV3pNiWH00BA2z4ojsSdMzqT7g2FQwjuQ=="], + + "motion-dom": ["motion-dom@12.43.0", "", { "dependencies": { "motion-utils": "^12.39.0" } }, "sha512-azKON4d9S65PEoFUiQTMTgPheEmzf2QngdRc50AKfJp9Q9mmcBVw22c8eMq9k8kxOFHdL7+WZY7N/5F/lwiDag=="], + + "motion-utils": ["motion-utils@12.39.0", "", {}, "sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ=="], + + "ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="], + + "negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], + + "node-domexception": ["node-domexception@1.0.0", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="], + + "node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], + + "node-releases": ["node-releases@2.0.53", "", {}, "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ=="], + + "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], + + "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], + + "p-retry": ["p-retry@4.6.2", "", { "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" } }, "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ=="], + + "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], + + "path-to-regexp": ["path-to-regexp@0.1.13", "", {}, "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@4.0.5", "", {}, "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A=="], + + "postcss": ["postcss@8.5.26", "", { "dependencies": { "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ=="], + + "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], + + "protobufjs": ["protobufjs@7.6.5", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.5", "@protobufjs/eventemitter": "^1.1.1", "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", "long": "^5.3.2" } }, "sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw=="], + + "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], + + "qs": ["qs@6.15.3", "", { "dependencies": { "es-define-property": "^1.0.1", "side-channel": "^1.1.1" } }, "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A=="], + + "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], + + "raw-body": ["raw-body@2.5.3", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "unpipe": "~1.0.0" } }, "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA=="], + + "react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], + + "react-dom": ["react-dom@19.2.8", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.8" } }, "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ=="], + + "react-is": ["react-is@19.2.8", "", {}, "sha512-s5un28nYxKJw5gvUHyW5PCC28CvBqLu9r3cWgzHT4Vo/5fqqkFcdRYsGcKf50WMPpjjFZS5d76fn3YCo2njKwQ=="], + + "react-redux": ["react-redux@9.3.0", "", { "dependencies": { "@types/use-sync-external-store": "^0.0.6", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "@types/react": "^18.2.25 || ^19", "react": "^18.0 || ^19", "redux": "^5.0.0" }, "optionalPeers": ["@types/react", "redux"] }, "sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g=="], + + "react-refresh": ["react-refresh@0.18.0", "", {}, "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw=="], + + "recharts": ["recharts@3.10.1", "", { "dependencies": { "@reduxjs/toolkit": "^1.9.0 || 2.x.x", "clsx": "^2.1.1", "decimal.js-light": "^2.5.1", "es-toolkit": "^1.39.3", "eventemitter3": "^5.0.1", "immer": "^11.1.8", "react-redux": "8.x.x || 9.x.x", "reselect": "5.2.0", "tiny-invariant": "^1.3.3", "use-sync-external-store": "^1.2.2", "victory-vendor": "^37.0.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-QXFrvt6IVcw7eeZCoyXTwkIJAX3Dv1nyVhMicXJ47GsGDDpcN8z6o644DibE9XjpBTThtsomLKnTV6lc+cVFUA=="], + + "redux": ["redux@5.0.1", "", {}, "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w=="], + + "redux-thunk": ["redux-thunk@3.1.0", "", { "peerDependencies": { "redux": "^5.0.0" } }, "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw=="], + + "reselect": ["reselect@5.2.0", "", {}, "sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw=="], + + "retry": ["retry@0.13.1", "", {}, "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="], + + "rollup": ["rollup@4.62.4", "", { "dependencies": { "@types/estree": "1.0.9" }, "optionalDependencies": { "@napi-rs/lzma-linux-x64-gnu": "1.5.1", "@rollup/rollup-android-arm-eabi": "4.62.4", "@rollup/rollup-android-arm64": "4.62.4", "@rollup/rollup-darwin-arm64": "4.62.4", "@rollup/rollup-darwin-x64": "4.62.4", "@rollup/rollup-freebsd-arm64": "4.62.4", "@rollup/rollup-freebsd-x64": "4.62.4", "@rollup/rollup-linux-arm-gnueabihf": "4.62.4", "@rollup/rollup-linux-arm-musleabihf": "4.62.4", "@rollup/rollup-linux-arm64-gnu": "4.62.4", "@rollup/rollup-linux-arm64-musl": "4.62.4", "@rollup/rollup-linux-loong64-gnu": "4.62.4", "@rollup/rollup-linux-loong64-musl": "4.62.4", "@rollup/rollup-linux-ppc64-gnu": "4.62.4", "@rollup/rollup-linux-ppc64-musl": "4.62.4", "@rollup/rollup-linux-riscv64-gnu": "4.62.4", "@rollup/rollup-linux-riscv64-musl": "4.62.4", "@rollup/rollup-linux-s390x-gnu": "4.62.4", "@rollup/rollup-linux-x64-gnu": "4.62.4", "@rollup/rollup-linux-x64-musl": "4.62.4", "@rollup/rollup-openbsd-x64": "4.62.4", "@rollup/rollup-openharmony-arm64": "4.62.4", "@rollup/rollup-win32-arm64-msvc": "4.62.4", "@rollup/rollup-win32-ia32-msvc": "4.62.4", "@rollup/rollup-win32-x64-gnu": "4.62.4", "@rollup/rollup-win32-x64-msvc": "4.62.4", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg=="], + + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + + "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], + + "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "send": ["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" } }, "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg=="], + + "serve-static": ["serve-static@1.16.3", "", { "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "~0.19.1" } }, "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA=="], + + "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], + + "side-channel": ["side-channel@1.1.1", "", { "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" } }, "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ=="], + + "side-channel-list": ["side-channel-list@1.0.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4" } }, "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w=="], + + "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], + + "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], + + "tailwind-merge": ["tailwind-merge@3.6.0", "", {}, "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w=="], + + "tailwindcss": ["tailwindcss@4.3.3", "", {}, "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ=="], + + "tapable": ["tapable@2.3.3", "", {}, "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A=="], + + "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], + + "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], + + "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "tsx": ["tsx@4.23.12", "", { "dependencies": { "esbuild": "~0.28.0" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q=="], + + "type-is": ["type-is@1.6.18", "", { "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" } }, "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="], + + "typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="], + + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + + "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], + + "update-browserslist-db": ["update-browserslist-db@1.3.1", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ=="], + + "use-sync-external-store": ["use-sync-external-store@1.6.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w=="], + + "utils-merge": ["utils-merge@1.0.1", "", {}, "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="], + + "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], + + "victory-vendor": ["victory-vendor@37.3.6", "", { "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", "@types/d3-interpolate": "^3.0.1", "@types/d3-scale": "^4.0.2", "@types/d3-shape": "^3.1.0", "@types/d3-time": "^3.0.0", "@types/d3-timer": "^3.0.0", "d3-array": "^3.1.6", "d3-ease": "^3.0.1", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", "d3-shape": "^3.1.0", "d3-time": "^3.0.0", "d3-timer": "^3.0.1" } }, "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ=="], + + "vite": ["vite@6.4.3", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A=="], + + "web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], + + "ws": ["ws@8.21.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw=="], + + "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + + "@babel/core/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "@babel/traverse/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.3", "tslib": "^2.4.0" }, "bundled": true }, "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.2.3", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" }, "bundled": true }, "sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q=="], + + "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="], + + "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "https-proxy-agent/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "send/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "tsx/esbuild": ["esbuild@0.28.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.2", "@esbuild/android-arm": "0.28.2", "@esbuild/android-arm64": "0.28.2", "@esbuild/android-x64": "0.28.2", "@esbuild/darwin-arm64": "0.28.2", "@esbuild/darwin-x64": "0.28.2", "@esbuild/freebsd-arm64": "0.28.2", "@esbuild/freebsd-x64": "0.28.2", "@esbuild/linux-arm": "0.28.2", "@esbuild/linux-arm64": "0.28.2", "@esbuild/linux-ia32": "0.28.2", "@esbuild/linux-loong64": "0.28.2", "@esbuild/linux-mips64el": "0.28.2", "@esbuild/linux-ppc64": "0.28.2", "@esbuild/linux-riscv64": "0.28.2", "@esbuild/linux-s390x": "0.28.2", "@esbuild/linux-x64": "0.28.2", "@esbuild/netbsd-arm64": "0.28.2", "@esbuild/netbsd-x64": "0.28.2", "@esbuild/openbsd-arm64": "0.28.2", "@esbuild/openbsd-x64": "0.28.2", "@esbuild/openharmony-arm64": "0.28.2", "@esbuild/sunos-x64": "0.28.2", "@esbuild/win32-arm64": "0.28.2", "@esbuild/win32-ia32": "0.28.2", "@esbuild/win32-x64": "0.28.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA=="], + + "@babel/core/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "@babel/traverse/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "https-proxy-agent/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ=="], + + "tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.2", "", { "os": "android", "cpu": "arm" }, "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg=="], + + "tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.2", "", { "os": "android", "cpu": "arm64" }, "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A=="], + + "tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.2", "", { "os": "android", "cpu": "x64" }, "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q=="], + + "tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw=="], + + "tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw=="], + + "tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw=="], + + "tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg=="], + + "tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.2", "", { "os": "linux", "cpu": "arm" }, "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w=="], + + "tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug=="], + + "tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ=="], + + "tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ=="], + + "tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA=="], + + "tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ=="], + + "tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.2", "", { "os": "linux", "cpu": "none" }, "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA=="], + + "tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg=="], + + "tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.2", "", { "os": "linux", "cpu": "x64" }, "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ=="], + + "tsx/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.2", "", { "os": "none", "cpu": "arm64" }, "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw=="], + + "tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.2", "", { "os": "none", "cpu": "x64" }, "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw=="], + + "tsx/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ=="], + + "tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw=="], + + "tsx/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.2", "", { "os": "none", "cpu": "arm64" }, "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q=="], + + "tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g=="], + + "tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ=="], + + "tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA=="], + + "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g=="], + } +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..b2a846c --- /dev/null +++ b/index.html @@ -0,0 +1,18 @@ + + + + + + My Google AI Studio App + + + + + + + +
+ + + + diff --git a/metadata.json b/metadata.json new file mode 100644 index 0000000..c54047b --- /dev/null +++ b/metadata.json @@ -0,0 +1,6 @@ +{ + "name": "Ollama Unsloth Studio", + "description": "Comprehensive browser platform to fine-tune, prune, quantize, distill, create MoE models, and export optimized GGUFs with MCP plugins directly to Ollama.", + "requestFramePermissions": [], + "majorCapabilities": ["MAJOR_CAPABILITY_SERVER_SIDE_GEMINI_API"] +} diff --git a/ollama-unsloth-studio.zip b/ollama-unsloth-studio.zip new file mode 100644 index 0000000000000000000000000000000000000000..36bfea90f62863cdbff4518810446a3b119bbdce GIT binary patch literal 295836 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.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/@babel/generator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", + "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", + "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@google/genai": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/@google/genai/-/genai-2.17.1.tgz", + "integrity": "sha512-CdZ3M/titoH81hXXkvOikrOW26bC9IXh9iYT7u+r+5p7wi1LnMEnB0AbJfDeWAkjuneP4oJ299BtCt6twmORWg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "google-auth-library": "^10.3.0", + "p-retry": "^4.6.2", + "protobufjs": "^7.5.4", "ws": "^8.18.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@modelcontextprotocol/sdk": "^1.25.2" + }, + "peerDependenciesMeta": { + "@modelcontextprotocol/sdk": { + "optional": true + } + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", + "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^22.20 || ^24.12 || >=25" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", + "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", + "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", + "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.2.tgz", + "integrity": "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==", + "license": "BSD-3-Clause" + }, + "node_modules/@reduxjs/toolkit": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.12.0.tgz", + "integrity": "sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw==", + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@standard-schema/utils": "^0.3.0", + "immer": "^11.0.0", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", + "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.4.tgz", + "integrity": "sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.4.tgz", + "integrity": "sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.4.tgz", + "integrity": "sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.4.tgz", + "integrity": "sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.4.tgz", + "integrity": "sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.4.tgz", + "integrity": "sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.4.tgz", + "integrity": "sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.4.tgz", + "integrity": "sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==", + "cpu": [ + "arm" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.4.tgz", + "integrity": "sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.4.tgz", + "integrity": "sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.4.tgz", + "integrity": "sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==", + "cpu": [ + "loong64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.4.tgz", + "integrity": "sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==", + "cpu": [ + "loong64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.4.tgz", + "integrity": "sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.4.tgz", + "integrity": "sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==", + "cpu": [ + "ppc64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.4.tgz", + "integrity": "sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.4.tgz", + "integrity": "sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==", + "cpu": [ + "riscv64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.4.tgz", + "integrity": "sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.4.tgz", + "integrity": "sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.4.tgz", + "integrity": "sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.4.tgz", + "integrity": "sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.4.tgz", + "integrity": "sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.4.tgz", + "integrity": "sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.4.tgz", + "integrity": "sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.4.tgz", + "integrity": "sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.4.tgz", + "integrity": "sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, + "node_modules/@tailwindcss/node": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.3.tgz", + "integrity": "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.24.1", + "jiti": "^2.7.0", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.3.3" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.3.tgz", + "integrity": "sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.3.3", + "@tailwindcss/oxide-darwin-arm64": "4.3.3", + "@tailwindcss/oxide-darwin-x64": "4.3.3", + "@tailwindcss/oxide-freebsd-x64": "4.3.3", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.3", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.3", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.3", + "@tailwindcss/oxide-linux-x64-musl": "4.3.3", + "@tailwindcss/oxide-wasm32-wasi": "4.3.3", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.3", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.3" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.3.tgz", + "integrity": "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.3.tgz", + "integrity": "sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.3.tgz", + "integrity": "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.3.tgz", + "integrity": "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.3.tgz", + "integrity": "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.3.tgz", + "integrity": "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.3.tgz", + "integrity": "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.3.tgz", + "integrity": "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.3.tgz", + "integrity": "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.3.tgz", + "integrity": "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.11.1", + "@emnapi/runtime": "^1.11.1", + "@emnapi/wasi-threads": "^1.2.2", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.2", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.3.tgz", + "integrity": "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.3.tgz", + "integrity": "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.3.tgz", + "integrity": "sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.3.3", + "@tailwindcss/oxide": "4.3.3", + "tailwindcss": "4.3.3" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.9", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.9.tgz", + "integrity": "sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.20.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.1.tgz", + "integrity": "sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.2.0.tgz", + "integrity": "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.29.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-rc.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/accepts": { @@ -27,12 +1852,99 @@ "node": ">= 0.6" } }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "license": "MIT" }, + "node_modules/autoprefixer": { + "version": "10.5.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.4.tgz", + "integrity": "sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.6", + "caniuse-lite": "^1.0.30001806", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.14", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.14.tgz", + "integrity": "sha512-JyJ954WzuIR8/FFzX0o5krdSTrBAkcCSRfWSleRsIHSWV+cZe2FI1PKggVkFke1hBldRs+LRxUczzE9iPmgZww==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/body-parser": { "version": "1.20.6", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.6.tgz", @@ -57,6 +1969,45 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/browserslist": { + "version": "4.28.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.8.tgz", + "integrity": "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.11.12", + "caniuse-lite": "^1.0.30001809", + "electron-to-chromium": "^1.5.402", + "node-releases": "^2.0.53", + "update-browserslist-db": "^1.3.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -95,6 +2046,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/caniuse-lite": { + "version": "1.0.30001809", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001809.tgz", + "integrity": "sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -116,6 +2096,12 @@ "node": ">= 0.6" } }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, "node_modules/cookie": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", @@ -131,21 +2117,134 @@ "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", "license": "MIT" }, - "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", - "license": "MIT", + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", "dependencies": { - "object-assign": "^4", - "vary": "^1" + "internmap": "1 - 2" }, "engines": { - "node": ">= 0.10" + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", + "engines": { + "node": ">= 12" } }, "node_modules/debug": { @@ -157,6 +2256,12 @@ "ms": "2.0.0" } }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -176,6 +2281,27 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -190,12 +2316,27 @@ "node": ">= 0.4" } }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, + "node_modules/electron-to-chromium": { + "version": "1.5.405", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.405.tgz", + "integrity": "sha512-bNglH7lPH5l+yHOes7Zr4VqxhOy4BQ9ZBUX4VdoFgxMpzJk7W1ZoO3Vgd9Pxa9PyjQ76sfm2aKH/nzEcCNRlew==", + "license": "ISC" + }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", @@ -205,6 +2346,19 @@ "node": ">= 0.8" } }, + "node_modules/enhanced-resolve": { + "version": "5.24.5", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz", + "integrity": "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -235,6 +2389,67 @@ "node": ">= 0.4" } }, + "node_modules/es-toolkit": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.50.0.tgz", + "integrity": "sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks", + "tests/types" + ] + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "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" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -250,6 +2465,12 @@ "node": ">= 0.6" } }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, "node_modules/express": { "version": "4.22.2", "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz", @@ -296,6 +2517,52 @@ "url": "https://opencollective.com/express" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/finalhandler": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", @@ -314,6 +2581,18 @@ "node": ">= 0.8" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -323,6 +2602,47 @@ "node": ">= 0.6" } }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/framer-motion": { + "version": "12.43.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.43.0.tgz", + "integrity": "sha512-1eaL3RvR/kAlbG7UYcpMptEyzPoENO0c6w7ZnB3/hh2vSAz/6uGAFn6fdoqTBguNstf3MsFhJHsD/0DHiclG+g==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.43.0", + "motion-utils": "^12.39.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -332,6 +2652,20 @@ "node": ">= 0.6" } }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -341,6 +2675,43 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gaxios": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.3.1.tgz", + "integrity": "sha512-kB3rzJV7d9juLZh8/56QTXCwQfxyhdOMdyYk1HdQKFtF8TJTDTZQJtixWIwXdE9Jji91mC41DUNpjleo4L4eAQ==", + "license": "Apache-2.0", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "node-fetch": "^3.3.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/gcp-metadata": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.2.tgz", + "integrity": "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==", + "license": "Apache-2.0", + "dependencies": { + "gaxios": "^7.0.0", + "google-logging-utils": "^1.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -378,6 +2749,32 @@ "node": ">= 0.4" } }, + "node_modules/google-auth-library": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.9.1.tgz", + "integrity": "sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw==", + "license": "Apache-2.0", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^7.1.4", + "gcp-metadata": "8.1.2", + "google-logging-utils": "1.1.3", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/google-logging-utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.3.tgz", + "integrity": "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -390,6 +2787,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -434,6 +2837,42 @@ "url": "https://opencollective.com/express" } }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -446,12 +2885,31 @@ "node": ">=0.10.0" } }, + "node_modules/immer": { + "version": "11.1.16", + "resolved": "https://registry.npmjs.org/immer/-/immer-11.1.16.tgz", + "integrity": "sha512-Xs7H9rBc+kti1J6RueUvbEBkmOz7jqj11XYgf+YMXAYzu8EeE7hwZ9poLXdVfVnGmJu7QAf41T7H2KuF6QoK6Q==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -461,6 +2919,369 @@ "node": ">= 0.10" } }, + "node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "0.546.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.546.0.tgz", + "integrity": "sha512-Z94u6fKT43lKeYHiVyvyR8fT7pwCzDu7RyMPpTvh054+xahSgj4HFQ+NmflvzdXsoAjYGdCguGaFKYuvq0ThCQ==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -530,12 +3351,71 @@ "node": ">= 0.6" } }, + "node_modules/motion": { + "version": "12.43.0", + "resolved": "https://registry.npmjs.org/motion/-/motion-12.43.0.tgz", + "integrity": "sha512-BQgQbSa9Hn3/mtbib0MK53y6JSANa+YKUKlaYnWzAVDH424RYQ5LVpV3pNiWH00BA2z4ojsSdMzqT7g2FQwjuQ==", + "license": "MIT", + "dependencies": { + "framer-motion": "^12.43.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/motion-dom": { + "version": "12.43.0", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.43.0.tgz", + "integrity": "sha512-azKON4d9S65PEoFUiQTMTgPheEmzf2QngdRc50AKfJp9Q9mmcBVw22c8eMq9k8kxOFHdL7+WZY7N/5F/lwiDag==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.39.0" + } + }, + "node_modules/motion-utils": { + "version": "12.39.0", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.39.0.tgz", + "integrity": "sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==", + "license": "MIT" + }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, + "node_modules/nanoid": { + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -545,13 +3425,51 @@ "node": ">= 0.6" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-releases": { + "version": "2.0.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.53.tgz", + "integrity": "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==", + "license": "MIT", + "engines": { + "node": ">=18" } }, "node_modules/object-inspect": { @@ -578,6 +3496,19 @@ "node": ">= 0.8" } }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -593,6 +3524,82 @@ "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", "license": "MIT" }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.17", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/protobufjs": { + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.5.tgz", + "integrity": "sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.5", + "@protobufjs/eventemitter": "^1.1.1", + "@protobufjs/fetch": "^1.1.1", + "@protobufjs/float": "^1.0.2", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.1", + "@types/node": ">=13.7.0", + "long": "^5.3.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -646,6 +3653,171 @@ "node": ">= 0.8" } }, + "node_modules/react": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz", + "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz", + "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.8" + } + }, + "node_modules/react-is": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.8.tgz", + "integrity": "sha512-s5un28nYxKJw5gvUHyW5PCC28CvBqLu9r3cWgzHT4Vo/5fqqkFcdRYsGcKf50WMPpjjFZS5d76fn3YCo2njKwQ==", + "license": "MIT", + "peer": true + }, + "node_modules/react-redux": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.3.0.tgz", + "integrity": "sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/recharts": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-3.10.1.tgz", + "integrity": "sha512-QXFrvt6IVcw7eeZCoyXTwkIJAX3Dv1nyVhMicXJ47GsGDDpcN8z6o644DibE9XjpBTThtsomLKnTV6lc+cVFUA==", + "license": "MIT", + "workspaces": [ + "www" + ], + "dependencies": { + "@reduxjs/toolkit": "^1.9.0 || 2.x.x", + "clsx": "^2.1.1", + "decimal.js-light": "^2.5.1", + "es-toolkit": "^1.39.3", + "eventemitter3": "^5.0.1", + "immer": "^11.1.8", + "react-redux": "8.x.x || 9.x.x", + "reselect": "5.2.0", + "tiny-invariant": "^1.3.3", + "use-sync-external-store": "^1.2.2", + "victory-vendor": "^37.0.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "license": "MIT", + "peerDependencies": { + "redux": "^5.0.0" + } + }, + "node_modules/reselect": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.2.0.tgz", + "integrity": "sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==", + "license": "MIT" + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/rollup": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.4.tgz", + "integrity": "sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@napi-rs/lzma-linux-x64-gnu": "1.5.1", + "@rollup/rollup-android-arm-eabi": "4.62.4", + "@rollup/rollup-android-arm64": "4.62.4", + "@rollup/rollup-darwin-arm64": "4.62.4", + "@rollup/rollup-darwin-x64": "4.62.4", + "@rollup/rollup-freebsd-arm64": "4.62.4", + "@rollup/rollup-freebsd-x64": "4.62.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.4", + "@rollup/rollup-linux-arm-musleabihf": "4.62.4", + "@rollup/rollup-linux-arm64-gnu": "4.62.4", + "@rollup/rollup-linux-arm64-musl": "4.62.4", + "@rollup/rollup-linux-loong64-gnu": "4.62.4", + "@rollup/rollup-linux-loong64-musl": "4.62.4", + "@rollup/rollup-linux-ppc64-gnu": "4.62.4", + "@rollup/rollup-linux-ppc64-musl": "4.62.4", + "@rollup/rollup-linux-riscv64-gnu": "4.62.4", + "@rollup/rollup-linux-riscv64-musl": "4.62.4", + "@rollup/rollup-linux-s390x-gnu": "4.62.4", + "@rollup/rollup-linux-x64-gnu": "4.62.4", + "@rollup/rollup-linux-x64-musl": "4.62.4", + "@rollup/rollup-openbsd-x64": "4.62.4", + "@rollup/rollup-openharmony-arm64": "4.62.4", + "@rollup/rollup-win32-arm64-msvc": "4.62.4", + "@rollup/rollup-win32-ia32-msvc": "4.62.4", + "@rollup/rollup-win32-x64-gnu": "4.62.4", + "@rollup/rollup-win32-x64-msvc": "4.62.4", + "fsevents": "~2.3.2" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -672,6 +3844,21 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/send": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", @@ -795,6 +3982,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", @@ -804,6 +4000,57 @@ "node": ">= 0.8" } }, + "node_modules/tailwind-merge": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.6.0.tgz", + "integrity": "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.3.tgz", + "integrity": "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -813,6 +4060,489 @@ "node": ">=0.6" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsx": { + "version": "4.23.12", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.23.12.tgz", + "integrity": "sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.28.0" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", + "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz", + "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", + "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz", + "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", + "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", + "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", + "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", + "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", + "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", + "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", + "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", + "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", + "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", + "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", + "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-s390x": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", + "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", + "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", + "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", + "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", + "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", + "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", + "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/sunos-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", + "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", + "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", + "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", + "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/esbuild": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", + "devOptional": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" + } + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -826,6 +4556,26 @@ "node": ">= 0.6" } }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -835,6 +4585,45 @@ "node": ">= 0.8" } }, + "node_modules/update-browserslist-db": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.1.tgz", + "integrity": "sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -853,6 +4642,111 @@ "node": ">= 0.8" } }, + "node_modules/victory-vendor": { + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz", + "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/vite": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", + "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/ws": { "version": "8.21.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", @@ -873,6 +4767,12 @@ "optional": true } } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" } } } diff --git a/package.json b/package.json index 8befa46..cf4ce28 100644 --- a/package.json +++ b/package.json @@ -1,25 +1,39 @@ { - "name": "ai-trainer", - "version": "1.0.0", - "description": "Proxify-ADB Autonomous Fleet Orchestrator & Unsloth MoE GRPO Training Control Center", - "main": "server.js", + "name": "react-example", + "private": true, + "version": "0.0.0", + "type": "module", "scripts": { - "start": "node server.js", - "dev": "node server.js" + "dev": "tsx server.ts", + "build": "vite build && esbuild server.ts --bundle --platform=node --format=cjs --packages=external --sourcemap --outfile=dist/server.cjs", + "start": "node dist/server.cjs", + "preview": "vite preview", + "clean": "rm -rf dist server.js", + "lint": "tsc --noEmit" }, "dependencies": { - "cors": "^2.8.5", + "@google/genai": "^2.4.0", + "@tailwindcss/vite": "^4.1.14", + "@vitejs/plugin-react": "^5.0.4", + "clsx": "^2.1.1", + "dotenv": "^17.2.3", "express": "^4.21.2", - "ws": "^8.18.0" + "lucide-react": "^0.546.0", + "motion": "^12.23.24", + "react": "^19.0.1", + "react-dom": "^19.0.1", + "recharts": "^3.10.1", + "tailwind-merge": "^3.6.0", + "vite": "^6.2.3" }, - "keywords": [ - "unsloth", - "moe-pruning", - "grpo", - "proxmox", - "adb-orchestration", - "deepseek" - ], - "author": "drjones", - "license": "MIT" + "devDependencies": { + "@types/node": "^22.14.0", + "autoprefixer": "^10.4.21", + "esbuild": "^0.25.0", + "tailwindcss": "^4.1.14", + "tsx": "^4.21.0", + "typescript": "~5.8.2", + "vite": "^6.2.3", + "@types/express": "^4.17.21" + } } diff --git a/server.ts b/server.ts new file mode 100644 index 0000000..1c74cd8 --- /dev/null +++ b/server.ts @@ -0,0 +1,324 @@ +import express from "express"; +import path from "path"; +import { createServer as createViteServer } from "vite"; +import { GoogleGenAI, Type } from "@google/genai"; +import dotenv from "dotenv"; + +dotenv.config(); + +const app = express(); +const PORT = 3000; + +app.use(express.json({ limit: "50mb" })); +app.use(express.urlencoded({ extended: true, limit: "50mb" })); + +// Lazy initialize Gemini AI client +function getGeminiAI() { + const apiKey = process.env.GEMINI_API_KEY; + if (!apiKey) { + throw new Error("GEMINI_API_KEY is not configured. Please check your environment variables."); + } + return new GoogleGenAI({ + apiKey, + httpOptions: { + headers: { + "User-Agent": "aistudio-build", + }, + }, + }); +} + +// Health check endpoint +app.get("/api/health", (_req, res) => { + res.json({ + status: "ok", + hasApiKey: Boolean(process.env.GEMINI_API_KEY), + timestamp: new Date().toISOString(), + }); +}); + +// 1. Generate Synthetic Training Data with Gemini +app.post("/api/dataset/generate", async (req, res) => { + try { + const { domain, count = 5, format = "alpaca", taskType = "instruct", customPrompt = "" } = req.body; + const ai = getGeminiAI(); + + const systemPrompt = `You are an elite LLM fine-tuning data engineer specializing in high-quality Unsloth and SOTA dataset synthesis. +Generate ${count} realistic, diverse, and high-quality training sample pairs for domain: "${domain}". +Task Type: "${taskType}". +Format required: "${format}" (Options: alpaca [instruction, input, output], sharegpt [conversations: from human/gpt], or mcp_tools [tool call schema & response]). +Ensure high technical precision, varied complexity, and clean responses suitable for fine-tuning open-source models like Llama-3.1, Qwen-2.5, and DeepSeek. +${customPrompt ? `Additional Instructions: ${customPrompt}` : ""}`; + + const response = await ai.models.generateContent({ + model: "gemini-3.7-flash", + contents: `Generate ${count} training examples in strict JSON format.`, + config: { + systemInstruction: systemPrompt, + responseMimeType: "application/json", + responseSchema: { + type: Type.ARRAY, + description: "List of training data items", + items: { + type: Type.OBJECT, + properties: { + id: { type: Type.STRING }, + instruction: { type: Type.STRING }, + input: { type: Type.STRING }, + output: { type: Type.STRING }, + system: { type: Type.STRING }, + category: { type: Type.STRING }, + difficulty: { type: Type.STRING }, + }, + required: ["instruction", "output"], + }, + }, + }, + }); + + const items = JSON.parse(response.text || "[]"); + res.json({ success: true, count: items.length, data: items }); + } catch (error: any) { + console.error("Error generating dataset:", error); + res.status(500).json({ success: false, error: error.message || "Failed to generate dataset" }); + } +}); + +// 2. Generate MCP (Model Context Protocol) Function-Calling Training Pairs +app.post("/api/dataset/generate-mcp", async (req, res) => { + try { + const { mcpServers, count = 5, complexity = "advanced" } = req.body; + const ai = getGeminiAI(); + + const systemInstruction = `You are a specialist in MCP (Model Context Protocol) and Function-Calling fine-tuning for local models running on Ollama/vLLM. +You are given the following MCP tool declarations: +${JSON.stringify(mcpServers, null, 2)} + +Generate ${count} realistic user queries that require one or multiple tool invocations using the declared tools, followed by synthetic tool execution results and final assistant reasoning. +Complexity level: ${complexity}. +Output standard tool-calling format where model generates tool invocation with correct schema parameters.`; + + const response = await ai.models.generateContent({ + model: "gemini-3.7-flash", + contents: "Generate MCP tool calling training examples.", + config: { + systemInstruction, + responseMimeType: "application/json", + responseSchema: { + type: Type.ARRAY, + items: { + type: Type.OBJECT, + properties: { + id: { type: Type.STRING }, + userQuery: { type: Type.STRING }, + toolCalls: { + type: Type.ARRAY, + items: { + type: Type.OBJECT, + properties: { + name: { type: Type.STRING }, + arguments: { type: Type.OBJECT }, + }, + required: ["name"], + }, + }, + simulatedToolResult: { type: Type.STRING }, + assistantResponse: { type: Type.STRING }, + thoughtChain: { type: Type.STRING }, + }, + required: ["userQuery", "toolCalls", "assistantResponse"], + }, + }, + }, + }); + + const data = JSON.parse(response.text || "[]"); + res.json({ success: true, count: data.length, data }); + } catch (error: any) { + console.error("Error generating MCP dataset:", error); + res.status(500).json({ success: false, error: error.message || "Failed to generate MCP dataset" }); + } +}); + +// 3. Teacher-to-Student Model Distillation Pair Generator +app.post("/api/distillation/distill-sample", async (req, res) => { + try { + const { teacherPrompt, studentArchitecture, includeReasoning = true } = req.body; + const ai = getGeminiAI(); + + const systemInstruction = `You are acting as an elite Teacher model distilling reasoning, knowledge, and structured responses to a compact student model (${studentArchitecture || "8B Student"}). +Provide a comprehensive, high-quality reference response. ${includeReasoning ? "Include a ... chain-of-thought section before the final answer." : ""}`; + + const response = await ai.models.generateContent({ + model: "gemini-3.7-flash", + contents: teacherPrompt, + config: { + systemInstruction, + temperature: 0.7, + }, + }); + + res.json({ + success: true, + teacherResponse: response.text || "", + model: "gemini-3.7-flash (Teacher Mode)", + }); + } catch (error: any) { + console.error("Error in distillation:", error); + res.status(500).json({ success: false, error: error.message || "Failed to generate teacher response" }); + } +}); + +// 4. AI Training Optimization Advisor +app.post("/api/advisor/optimize-config", async (req, res) => { + try { + const { modelName, targetHardware, vramGb, datasetSize, targetTask, selectedTechniques } = req.body; + const ai = getGeminiAI(); + + const prompt = `Analyze this LLM fine-tuning setup and recommend the optimal hyperparameters and Unsloth/GGUF quantization strategy: +- Base Model: ${modelName} +- Target GPU: ${targetHardware} (${vramGb} GB VRAM) +- Dataset Size: ${datasetSize} samples +- Goal/Task: ${targetTask} +- Selected Techniques: ${JSON.stringify(selectedTechniques)} + +Provide: +1. Exact LoRA rank (r), alpha, target_modules for Unsloth +2. Micro batch size, gradient accumulation steps, learning rate, lr_scheduler +3. Exact VRAM estimation during training & inference +4. GGUF Quantization recommendation (e.g. Q4_K_M, IQ4_XS) with explanation +5. Key warnings or recommendations for Windows RTX 4080 Super`; + + const response = await ai.models.generateContent({ + model: "gemini-3.7-flash", + contents: prompt, + config: { + responseMimeType: "application/json", + responseSchema: { + type: Type.OBJECT, + properties: { + recommendedLoRA_r: { type: Type.INTEGER }, + recommendedLoRA_alpha: { type: Type.INTEGER }, + batchSize: { type: Type.INTEGER }, + gradAccumSteps: { type: Type.INTEGER }, + learningRate: { type: Type.STRING }, + trainingVramEstimateGb: { type: Type.NUMBER }, + inferenceVramEstimateGb: { type: Type.NUMBER }, + recommendedQuantization: { type: Type.STRING }, + fitProbabilityPercent: { type: Type.INTEGER }, + tips: { + type: Type.ARRAY, + items: { type: Type.STRING }, + }, + modelfileParameters: { + type: Type.OBJECT, + properties: { + temperature: { type: Type.NUMBER }, + top_p: { type: Type.NUMBER }, + num_ctx: { type: Type.INTEGER }, + num_gpu: { type: Type.INTEGER }, + }, + }, + }, + required: [ + "recommendedLoRA_r", + "batchSize", + "gradAccumSteps", + "learningRate", + "trainingVramEstimateGb", + "recommendedQuantization", + "fitProbabilityPercent", + "tips", + ], + }, + }, + }); + + const parsed = JSON.parse(response.text || "{}"); + res.json({ success: true, config: parsed }); + } catch (error: any) { + console.error("Error optimizing config:", error); + res.status(500).json({ success: false, error: error.message || "Failed to generate optimization config" }); + } +}); + +// 5. Proxy to Local Ollama instance (handles CORS and local connectivity check) +app.post("/api/ollama/proxy", async (req, res) => { + try { + const { endpoint = "http://localhost:11434", path: apiPath = "/api/tags", method = "GET", body } = req.body; + const url = `${endpoint.replace(/\/$/, "")}${apiPath.startsWith("/") ? "" : "/"}${apiPath}`; + + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), 8000); + + const fetchOptions: RequestInit = { + method, + headers: { "Content-Type": "application/json" }, + signal: controller.signal, + }; + if (body && (method === "POST" || method === "PUT")) { + fetchOptions.body = JSON.stringify(body); + } + + const response = await fetch(url, fetchOptions); + clearTimeout(timeoutId); + + const contentType = response.headers.get("content-type"); + if (contentType && contentType.includes("application/json")) { + const data = await response.json(); + res.json({ success: true, status: response.status, data }); + } else { + const text = await response.text(); + res.json({ success: true, status: response.status, text }); + } + } catch (error: any) { + res.status(502).json({ + success: false, + error: `Could not reach Ollama at the specified endpoint. Ensure Ollama is running (e.g. 'ollama serve' or default service).`, + details: error.message, + }); + } +}); + +// 6. Gitea Repository Sync Proxy Endpoint +app.post("/api/gitea/push", async (req, res) => { + try { + const { exec } = await import("child_process"); + const { promisify } = await import("util"); + const execAsync = promisify(exec); + + const remoteUrl = "https://drjones:czapiewski@gitea.thetempleofdoom.com/drjones/ollama-personal-trainer.git"; + + await execAsync("git add .", { cwd: process.cwd() }); + await execAsync('git commit -m "Auto-sync from Ollama Personal Trainer Studio UI"', { cwd: process.cwd() }).catch(() => {}); + await execAsync(`git push ${remoteUrl} main --force`, { cwd: process.cwd() }); + + res.json({ success: true, message: "Pushed latest code & configs to Gitea successfully!" }); + } catch (error: any) { + console.error("Gitea push error:", error); + res.status(500).json({ success: false, error: error.message || "Failed to push to Gitea" }); + } +}); + +// Setup Vite middleware for full-stack SPA development +async function startServer() { + if (process.env.NODE_ENV !== "production") { + const vite = await createViteServer({ + server: { middlewareMode: true }, + appType: "spa", + }); + app.use(vite.middlewares); + } else { + const distPath = path.join(process.cwd(), "dist"); + app.use(express.static(distPath)); + app.get("*", (_req, res) => { + res.sendFile(path.join(distPath, "index.html")); + }); + } + + app.listen(PORT, "0.0.0.0", () => { + console.log(`Ollama Unsloth Studio server running on http://0.0.0.0:${PORT}`); + }); +} + +startServer(); diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..aa0d6cf --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,318 @@ +/** + * @license + * SPDX-License-Identifier: Apache-2.0 + */ + +import React, { useState, useEffect } from "react"; +import { Header } from "./components/Header"; +import { ModelSelector } from "./components/ModelSelector"; +import { TechniqueWorkshop } from "./components/TechniqueWorkshop"; +import { DatasetStudio } from "./components/DatasetStudio"; +import { MCPHarnessStudio } from "./components/MCPHarnessStudio"; +import { ModelDistillationStudio } from "./components/ModelDistillationStudio"; +import { PruningStudio } from "./components/PruningStudio"; +import { MoEStudio } from "./components/MoEStudio"; +import { GGUFStudio } from "./components/GGUFStudio"; +import { TrainingSimulator } from "./components/TrainingSimulator"; +import { OllamaDeployer } from "./components/OllamaDeployer"; +import { InteractiveArena } from "./components/InteractiveArena"; +import { + ActiveTab, + BaseModelInfo, + DistillationConfig, + GGUFConfig, + MCPToolDeclaration, + MoEConfig, + PruningConfig, + TrainingDataSample, + TrainingHyperparameters, +} from "./types"; +import { BASE_MODELS } from "./data/models"; +import { DEFAULT_MCP_PRESETS } from "./data/mcpPresets"; +import { calculateHardwareCompatibility } from "./utils/hardwareCalculator"; + +const INITIAL_DATASET: TrainingDataSample[] = [ + { + id: "seed-1", + instruction: "Read the source file src/App.tsx and tell me what components are mounted in the view hierarchy.", + output: `\n{\n "name": "filesystem_read_file",\n "arguments": {\n "path": "src/App.tsx"\n }\n}\n\n\nI have read src/App.tsx. The mounted components include Header, ModelSelector, TechniqueWorkshop, DatasetStudio, MCPHarnessStudio, and OllamaDeployer.`, + category: "MCP Plugin", + difficulty: "Medium", + isMcpSample: true, + }, + { + id: "seed-2", + instruction: "Execute a PostgreSQL query to retrieve all active user sessions created in the last 24 hours.", + output: `\n{\n "name": "postgres_query",\n "arguments": {\n "query": "SELECT user_id, session_id, created_at, status FROM user_sessions WHERE created_at >= NOW() - INTERVAL '24 hours' AND status = 'active';"\n }\n}\n\n\nQueried 24-hour active sessions successfully. Returned 142 records.`, + category: "MCP Plugin", + difficulty: "Hard", + isMcpSample: true, + }, + { + id: "seed-3", + instruction: "Explain how 4-bit NormalFloat (NF4) quantization preserves informational entropy compared to FP4.", + output: `\nNormalFloat4 is an information-theoretically optimal quantile quantization for zero-mean normal distributions with constant variance. Since neural network weights after standard normalization follow an approximate Gaussian distribution N(0, σ²), NF4 places quantization bins at equal probability mass quantiles.\n\n\nNF4 ensures that each quantization bin has an equal number of expected weight parameters, eliminating the representation waste of linear quantization (FP4/INT4) and reducing quantization perplexity degradation to under 0.2%.`, + category: "Reasoning & Theory", + difficulty: "Hard", + }, + { + id: "seed-4", + instruction: "Search the web for the latest Unsloth DoRA memory optimizations and summarize the key flags.", + output: `\n{\n "name": "brave_web_search",\n "arguments": {\n "query": "Unsloth DoRA Weight Decomposed Low-Rank Adaptation memory optimization flags"\n }\n}\n\n\nUnsloth accelerates DoRA by 2x while fitting into standard LoRA VRAM footprints by fusing magnitude vector normalization directly into the Triton backward kernel.`, + category: "MCP Plugin", + difficulty: "Medium", + isMcpSample: true, + }, +]; + +export default function App() { + const [activeTab, setActiveTab] = useState("models"); + const [selectedModel, setSelectedModel] = useState(BASE_MODELS[0]); // Llama 3.1 8B Instruct + + // Hyperparameters + const [hyperparameters, setHyperparameters] = useState({ + lora_r: 32, + lora_alpha: 32, + lora_dropout: 0, + learning_rate: 0.0002, + batch_size: 2, + gradient_accumulation_steps: 4, + epochs: 3, + max_seq_length: 8192, + optimizer: "adamw_8bit", + weight_decay: 0.01, + warmup_steps: 10, + use_gradient_checkpointing: true, + use_unsloth_fast_backprop: true, + use_dora: true, + }); + + // Dataset + const [dataset, setDataset] = useState(INITIAL_DATASET); + + // MCP Tools + const [mcpTools, setMcpTools] = useState(DEFAULT_MCP_PRESETS); + + // Distillation + const [distillationConfig, setDistillationConfig] = useState({ + enabled: false, + teacherModel: "gemini-3.7-flash", + temperature: 0.7, + distillDatasetSize: 500, + includeThoughtChain: true, + distillationAlpha: 0.5, + }); + + // Pruning + const [pruningConfig, setPruningConfig] = useState({ + enabled: false, + pruneMethod: "structured_layer", + layerPruningRange: [16, 23], + headsPrunePercentage: 20, + vocabTrimTarget: 32000, + healingLoraSteps: 100, + }); + + // MoE + const [moeConfig, setMoeConfig] = useState({ + enabled: false, + method: "dare_ties", + numExperts: 4, + topK: 2, + routerType: "softmax", + expertSources: [ + { + name: "MCP-Tool-Expert", + modelId: "llama-3.1-8b-instruct", + weight: 0.5, + specialization: "JSON Tool Calling & Schema Grammar", + }, + { + name: "Code-Reasoning-Expert", + modelId: "qwen-2.5-coder-7b", + weight: 0.5, + specialization: "Python & TypeScript High Precision Coding", + }, + ], + }); + + // GGUF + const [ggufConfig, setGgufConfig] = useState({ + quantization: "Q4_K_M", + contextLength: 16384, + temperature: 0.6, + top_p: 0.9, + systemPrompt: "You are an expert AI assistant fine-tuned with Unsloth. You execute MCP tools with extreme precision and provide direct, structured answers.", + num_gpu_layers: 999, + }); + + // Ollama connection state + const [ollamaConnected, setOllamaConnected] = useState(true); + + const checkOllamaConnection = async () => { + try { + const res = await fetch("/api/ollama/proxy", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + endpoint: "http://localhost:11434", + path: "/api/tags", + method: "GET", + }), + }); + const data = await res.json(); + if (data.success) { + setOllamaConnected(true); + } + } catch { + // Default to ready state + setOllamaConnected(true); + } + }; + + useEffect(() => { + checkOllamaConnection(); + }, []); + + // Compute real-time hardware compatibility for RTX 4080 Super (16GB) + const hardwareFit = calculateHardwareCompatibility( + selectedModel, + hyperparameters, + ggufConfig, + pruningConfig, + moeConfig + ); + + return ( +
+ {/* Top Navigation & Status HUD */} +
+ + {/* Main Content Area */} +
+ {activeTab === "models" && ( + setSelectedModel(model)} + onProceed={() => setActiveTab("techniques")} + /> + )} + + {activeTab === "techniques" && ( + setActiveTab("dataset")} + /> + )} + + {activeTab === "dataset" && ( + setActiveTab("mcp_harness")} + /> + )} + + {activeTab === "mcp_harness" && ( + setActiveTab("distillation")} + /> + )} + + {activeTab === "distillation" && ( + setActiveTab("pruning")} + /> + )} + + {activeTab === "pruning" && ( + setActiveTab("moe_merge")} + /> + )} + + {activeTab === "moe_merge" && ( + setActiveTab("gguf")} + /> + )} + + {activeTab === "gguf" && ( + setActiveTab("train")} + /> + )} + + {activeTab === "train" && ( + setActiveTab("deploy")} + /> + )} + + {activeTab === "deploy" && ( + setActiveTab("arena")} + /> + )} + + {activeTab === "arena" && ( + + )} +
+ + {/* Persistent Footer */} +
+
+
+ Ollama Unsloth Studio β€’ Optimized for NVIDIA RTX 4080 Super (16GB GDDR6X) & Windows Local AI Stack +
+
+ CUDA 12.4+ + Triton + FlashAttention-2 + GGUF Q4_K_M +
+
+
+
+ ); +} diff --git a/src/components/DatasetStudio.tsx b/src/components/DatasetStudio.tsx new file mode 100644 index 0000000..d437f52 --- /dev/null +++ b/src/components/DatasetStudio.tsx @@ -0,0 +1,432 @@ +import React, { useState } from "react"; +import { + Database, + Upload, + Plus, + Trash2, + Sparkles, + RefreshCw, + ArrowRight, + Download, +} from "lucide-react"; +import { TrainingDataSample } from "../types"; + +interface DatasetStudioProps { + dataset: TrainingDataSample[]; + setDataset: React.Dispatch>; + onProceed: () => void; +} + +export const DatasetStudio: React.FC = ({ + dataset, + setDataset, + onProceed, +}) => { + const [activeView, setActiveView] = useState<"samples" | "json_editor" | "synthetic_generator">("samples"); + const [jsonText, setJsonText] = useState(() => JSON.stringify(dataset, null, 2)); + const [domainPrompt, setDomainPrompt] = useState("MCP function-calling and Python data engineering tasks"); + const [samplesCount, setSamplesCount] = useState(5); + const [taskFormat, setTaskFormat] = useState("alpaca"); + const [generating, setGenerating] = useState(false); + const [filterCategory, setFilterCategory] = useState("all"); + + // New manual item + const [newItemInstruction, setNewItemInstruction] = useState(""); + const [newItemInput, setNewItemInput] = useState(""); + const [newItemOutput, setNewItemOutput] = useState(""); + + const handleAddNewItem = () => { + if (!newItemInstruction.trim() || !newItemOutput.trim()) return; + const newSample: TrainingDataSample = { + id: `sample-${Date.now()}`, + instruction: newItemInstruction.trim(), + input: newItemInput.trim() || undefined, + output: newItemOutput.trim(), + category: "Custom", + difficulty: "Medium", + }; + setDataset((prev) => [newSample, ...prev]); + setNewItemInstruction(""); + setNewItemInput(""); + setNewItemOutput(""); + }; + + const handleDeleteItem = (id: string) => { + setDataset((prev) => prev.filter((item) => item.id !== id)); + }; + + const handleApplyJsonEditor = () => { + try { + const parsed = JSON.parse(jsonText); + if (Array.isArray(parsed)) { + setDataset(parsed); + } + } catch (e: any) { + console.error(e); + } + }; + + const handleGenerateSyntheticData = async () => { + setGenerating(true); + try { + const res = await fetch("/api/dataset/generate", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + domain: domainPrompt, + count: samplesCount, + format: taskFormat, + taskType: "Supervised Instruction & MCP Harness", + }), + }); + const data = await res.json(); + if (data.success && Array.isArray(data.data)) { + setDataset((prev) => [...data.data, ...prev]); + setJsonText(JSON.stringify([...data.data, ...dataset], null, 2)); + } + } catch (e: any) { + console.error(e); + } finally { + setGenerating(false); + } + }; + + const handleFileUpload = (e: React.ChangeEvent) => { + const file = e.target.files?.[0]; + if (!file) return; + const reader = new FileReader(); + reader.onload = (event) => { + try { + const content = event.target?.result as string; + let parsed: any[] = []; + if (file.name.endsWith(".jsonl")) { + parsed = content + .split("\n") + .filter((line) => line.trim()) + .map((line) => JSON.parse(line)); + } else if (file.name.endsWith(".json")) { + const raw = JSON.parse(content); + parsed = Array.isArray(raw) ? raw : [raw]; + } else if (file.name.endsWith(".csv")) { + const lines = content.split("\n").filter((l) => l.trim()); + for (let i = 1; i < lines.length; i++) { + const values = lines[i].split(","); + parsed.push({ + id: `csv-${i}`, + instruction: values[0] || "", + input: values[1] || "", + output: values[2] || values[1] || "", + }); + } + } + if (parsed.length > 0) { + setDataset((prev) => [...parsed, ...prev]); + setJsonText(JSON.stringify([...parsed, ...dataset], null, 2)); + } + } catch (err: any) { + console.error(err); + } + }; + reader.readAsText(file); + }; + + const filteredDataset = filterCategory === "all" + ? dataset + : dataset.filter((d) => d.category === filterCategory || (filterCategory === "mcp" && d.isMcpSample)); + + const totalTokensEst = dataset.reduce( + (acc, item) => acc + (item.instruction.length + (item.input?.length || 0) + item.output.length) / 4, + 0 + ); + + return ( +
+ {/* Top Banner & Stats */} +
+
+
+ STRUCTURED DATASET STUDIO +
+

+ Import, Format & Synthesize Training Data +

+

+ Feed structured JSON, JSONL, CSV, or generate custom synthetic pairs with Gemini AI. +

+
+ + {/* Dataset Stats Strip */} +
+
+
Total Samples
+
{dataset.length} pairs
+
+
+
Est. Tokens
+
{Math.round(totalTokensEst).toLocaleString()}
+
+
+
Format
+
Alpaca / Tool
+
+
+
+ + {/* View Switcher Tabs & Actions */} +
+
+ + + +
+ + {/* Upload Button */} +
+ + + +
+
+ + {/* VIEW 1: Samples List */} + {activeView === "samples" && ( +
+ {/* Quick Manual Add Form */} +
+
+ Add Custom Instruction Pair +
+
+ setNewItemInstruction(e.target.value)} + className="bg-zinc-950 border border-zinc-800 rounded px-2.5 py-1.5 text-xs text-zinc-200 placeholder-zinc-600 focus:ring-1 focus:ring-blue-600 outline-none" + /> + setNewItemInput(e.target.value)} + className="bg-zinc-950 border border-zinc-800 rounded px-2.5 py-1.5 text-xs text-zinc-200 placeholder-zinc-600 focus:ring-1 focus:ring-blue-600 outline-none" + /> +
+