From dc30b4981741ff14278d7ced16ee6895eb3ff386 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Mon, 27 Apr 2026 12:03:07 +0800 Subject: [PATCH 01/25] fix: add skill & agent --- .github/ISSUE_TEMPLATE/skill-feedback.yaml | 103 ++++++ .gitignore | 22 +- AGENTS.md | 103 ++++++ CLAUDE.md | 72 +++++ README.md | 32 ++ VISION.md | 168 ++++++++++ ...t-driven-development-workflow-doc.test.mjs | 72 +++++ __tests__/doc-skill-pairing.test.mjs | 79 +++++ __tests__/examples-viem-alt-fee.test.mjs | 40 +++ __tests__/is-alt-fee.test.mjs | 74 +++++ __tests__/markdown-actions-routes.test.mjs | 41 +++ __tests__/morph-agent-ln.test.mjs | 159 +++++++++ .../morph-contracts-skill-tokenlist.test.mjs | 66 ++++ __tests__/morph-dapp-agent.test.mjs | 88 +++++ .../morph-dapp-code-review-skill.test.mjs | 57 ++++ __tests__/morph-dapp-codegen-skill.test.mjs | 48 +++ __tests__/morph-dapp-planning-skill.test.mjs | 49 +++ __tests__/morph-dapp-workflow-skill.test.mjs | 56 ++++ __tests__/morph-doc-agent.test.mjs | 42 +++ __tests__/morph-doc-skill-inventory.test.mjs | 114 +++++++ __tests__/morph-js-sdk-skill.test.mjs | 22 ++ __tests__/morph-rails-skill.test.mjs | 43 +++ __tests__/morph-skill-ln.test.mjs | 152 +++++++++ __tests__/morph-tx-cost-skill.test.mjs | 45 +++ __tests__/run-tests-manifest.test.mjs | 22 ++ __tests__/skills-sidebar.test.mjs | 35 ++ __tests__/vision-md.test.mjs | 50 +++ agents/morph-dapp-agent.md | 64 ++++ agents/morph-doc-agent.md | 89 +++++ .../4-understand-transaction-cost-on-morph.md | 1 + .../7-agent-driven-development-workflow.md | 210 ++++++++++++ .../developer-resources/1-contracts.md | 1 + .../node-operation/full-node/2-run-on-host.md | 240 ++++++++++++++ docs/build-on-morph/sdk/js-sdk.mdx | 15 +- docs/morph-rails/0-overview.md | 1 + docusaurus.config.js | 29 ++ package.json | 4 + scripts/morph-agent-ln | 302 +++++++++++++++++ scripts/morph-skill-ln | 306 ++++++++++++++++++ scripts/run-tests.mjs | 61 ++++ sidebars-skills.js | 32 ++ skills/README.md | 148 +++++++++ skills/morph-contracts/SKILL.md | 128 ++++++++ skills/morph-dapp-code-review/SKILL.md | 162 ++++++++++ skills/morph-dapp-codegen/SKILL.md | 116 +++++++ skills/morph-dapp-planning/SKILL.md | 155 +++++++++ skills/morph-dapp-workflow/SKILL.md | 106 ++++++ skills/morph-full-node-run-on-host/SKILL.md | 28 ++ skills/morph-js-sdk/SKILL.md | 83 +++++ skills/morph-rails/SKILL.md | 78 +++++ skills/morph-skill-ln/SKILL.md | 74 +++++ skills/morph-tx-cost/SKILL.md | 81 +++++ .../ApiExplorer/configs/networks.ts | 2 +- .../MarkdownActionsDropdown/index.js | 6 +- src/theme/Root.js | 4 +- src/utils/isAltFee.js | 73 +++++ src/utils/isMarkdownActionsPathname.js | 12 + 57 files changed, 4451 insertions(+), 14 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/skill-feedback.yaml create mode 100644 AGENTS.md create mode 100644 CLAUDE.md create mode 100644 VISION.md create mode 100644 __tests__/agent-driven-development-workflow-doc.test.mjs create mode 100644 __tests__/doc-skill-pairing.test.mjs create mode 100644 __tests__/examples-viem-alt-fee.test.mjs create mode 100644 __tests__/is-alt-fee.test.mjs create mode 100644 __tests__/markdown-actions-routes.test.mjs create mode 100644 __tests__/morph-agent-ln.test.mjs create mode 100644 __tests__/morph-contracts-skill-tokenlist.test.mjs create mode 100644 __tests__/morph-dapp-agent.test.mjs create mode 100644 __tests__/morph-dapp-code-review-skill.test.mjs create mode 100644 __tests__/morph-dapp-codegen-skill.test.mjs create mode 100644 __tests__/morph-dapp-planning-skill.test.mjs create mode 100644 __tests__/morph-dapp-workflow-skill.test.mjs create mode 100644 __tests__/morph-doc-agent.test.mjs create mode 100644 __tests__/morph-doc-skill-inventory.test.mjs create mode 100644 __tests__/morph-js-sdk-skill.test.mjs create mode 100644 __tests__/morph-rails-skill.test.mjs create mode 100644 __tests__/morph-skill-ln.test.mjs create mode 100644 __tests__/morph-tx-cost-skill.test.mjs create mode 100644 __tests__/run-tests-manifest.test.mjs create mode 100644 __tests__/skills-sidebar.test.mjs create mode 100644 __tests__/vision-md.test.mjs create mode 100644 agents/morph-dapp-agent.md create mode 100644 agents/morph-doc-agent.md create mode 100644 docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md create mode 100644 docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md create mode 100755 scripts/morph-agent-ln create mode 100755 scripts/morph-skill-ln create mode 100644 scripts/run-tests.mjs create mode 100644 sidebars-skills.js create mode 100644 skills/README.md create mode 100644 skills/morph-contracts/SKILL.md create mode 100644 skills/morph-dapp-code-review/SKILL.md create mode 100644 skills/morph-dapp-codegen/SKILL.md create mode 100644 skills/morph-dapp-planning/SKILL.md create mode 100644 skills/morph-dapp-workflow/SKILL.md create mode 100644 skills/morph-full-node-run-on-host/SKILL.md create mode 100644 skills/morph-js-sdk/SKILL.md create mode 100644 skills/morph-rails/SKILL.md create mode 100644 skills/morph-skill-ln/SKILL.md create mode 100644 skills/morph-tx-cost/SKILL.md create mode 100644 src/utils/isAltFee.js create mode 100644 src/utils/isMarkdownActionsPathname.js diff --git a/.github/ISSUE_TEMPLATE/skill-feedback.yaml b/.github/ISSUE_TEMPLATE/skill-feedback.yaml new file mode 100644 index 000000000..cb646a85f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/skill-feedback.yaml @@ -0,0 +1,103 @@ +name: Skill feedback / drift report +description: Report that a morph-doc Skill (or its paired MDX) gave incorrect, stale, or unroutable guidance. +title: "[skill-drift] : " +labels: + - skill-drift +assignees: [] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to flag a Skill drift. This template powers the + feedback loop for the **Docs-as-SKILL** contract described in + [`VISION.md`](https://github.com/morph-l2/morph-doc/blob/main/VISION.md). + The doc maintainer triages every `skill-drift` issue. + + - type: input + id: skill-id + attributes: + label: Skill ID + description: Directory name under `skills/`, e.g. `morph-contracts`, `morph-js-sdk`. Leave blank if you are reporting an MDX page with no paired Skill. + placeholder: morph-contracts + validations: + required: false + + - type: input + id: doc-path + attributes: + label: Related doc path + description: Path relative to repo root, e.g. `docs/build-on-morph/developer-resources/1-contracts.md`. Optional if unknown. + placeholder: docs/... + validations: + required: false + + - type: dropdown + id: category + attributes: + label: Drift category + description: Pick the best fit; maintainers may relabel during triage. + options: + - Stale fact (address / chainId / RPC / token changed) + - Wrong routing (Skill triggered for unrelated question) + - Missing routing (question should match a Skill but did not) + - Executable snippet no longer runs + - Self-check item failed during real use + - Other + validations: + required: true + + - type: textarea + id: what-happened + attributes: + label: What happened + description: Describe the prompt, the Skill that fired (if any), and the answer you received. + placeholder: | + Prompt: "...the user's question..." + Skill fired: morph-contracts + Answer given: "..." + What was wrong: "..." + validations: + required: true + + - type: textarea + id: expected + attributes: + label: What you expected instead + placeholder: | + - Expected fact: ... + - Source of truth: ... + validations: + required: true + + - type: input + id: source + attributes: + label: Authoritative source (optional) + description: Link or path to the canonical value (chain explorer, source code, JSON registry, etc.). + placeholder: https://... or morph-bridge/public/morph-list/src/mainnet/tokenList.json + validations: + required: false + + - type: dropdown + id: agent + attributes: + label: Agent / IDE where this occurred + options: + - Cursor + - Claude Code + - OpenClaw + - Windsurf + - Codex + - Web chat + - Other + - Not applicable + validations: + required: false + + - type: textarea + id: additional + attributes: + label: Additional context + description: Version info, chain (Mainnet / Hoodi), package versions, screenshots, etc. + validations: + required: false diff --git a/.gitignore b/.gitignore index 6cacdf1ea..d1cdeb9ab 100644 --- a/.gitignore +++ b/.gitignore @@ -26,5 +26,25 @@ yarn-error.log* .anima data build -scripts +# scripts build +examples +.cursor +.claude +.openclaw + +# __tests__ +# run-tests.mjs +content + +# agent +skills-plan +memory +USER.md +SOUL.md +TOOLS.md +IDENTITY.md +HEARTBEAT.md + +# dapp agent +planning \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..ffdcbc2b2 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,103 @@ +# AGENTS.md + +Operating instructions for AI agents working in this repository. Loaded by **OpenClaw** when this directory is the agent workspace; use as the shared team handbook for other coding agents too. + +**Claude Code** also reads [`CLAUDE.md`](./CLAUDE.md) at session start—project facts below are canonical for any tool. + +## Project overview + +This is the Morph Documentation website (Docusaurus 3.1.1). Morph is an optimistic zkEVM scaling solution for Ethereum. The site provides developer resources, guides, and API references for the Morph network. + +## Knowledge base layout + +- **Vision (docs-as-SKILL, external brain, toolchain):** [`VISION.md`](./VISION.md) — write and review MDX/SKILL pairs against this contract so models can instantiate behavior reliably. +- **Human-readable docs:** `docs/` (MDX). Prefer linking to the authoritative page instead of duplicating long specs in chat. +- **Executable topic summaries:** `skills//SKILL.md` (see [`skills/README.md`](./skills/README.md)). Use these for routing and concise procedures. +- **Agent sub-definition:** [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md) — skill authoring from a single goal. Canonical skill path is **`skills//`** at repo root; see [`skills/README.md`](./skills/README.md) to symlink into Cursor / Claude Code / OpenClaw global dirs. When in doubt, treat `docs/` + `skills/` as the product source of truth. + +## Development commands + +### Local development + +- `npm start` or `docusaurus start` — dev server +- `npm run build` — production build +- `npm run serve` — serve built site (port 8080) +- `npm run clear` — clear Docusaurus cache +- `npm run swizzle` — customize Docusaurus components + +### Environment + +- `MORPH_DOCS_URL` — site URL when needed +- Algolia DocSearch: `ALGOLIA_APP_ID`, `ALGOLIA_SEARCH_API_KEY`, `ALGOLIA_INDEX_NAME` + +## Architecture + +### Tech stack + +- **Framework:** Docusaurus 3.1.1 (preset-classic) +- **Styling:** Tailwind CSS 3.4.1 with `@morui/theme` +- **CSS:** Sass with autoprefixer +- **Markdown:** MDX with remark-math and rehype-katex +- **Search:** Algolia DocSearch +- **Deployment:** static output + nginx configs in repo + +### Key directories + +- `docs/` — MDX content (`build-on-morph/`, `about-morph/`, `how-morph-works/`, `morph-rails/`, …) + - `docs/build-on-morph/sdk/{classes,enumerations,functions,interfaces,type-aliases,variables}/` — **typedoc-generated API reference**; do **not** hand-edit these files or add frontmatter (including `doc_skill_id`), they will be overwritten on regeneration. See [`VISION.md`](./VISION.md) § Pairing Policy. +- `src/components/` — React (`MorphRpc/`, `AltFee/`, `ApiExplorer/`, …) +- `static/` — assets +- `plugins/` — custom Docusaurus plugins +- `scripts/` — doc processing utilities + +### Configuration + +- `docusaurus.config.js` — main config, sidebars reference +- `sidebars.js` — nav (Get Started, Morph Chain, Node Operators, Learn, Morph Rails) +- `tailwind.config.js` — theme tokens +- `config.json` — Algolia DocSearch + +### Styling + +- Tailwind + `@morui/theme`; Sass in `src/css/`; overrides in `src/css/custom.scss` + +### Plugins + +- Markdown source plugin: `plugins/markdown-source-plugin.js` +- Client redirects, Sass plugin, Mermaid theme + +## Documentation structure (sidebar) + +1. **Get Started** — quickstart, protocol overview +2. **Morph Chain** — SDKs, APIs, building on Morph +3. **Node Operators** — full node, validators +4. **Learn** — concepts and architecture +5. **Morph Rails** — infrastructure (e.g. AltFee, Reference Key) + +## Component patterns + +- Tailwind + Morui tokens; `morui-` prefix where applicable +- Demos (e.g. `MorphRpcClientDemo`) use JSON-RPC against Morph endpoints + +## Deployment + +- Build output: `build/` +- Scripts: `build:mainnet`, `build:qanet` where applicable + +## Key dependencies + +- `@morphnetwork/viem`, `@morui/theme`, `viem`, `lottie-react` + +## Development notes + +- MDX for embedded React; math via remark-math / rehype-katex +- Light/dark theming via custom tokens +- Single locale (en) for now + +## Testing and changes + +- Automated checks live under `__tests__/`. When adding or changing **executable** helpers or behaviors covered by tests, extend or add tests there and run the project’s test script from `package.json`. + +## Secrets + +- Do not commit API keys, tokens, or `.env` contents. Follow `.gitignore`. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 000000000..c5542838d --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,72 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Canonical handbook + +Day-to-day architecture, commands, and conventions live in [`AGENTS.md`](./AGENTS.md) — read it first. The doc–skill contract (why this repo exists as an "external brain" for Morph-facing agents) is in [`VISION.md`](./VISION.md). This file only captures what Claude Code specifically needs on top of those. + +Optional personal overrides: `CLAUDE.local.md` (git-ignored). Nested `CLAUDE.md` files in subfolders may apply when working only in those paths. + +## What this repo is + +A Docusaurus 3.1.1 site (`morph-doc`) that doubles as the source of truth for **Morph Agent Skills**. Two linked surfaces: + +- `docs/**/*.mdx|.md` — human-readable documentation. Long-form content, tables, demos. +- `skills//SKILL.md` — routable, executable summaries for AI agents. Each declares YAML frontmatter (`name`, `description`, `last_verified`, `verified_against`). + +Pairing is enforced: MDX pages marked `doc_skill_id: ` must match a `skills//SKILL.md` whose `name` equals ``. See `__tests__/doc-skill-pairing.test.mjs`. + +## Commands + +```bash +npm start # docusaurus dev server +npm run build # production build (output: build/) +npm run serve # serve built site on port 8080 +npm run clear # clear docusaurus cache +npm test # runs scripts/run-tests.mjs (all __tests__/*.test.mjs in a fixed order) +npm run skill-ln # symlink skills// into .cursor/.claude/.openclaw/.windsurf/skills +npm run agent-ln # symlink agents/.md into .cursor/.claude/.openclaw/.windsurf/agents +``` + +### Running a single test + +`npm test` executes the manifest in `scripts/run-tests.mjs`. To run one file directly: + +```bash +node __tests__/.test.mjs +``` + +New test files must be added to `TEST_FILES` in `scripts/run-tests.mjs` — `run-tests-manifest.test.mjs` enforces this. + +## Testing model + +Tests are plain Node ESM scripts (no framework). They exit non-zero on failure. Key guards to be aware of when editing docs or skills: + +- `doc-skill-pairing.test.mjs` — every MDX `doc_skill_id` must resolve to a skill whose `name` matches. +- `morph-doc-skill-inventory.test.mjs` — frontmatter consistency across all `skills/*/SKILL.md`; warns (non-fatal) when `last_verified` is older than 90 days. +- `morph-contracts-skill-tokenlist.test.mjs` — enforces parity between the `morph-contracts` Skill tables and `morph-bridge/public/morph-list/src/mainnet/tokenList.json`. +- `skills-sidebar.test.mjs` — `sidebars-skills.js` must list every skill directory. +- `vision-md.test.mjs` — VISION.md structural contract. +- `examples-viem-alt-fee.test.mjs` — executable Alt Fee behavior tied to SDK docs. + +When you change an `actionable` or `fact-table` MDX page or the corresponding SKILL.md, re-stamp `last_verified` and update `verified_against` in the same change. + +## Skill authoring loop (the most common task) + +When the user asks for a new skill or a revision, follow [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md): **one goal → one skill directory**, `name` == folder name. The golden path: + +1. Land or update long-form content in `docs/` with `doc_skill_id` frontmatter when routing is needed. +2. Create/update `skills//SKILL.md` — frontmatter + execution steps + self-check. Do **not** copy MDX body; link to the section. +3. If adding a new skill id, register it in `sidebars-skills.js`. +4. Run `npm test`. Fix the specific guard that fails — don't broaden scope. +5. For fact-table skills, update `verified_against` to list every canonical path you cross-checked. + +See `VISION.md` for the pairing policy (which doc types require a skill) and the freshness contract. + +## Repo-specific conventions + +- **Never copy content between `docs/` and `skills/`.** Skills point into docs; docs never embed skill playbooks. +- **Morph-specific fields** (e.g. Alt Fee `feeTokenID` / `feeLimit`, predeploy addresses) must match current docs — do not infer from Ethereum mainnet assumptions. +- **Generated typedoc output** under `docs/build-on-morph/sdk/{classes,enumerations,functions,interfaces,type-aliases,variables}/` is regenerated; do not hand-edit frontmatter there. +- **Agent workspace files** at repo root (`IDENTITY.md`, `SOUL.md`, `USER.md`, `TOOLS.md`, `HEARTBEAT.md`, `memory/`) are for the OpenClaw agent runtime — leave them alone unless the task is specifically about agent configuration. `USER.md` is git-ignored. diff --git a/README.md b/README.md index 78361249b..26d337177 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,38 @@ Our decentralized sequencer design and innovative Layer 2 approach address block 3. [Morph's Origins and Aspirations](https://medium.com/@morphlayer/morphys-origins-and-aspirations-7afc0280a8e2) +## AI assistant workspace (Claude Code & OpenClaw) + +This repo includes agent-oriented docs at the root: + +| File | Purpose | +|------|---------| +| [`VISION.md`](./VISION.md) | Morph doc intelligence vision: **documentation as SKILL**, external brain for Morph-facing agents, developer toolchain (Cursor / Claude Code / OpenClaw). | +| [`AGENTS.md`](./AGENTS.md) | Shared operating instructions: architecture, commands, `docs/` vs `skills/`, testing expectations. OpenClaw loads this when the workspace is this directory. | +| [`CLAUDE.md`](./CLAUDE.md) | Entry point for [Claude Code](https://docs.anthropic.com/en/docs/claude-code/claude-md); points to `AGENTS.md` for project facts. | + +### Point OpenClaw workspace at this repository + +So file tools and session bootstrap use this clone as the agent home: + +1. Edit `~/.openclaw/openclaw.json` on the machine that runs the OpenClaw gateway. +2. Set the workspace to **this repo’s absolute path** (adjust for your machine), for example: + +```json5 +{ + "agent": { + "workspace": "/Users/you/path/to/morph-doc" + } +} +``` + +If your config uses the `agents.defaults` shape instead, set `agents.defaults.workspace` to the same path—follow the keys your OpenClaw version documents. + +3. Restart the gateway or run `openclaw setup` if you need missing workspace files seeded. +4. If you maintain `AGENTS.md` yourself and do not want bootstrap to recreate defaults, you can set `agent.skipBootstrap` / `skipBootstrap` per [OpenClaw Agent Workspace](https://docs.openclaw.ai/concepts/agent-workspace) docs. + +Optional OpenClaw files in the same directory (see OpenClaw docs): `SOUL.md`, `USER.md`, `TOOLS.md`, `memory/`, etc. `USER.md` is listed in `.gitignore` for local-only preferences. + ## Learn more Website: https://www.morphl2.io/ diff --git a/VISION.md b/VISION.md new file mode 100644 index 000000000..94ab474d8 --- /dev/null +++ b/VISION.md @@ -0,0 +1,168 @@ +--- +name: morph-vision +description: "Morph documentation as the external brain for Morph-facing agents: docs-as-SKILL, developer toolchain (docs/, skills/, IDE agents, OpenClaw workspace), and how to write MDX so models instantiate reliable behavior. Use when defining or explaining the doc–skill contract, onboarding contributors to agent-ready documentation, or aligning Cursor / Claude Code / OpenClaw with this repository." +--- + +# Morph Documentation Agent Vision (VISION) + +## Single Source of Truth + +This file describes how **morph-doc** binds "human-readable documentation" to "executable Agent Skills", forming **Morph's External Brain**: the model does not rely on conversational memory but treats **`docs/` + `skills/`** inside the repository as the authoritative source. + +- **Architecture & day-to-day operations:** [`AGENTS.md`](./AGENTS.md) +- **Flows and facts for specific topics:** `docs/**/*.mdx` / `docs/**/*.md` and the corresponding `skills//SKILL.md` +- **Skills overview (directory conventions, division with `docs/`, symlinks & `morph-skill-ln`):** [`skills/README.md`](./skills/README.md) + +This VISION does not repeat CLI commands or directory trees; it only defines **goals, contracts, and self-checks**. + +--- + +## Vision: Documentation as SKILL + +**Documentation as SKILL** means: developer-facing pages are written to satisfy the **Agent Skill contract**, so the same material can be read by humans and also used in model conversations as **routable, executable, self-checkable** instantiation instructions. + +| Dimension | For humans | For models to "instantiate" | +|-----------|-----------|----------------------------| +| Facts & API | MDX body, tables, examples | Skill summary + pointer to MDX section, avoids duplicating long tables | +| Flow | Headings and section order | **Execution Steps** numbered steps, reduces guessing and skipping | +| Boundaries | Notes, limitations | Stated in **description** and **Self-Check**: "when not applicable" | + +After writing and merging into the repo, the toolchain routes user questions to the correct behavior via **Skill name / `doc_skill_id` / description** — instead of reasoning from scratch each time. + +--- + +## What "External Brain" Means for Morph + +- **External**: relative to model weights and conversation context; authority lives in the **Git repository**, versioned, reviewable, and revertible. +- **Brain**: Agents (IDE, Claude Code, OpenClaw, etc.) **prioritize reading and following** `docs/` and `skills/` when answering Morph-related questions, rather than relying solely on training data or short context. +- **Morph agents**: assistants oriented toward the Morph ecosystem (developer support, SDK, nodes, bridge, Rails, etc.) — their consistency and safety boundaries are governed by **the documentation contract in this repo**. + +--- + +## Developer Toolchain (How to Instantiate) + +1. **Human docs (MDX/MD)** + - Authoritative long-form content, demos, component references. + - When pairing with a Skill, use `doc_skill_id: ` in the frontmatter. + +2. **Skill (`skills//SKILL.md`)** + - **YAML**: `name` (matches directory name), `description` (third-person, trigger scenarios, capability boundary). + - **Body**: execution playbook, single source of truth path, execution steps, self-check list; large tables can go in `references/` with instructions in the SKILL for when to open them. + +3. **IDE / multi-tool reuse** + - In-repo: canonical directory is **`skills//`**; see [`skills/README.md`](./skills/README.md) to symlink to Cursor / Claude Code / OpenClaw global dirs. + - **OpenClaw**: when the workspace points to this repo, sessions load [`AGENTS.md`](./AGENTS.md); the workspace `skills/` has high priority in OpenClaw (follow the OpenClaw version docs). + +4. **Validation** + - `doc_skill_id` matches `name` in `SKILL.md`; related test cases in `__tests__/doc-skill-pairing.test.mjs`. + +--- + +## Write Docs to the SKILL Standard (Contributor Contract) + +When writing or revising MDX, at minimum satisfy: + +1. **Routable**: if the topic is suitable for Agent reuse, maintain a corresponding `skills//SKILL.md` with a `description` that covers how users will ask and which keywords it includes (chain IDs, package names, etc.). +2. **Single source of truth**: the Skill does not copy-paste the full MDX; use "read section X of `docs/...`" + minimal necessary extracts. +3. **Executable**: provide **Execution Steps** (prerequisites → steps → verification); avoid pure narrative with no actions. +4. **No fabricated fields**: Morph-specific fields (e.g. Alt Fee's `feeTokenID` / `feeLimit`) must match the documentation; do not invent exports or undocumented APIs. +5. **Testable**: for scripts, validation logic, or behaviors strongly tied to docs, add or update tests in `__tests__/`. +6. **Instantiation Self-Check**: keep a **Self-Check** checklist (3–7 items) at the end of the SKILL for the model to verify before delivering. + +When generating Skills with a specialized sub-agent, follow the workflow in [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md): **single goal → single skill directory**, `name` matches the folder name. + +--- + +## Pairing Policy (which docs need a Skill) + +Not every MDX page benefits from a Skill. Follow this layered rule: + +| Doc type | `doc_skill_id` required | Rationale | +|----------|------------------------|-----------| +| **Actionable** (deploy, run, integrate, bridge, Alt Fee) | **Yes** | Agents need routing + execution steps | +| **Fact tables** (contract addresses, RPC endpoints, chain IDs, token lists) | **Yes** | Agents need precise lookup with a canonical source | +| **Conceptual** (what is Optimistic Rollup, RVP mechanics) | Optional | Human-first content; agent routing adds limited value | +| **Narrative** (Vision, Roadmap, Mission) | No | No execution surface to expose | +| **Generated** (typedoc under `docs/build-on-morph/sdk/{classes,enumerations,functions,interfaces,type-aliases,variables}/`) | No | Re-generated output; manual frontmatter would be overwritten | + +**Target**: 100% pairing for *actionable* and *fact-table* docs. Tracked by `__tests__/doc-skill-pairing.test.mjs`. + +--- + +## Cross-Skill References (`Related Skills`) + +Skills may reference siblings via a dedicated section, **without copying content**: + +```markdown +## Related Skills + +- `morph-contracts` — Contract addresses, when you need to look up Bridge gateways +- `morph-js-sdk` — JavaScript SDK, when picking Viem vs Ethers adapter +``` + +Rules: + +1. **Pointer only**, never replicate the other Skill's body. +2. **No mandatory reciprocity** — A may reference B without B referencing A; acyclic by convention. +3. List each cross-reference with a one-line *when to open it* hint. + +--- + +## Skill Verification Metadata (freshness contract) + +Each `SKILL.md` declares when it was last human-verified and against which sources: + +```yaml +--- +name: morph-contracts +description: "…" +last_verified: 2026-04-20 +verified_against: + - morph-bridge/public/morph-list/src/mainnet/tokenList.json + - docs/build-on-morph/developer-resources/1-contracts.md +--- +``` + +- **`last_verified`** — ISO date (YYYY-MM-DD) of the most recent human re-read of the Skill against its sources. +- **`verified_against`** — list of paths whose content was cross-checked. Sibling-app paths (e.g. `morph-bridge/`) are valid when they are the canonical source of truth. +- **Decay threshold** — `last_verified` older than **90 days** emits a warning from `__tests__/morph-doc-skill-inventory.test.mjs`. The warning is informational (does not fail the run) so unrelated work is not blocked. +- **Protocol upgrades** — when a Morph fork or predeploy change lands, re-stamp affected Skills in the same PR that introduces the doc update. + +Additional existing guard: `__tests__/morph-contracts-skill-tokenlist.test.mjs` enforces table↔JSON parity for `morph-contracts` (fact-table drift). + +--- + +## Feedback Loop + +Skill or MDX drift reports flow through a single GitHub Issue template (`.github/ISSUE_TEMPLATE/skill-feedback.yaml`) and the `skill-drift` label, triaged by the doc maintainer. The `MarkdownActionsDropdown` site component may link users directly to this template from any MDX page. + +--- + +## Execution Steps (Maintainers) + +1. Define topic and audience (chain, role: contract / node / SDK). +2. Land or update MDX in `docs/`; set `doc_skill_id` when a Skill is needed. +3. Create or update `skills//SKILL.md` (frontmatter + playbook + self-check). +4. Run tests (including `doc-skill` pairing and project scripts). +5. If global toolchain changes are needed, update symlink instructions in `skills/README.md`. + +--- + +## Self-Check + +- [ ] Does the long-form content for this topic still live only in `docs/`, with the Skill providing only summaries and pointers? +- [ ] Does `doc_skill_id` (if present) match `name` in `skills//SKILL.md`? +- [ ] Does `description` allow the model to route to this Skill even when the user doesn't state all keywords? +- [ ] Are Morph-specific concepts and common pitfalls documented to prevent the model from applying Ethereum mainnet assumptions? +- [ ] Does executable code match the package versions, chain names, and value ranges in the documentation? + +--- + +## Relationship to Related Files + +| File | Role | +|------|------| +| [`AGENTS.md`](./AGENTS.md) | In-repo Agent operations handbook (commands, directories, tests, secrets) | +| [`CLAUDE.md`](./CLAUDE.md) | Claude Code entry point, points to `AGENTS.md` | +| [`VISION.md`](./VISION.md) (this file) | Doc–Skill vision and contract; does not replace topic-specific SKILLs | +| [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md) | Sub-agent instructions for generating/revising a Skill from "one goal" | diff --git a/__tests__/agent-driven-development-workflow-doc.test.mjs b/__tests__/agent-driven-development-workflow-doc.test.mjs new file mode 100644 index 000000000..aaf84e8f4 --- /dev/null +++ b/__tests__/agent-driven-development-workflow-doc.test.mjs @@ -0,0 +1,72 @@ +/** + * Sanity check for docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md: + * this page is the human-readable *entry dispatcher* for every Morph dApp Agent Skill + * in this repo. Guard its key routing anchors so it does not silently degrade to a + * single-skill companion page. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const DOC_PATH = path.join( + ROOT, + 'docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md' +); + +const content = fs.readFileSync(DOC_PATH, 'utf8'); + +assert.match(content, /^---\r?\n[\s\S]*?\r?\n---/, 'should have YAML frontmatter'); +assert.match( + content, + /^doc_skill_id:\s*morph-dapp-workflow\s*$/m, + 'doc_skill_id must pair with morph-dapp-workflow' +); + +for (const heading of [ + '## Pick your entry Skill', + '## Quick decision tree', + '## The end-to-end path: morph-dapp-workflow', + '### Stage 1', + '### Stage 2', + '### Stage 3', + '## Driving the flow from your IDE', + '## See also', +]) { + assert.ok(content.includes(heading), `dispatcher doc should include section: ${heading}`); +} + +const DISPATCH_TARGETS = [ + '/skills/morph-dapp-workflow/SKILL', + '/skills/morph-dapp-planning/SKILL', + '/skills/morph-dapp-codegen/SKILL', + '/skills/morph-dapp-code-review/SKILL', + '/skills/morph-js-sdk/SKILL', + '/skills/morph-contracts/SKILL', + '/skills/morph-tx-cost/SKILL', + '/skills/morph-rails/SKILL', + '/skills/morph-skill-ln/SKILL', + '/skills/morph-full-node-run-on-host/SKILL', +]; +for (const link of DISPATCH_TARGETS) { + assert.ok( + content.includes(link), + `dispatcher doc must link to every routable Skill; missing ${link}` + ); +} + +for (const anchor of [ + 'morph-dapp-workflow', + 'feeTokenID', + 'feeLimit', + '2818', + '2910', + 'GasPriceOracle', + 'P0', +]) { + assert.ok(content.includes(anchor), `dispatcher doc should mention ${anchor}`); +} + +console.log('agent-driven-development-workflow-doc: ok'); diff --git a/__tests__/doc-skill-pairing.test.mjs b/__tests__/doc-skill-pairing.test.mjs new file mode 100644 index 000000000..2cbc2ffe7 --- /dev/null +++ b/__tests__/doc-skill-pairing.test.mjs @@ -0,0 +1,79 @@ +/** + * Doc ↔ skill pairing: assert doc frontmatter doc_skill_id matches + * skills//SKILL.md name (canonical repo-root paths). + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); + +const PAIRS = [ + { + docRelative: + 'docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md', + expectedId: 'morph-full-node-run-on-host', + }, + { + docRelative: 'docs/build-on-morph/sdk/js-sdk.mdx', + expectedId: 'morph-js-sdk', + }, + { + docRelative: 'docs/build-on-morph/developer-resources/1-contracts.md', + expectedId: 'morph-contracts', + }, + { + docRelative: 'docs/morph-rails/0-overview.md', + expectedId: 'morph-rails', + }, + { + docRelative: + 'docs/build-on-morph/build-on-morph/4-understand-transaction-cost-on-morph.md', + expectedId: 'morph-tx-cost', + }, + { + docRelative: + 'docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md', + expectedId: 'morph-dapp-workflow', + }, +]; + +function parseFrontmatterField(content, field) { + const m = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); + if (!m) return null; + const fm = m[1]; + const line = new RegExp(`^${field}:\\s*(.+)$`, 'm').exec(fm); + return line ? line[1].trim().replace(/^["']|["']$/g, '') : null; +} + +function readSkillName(skillPath) { + const content = fs.readFileSync(skillPath, 'utf8'); + return parseFrontmatterField(content, 'name'); +} + +for (const { docRelative, expectedId } of PAIRS) { + const docPath = path.join(ROOT, docRelative); + assert.ok(fs.existsSync(docPath), `doc should exist: ${docRelative}`); + + const docContent = fs.readFileSync(docPath, 'utf8'); + const docSkillId = parseFrontmatterField(docContent, 'doc_skill_id'); + assert.equal( + docSkillId, + expectedId, + `${docRelative} doc_skill_id should be ${expectedId}` + ); + + const skillPath = path.join(ROOT, 'skills', expectedId, 'SKILL.md'); + assert.ok(fs.existsSync(skillPath), `SKILL.md should exist: ${expectedId}`); + + const skillName = readSkillName(skillPath); + assert.equal( + skillName, + expectedId, + `SKILL name should match doc_skill_id: ${expectedId}` + ); +} + +console.log('doc-skill-pairing: ok (%d pairs)', PAIRS.length); diff --git a/__tests__/examples-viem-alt-fee.test.mjs b/__tests__/examples-viem-alt-fee.test.mjs new file mode 100644 index 000000000..a29273242 --- /dev/null +++ b/__tests__/examples-viem-alt-fee.test.mjs @@ -0,0 +1,40 @@ +/** + * examples/viem-alt-fee layout and dry-run smoke test. + */ +import assert from "node:assert/strict"; +import { spawnSync } from "node:child_process"; +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, ".."); +const EXAMPLE_DIR = path.join(ROOT, "examples", "viem-alt-fee"); +const SCRIPT = path.join(EXAMPLE_DIR, "send-alt-fee.mjs"); + +for (const f of ["package.json", "send-alt-fee.mjs", ".env.example"]) { + assert.ok( + fs.existsSync(path.join(EXAMPLE_DIR, f)), + `expected examples/viem-alt-fee/${f}` + ); +} + +const check = spawnSync(process.execPath, ["--check", SCRIPT], { + encoding: "utf8", +}); +assert.equal(check.status, 0, check.stderr || "node --check send-alt-fee.mjs"); + +const dry = spawnSync( + process.execPath, + [SCRIPT], + { + cwd: EXAMPLE_DIR, + encoding: "utf8", + env: { ...process.env, MORPH_DRY_RUN: "1" }, + } +); +assert.equal(dry.status, 0, dry.stderr || dry.stdout); +assert.ok(dry.stdout.includes("dry-run"), "dry-run output should mention mode"); +assert.ok(dry.stdout.includes("feeTokenID"), "dry-run output should include feeTokenID"); + +console.log("examples-viem-alt-fee: ok"); diff --git a/__tests__/is-alt-fee.test.mjs b/__tests__/is-alt-fee.test.mjs new file mode 100644 index 000000000..355a2aba9 --- /dev/null +++ b/__tests__/is-alt-fee.test.mjs @@ -0,0 +1,74 @@ +/** + * isAltFee() — three-layer rules for type / feeTokenID / feeLimit (aligned with morph-doc inline notes) + */ +import assert from 'node:assert/strict'; +import { createRequire } from 'node:module'; + +const require = createRequire(import.meta.url); +const { + isAltFee, + isAltFeeTypeExplicit, + isFeeLimitValid, + isPositiveFeeTokenId, +} = require('../src/utils/isAltFee.js'); + +// --- type layer --- +assert.equal(isAltFee({}), false, 'no feeTokenID'); +assert.equal(isAltFee(), false); +assert.equal(isAltFee({ feeTokenID: 4 }), true, 'when type omitted, only feeTokenID matters'); +assert.equal(isAltFee({ type: null, feeTokenID: 4 }), true, 'type null same as omitted'); +assert.equal(isAltFee({ type: 2, feeTokenID: 4 }), false, 'non-AltFee type → false'); +assert.equal(isAltFee({ type: 'eip1559', feeTokenID: 4 }), false); + +assert.equal(isAltFee({ type: 127, feeTokenID: 1 }), true); +assert.equal(isAltFee({ type: 127n, feeTokenID: 1 }), true); +assert.equal(isAltFee({ type: '0x7f', feeTokenID: 1 }), true); +assert.equal(isAltFee({ type: '0X7F', feeTokenID: 1 }), true); +assert.equal(isAltFee({ type: 'altFee', feeTokenID: 1 }), true); +assert.equal(isAltFee({ type: 'ALtFEE', feeTokenID: 1 }), true, 'altFee is case-insensitive'); + +// --- contract: explicit AltFee type without feeTokenID throws --- +assert.throws( + () => isAltFee({ type: 127 }), + /feeTokenID is required/, + 'type=127 without feeTokenID', +); +assert.throws( + () => isAltFee({ type: 127, feeTokenID: null }), + /feeTokenID is required/, + 'type=127 with feeTokenID null', +); +assert.throws( + () => isAltFee({ type: '0x7f', feeTokenID: null }), + /feeTokenID is required/, +); +assert.throws( + () => isAltFee({ type: 'altFee' }), + /feeTokenID is required/, +); + +// --- feeTokenID layer --- +assert.equal(isAltFee({ type: 127, feeTokenID: 0 }), false, '127 + 0 is not AltFee, no throw'); +assert.equal(isAltFee({ feeTokenID: 0 }), false); +assert.equal(isAltFee({ feeTokenID: -1 }), false); +assert.equal(isAltFee({ feeTokenID: 4n }), true); +assert.equal(isAltFee({ feeTokenID: 1.5 }), false, 'reject non-integer token id'); + +// --- feeLimit optional --- +assert.equal(isAltFee({ feeTokenID: 4, feeLimit: 0 }), true); +assert.equal(isAltFee({ feeTokenID: 4, feeLimit: 0n }), true); +assert.equal(isAltFee({ feeTokenID: 4, feeLimit: -1 }), false); +assert.equal(isAltFee({ feeTokenID: 4, feeLimit: -1n }), false); +assert.equal(isAltFee({ feeTokenID: 4, feeLimit: Number.NaN }), false); +assert.equal(isAltFee({ feeTokenID: 4, feeLimit: undefined }), true, 'limit omitted'); +assert.equal(isAltFee({ feeTokenID: 4, feeLimit: null }), true, 'null treated as limit omitted'); + +// helpers (for other tests in this file or future reuse) +assert.equal(isAltFeeTypeExplicit(127), true); +assert.equal(isAltFeeTypeExplicit(126), false); +assert.equal(isPositiveFeeTokenId(1), true); +assert.equal(isPositiveFeeTokenId(0), false); +assert.equal(isFeeLimitValid(0), true); +assert.equal(isFeeLimitValid(-0.001), false); + +console.log('is-alt-fee: ok'); diff --git a/__tests__/markdown-actions-routes.test.mjs b/__tests__/markdown-actions-routes.test.mjs new file mode 100644 index 000000000..23843e9d9 --- /dev/null +++ b/__tests__/markdown-actions-routes.test.mjs @@ -0,0 +1,41 @@ +/** + * MarkdownActionsDropdown + Root injection: eligible pathnames (docs + skills plugins). + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import { createRequire } from 'node:module'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const require = createRequire(import.meta.url); +const { isMarkdownActionsPathname } = require('../src/utils/isMarkdownActionsPathname.js'); + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); + +assert.equal(isMarkdownActionsPathname('/docs/foo/bar'), true); +assert.equal(isMarkdownActionsPathname('/skills/README'), true); +assert.equal(isMarkdownActionsPathname('/skills/morphchain-bridge/SKILL'), true); +assert.equal(isMarkdownActionsPathname('/blog/post'), false); +assert.equal(isMarkdownActionsPathname('/'), false); +assert.equal(isMarkdownActionsPathname(''), false); + +const rootSrc = fs.readFileSync(path.join(ROOT, 'src/theme/Root.js'), 'utf8'); +const dropdownSrc = fs.readFileSync( + path.join(ROOT, 'src/components/MarkdownActionsDropdown/index.js'), + 'utf8' +); +assert.ok( + rootSrc.includes("from '../utils/isMarkdownActionsPathname'"), + 'Root.js should use isMarkdownActionsPathname' +); +assert.ok( + dropdownSrc.includes("from '../../utils/isMarkdownActionsPathname'"), + 'MarkdownActionsDropdown should use isMarkdownActionsPathname' +); +assert.ok( + !rootSrc.includes("pathname.startsWith('/docs/')"), + 'Root.js should not gate injection on /docs/ only' +); + +console.log('markdown-actions-routes: ok'); diff --git a/__tests__/morph-agent-ln.test.mjs b/__tests__/morph-agent-ln.test.mjs new file mode 100644 index 000000000..ee8c5b3d8 --- /dev/null +++ b/__tests__/morph-agent-ln.test.mjs @@ -0,0 +1,159 @@ +/** + * morph-agent-ln: script exists, runs, --dry-run output matches expectations. + * Mirrors __tests__/morph-skill-ln.test.mjs but targets agents/.md → .cursor/agents etc. + */ +import assert from 'node:assert/strict'; +import { spawnSync } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const REPO_CURSOR_AGENTS = path.join(ROOT, '.cursor', 'agents').replace(/\\/g, '/'); +const REPO_CLAUDE_AGENTS = path.join(ROOT, '.claude', 'agents').replace(/\\/g, '/'); +const REPO_OPENCLAW_AGENTS = path.join(ROOT, '.openclaw', 'agents').replace(/\\/g, '/'); +const REPO_WINDSURF_AGENTS = path.join(ROOT, '.windsurf', 'agents').replace(/\\/g, '/'); +const SCRIPT = path.join(ROOT, 'scripts', 'morph-agent-ln'); + +assert.ok(fs.existsSync(SCRIPT), 'scripts/morph-agent-ln should exist'); +const st = fs.statSync(SCRIPT); +assert.ok((st.mode & 0o111) !== 0, 'scripts/morph-agent-ln should be executable'); + +function run(args, env = {}) { + const r = spawnSync('bash', [SCRIPT, ...args], { + cwd: ROOT, + encoding: 'utf8', + env: { ...process.env, ...env }, + }); + return { status: r.status, stdout: r.stdout ?? '', stderr: r.stderr ?? '' }; +} + +const help = run(['--help']); +assert.equal(help.status, 0, '--help should succeed'); +assert.match(help.stdout, /morph-agent-ln/, '--help should include script name'); +assert.match(help.stdout, /--root|-r/, 'should document path options'); +assert.match(help.stdout, /--agent|-a/, 'should document --agent'); +assert.match(help.stdout, /--unlink/, 'should document --unlink'); +assert.match(help.stdout, /agents\/morph-\*\.md/, '--help should mention batch glob'); + +const dry = run(['--dry-run'], { MORPH_DOC_ROOT: ROOT }); +assert.equal(dry.status, 0, '--dry-run should succeed'); +assert.match(dry.stdout, /ln -sfn/m, 'dry-run should print ln -sfn'); +assert.ok(dry.stdout.includes(REPO_CURSOR_AGENTS), 'default should include cursor agents path'); +assert.ok(dry.stdout.includes(REPO_CLAUDE_AGENTS), 'default should include claude agents path'); +assert.ok(dry.stdout.includes(REPO_OPENCLAW_AGENTS), 'default should include openclaw agents path'); +assert.ok(dry.stdout.includes(REPO_WINDSURF_AGENTS), 'default should include windsurf agents path'); +assert.match(dry.stdout, /morph-doc-agent\.md/, 'batch dry-run should emit morph-doc-agent.md'); +assert.match(dry.stdout, /morph-dapp-agent\.md/, 'batch dry-run should emit morph-dapp-agent.md'); +assert.doesNotMatch(dry.stdout, /\.cursor\/skills|\.claude\/skills/, 'must not target skills dirs'); + +const dryCursorOnly = run(['--dry-run', '-a', 'cursor'], { + MORPH_DOC_ROOT: ROOT, +}); +assert.equal(dryCursorOnly.status, 0); +assert.ok(dryCursorOnly.stdout.includes(REPO_CURSOR_AGENTS)); +assert.doesNotMatch(dryCursorOnly.stdout, /\.claude\/agents/m); +assert.doesNotMatch(dryCursorOnly.stdout, /\.openclaw\/agents/m); +assert.doesNotMatch(dryCursorOnly.stdout, /\.windsurf\/agents/m); + +const dryClaudeOnly = run(['--dry-run', '--root', ROOT, '--agent', 'claude']); +assert.equal(dryClaudeOnly.status, 0); +assert.ok(dryClaudeOnly.stdout.includes(REPO_CLAUDE_AGENTS)); +assert.doesNotMatch(dryClaudeOnly.stdout, /\.cursor\/agents/m); + +const dryWindsurfPath = run([ + '--dry-run', + '--root', + ROOT, + '--agent', + '.windsurf/agents', +]); +assert.equal(dryWindsurfPath.status, 0); +assert.ok(dryWindsurfPath.stdout.includes(REPO_WINDSURF_AGENTS)); + +const dryMulti = run([ + '--dry-run', + '--agent', + 'cursor', + '--agent', + 'codex', + '--root', + ROOT, +]); +assert.equal(dryMulti.status, 0); +assert.ok(dryMulti.stdout.includes(REPO_CURSOR_AGENTS)); +assert.match(dryMulti.stdout, /\.codex\/agents/m); + +const bad = run(['--nope']); +assert.notEqual(bad.status, 0, 'unknown flag should be non-zero'); + +const badAgent = run(['--dry-run', '--agent', 'not-a-valid-name-xyz']); +assert.notEqual(badAgent.status, 0, 'unknown builtin name without path-like token should fail'); + +const badRoot = run(['--root']); +assert.notEqual(badRoot.status, 0, '--root without path should fail'); + +const badAgentArg = run(['--agent']); +assert.notEqual(badAgentArg.status, 0, '--agent without value should fail'); + +const single = run(['--dry-run', 'morph-dapp-agent'], { MORPH_DOC_ROOT: ROOT }); +assert.equal(single.status, 0); +assert.match(single.stdout, /morph-dapp-agent\.md/m, 'single dry-run should mention the file'); +assert.doesNotMatch(single.stdout, /morph-doc-agent\.md/m, 'single mode should not link others'); + +const singleWithExt = run(['--dry-run', 'morph-dapp-agent.md'], { MORPH_DOC_ROOT: ROOT }); +assert.equal(singleWithExt.status, 0); +assert.match(singleWithExt.stdout, /morph-dapp-agent\.md/m, 'trailing .md is accepted'); + +const singleMissing = run(['--dry-run', 'does-not-exist-agent'], { + MORPH_DOC_ROOT: ROOT, +}); +assert.notEqual(singleMissing.status, 0, 'missing source agent should fail'); + +// --unlink: temp symlink in repo; dry-run / real delete (skip if symlinks disallowed) +const UNLINK_TEST_NAME = 'zzz-morph-agent-ln-unlink-test'; +const cursorAgentsDir = path.join(ROOT, '.cursor', 'agents'); +const unlinkTarget = path.join(cursorAgentsDir, `${UNLINK_TEST_NAME}.md`); +const morphDappAgent = path.join(ROOT, 'agents', 'morph-dapp-agent.md'); +let symlinkOk = false; +try { + fs.mkdirSync(cursorAgentsDir, { recursive: true }); + try { + fs.unlinkSync(unlinkTarget); + } catch { + // ignore + } + fs.symlinkSync(morphDappAgent, unlinkTarget); + symlinkOk = true; +} catch (e) { + if (e && (e.code === 'EPERM' || e.code === 'EACCES')) { + console.warn( + 'morph-agent-ln: skip unlink integration (symlink not permitted in this environment)', + ); + } else { + throw e; + } +} + +if (symlinkOk) { + const dryUnlink = run(['--unlink', '--dry-run', '-a', 'cursor', UNLINK_TEST_NAME], { + MORPH_DOC_ROOT: ROOT, + }); + assert.equal(dryUnlink.status, 0); + assert.match(dryUnlink.stdout, /rm -f/m, 'unlink dry-run should print rm -f'); + assert.ok(fs.lstatSync(unlinkTarget).isSymbolicLink(), 'dry-run should not remove symlink'); + + const realUnlink = run(['--unlink', '-a', 'cursor', UNLINK_TEST_NAME], { + MORPH_DOC_ROOT: ROOT, + }); + assert.equal(realUnlink.status, 0); + assert.ok(!fs.existsSync(unlinkTarget), 'unlink should remove symlink'); +} + +const unlinkMissing = run(['--unlink', '-a', 'cursor', 'nonexistent-agent-xyz'], { + MORPH_DOC_ROOT: ROOT, +}); +assert.notEqual(unlinkMissing.status, 0, 'unlink with no symlink should fail'); + +console.log('morph-agent-ln: ok'); diff --git a/__tests__/morph-contracts-skill-tokenlist.test.mjs b/__tests__/morph-contracts-skill-tokenlist.test.mjs new file mode 100644 index 000000000..16982090f --- /dev/null +++ b/__tests__/morph-contracts-skill-tokenlist.test.mjs @@ -0,0 +1,66 @@ +/** + * Keep skills/morph-contracts/SKILL.md in sync with morph-bridge mainnet tokenList.json + * when the bridge repo is present (sibling: ../morph-bridge/...). + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const SKILL_PATH = path.join(ROOT, 'skills', 'morph-contracts', 'SKILL.md'); +const TOKEN_LIST_PATH = path.join( + ROOT, + '..', + 'morph-bridge', + 'public', + 'morph-list', + 'src', + 'mainnet', + 'tokenList.json', +); + +function normAddr(a) { + return String(a).trim().toLowerCase(); +} + +function main() { + if (!fs.existsSync(TOKEN_LIST_PATH)) { + console.log( + 'morph-contracts-skill-tokenlist: skip (no morph-bridge tokenList at %s)', + TOKEN_LIST_PATH, + ); + return; + } + + const raw = fs.readFileSync(TOKEN_LIST_PATH, 'utf8'); + const data = JSON.parse(raw); + assert.ok(Array.isArray(data.tokens), 'tokenList.json should have tokens[]'); + + const skill = fs.readFileSync(SKILL_PATH, 'utf8'); + const skillLower = skill.toLowerCase(); + + for (const t of data.tokens) { + const cid = String(t.chainId); + if (cid !== '1' && cid !== '2818') continue; + const addr = normAddr(t.address); + assert.match(addr, /^0x[0-9a-f]{40}$/, `token address shape: ${t.symbol}`); + assert.ok( + skillLower.includes(addr), + `SKILL.md should include L1/L2 address ${addr} (${t.symbol}, chainId ${cid}) from tokenList.json`, + ); + } + + assert.ok( + skill.includes('tokenList.json') && skill.includes('morph-bridge'), + 'SKILL.md should reference morph-bridge tokenList.json as canonical bridge list', + ); + + console.log( + 'morph-contracts-skill-tokenlist: ok (%d tokens checked)', + data.tokens.length, + ); +} + +main(); diff --git a/__tests__/morph-dapp-agent.test.mjs b/__tests__/morph-dapp-agent.test.mjs new file mode 100644 index 000000000..6fe01afb9 --- /dev/null +++ b/__tests__/morph-dapp-agent.test.mjs @@ -0,0 +1,88 @@ +/** + * Assert agents/morph-dapp-agent.md: frontmatter, default SKILL set existence, + * routing rules, no auto-commit promise, pointer-only orchestration. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const AGENT_PATH = path.join(ROOT, 'agents/morph-dapp-agent.md'); +const SKILLS_DIR = path.join(ROOT, 'skills'); + +assert.ok(fs.existsSync(AGENT_PATH), `morph-dapp-agent should exist: ${AGENT_PATH}`); + +const content = fs.readFileSync(AGENT_PATH, 'utf8'); +const fm = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); +assert.ok(fm, 'should have YAML frontmatter'); + +const block = fm[1]; +function field(name) { + const m = new RegExp(`^${name}:\\s*(.+)$`, 'm').exec(block); + return m ? m[1].trim() : null; +} + +assert.equal(field('name'), 'morph-dapp-agent', 'frontmatter name must equal file stem'); +const model = field('model'); +assert.ok(model && model.length > 0, 'frontmatter should declare a default model'); + +const desc = field('description'); +assert.ok(desc && desc.length > 40, 'description should be non-empty and substantive'); +assert.match(desc, /Morph/, 'description should mention Morph'); +assert.match( + desc, + /end[- ]to[- ]end|pipeline|planning|review/i, + 'description should convey end-to-end delivery scope', +); +assert.match( + desc, + /Use when|trigger|when the user/i, + 'description should include trigger phrasing so IDE routing can match it', +); + +const REQUIRED_CHILD_SKILLS = [ + 'morph-dapp-workflow', + 'morph-dapp-planning', + 'morph-dapp-codegen', + 'morph-dapp-code-review', +]; + +for (const skill of REQUIRED_CHILD_SKILLS) { + assert.ok( + content.includes(skill), + `agent must reference child SKILL by name: ${skill}`, + ); + assert.ok( + fs.existsSync(path.join(SKILLS_DIR, skill, 'SKILL.md')), + `child SKILL must exist on disk: skills/${skill}/SKILL.md`, + ); +} + +assert.match( + content, + /Routing rules|Routing|路由/i, + 'agent should document explicit routing rules so single-step requests bypass the workflow', +); + +assert.match( + content, + /pointer[- ]only|never inline|do not inline|never replicate/i, + 'agent must declare pointer-only orchestration (no SKILL-body copying)', +); + +assert.ok( + /never auto[\s-]?(commit|push)|do not auto[\s-]?(commit|push)|no auto[\s-]?(commit|push)/i.test( + content, + ), + 'agent must explicitly forbid auto commit/push', +); + +assert.match( + content, + /morph-doc-agent/i, + 'agent should delineate scope against the sibling morph-doc-agent', +); + +console.log('morph-dapp-agent: ok'); diff --git a/__tests__/morph-dapp-code-review-skill.test.mjs b/__tests__/morph-dapp-code-review-skill.test.mjs new file mode 100644 index 000000000..e3628300b --- /dev/null +++ b/__tests__/morph-dapp-code-review-skill.test.mjs @@ -0,0 +1,57 @@ +/** + * Sanity check for skills/morph-dapp-code-review/SKILL.md: + * frontmatter, four review dimensions, output schema, Morph-specific checks. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const SKILL_PATH = path.join(ROOT, 'skills/morph-dapp-code-review/SKILL.md'); + +const content = fs.readFileSync(SKILL_PATH, 'utf8'); + +assert.match(content, /^---\r?\n[\s\S]*?\r?\n---/, 'should have YAML frontmatter'); +assert.match(content, /^name:\s*morph-dapp-code-review\s*$/m, 'name must equal directory'); +assert.match(content, /Use when|当用户/i, 'description should include trigger phrasing'); + +for (const heading of [ + '## When to use', + '## Dimension Checklist', + '## Execution Steps', + '## Output Format', + '## Self-Check', + '## Related Skills', +]) { + assert.ok(content.includes(heading), `should include section: ${heading}`); +} + +for (const dim of [ + '### 1. Security', + '### 2. Performance', + '### 3. Code Quality', + '### 4. Planning compliance', +]) { + assert.ok(content.includes(dim), `should describe dimension: ${dim}`); +} + +for (const sev of ['P0', 'P1', 'P2']) { + assert.ok(content.includes(sev), `should mention severity ${sev}`); +} + +for (const anchor of [ + 'feeTokenID', + '2818', + '2910', + 'GasPriceOracle', + 'read-only', +]) { + assert.ok( + content.includes(anchor), + `morph-dapp-code-review SKILL should mention ${anchor}` + ); +} + +console.log('morph-dapp-code-review-skill: ok'); diff --git a/__tests__/morph-dapp-codegen-skill.test.mjs b/__tests__/morph-dapp-codegen-skill.test.mjs new file mode 100644 index 000000000..ca8b259c9 --- /dev/null +++ b/__tests__/morph-dapp-codegen-skill.test.mjs @@ -0,0 +1,48 @@ +/** + * Sanity check for skills/morph-dapp-codegen/SKILL.md: + * frontmatter shape, TDD red/green flow, and Morph-specific guardrails. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const SKILL_PATH = path.join(ROOT, 'skills/morph-dapp-codegen/SKILL.md'); + +const content = fs.readFileSync(SKILL_PATH, 'utf8'); + +assert.match(content, /^---\r?\n[\s\S]*?\r?\n---/, 'should have YAML frontmatter'); +assert.match(content, /^name:\s*morph-dapp-codegen\s*$/m, 'name must equal directory'); +assert.match(content, /Use when|当用户/i, 'description should include trigger phrasing'); + +for (const heading of [ + '## When to use', + '## Prerequisites', + '## Execution Steps', + '## Self-Check', + '## Related Skills', +]) { + assert.ok(content.includes(heading), `should include section: ${heading}`); +} + +for (const phase of ['Phase 1', 'Phase 2', 'Phase 3']) { + assert.ok(content.includes(phase), `should describe ${phase}`); +} + +for (const anchor of [ + 'feeTokenID', + 'feeLimit', + '@morph-network/chain', + 'GasPriceOracle', + 'morph-dapp-planning', + 'morph-dapp-code-review', +]) { + assert.ok( + content.includes(anchor), + `morph-dapp-codegen SKILL should mention ${anchor}` + ); +} + +console.log('morph-dapp-codegen-skill: ok'); diff --git a/__tests__/morph-dapp-planning-skill.test.mjs b/__tests__/morph-dapp-planning-skill.test.mjs new file mode 100644 index 000000000..924fe542f --- /dev/null +++ b/__tests__/morph-dapp-planning-skill.test.mjs @@ -0,0 +1,49 @@ +/** + * Sanity check for skills/morph-dapp-planning/SKILL.md: + * frontmatter shape, key sections, and Morph-specific anchors. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const SKILL_PATH = path.join(ROOT, 'skills/morph-dapp-planning/SKILL.md'); + +const content = fs.readFileSync(SKILL_PATH, 'utf8'); + +assert.match(content, /^---\r?\n[\s\S]*?\r?\n---/, 'should have YAML frontmatter'); +assert.match(content, /^name:\s*morph-dapp-planning\s*$/m, 'name must equal directory'); +assert.match(content, /Use when|当用户/i, 'description should include trigger phrasing'); + +for (const heading of [ + '## When to use', + '## Execution Steps', + '## Self-Check', + '## Related Skills', +]) { + assert.ok(content.includes(heading), `should include section: ${heading}`); +} + +for (const anchor of [ + 'planning/', + 'Product brief', + 'Figma', + 'Goals', + 'Test Cases', + 'Target Files', + 'Morph Constraints', + 'Open Questions', + 'feeTokenID', + 'feeLimit', + '2818', + '2910', +]) { + assert.ok( + content.includes(anchor), + `morph-dapp-planning SKILL should mention ${anchor}` + ); +} + +console.log('morph-dapp-planning-skill: ok'); diff --git a/__tests__/morph-dapp-workflow-skill.test.mjs b/__tests__/morph-dapp-workflow-skill.test.mjs new file mode 100644 index 000000000..a7a87dac4 --- /dev/null +++ b/__tests__/morph-dapp-workflow-skill.test.mjs @@ -0,0 +1,56 @@ +/** + * Sanity check for skills/morph-dapp-workflow/SKILL.md: + * frontmatter (incl. metadata.orchestrates), three-stage flow, + * pointers to child skills, no auto-commit promise. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const SKILL_PATH = path.join(ROOT, 'skills/morph-dapp-workflow/SKILL.md'); +const SKILLS_DIR = path.join(ROOT, 'skills'); + +const content = fs.readFileSync(SKILL_PATH, 'utf8'); + +assert.match(content, /^---\r?\n[\s\S]*?\r?\n---/, 'should have YAML frontmatter'); +assert.match(content, /^name:\s*morph-dapp-workflow\s*$/m, 'name must equal directory'); +assert.match(content, /Use when|当用户/i, 'description should include trigger phrasing'); + +const ORCHESTRATES = [ + 'morph-dapp-planning', + 'morph-dapp-codegen', + 'morph-dapp-code-review', +]; + +for (const child of ORCHESTRATES) { + assert.ok( + content.includes(child), + `workflow should reference child skill: ${child}` + ); + assert.ok( + fs.existsSync(path.join(SKILLS_DIR, child, 'SKILL.md')), + `orchestrated child must exist on disk: skills/${child}/SKILL.md` + ); +} + +assert.match( + content, + /metadata:\s*\r?\n\s*orchestrates:/, + 'frontmatter should declare metadata.orchestrates' +); + +for (const stage of ['Stage 1', 'Stage 2', 'Stage 3', 'Stage 4']) { + assert.ok(content.includes(stage), `should describe ${stage}`); +} + +assert.ok( + /never auto[\s-]?(commit|push)|do not auto[\s-]?(commit|push)|no auto[\s-]?(commit|push)/i.test( + content + ), + 'workflow must explicitly forbid auto commit/push' +); + +console.log('morph-dapp-workflow-skill: ok'); diff --git a/__tests__/morph-doc-agent.test.mjs b/__tests__/morph-doc-agent.test.mjs new file mode 100644 index 000000000..f1cc0b213 --- /dev/null +++ b/__tests__/morph-doc-agent.test.mjs @@ -0,0 +1,42 @@ +/** + * Assert agents/morph-doc-agent.md: frontmatter, key conventions, discoverability. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const AGENT_PATH = path.join(ROOT, 'agents/morph-doc-agent.md'); + +assert.ok(fs.existsSync(AGENT_PATH), `morph-doc-agent should exist: ${AGENT_PATH}`); + +const content = fs.readFileSync(AGENT_PATH, 'utf8'); +const fm = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); +assert.ok(fm, 'should have YAML frontmatter'); + +const block = fm[1]; +function field(name) { + const m = new RegExp(`^${name}:\\s*(.+)$`, 'm').exec(block); + return m ? m[1].trim() : null; +} + +assert.equal(field('name'), 'morph-doc-agent', 'frontmatter name'); +const desc = field('description'); +assert.ok(desc && desc.length > 20, 'description should be non-empty and substantive'); +assert.match(desc, /SKILL|skill/i, 'description should mention SKILL/skill'); +assert.match(content, /frontmatter|YAML/i, 'body should stress frontmatter/YAML'); +assert.match(content, /skills\/<.*>\/SKILL\.md|skills\/morph-/i, 'should point to skills//SKILL.md path'); +assert.match( + content, + /Doc-as-SKILL|SKILL\.md/i, + 'should reflect Doc-as-SKILL or SKILL.md' +); +assert.match( + content, + /existing skill|inventory|audit|Auditing|morph-doc-skill-inventory/i, + 'should describe existing-skill checks and point to morph-doc-skill-inventory tests' +); + +console.log('morph-doc-agent: ok'); diff --git a/__tests__/morph-doc-skill-inventory.test.mjs b/__tests__/morph-doc-skill-inventory.test.mjs new file mode 100644 index 000000000..dbf8dabc9 --- /dev/null +++ b/__tests__/morph-doc-skill-inventory.test.mjs @@ -0,0 +1,114 @@ +/** + * Enumerate skills//SKILL.md: assert frontmatter, name matches directory, description is usable. + * Aligns with agents/morph-doc-agent.md auditing / existing-skill checks. + * + * Also emits freshness warnings (non-failing) when last_verified is missing + * or older than the decay threshold. See VISION.md § Skill Verification Metadata. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const SKILLS_DIR = path.join(ROOT, 'skills'); + +const DECAY_THRESHOLD_DAYS = 90; +const MS_PER_DAY = 24 * 60 * 60 * 1000; + +function parseFrontmatter(content) { + const m = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); + if (!m) return null; + const block = m[1]; + function field(name) { + const line = new RegExp(`^${name}:\\s*(.+)$`, 'm').exec(block); + if (!line) return null; + let v = line[1].trim(); + if ( + (v.startsWith('"') && v.endsWith('"')) || + (v.startsWith("'") && v.endsWith("'")) + ) { + v = v.slice(1, -1); + } + return v; + } + return { block, field }; +} + +function parseIsoDate(value) { + if (!value) return null; + const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value); + if (!match) return null; + const [, y, mo, d] = match; + const dt = new Date(Date.UTC(Number(y), Number(mo) - 1, Number(d))); + return Number.isNaN(dt.getTime()) ? null : dt; +} + +const entries = fs.readdirSync(SKILLS_DIR, { withFileTypes: true }); +const skillDirs = entries.filter((e) => e.isDirectory()).map((e) => e.name); + +assert.ok(skillDirs.length > 0, 'skills/ should contain at least one skill directory'); + +const freshnessWarnings = []; +const now = Date.now(); + +for (const id of skillDirs) { + const skillPath = path.join(SKILLS_DIR, id, 'SKILL.md'); + assert.ok( + fs.existsSync(skillPath), + `each skill directory should have SKILL.md: skills/${id}/SKILL.md` + ); + + const content = fs.readFileSync(skillPath, 'utf8'); + const fm = parseFrontmatter(content); + assert.ok(fm, `skills/${id}/SKILL.md should have YAML frontmatter`); + + const name = fm.field('name'); + const description = fm.field('description'); + + assert.equal( + name, + id, + `SKILL frontmatter name should match directory: skills/${id}` + ); + assert.ok( + description && description.length >= 20, + `skills/${id}/SKILL.md description should be non-empty and substantive (≥20 chars)` + ); + assert.match( + description, + /use when|when the user|当用户|用于|适用于/i, + `skills/${id}/SKILL.md description should include trigger phrasing (e.g. "Use when…")` + ); + + const lastVerifiedRaw = fm.field('last_verified'); + if (!lastVerifiedRaw) { + freshnessWarnings.push( + `skills/${id}/SKILL.md missing last_verified (see VISION.md § Skill Verification Metadata)` + ); + continue; + } + const lastVerified = parseIsoDate(lastVerifiedRaw); + if (!lastVerified) { + freshnessWarnings.push( + `skills/${id}/SKILL.md last_verified is not an ISO date (YYYY-MM-DD): ${lastVerifiedRaw}` + ); + continue; + } + const ageDays = Math.floor((now - lastVerified.getTime()) / MS_PER_DAY); + if (ageDays > DECAY_THRESHOLD_DAYS) { + freshnessWarnings.push( + `skills/${id}/SKILL.md last_verified is ${ageDays} days old (threshold ${DECAY_THRESHOLD_DAYS}); re-verify against sources` + ); + } +} + +if (freshnessWarnings.length > 0) { + console.warn('morph-doc-skill-inventory: freshness warnings (non-fatal)'); + for (const w of freshnessWarnings) { + console.warn(' ⚠️', w); + } +} + +console.log('morph-doc-skill-inventory: ok (%d skills)', skillDirs.length); diff --git a/__tests__/morph-js-sdk-skill.test.mjs b/__tests__/morph-js-sdk-skill.test.mjs new file mode 100644 index 000000000..0c1dd9ed9 --- /dev/null +++ b/__tests__/morph-js-sdk-skill.test.mjs @@ -0,0 +1,22 @@ +/** + * Assert morph-js-sdk SKILL.md has a minimal-example section and key identifiers aligned with docs. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const SKILL_PATH = path.join(ROOT, 'skills/morph-js-sdk/SKILL.md'); + +const content = fs.readFileSync(SKILL_PATH, 'utf8'); + +assert.ok(content.includes('## Minimal Example'), 'SKILL should include a Minimal Example section'); +assert.ok(content.includes('morphHoodiTestnet'), 'Viem snippet should include morphHoodiTestnet'); +assert.ok(content.includes('MorphSigner'), 'Ethers snippet should include MorphSigner'); +assert.ok(content.includes('feeTokenID'), 'examples should include feeTokenID'); +assert.ok(content.includes('feeLimit'), 'examples should include feeLimit'); +assert.match(content, /```typescript\n[\s\S]*```\n[\s\S]*```typescript/, 'should include at least two typescript fenced blocks'); + +console.log('morph-js-sdk-skill: ok'); diff --git a/__tests__/morph-rails-skill.test.mjs b/__tests__/morph-rails-skill.test.mjs new file mode 100644 index 000000000..f0ea69330 --- /dev/null +++ b/__tests__/morph-rails-skill.test.mjs @@ -0,0 +1,43 @@ +/** + * Assert morph-rails SKILL.md has frontmatter, key routing, and topic skill references. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const SKILL_PATH = path.join(ROOT, 'skills/morph-rails/SKILL.md'); + +const content = fs.readFileSync(SKILL_PATH, 'utf8'); + +assert.match( + content, + /^---\r?\nname:\s*morph-rails\r?\n/, + 'frontmatter name should be morph-rails' +); +assert.ok(content.includes('description:'), 'should include description field'); +assert.ok( + content.includes('docs/morph-rails/0-overview.md'), + 'should cite 0-overview as source of truth' +); +assert.ok( + content.includes('docs/about-morph/morph-rails.md'), + 'should cite about-morph morph-rails' +); +assert.ok( + content.includes('docs/morph-rails/agentic-payment/1-x402-facilitator.md'), + 'should route x402 details to 1-x402-facilitator doc' +); +assert.ok( + content.includes('docs/about-morph/10-altfeetx.md'), + 'should route AltFee signing to 10-altfeetx doc' +); +assert.ok( + content.includes('morph-js-sdk'), + 'should route to morph-js-sdk' +); +assert.ok(content.includes('## Self-Check'), 'should include Self-Check section'); + +console.log('morph-rails-skill: ok'); diff --git a/__tests__/morph-skill-ln.test.mjs b/__tests__/morph-skill-ln.test.mjs new file mode 100644 index 000000000..604d233fe --- /dev/null +++ b/__tests__/morph-skill-ln.test.mjs @@ -0,0 +1,152 @@ +/** + * morph-skill-ln: script exists, runs, --dry-run output matches expectations. + */ +import assert from 'node:assert/strict'; +import { spawnSync } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const REPO_CURSOR_SKILLS = path.join(ROOT, '.cursor', 'skills').replace(/\\/g, '/'); +const REPO_CLAUDE_SKILLS = path.join(ROOT, '.claude', 'skills').replace(/\\/g, '/'); +const REPO_OPENCLAW_SKILLS = path.join(ROOT, '.openclaw', 'skills').replace(/\\/g, '/'); +const REPO_WINDSURF_SKILLS = path.join(ROOT, '.windsurf', 'skills').replace(/\\/g, '/'); +const SCRIPT = path.join(ROOT, 'scripts', 'morph-skill-ln'); + +assert.ok(fs.existsSync(SCRIPT), 'scripts/morph-skill-ln should exist'); + +function run(args, env = {}) { + const r = spawnSync('bash', [SCRIPT, ...args], { + cwd: ROOT, + encoding: 'utf8', + env: { ...process.env, ...env }, + }); + return { status: r.status, stdout: r.stdout ?? '', stderr: r.stderr ?? '' }; +} + +const help = run(['--help']); +assert.equal(help.status, 0, '--help should succeed'); +assert.match(help.stdout, /morph-skill-ln/, '--help should include script name'); +assert.match(help.stdout, /--root|-r/, 'should document path options'); +assert.match(help.stdout, /--agent|-a/, 'should document --agent'); +assert.match(help.stdout, /--unlink/, 'should document --unlink'); + +const dry = run(['--dry-run'], { MORPH_DOC_ROOT: ROOT }); +assert.equal(dry.status, 0, '--dry-run should succeed'); +assert.match(dry.stdout, /ln -sfn/m, 'dry-run should print ln -sfn'); +assert.ok(dry.stdout.includes(REPO_CURSOR_SKILLS), 'default should include cursor'); +assert.ok(dry.stdout.includes(REPO_CLAUDE_SKILLS), 'default should include claude'); +assert.ok(dry.stdout.includes(REPO_OPENCLAW_SKILLS), 'default should include openclaw'); +assert.ok(dry.stdout.includes(REPO_WINDSURF_SKILLS), 'default should include windsurf'); + +const dryCursorOnly = run(['--dry-run', '-a', 'cursor'], { + MORPH_DOC_ROOT: ROOT, +}); +assert.equal(dryCursorOnly.status, 0); +assert.ok(dryCursorOnly.stdout.includes(REPO_CURSOR_SKILLS)); +assert.doesNotMatch(dryCursorOnly.stdout, /\.claude\/skills/m); +assert.doesNotMatch(dryCursorOnly.stdout, /\.openclaw\/skills/m); +assert.doesNotMatch(dryCursorOnly.stdout, /\.windsurf\/skills/m); + +const dryClaudeOnly = run(['--dry-run', '--root', ROOT, '--agent', 'claude']); +assert.equal(dryClaudeOnly.status, 0); +assert.ok(dryClaudeOnly.stdout.includes(REPO_CLAUDE_SKILLS)); +assert.doesNotMatch(dryClaudeOnly.stdout, /\.cursor\/skills/m); + +const dryOpenclawOnly = run(['--dry-run', '--root', ROOT, '-a', 'openclaw']); +assert.equal(dryOpenclawOnly.status, 0); +assert.ok(dryOpenclawOnly.stdout.includes(REPO_OPENCLAW_SKILLS)); +assert.doesNotMatch(dryOpenclawOnly.stdout, /\.cursor\/skills/m); + +const dryWindsurfOnly = run(['--dry-run', '--root', ROOT, '--agent', 'windsurf']); +assert.equal(dryWindsurfOnly.status, 0); +assert.ok(dryWindsurfOnly.stdout.includes(REPO_WINDSURF_SKILLS)); +assert.doesNotMatch(dryWindsurfOnly.stdout, /\.cursor\/skills/m); + +const dryWindsurfPath = run([ + '--dry-run', + '--root', + ROOT, + '--agent', + '.windsurf/skills', +]); +assert.equal(dryWindsurfPath.status, 0); +assert.ok(dryWindsurfPath.stdout.includes(REPO_WINDSURF_SKILLS)); + +const dryMulti = run([ + '--dry-run', + '--agent', + 'cursor', + '--agent', + 'codex', + '--root', + ROOT, +]); +assert.equal(dryMulti.status, 0); +assert.ok(dryMulti.stdout.includes(REPO_CURSOR_SKILLS)); +assert.match(dryMulti.stdout, /\.codex\/skills/m); + +const bad = run(['--nope']); +assert.notEqual(bad.status, 0, 'unknown flag should be non-zero'); + +const badAgent = run(['--dry-run', '--agent', 'not-a-valid-name-xyz']); +assert.notEqual(badAgent.status, 0, 'unknown builtin name without path-like token should fail'); + +const badRoot = run(['--root']); +assert.notEqual(badRoot.status, 0, '--root without path should fail'); + +const badAgentArg = run(['--agent']); +assert.notEqual(badAgentArg.status, 0, '--agent without value should fail'); + +const single = run(['--dry-run', 'morph-js-sdk'], { MORPH_DOC_ROOT: ROOT }); +assert.equal(single.status, 0); +assert.match(single.stdout, /morph-js-sdk/m, 'single-skill dry-run should mention id'); + +// --unlink: temp symlink in repo; dry-run / real delete (skip if symlinks disallowed) +const UNLINK_TEST_ID = 'zzz-morph-skill-ln-unlink-test'; +const cursorSkillsDir = path.join(ROOT, '.cursor', 'skills'); +const unlinkTarget = path.join(cursorSkillsDir, UNLINK_TEST_ID); +const morphJsSdk = path.join(ROOT, 'skills', 'morph-js-sdk'); +let symlinkOk = false; +try { + fs.mkdirSync(cursorSkillsDir, { recursive: true }); + try { + fs.unlinkSync(unlinkTarget); + } catch { + // ignore + } + fs.symlinkSync(morphJsSdk, unlinkTarget); + symlinkOk = true; +} catch (e) { + if (e && (e.code === 'EPERM' || e.code === 'EACCES')) { + console.warn( + 'morph-skill-ln: skip unlink integration (symlink not permitted in this environment)' + ); + } else { + throw e; + } +} + +if (symlinkOk) { + const dryUnlink = run(['--unlink', '--dry-run', '-a', 'cursor', UNLINK_TEST_ID], { + MORPH_DOC_ROOT: ROOT, + }); + assert.equal(dryUnlink.status, 0); + assert.match(dryUnlink.stdout, /rm -f/m, 'unlink dry-run should print rm -f'); + assert.ok(fs.lstatSync(unlinkTarget).isSymbolicLink(), 'dry-run should not remove symlink'); + + const realUnlink = run(['--unlink', '-a', 'cursor', UNLINK_TEST_ID], { + MORPH_DOC_ROOT: ROOT, + }); + assert.equal(realUnlink.status, 0); + assert.ok(!fs.existsSync(unlinkTarget), 'unlink should remove symlink'); +} + +const unlinkMissing = run(['--unlink', '-a', 'cursor', 'nonexistent-skill-xyz'], { + MORPH_DOC_ROOT: ROOT, +}); +assert.notEqual(unlinkMissing.status, 0, 'unlink with no symlink should fail'); + +console.log('morph-skill-ln: ok'); diff --git a/__tests__/morph-tx-cost-skill.test.mjs b/__tests__/morph-tx-cost-skill.test.mjs new file mode 100644 index 000000000..4ff4d2973 --- /dev/null +++ b/__tests__/morph-tx-cost-skill.test.mjs @@ -0,0 +1,45 @@ +/** + * Assert morph-tx-cost SKILL.md has frontmatter, key doc references, and related skill routing. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const SKILL_PATH = path.join(ROOT, 'skills/morph-tx-cost/SKILL.md'); + +const content = fs.readFileSync(SKILL_PATH, 'utf8'); + +assert.match( + content, + /^---\r?\nname:\s*morph-tx-cost\r?\n/, + 'frontmatter name should be morph-tx-cost' +); +assert.ok(content.includes('description:'), 'should include description field'); +assert.ok( + content.includes( + 'docs/build-on-morph/build-on-morph/4-understand-transaction-cost-on-morph.md' + ), + 'should cite understand-transaction-cost doc as source of truth' +); +assert.ok( + content.includes('l1Fee + l2Fee'), + 'should mention l1Fee + l2Fee (insufficient funds semantics or copy)' +); +assert.ok( + content.includes('getL1Fee'), + 'should mention GasPriceOracle getL1Fee' +); +assert.ok( + content.includes('docs/about-morph/10-altfeetx.md'), + 'should route token gas / AltFee to 10-altfeetx doc' +); +assert.ok( + content.includes('morph-js-sdk'), + 'should route to morph-js-sdk' +); +assert.ok(content.includes('## Self-Check'), 'should include Self-Check section'); + +console.log('morph-tx-cost-skill: ok'); diff --git a/__tests__/run-tests-manifest.test.mjs b/__tests__/run-tests-manifest.test.mjs new file mode 100644 index 000000000..8c3acb93f --- /dev/null +++ b/__tests__/run-tests-manifest.test.mjs @@ -0,0 +1,22 @@ +/** + * Ensure every __tests__/*.test.mjs is listed in scripts/run-tests.mjs TEST_FILES + * so new tests are not omitted from `pnpm test`. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { TEST_FILES } from '../scripts/run-tests.mjs'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const onDisk = fs + .readdirSync(__dirname) + .filter((f) => f.endsWith('.test.mjs')) + .sort(); +const listed = [...TEST_FILES].sort(); + +assert.deepEqual( + onDisk, + listed, + '__tests__/*.test.mjs must match TEST_FILES in scripts/run-tests.mjs', +); diff --git a/__tests__/skills-sidebar.test.mjs b/__tests__/skills-sidebar.test.mjs new file mode 100644 index 000000000..40ef2d7ce --- /dev/null +++ b/__tests__/skills-sidebar.test.mjs @@ -0,0 +1,35 @@ +/** + * sidebars-skills.js doc ids must match each skills//SKILL.md (avoid missing nav entries). + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const SKILLS_DIR = path.join(ROOT, 'skills'); +const SIDEBAR_FILE = path.join(ROOT, 'sidebars-skills.js'); + +const entries = fs.readdirSync(SKILLS_DIR, { withFileTypes: true }); +const expectedIds = entries + .filter((e) => e.isDirectory()) + .map((e) => e.name) + .sort() + .map((id) => `${id}/SKILL`); + +const sidebarSrc = fs.readFileSync(SIDEBAR_FILE, 'utf8'); +const listed = [...sidebarSrc.matchAll(/id:\s*['"]([^'"]+)['"]/g)] + .map((m) => m[1]) + .filter((id) => id !== 'README'); + +listed.sort(); +const sortedExpected = [...expectedIds].sort(); + +assert.deepEqual( + listed, + sortedExpected, + 'sidebars-skills.js Skill playbook doc ids must match skills/*/SKILL.md directories (update sidebar when adding a skill)' +); + +console.log('skills-sidebar: ok (%d skills)', expectedIds.length); diff --git a/__tests__/vision-md.test.mjs b/__tests__/vision-md.test.mjs new file mode 100644 index 000000000..12445d177 --- /dev/null +++ b/__tests__/vision-md.test.mjs @@ -0,0 +1,50 @@ +/** + * VISION.md: existence, SKILL-style frontmatter, key section anchors (match VISION.md headings). + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const VISION = path.join(ROOT, 'VISION.md'); + +assert.ok(fs.existsSync(VISION), 'VISION.md exists'); + +const content = fs.readFileSync(VISION, 'utf8'); +assert.match(content, /^---\r?\n/, 'VISION.md has YAML frontmatter opening'); + +function parseFrontmatter(raw) { + const m = raw.match(/^---\r?\n([\s\S]*?)\r?\n---/); + if (!m) return null; + const fm = m[1]; + const name = /^name:\s*(.+)$/m.exec(fm); + const desc = /^description:\s*(.+)$/m.exec(fm); + return { + name: name ? name[1].trim().replace(/^["']|["']$/g, '') : null, + description: desc ? desc[1].trim() : null, + }; +} + +const fm = parseFrontmatter(content); +assert.ok(fm, 'VISION.md frontmatter parseable'); +assert.equal(fm.name, 'morph-vision', 'VISION.md name is morph-vision'); +assert.ok(fm.description && fm.description.length > 20, 'VISION.md description is non-trivial'); + +const headings = [ + 'Documentation as SKILL', + 'External Brain', + 'Developer Toolchain', + 'Write Docs to the SKILL Standard', + 'Execution Steps', + 'Self-Check', +]; +for (const h of headings) { + assert.ok( + content.includes(h), + `VISION.md contains heading/phrase: ${h}` + ); +} + +console.log('vision-md: ok'); diff --git a/agents/morph-dapp-agent.md b/agents/morph-dapp-agent.md new file mode 100644 index 000000000..dabdc9c3a --- /dev/null +++ b/agents/morph-dapp-agent.md @@ -0,0 +1,64 @@ +--- +name: morph-dapp-agent +description: "Morph dApp end-to-end delivery agent: receives a Morph feature request (product brief / API doc / Figma link / verbal description) and drives it through planning → TDD implementation → multi-dimension review for Morph contracts, the JS SDK, and Morph-facing frontends. Use when the user wants to take a Morph requirement from idea to mergeable code, asks for an end-to-end planning-to-review run, requests TDD implementation against an existing planning document, or wants a Morph diff reviewed across security / performance / quality / planning compliance. Routes single-step requests directly to the matching child SKILL." +--- + +You are **morph-dapp-agent**: a delivery role scoped to the `morph-doc` repository that takes **one Morph dApp goal** from intake to mergeable code by orchestrating four existing SKILLs. You never inline SKILL content — you **route** to the SKILLs and honor their gates. + +## Core Principles (must follow) + +1. **Pointer-only orchestration.** Your job is routing and gate-checking, not re-authoring the SKILLs. When a SKILL is loaded, follow its body; never paraphrase its steps back into your own prompt. This aligns with [`VISION.md`](../VISION.md) § Cross-Skill References. +2. **Single goal → single pipeline run.** One user goal maps to one `planning/.md` + one code landing + one review report. Do not fan out into parallel multi-feature runs in the same session. +3. **Morph facts come from the repo, never training data.** Addresses, chainIds, RPCs, Alt Fee fields must be resolved via the fact-table SKILLs that the child SKILLs already cite — see [`CLAUDE.md`](../CLAUDE.md) § Repo-specific conventions. +4. **Read-only on review, no auto commit/push at any stage.** The review SKILL must stay read-only; wrap-up surfaces blockers to the user and stops. + +## Default SKILL set (must be loadable) + +Orchestration layer (routes and gates): + +- `skills/morph-dapp-workflow/SKILL.md` — the three-stage orchestrator (Planning → Code → Review → Wrap-up). + +Child SKILLs the workflow hands off to: + +- `skills/morph-dapp-planning/SKILL.md` — product inputs / API / Figma → planning document at `planning/.md`. +- `skills/morph-dapp-codegen/SKILL.md` — TDD implementation against that planning document. +- `skills/morph-dapp-code-review/SKILL.md` — 4-dimension review (security / performance / quality / planning compliance). + +Fact-table SKILLs are **already referenced by the four child SKILLs above via their `verified_against` and `Related Skills` sections** — do not re-list them here; load them transitively only when the executing child SKILL tells you to. + +If any of the four files above is missing from the current IDE, stop and point the user at [`skills/README.md`](../skills/README.md) (use `scripts/morph-skill-ln` to symlink into Cursor / Claude Code / OpenClaw global dirs). + +## Routing rules + +Classify every incoming request before picking a SKILL: + +| User intent | Action | +|---|---| +| Full pipeline ("take this requirement to mergeable code", "run planning → review") | Hand off to `morph-dapp-workflow`; it owns stage transitions. | +| Only planning ("help me write/revise the planning document") | Hand off directly to `morph-dapp-planning`; do not invoke the workflow. | +| Only implementation against an existing planning document ("TDD this", "land code for `planning/.md`") | Hand off directly to `morph-dapp-codegen`. | +| Only review ("review this PR / diff") | Hand off directly to `morph-dapp-code-review`. | +| Pure fact lookup ("what is Morph mainnet chainId", "where are predeployed addresses") | Do **not** invoke any of the four dApp SKILLs; defer to the fact-table SKILL cited by the relevant child (e.g. `morph-contracts`, `morph-js-sdk`, `morph-tx-cost`). | +| Ambiguous goal | Ask the user **once** (in a single clarification turn) which stage they want to enter; never guess. | + +## Execution protocol + +1. **Intake.** Restate the user's goal in one sentence; list inputs they provided (product brief link / API doc / Figma URL / existing planning path / commit range). +2. **Classify** per the routing table above. +3. **Hand off** to the chosen SKILL and follow its body verbatim. When `morph-dapp-workflow` is picked, let it drive stage gates; do not second-guess Stage 1/2/3 output inside this agent prompt. +4. **Honor gates.** The workflow's gates (open 🔴 questions cleared, tests green, review blockers summarized) are binding. On failure, stop and surface the specific blocker + the file path to fix — do not "retry" silently. +5. **Wrap-up output.** Always return three artifacts to the user when a full run completes: the planning document path, the changed-file list, and the review report path or inline report. Explicitly note whether any review P0 or still-open 🔴 blocks a merge. + +## What Not To Do + +- Do not inline the body of any child SKILL into this prompt or your reply; cite the SKILL path and let the tool read it. +- Do not skip the planning stage for non-trivial features — if the user pushes to jump straight to code without a planning document, ask once; if they insist, record the decision in the planning document's Open Questions or abort. +- Do not hard-code Morph chainIds, RPC URLs, or predeployed addresses in any generated output — the child SKILLs already enforce this, so reject code that violates it instead of patching it up silently. +- Do not auto `git commit` / `git push`; the review SKILL is read-only and the wrap-up stage defers the merge decision to the user. +- Do not write new SKILLs or refactor existing ones from this agent; for that, hand off to [`morph-doc-agent`](./morph-doc-agent.md). + +## Related Skills + +- `morph-dapp-workflow` — default entry for end-to-end runs; it internally delegates to the three below. +- `morph-dapp-planning` / `morph-dapp-codegen` / `morph-dapp-code-review` — atomic stages this agent routes to. +- `morph-doc-agent` — sibling agent; use it (not this one) when the goal is to author or audit a SKILL, not to ship Morph dApp code. diff --git a/agents/morph-doc-agent.md b/agents/morph-doc-agent.md new file mode 100644 index 000000000..73081460f --- /dev/null +++ b/agents/morph-doc-agent.md @@ -0,0 +1,89 @@ +--- +name: morph-doc-agent +description: Dedicated to the Morph doc repository: given a single "goal/topic" from the user, generates a loadable, executable Agent Skill (skills//SKILL.md under the repo root); or runs conformance checks on existing skills (frontmatter, directory-name consistency, doc_skill_id pairing). Doc-as-SKILL — write or audit following the Skill spec so the model can instantiate the corresponding domain behavior from that SKILL. Use when writing or refactoring morph-doc skills, auditing existing skills, turning a topic into a skill, or when the user says they want a skill doc from a goal. +--- + +You are **morph-doc-agent**: in the `morph-doc` repository, you turn a user's **single goal** into **a SKILL that a model can directly use**, or run **conformance checks and gap reports** on existing `skills//SKILL.md` files — not lengthy prose written for humans. + +## Core Principles (must follow) + +1. **Doc-as-SKILL** + The output is an **Agent Skill**: the main file is `SKILL.md`, with optional `references/`, `scripts/`, `assets/`. Do not create auxiliary docs like README or CHANGELOG under the skill directory (unless the repo explicitly requires it). + +2. **Write "docs" to the SKILL spec** + - **Required YAML frontmatter**: `name` (matches directory name, lowercase + hyphens) and `description` (third-person, clearly states capability boundary and **trigger scenarios** to help the model route). + - **Recommended frontmatter**: `last_verified` (ISO date) and `verified_against` (list of source paths). See [`VISION.md`](../VISION.md) § Skill Verification Metadata for semantics and the 90-day decay rule. + - **Body**: concise and executable; assume the model already has general programming knowledge — only add repo/topic-specific flows, constraints, and facts. + - **Cross-skill references**: when pointing to a sibling skill, use a dedicated `## Related Skills` section (pointer only, no content copy). See [`VISION.md`](../VISION.md) § Cross-Skill References. + +3. **Single goal → single skill** + User provides one goal (topic, scenario, type of questions to cover) → you derive a **skill directory name** (e.g. `morph-`) and produce a **complete** `SKILL.md`. + +4. **Runnable immediately after writing** + Any reader (or model) who places the skill in **`skills//`** in the repo (or symlinks it to Cursor / Claude / OpenClaw global skills per [`skills/README.md`](../skills/README.md)) should be able to trigger it by matching the `description` in conversation — and the model should execute per the SKILL body. Therefore the body must contain: **what to read first, what to do next, what to self-check**. + +## Alignment with this repo + +- **Reference existing examples**: read `skills/morph-js-sdk/SKILL.md`, `skills/morph-contracts/SKILL.md`, etc., and maintain a consistent structure (e.g. "Execution Playbook / Single Source of Truth / Core Concepts / Execution Steps / Self-Check" — trim or adapt by topic, but avoid empty boilerplate). +- **Relationship to site docs**: if the topic has an authoritative page in `docs/`, state the **single source of truth path** (file path) in the SKILL and avoid copy-pasting large blocks of text; for details, use "open that file" + extract the minimum necessary tables/formulas. +- **`doc_skill_id` convention**: if the user requires pairing with a specific MDX/MD doc, the corresponding doc's frontmatter should use `doc_skill_id: `; when generating the SKILL, `name` must match. + +## Execution Steps After Receiving a User "Goal" + +1. **Clarify scope (if goal is too broad)** + Confirm in one sentence: which chain the skill covers (Mainnet/Hoodi), the audience (contract/node/SDK), and **what is out of scope**. + +2. **Classify doc type** + Per [`VISION.md`](../VISION.md) § Pairing Policy, decide whether the topic is *actionable*, *fact-table*, *conceptual*, *narrative*, or *generated*. Only actionable and fact-table docs need a paired Skill; skip creation for narrative/generated topics and tell the user why. + +3. **Search the repo** + Use search tools to locate specs, examples, and existing components in `docs/` and `src/`; record paths in the SKILL's "Single Source of Truth" or `references/`. Capture these paths — they become `verified_against` entries. + +4. **Draft the `description`** + List how users will ask, keywords, package names/chain IDs — consistent with Cursor Skill trigger semantics. + +5. **Write the `SKILL.md` body** + - Valid YAML in the top frontmatter, including `last_verified` (today's date) and `verified_against` (paths from Step 3). + - Body priority: flows, commands, field tables, common pitfalls, and boundaries with related skills. + - Large API tables can go in `references/.md`; the SKILL body specifies "when to open it". + - If the topic connects to other skills, add a `## Related Skills` section (pointer only). + +6. **Self-check checklist (add as the last section of the SKILL)** + 3–7 checkable items so the model can verify key facts before delivering (addresses, mutual exclusions, chain IDs, etc.). + +7. **Destination path** + Explicitly tell the user the file should land at: **`skills//SKILL.md`** (and optionally reference the global symlink instructions in [`skills/README.md`](../skills/README.md)). + +## Auditing Existing Skills + +When the user requests "check / audit / inventory existing skills" or a consistency check before a refactor, follow the steps below in order; **automated validation** defers to the repo tests (see "Alignment with Tests" below). + +1. **Enumerate** + List all **first-level subdirectories** under `skills/` (excluding non-directory files like `README.md`); each skill must have **`skills//SKILL.md`**. + +2. **Frontmatter** + For each `SKILL.md` check: valid YAML frontmatter exists; `name` **equals** the directory name `` (lowercase, hyphenated); `description` is non-empty and contains **trigger scenarios / capability boundary** (for model routing). + +3. **Body structure (sampled or full)** + Confirm at least one executable thread exists: e.g. a "Single Source of Truth" or equivalent pointer to a `docs/` path, "Execution Steps" or "Self-Check" — can be trimmed by topic, but headings without any action are not acceptable. + +4. **Doc pairing** + If a MDX/MD file declares `doc_skill_id`, its value must equal the corresponding directory name, and that `skills//SKILL.md`'s `name` must match. Pairing is locked by [`__tests__/doc-skill-pairing.test.mjs`](../__tests__/doc-skill-pairing.test.mjs); frontmatter-to-directory-name consistency for all skills is validated by [`__tests__/morph-doc-skill-inventory.test.mjs`](../__tests__/morph-doc-skill-inventory.test.mjs). + +5. **Output audit report** + Provide a table or list with: passing items, failing items (file path + specific issue), and optional fix suggestions (correct `name`, add `description`, add `doc_skill_id`, etc.). + +### Alignment with Tests + +- Run locally: `npm test` (includes skill inventory and pairing tests). +- When modifying skill specs or audit rules, also update **`__tests__/morph-doc-skill-inventory.test.mjs`** (and `doc-skill-pairing`'s `PAIRS` if needed). + +## What Not To Do + +- Do not write "project background stories" unrelated to execution that consume context. +- Do not stuff multiple duplicate explanations into a skill directory (one source only: SKILL or references). +- Do not omit frontmatter; do not let `name` differ from the folder name. + +## Output Format + +When the user provides only a goal without specifying a path: default output is the complete content for **creating or updating** `skills//SKILL.md`; if `references/` is needed, list relative paths and the summary-level description to write there. diff --git a/docs/build-on-morph/build-on-morph/4-understand-transaction-cost-on-morph.md b/docs/build-on-morph/build-on-morph/4-understand-transaction-cost-on-morph.md index bb15b888d..1a4edf5f1 100644 --- a/docs/build-on-morph/build-on-morph/4-understand-transaction-cost-on-morph.md +++ b/docs/build-on-morph/build-on-morph/4-understand-transaction-cost-on-morph.md @@ -3,6 +3,7 @@ title: Understand Transaction Cost on Morph lang: en-US keywords: [morph,ethereum,rollup,layer2,validity proof,optimistic zk-rollup] description: Upgrade your blockchain experience with Morph - the secure decentralized, cost-efficient, and high-performing optimistic zk-rollup solution. Try it now! +doc_skill_id: morph-tx-cost --- Transaction fees on Morph work similarly to fees on Ethereum. However, Layer 2 introduces some unique aspects. Morph's optimistic zkEVM makes these differences easy to understand and even easier to handle. diff --git a/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md b/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md new file mode 100644 index 000000000..a6b19c358 --- /dev/null +++ b/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md @@ -0,0 +1,210 @@ +--- +title: Agent-Driven Development Workflow +lang: en-US +keywords: [morph, dapp, workflow, planning, tdd, code review, agent, skill, cursor, claude, dispatch, router] +description: The single entry point for Morph dApp development via Agent Skills. Dispatches a task — from a raw product idea down to a one-line fact lookup — to the right Morph Skill (morph-dapp-workflow for end-to-end, the child skills for one stage, or the fact-table skills for domain lookups). Designed to be driven by agentic IDEs (Cursor, Claude Code, OpenClaw, Windsurf, Codex). +doc_skill_id: morph-dapp-workflow +--- + +This page is the **human-readable entry point** for every Morph dApp Agent Skill in this +repo. Think of it as a router: describe what you are about to do, find the row in the +dispatch table below, and go invoke the matching Skill. The orchestrator +[`morph-dapp-workflow`](/skills/morph-dapp-workflow/SKILL) is only one of the destinations +— for small, focused tasks you should jump straight to a child Skill or a fact-table +Skill. + +Both humans and Morph-facing agents (Cursor, Claude Code, OpenClaw, Windsurf, Codex) read +from the same source: this page plus the SKILL files under +[`skills/`](https://github.com/morph-l2/morph-doc/tree/main/skills). + +## Pick your entry Skill + +Scan the left column and pick the first row that matches your task. Each row points to a +single Skill — the Skill then self-describes its own steps. + +| If the task is… | Invoke this Skill | Notes | +|---|---|---| +| End-to-end: product brief / Figma / API doc → merge-ready code | [`morph-dapp-workflow`](/skills/morph-dapp-workflow/SKILL) | Orchestrator. Chains the three stages below with a gate after each. | +| Turn requirements into planning output | [`morph-dapp-planning`](/skills/morph-dapp-planning/SKILL) | Outputs `planning/.md` with Goals / Test Cases / Target Files / Morph Constraints. | +| Implement an approved planning document (Red → Green TDD) | [`morph-dapp-codegen`](/skills/morph-dapp-codegen/SKILL) | Requires a planning file. Never auto-commits. | +| Review a diff / PR / working tree | [`morph-dapp-code-review`](/skills/morph-dapp-code-review/SKILL) | Four-dimension review (Security / Performance / Code Quality / Planning compliance), P0/P1/P2. | +| Look up a Morph SDK call or Alt Fee field shape | [`morph-js-sdk`](/skills/morph-js-sdk/SKILL) | Fact table — use from inside the other Skills too. | +| Find a predeployed contract address | [`morph-contracts`](/skills/morph-contracts/SKILL) | Canonical address list. Always prefer this over a block explorer. | +| Compute or display transaction fees (L1 + L2) | [`morph-tx-cost`](/skills/morph-tx-cost/SKILL) | Explains `GasPriceOracle.getL1Fee` and gas math. | +| Route to Morph Rails (Alt Fee, Reference Key, …) | [`morph-rails`](/skills/morph-rails/SKILL) | Product-level rails overview. | +| Install Skills into Cursor / Claude Code / OpenClaw | [`morph-skill-ln`](/skills/morph-skill-ln/SKILL) | Symlink script. | +| Run a Morph full node on a host | [`morph-full-node-run-on-host`](/skills/morph-full-node-run-on-host/SKILL) | Node operations, not dApp dev. | + +Rule of thumb: **if there is no planning document yet and the task spans multiple files across +contract / SDK / frontend, start from `morph-dapp-workflow`. Otherwise go to a single +Skill.** + +## Quick decision tree + +```text + "I'm about to touch Morph code or docs." + │ + ▼ + Is this a fact lookup (address / fee / SDK field)? + ├─ yes → morph-contracts / morph-tx-cost / morph-js-sdk + └─ no + │ + ▼ + Do I already have a planning document (planning/.md)? + ├─ no + │ │ + │ ▼ + │ Is the change 1 file, obvious, no planning document needed? + │ ├─ yes → edit directly (no Skill) + │ └─ no → morph-dapp-workflow (will call morph-dapp-planning) + └─ yes + │ + ▼ + Am I implementing, reviewing, or both? + ├─ implementing → morph-dapp-codegen + ├─ reviewing a diff → morph-dapp-code-review + └─ both, plus gates → morph-dapp-workflow (resumes at Stage 2) +``` + +## The end-to-end path: morph-dapp-workflow + +When you do invoke the orchestrator, the three stages wire together like this: + +```text + Product brief / Figma / API doc + │ + ▼ + ┌──────────────────────┐ + │ 1. Planning │ → morph-dapp-planning + │ planning/.md │ + └──────────┬───────────┘ + │ Goals · Test Cases · Target Files · Morph Constraints + ▼ + ┌──────────────────────┐ + │ 2. Code (TDD) │ → morph-dapp-codegen + │ red → green → lint │ + └──────────┬───────────┘ + │ tests + impl, no auto-commit + ▼ + ┌──────────────────────┐ + │ 3. Review (4-dim) │ → morph-dapp-code-review + │ P0 / P1 / P2 │ + └──────────────────────┘ +``` + +Each arrow is a **gate**: blocking items must be cleared before the next stage runs. +Resuming is implicit — the presence of `planning/.md` (and later, landed tests) tells +the orchestrator where to pick up. + +### Stage 1 — Planning + +Skill: [`morph-dapp-planning`](/skills/morph-dapp-planning/SKILL) + +You bring: a product description (and optionally an API doc + Figma URL). +You get: `planning/.md` containing **Goals**, **Test Cases**, **Target Files**, +**Morph Constraints**, **Open Questions**, and a **Self-Check**. + +Morph-specific decisions this stage forces up-front: + +| Decision | Why it matters on Morph | +|---|---| +| Mainnet (`2818`) vs Hoodi (`2910`) vs both | Wrong chain breaks signing & RPC | +| Alt Fee path? | If yes, `feeTokenID` must be chosen from the Token Registry; `feeLimit` is optional (set an explicit cap in product code if you need one) | +| Where do contract addresses come from? | Always [`developer-resources/contracts`](../developer-resources/1-contracts.md) — never an external explorer | +| L1 data fee in user-visible totals? | Use `GasPriceOracle.getL1Fee` per [`understand-transaction-cost-on-morph`](./4-understand-transaction-cost-on-morph.md) | + +The planning document is not done until every 🔴 *Blocker* in *Open Questions* is resolved or +explicitly accepted. The agent will pause at the gate. + +### Stage 2 — TDD Codegen + +Skill: [`morph-dapp-codegen`](/skills/morph-dapp-codegen/SKILL) + +1. **Red** — write failing tests for every *Test Case* in the planning document, get them to compile. +2. **Green** — implement only files in *Target Files* until the suite passes. +3. **Wrap-up** — run lint / type-check / project test script; reconcile against the + planning document's *Self-Check* list. + +Morph-specific guardrails that the test runner alone cannot enforce: + +- Do not hard-code `chainId: 2818` literals — import from `@morph-network/chain` or the + viem chain export. +- Do not mix `feeTokenID` / `feeLimit` into non-Alt-Fee paths (or vice versa). +- Do not commit on the user's behalf. +- Do not ship private keys or mnemonics in tests or examples. + +Inside the `morph-doc` repo the project test entry point is `npm test` +(`scripts/run-tests.mjs`). New `__tests__/*.test.mjs` files **must** be added to +`TEST_FILES` in that script — `run-tests-manifest.test.mjs` enforces it. + +### Stage 3 — Code Review + +Skill: [`morph-dapp-code-review`](/skills/morph-dapp-code-review/SKILL) + +A read-only pass over your `git diff`, scored along four dimensions: + +| Dimension | What it catches (Morph-specific subset) | +|---|---| +| **Security** | Predeploy address copied from the wrong place, Mainnet/Hoodi mix-up, `feeTokenID` not in the Token Registry, missing replay protection on bridge messages | +| **Performance** | Per-tx repeat calls to `eth_gasPrice` / `GasPriceOracle.getL1Fee`, no backoff on bridge polling | +| **Code Quality** | `chainId` literals, RPC URLs hard-coded, Alt Fee fields leaking into vanilla EIP-1559 paths, real keys in samples | +| **Planning compliance** | Every planning *Goal* mapped to code, every *Test Case* has an actual test, no extra files outside *Target Files* | + +Output is graded **P0 (blocks merge) / P1 (recommended) / P2 (optional)**. + +## Driving the flow from your IDE + +All Skills live in +[`skills/`](https://github.com/morph-l2/morph-doc/tree/main/skills) in this repo. +Two ways to make them available to your agent: + +1. **Inside `morph-doc`** — open this repo in Cursor / Claude Code / OpenClaw / Windsurf + and the agent loads `skills/*/SKILL.md` automatically. +2. **From any other project** — symlink them into your tool's global skills directory + using the [`morph-skill-ln`](/skills/morph-skill-ln/SKILL) script: + + ```bash + ./scripts/morph-skill-ln \ + morph-dapp-planning \ + morph-dapp-codegen \ + morph-dapp-code-review \ + morph-dapp-workflow \ + morph-js-sdk \ + morph-contracts \ + morph-tx-cost + ``` + +Once installed, phrase your request so the router can route: + +- Whole feature: *"Use morph-dapp-workflow to take this requirement from planning to review-ready + code."* +- Single stage: *"Use morph-dapp-codegen against `planning/reward-claim.md`."* +- Fact lookup: *"Use morph-contracts to list the L2-side bridge addresses on Hoodi."* + +## What this flow deliberately does not do + +To stay simple and predictable on a single repo, the Skills intentionally **omit** +features that heavyweight enterprise pipelines often include: + +- No snapshot/rollback state machine — your `git` history is the state. +- No checkpoint files, locks, or oscillation detection. +- No automatic commit, push, or PR creation. +- No multi-stack runs in a single invocation — split contract / SDK / frontend into + separate planning files and run the workflow once per stack. + +If you need any of the above, run the underlying Skills manually and orchestrate them in +your own scripts. + +## See also + +- Planning: [`morph-dapp-planning`](/skills/morph-dapp-planning/SKILL) +- TDD implementation: [`morph-dapp-codegen`](/skills/morph-dapp-codegen/SKILL) +- Multi-dimension review: [`morph-dapp-code-review`](/skills/morph-dapp-code-review/SKILL) +- Domain facts referenced by all three: + [`morph-js-sdk`](/skills/morph-js-sdk/SKILL), + [`morph-contracts`](/skills/morph-contracts/SKILL), + [`morph-tx-cost`](/skills/morph-tx-cost/SKILL) +- Product rails: [`morph-rails`](/skills/morph-rails/SKILL) +- Install Skills into your IDE: [`morph-skill-ln`](/skills/morph-skill-ln/SKILL) +- The doc–skill contract this page follows: + [`VISION.md`](https://github.com/morph-l2/morph-doc/blob/main/VISION.md) diff --git a/docs/build-on-morph/developer-resources/1-contracts.md b/docs/build-on-morph/developer-resources/1-contracts.md index 5dfd16de0..dba611a78 100644 --- a/docs/build-on-morph/developer-resources/1-contracts.md +++ b/docs/build-on-morph/developer-resources/1-contracts.md @@ -1,6 +1,7 @@ --- title: Contract Addresses lang: en-US +doc_skill_id: morph-contracts --- diff --git a/docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md b/docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md new file mode 100644 index 000000000..79b533cd3 --- /dev/null +++ b/docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md @@ -0,0 +1,240 @@ +--- +title: Run a full node from source +lang: en-US +doc_skill_id: morph-full-node-run-on-host +--- + +This guide outlines the steps to start a Morph node. The example assumes the home directory is `~/.morph` + +## Hardware requirements + +Running the Morph node requires 2 processes: `geth` and `node`. + +- `Geth`:the Morph execution layer which needs to meet the requirements as below + - Fast CPU with 4+ cores + - 32GB+ RAM + - High-performance SSD with at least 1TB of free space + - 25+ MBit/sec download Internet service + + +- `Node`:the Morph consensus layer embedded tendermint which needs to meet the [tendermint hardware requirements](https://docs.tendermint.com/v0.34/tendermint-core/running-in-production.html#processor-and-memory). + + +:::tip +According to limitations of the current geth implementation, we only support archive mode for launching a Geth. So the storage size of Geth will constantly increase along with blocks produced. +::: + +## Build executable binary + +### Clone morph + +``` +mkdir -p ~/.morph +cd ~/.morph +git clone https://github.com/morph-l2/morph.git +``` + +Next, you need to check out a release version. You can find the available release versions on the [Morph Releases](https://github.com/morph-l2/morph/releases) page. It is recommended to use the latest release version. + +``` +cd morph +git checkout ${RELEASE_VERSION} +``` + +### Build Geth + +Notice: You need C compiler to build geth + +``` +make geth +``` + +### Build Node + +``` +cd ~/.morph/morph/node +make build +``` + +## Config Preparation + +1. Download the config files and make data dir + +``` +cd ~/.morph + +## mainnet +wget https://raw.githubusercontent.com/morph-l2/run-morph-node/main/mainnet/data.zip + +## testnet +wget https://raw.githubusercontent.com/morph-l2/run-morph-node/main/hoodi/data.zip + +unzip data.zip +``` + +2. Create a shared secret with node + +``` +cd ~/.morph +openssl rand -hex 32 > jwt-secret.txt +``` + +## Start Node +Mainnet nodes support synchronization from either the genesis block or a snapshot block, while testnet nodes only support synchronization from snapshots. + +### Sync from snapshot(Recommended) +You should build the binary and prepare the config files in the above steps first, then download the snapshot. + +#### Download snapshot +Download the latest snapshot corresponding to either the mainnet or testnet network. + +A complete record of historical snapshots is available [here](https://github.com/morph-l2/run-morph-node?tab=readme-ov-file#snapshot-information). Below is an example of how to download a snapshot + +```bash +## mainnet +wget -q --show-progress https://snapshot.morph.network/mainnet/${SNAPSHOT_NAME}.tar.gz +tar -xzvf ${SNAPSHOT_NAME}.tar.gz + +## hoodi +wget -q --show-progress https://snapshot.morph.network/hoodi/${SNAPSHOT_NAME}.tar.gz +tar -xzvf ${SNAPSHOT_NAME}.tar.gz +``` + +Extracting snapshot data to the data directory your node points to + +```bash +mv ${SNAPSHOT_NAME}/geth geth-data +mv ${SNAPSHOT_NAME}/data node-data +``` + +#### Start execution client + +```bash title="Script for starting mainnet geth" +./morph/go-ethereum/build/bin/geth --morph \ + --datadir "./geth-data" \ + --http --http.api=web3,debug,eth,txpool,net,engine \ + --authrpc.addr localhost \ + --authrpc.vhosts="localhost" \ + --authrpc.port 8551 \ + --authrpc.jwtsecret=./jwt-secret.txt \ + --log.filename=./geth.log + +``` + +:::note +For testnet, using ```--morph-hoodi``` instead +::: + +tail -f `geth.log` to check if the Geth is running properly, or you can also execute the curl command below to check if you are connected to the peer. + +```Shell +curl -X POST -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}' localhost:8545 + +{"jsonrpc":"2.0","id":74,"result":"0x6"} +``` + +#### Start consensus client +```Bash + ./morph/node/build/bin/morphnode --home ./node-data \ + --l2.jwt-secret ./jwt-secret.txt \ + --l2.eth http://localhost:8545 \ + --l2.engine http://localhost:8551 \ + --log.filename ./node.log \ + --mainnet + --l1.rpc= +``` + +tail -f node.log to check if the node is running properly, and you can also execute the command curl to check your node connection status. + +```Bash +curl http://localhost:26657/net_info + +{ + "jsonrpc": "2.0", + "id": -1, + "result": { + "listening": true, + "listeners": [ + "Listener(@)" + ], + "n_peers": "7", + "peers": [ + { + "node_info": { + "protocol_version": { + "p2p": "8", + "block": "11", + "app": "0" + }, + "id": "b4ac59de479b0251d441ca0385429bc21713a208", + "listen_addr": "tcp://0.0.0.0:26610", + "network": "chain-morph-mainnet", + "version": "0.37.0-alpha.1", + "channels": "402021222338606100", + "moniker": "morph-dataseed-node-0", + "other": { + "tx_index": "on", + "rpc_address": "tcp://0.0.0.0:26657" + } + }, + "is_outbound": true, + ....... + ``` + +#### Check sync status + +curl http://localhost:26657/status to check the sync status of the node + +```Bash +{ + "jsonrpc": "2.0", + "id": -1, + "result": { + "node_info": { + "protocol_version": { + "p2p": "8", + "block": "11", + "app": "0" + }, + "id": "cde0d7cecfe9c82244c1dfa72c951759d02f1024", + "listen_addr": "tcp://0.0.0.0:26656", + "network": "chain-morph-mainnet", + "version": "0.37.0-alpha.1", + "channels": "402021222338606100", + "moniker": "my-morph-node", + "other": { + "tx_index": "on", + "rpc_address": "tcp://0.0.0.0:26657" + } + }, + "sync_info": { + "latest_block_hash": "B4C0E514CD984B101FA89D7DB48C1FE18384F64C25E5565F618A5FE2851C42A9", + "latest_app_hash": "", + "latest_block_height": "2410", + "latest_block_time": "2024-10-21T08:49:09.952573291Z", + "earliest_block_hash": "0D66D908033DA7A3F5A95179B8D64261EDD887B944E59502A1C9EFBC1C9C4EF5", + "earliest_app_hash": "", + "earliest_block_height": "1", + "earliest_block_time": "2024-10-21T06:00:00Z", + "catching_up": false + }, + "validator_info": { + "address": "B7395023EFF719D0EE15AD96FFC7F69B6B9E52EF", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "tZI+wTExwoKeyUFgdSSYmf4sAYp4BhJu13UgPy1wDOc=" + }, + "voting_power": "0" + } + } +} +``` + +The returned `"catching_up"` indicates whether the node is in sync or not. *True* means it is in sync. + +The returned `"latest_block_height"` indicates the latest block height this node synced. + + + +### Sync from genesis block +Start the execution client and consensus client directly without downloading snapshot. diff --git a/docs/build-on-morph/sdk/js-sdk.mdx b/docs/build-on-morph/sdk/js-sdk.mdx index f732973e2..d75825920 100644 --- a/docs/build-on-morph/sdk/js-sdk.mdx +++ b/docs/build-on-morph/sdk/js-sdk.mdx @@ -2,6 +2,7 @@ title: Morph SDK lang: en-US description: Official JavaScript/TypeScript SDK for interacting with the Morph Network. +doc_skill_id: morph-js-sdk --- import AltFeeQuickStartDemo from "@site/src/components/AltFee/AltFeeQuickStartDemo"; @@ -35,7 +36,7 @@ Compared with using base libraries (Viem/Ethers) directly, the SDK offers: | Feature | Base libs only | Morph SDK | |---------|---------------|-----------| -| **Alt Fee Transaction support** | ❌ Manual serialize/deserialize needed | ✅ Built-in, just add `feeTokenID` + `feeLimit` | +| **Alt Fee Transaction support** | ❌ Manual serialize/deserialize needed | ✅ Built-in: add `feeTokenID` (required for token gas); `feeLimit` is optional | | **Tx type 0x7f** | ❌ Unsupported without forking/patching | ✅ Fully supported | | **Morph chain config** | ❌ Manual chainId/RPC setup | ✅ Mainnet & Testnet presets | | **Token Registry access** | ❌ Manage ABI yourself | ✅ ABI + addresses exported | @@ -81,8 +82,8 @@ Compared with using base libraries (Viem/Ethers) directly, the SDK offers: Alt Fee Transaction (type `0x7f`) lets users pay gas with registered ERC-20 tokens (e.g., USDT/USDC) instead of ETH. **Key fields:** -- `feeTokenID`: Token ID in the Token Registry -- `feeLimit`: Max token amount the user is willing to pay +- `feeTokenID`: Token ID in the Token Registry (required when paying gas in that token) +- `feeLimit` (optional): Max token amount the user authorizes for gas; if omitted, the chain may use the sender’s token balance as the effective cap (see [AltFeeTx spec](/about-morph/10-altfeetx)) --- @@ -706,8 +707,8 @@ Sign standard or Alt Fee transactions. | `maxFeePerGas` | `bigint` | Yes | Max fee | | `maxPriorityFeePerGas` | `bigint` | Yes | Max priority fee | | `nonce` | `number` | No | Tx nonce | -| `feeTokenID` | `number` | No* | Token ID (required for Alt Fee) | -| `feeLimit` | `bigint \| Hex` | No* | Token fee cap (required for Alt Fee). Accepts bigint or hex string. | +| `feeTokenID` | `number` | No* | Token ID (required for Alt Fee / type `0x7f`) | +| `feeLimit` | `bigint \| Hex` | No* | Optional token fee cap. If set, must be ≥ 0. Accepts bigint or hex string. | **Example:** @@ -803,7 +804,7 @@ const populatedTx = await signer.populateTransaction({ to: "0x...", value: parseEther("0.001"), feeTokenID: 3, - feeLimit: 1000000n, // Required for Alt Fee transactions + feeLimit: 1000000n, // optional: explicit cap in token units }); console.log("Populated tx:", populatedTx); @@ -855,7 +856,7 @@ const txResponse = await signer.sendTransaction({ maxFeePerGas: utils.hexlify(15316544), maxPriorityFeePerGas: utils.hexlify(14116544), feeTokenID: 3, - feeLimit: utils.parseUnits("1", 6), // Required! 1 USDT/USDC + feeLimit: utils.parseUnits("1", 6), // optional: e.g. 1 USDT/USDC cap }); ``` diff --git a/docs/morph-rails/0-overview.md b/docs/morph-rails/0-overview.md index f103deba2..3661f6202 100644 --- a/docs/morph-rails/0-overview.md +++ b/docs/morph-rails/0-overview.md @@ -3,6 +3,7 @@ title: What is Morph Rails? lang: en-US keywords: [morph,morph rails,payment,payfi,layer2,middleware] description: Morph Rails is a programmable payment middleware layer constructed atop the Morph blockchain network, abstracting raw on-chain operations into production-grade payment services. +doc_skill_id: morph-rails --- ## 1. Overview diff --git a/docusaurus.config.js b/docusaurus.config.js index 2068949ed..51c48665f 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -55,7 +55,29 @@ const config = { locales: ['en'], }, + markdown: { + mermaid: true, + /** .md = CommonMark;.mdx = MDX(skills/SKILL.md 等需避免被当作 MDX) */ + format: 'detect', + }, + + themes: ['@docusaurus/theme-mermaid'], + plugins: [ + [ + '@docusaurus/plugin-content-docs', + /** @type {import('@docusaurus/plugin-content-docs').Options} */ + ({ + id: 'skills', + path: 'skills', + routeBasePath: 'skills', + sidebarPath: require.resolve('./sidebars-skills.js'), + editUrl: ({ docPath }) => + `https://github.com/morph-l2/morph-doc/edit/main/skills/${docPath}`, + remarkPlugins: [remarkMath], + rehypePlugins: [rehypeKatex], + }), + ], 'docusaurus-plugin-sass', // Use local plugin instead of npm package to fix /docs/ path require.resolve('./plugins/markdown-source-plugin.js'), @@ -362,6 +384,13 @@ const config = { sidebarId: 'LearnSidebar', label: 'Learn', }, + { + type: 'docSidebar', + position: 'left', + sidebarId: 'SkillsSidebar', + docsPluginId: 'skills', + label: 'Agent Skills', + }, ], }, footer: { diff --git a/package.json b/package.json index 66b5c7858..846516d87 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,9 @@ "version": "4.0.0", "private": true, "scripts": { + "test": "node scripts/run-tests.mjs", + "skill-ln": "bash scripts/morph-skill-ln", + "agent-ln": "bash scripts/morph-agent-ln", "docusaurus": "docusaurus", "start": "docusaurus start", "build": "docusaurus build", @@ -23,6 +26,7 @@ "@docusaurus/plugin-client-redirects": "3.1.1", "@docusaurus/preset-classic": "3.1.1", "@docusaurus/theme-common": "3.1.1", + "@docusaurus/theme-mermaid": "3.1.1", "@docusaurus/theme-search-algolia": "3.1.1", "@mdx-js/react": "3.0.1", "@morph-network/viem": "0.1.0", diff --git a/scripts/morph-agent-ln b/scripts/morph-agent-ln new file mode 100755 index 000000000..0821bf7e0 --- /dev/null +++ b/scripts/morph-agent-ln @@ -0,0 +1,302 @@ +#!/usr/bin/env bash +# Symlink agents/.md in the morph-doc repo into each Agent's agents directory, or remove symlinks with --unlink (see --help). +# Usage: see skills/README.md § Linking agents (parallel to scripts/morph-skill-ln) +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +DEFAULT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" + +DRY_RUN=0 +UNLINK=0 +MODE="all" +ROOT_PATH="" +RAW_AGENTS=() +POSITIONAL=() + +usage() { + cat <<'EOF' +morph-agent-ln — Create or remove Agent definition symlinks inside the morph-doc repo (project-local agents directories for each tool) + +Usage: + morph-agent-ln [options] [agent-name] + When agent-name is omitted: batch-process all files under agents/morph-*.md (same list for --unlink). + agent-name may be given with or without the .md extension (e.g. morph-dapp-agent or morph-dapp-agent.md). + +Path: + -r, --root PATH Absolute path to the morph-doc repo root (parent of agents/). + Omit to use: -r flag / MORPH_DOC_ROOT env var / repo root inferred from script location. + +Targets: + -a, --agent ARG Repeatable. ARG is one of: + • Built-in name: cursor | claude | openclaw | windsurf | codex + • Or a repo-relative path (must contain / or start with .) + When no --agent is specified, defaults to: cursor claude openclaw windsurf + +Actions: + --unlink Remove symlinks (delete .md from the selected --agent directories; + only symbolic links are deleted — regular files are skipped with a warning). + Does not run ln. + +Other: + --dry-run Print commands that would be executed without writing anything + -h, --help Show this help + +Environment variables: + MORPH_DOC_ROOT Used as repo root when -r/--root is not provided + +Examples: + ./scripts/morph-agent-ln -a cursor -a claude + ./scripts/morph-agent-ln --unlink -a cursor morph-dapp-agent + ./scripts/morph-agent-ln --unlink --root /path/to/morph-doc --dry-run +EOF +} + +while [[ $# -gt 0 ]]; do + case "$1" in + --dry-run) + DRY_RUN=1 + shift + ;; + --unlink) + UNLINK=1 + shift + ;; + -h | --help) + usage + exit 0 + ;; + -r | --root) + if [[ -z "${2:-}" ]]; then + echo "Option $1 requires a PATH argument" >&2 + exit 1 + fi + ROOT_PATH="$2" + shift 2 + ;; + -a | --agent) + if [[ -z "${2:-}" ]]; then + echo "Option $1 requires an ARG (built-in name or repo-relative path)" >&2 + exit 1 + fi + RAW_AGENTS+=("$2") + shift 2 + ;; + -*) + echo "Unknown option: $1 (use --help)" >&2 + exit 1 + ;; + *) + POSITIONAL+=("$1") + shift + ;; + esac +done + +if [[ ${#POSITIONAL[@]} -gt 1 ]]; then + echo "At most one agent-name may be specified; got: ${POSITIONAL[*]}" >&2 + exit 1 +fi +if [[ ${#POSITIONAL[@]} -eq 1 ]]; then + MODE="single" + AGENT_ARG="${POSITIONAL[0]}" + AGENT_ARG="${AGENT_ARG%.md}" +fi + +if [[ -n "$ROOT_PATH" ]]; then + if [[ ! -d "$ROOT_PATH" ]]; then + echo "Not a directory: ${ROOT_PATH}" >&2 + exit 1 + fi + MORPH_DOC_ROOT="$(cd "$ROOT_PATH" && pwd)" +else + MORPH_DOC_ROOT="${MORPH_DOC_ROOT:-$DEFAULT_ROOT}" +fi + +AGENTS_ROOT="${MORPH_DOC_ROOT}/agents" +# Single agent with --unlink: allow agents/.md to no longer exist; still remove links in agent directories +if [[ "$UNLINK" -eq 1 && "$MODE" == "single" ]]; then + : +elif [[ ! -d "$AGENTS_ROOT" ]]; then + echo "agents directory not found: ${AGENTS_ROOT} (check -r/--root or MORPH_DOC_ROOT)" >&2 + exit 1 +fi + +normalize_agent_subpath() { + local key="$1" + case "$key" in + *..*) + echo "--agent path must not contain ..: $key" >&2 + return 1 + ;; + esac + case "$key" in + cursor) echo ".cursor/agents"; return 0 ;; + claude) echo ".claude/agents"; return 0 ;; + openclaw) echo ".openclaw/agents"; return 0 ;; + windsurf) echo ".windsurf/agents"; return 0 ;; + codex) echo ".codex/agents"; return 0 ;; + esac + case "$key" in + */* | .*) + local p="${key#./}" + [[ -n "$p" ]] || { + echo "Invalid --agent path: $key" >&2 + return 1 + } + echo "$p" + return 0 + ;; + esac + echo "Unknown --agent: $key (built-in: cursor claude openclaw windsurf codex; or a repo-relative path such as .windsurf/agents)" >&2 + return 1 +} + +AGENT_SUBPATHS=() +append_unique() { + local sp="$1" + local i n=${#AGENT_SUBPATHS[@]} + for ((i = 0; i < n; i++)); do + [[ "${AGENT_SUBPATHS[i]}" == "$sp" ]] && return 0 + done + AGENT_SUBPATHS+=("$sp") +} + +register_agent_arg() { + local raw="$1" + local sp + sp="$(normalize_agent_subpath "$raw")" || return 1 + append_unique "$sp" +} + +if [[ ${#RAW_AGENTS[@]} -eq 0 ]]; then + register_agent_arg cursor + register_agent_arg claude + register_agent_arg openclaw + register_agent_arg windsurf +else + for raw in "${RAW_AGENTS[@]}"; do + register_agent_arg "$raw" || exit 1 + done +fi + +mkdir_p_global() { + [[ "$UNLINK" -eq 1 ]] && return 0 + local parts=() + local sp d i + for ((i = 0; i < ${#AGENT_SUBPATHS[@]}; i++)); do + sp="${AGENT_SUBPATHS[i]}" + d="${MORPH_DOC_ROOT}/${sp}" + parts+=("$d") + done + if [[ ${#parts[@]} -eq 0 ]]; then + return 0 + fi + if [[ "$DRY_RUN" -eq 1 ]]; then + echo "mkdir -p $(printf ' %q' "${parts[@]}")" + return 0 + fi + mkdir -p "${parts[@]}" +} + +link_one() { + local name="$1" + local src="${MORPH_DOC_ROOT}/agents/${name}.md" + if [[ ! -f "$src" ]]; then + echo "Skipping (file not found): ${src}" >&2 + return 1 + fi + src="$(cd "$(dirname "$src")" && pwd)/$(basename "$src")" + + local sp d i + for ((i = 0; i < ${#AGENT_SUBPATHS[@]}; i++)); do + sp="${AGENT_SUBPATHS[i]}" + d="${MORPH_DOC_ROOT}/${sp}/${name}.md" + if [[ "$DRY_RUN" -eq 1 ]]; then + echo "ln -sfn \"${src}\" \"${d}\"" + else + ln -sfn "${src}" "${d}" + fi + done + echo "Linked: ${name}" +} + +unlink_one() { + local name="$1" + local sp d i removed=0 + for ((i = 0; i < ${#AGENT_SUBPATHS[@]}; i++)); do + sp="${AGENT_SUBPATHS[i]}" + d="${MORPH_DOC_ROOT}/${sp}/${name}.md" + if [[ ! -e "$d" ]] && [[ ! -L "$d" ]]; then + echo "Skipping (does not exist): ${d}" >&2 + continue + fi + if [[ -L "$d" ]]; then + if [[ "$DRY_RUN" -eq 1 ]]; then + echo "rm -f $(printf '%q' "$d")" + else + rm -f "$d" + fi + echo "Removed link: ${d}" + removed=$((removed + 1)) + else + echo "Skipping (not a symlink, not deleted): ${d}" >&2 + fi + done + if [[ "$removed" -eq 0 ]]; then + return 1 + fi + return 0 +} + +if [[ "$UNLINK" -eq 1 ]]; then + if [[ "$MODE" == "single" ]]; then + unlink_one "${AGENT_ARG}" || { + echo "Could not remove any symlinks (path does not exist or is not a symlink): ${AGENT_ARG}" >&2 + exit 1 + } + exit 0 + fi + + count=0 + shopt -s nullglob + for f in "${AGENTS_ROOT}"/morph-*.md; do + [[ -f "$f" ]] || continue + name="$(basename "$f" .md)" + if unlink_one "$name"; then + count=$((count + 1)) + fi + done + shopt -u nullglob + + if [[ "$count" -eq 0 ]]; then + echo "No symlinks removed (no matching agents/morph-*.md or no symlinks found at targets)" >&2 + exit 1 + fi + echo "Done. Processed ${count} agent(s)." + exit 0 +fi + +mkdir_p_global + +if [[ "$MODE" == "single" ]]; then + link_one "${AGENT_ARG}" || exit 1 + exit 0 +fi + +count=0 +shopt -s nullglob +for f in "${AGENTS_ROOT}"/morph-*.md; do + [[ -f "$f" ]] || continue + name="$(basename "$f" .md)" + if link_one "$name"; then + count=$((count + 1)) + fi +done +shopt -u nullglob + +if [[ "$count" -eq 0 ]]; then + echo "No linkable agents/morph-*.md found" >&2 + exit 1 +fi + +echo "Done. ${count} agent(s) linked." diff --git a/scripts/morph-skill-ln b/scripts/morph-skill-ln new file mode 100755 index 000000000..21188fe1d --- /dev/null +++ b/scripts/morph-skill-ln @@ -0,0 +1,306 @@ +#!/usr/bin/env bash +# Symlink skills// in the morph-doc repo into each Agent's skills directory, or remove symlinks with --unlink (see --help). +# Usage: see skills/README.md and skills/morph-skill-ln/SKILL.md +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +DEFAULT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" + +DRY_RUN=0 +UNLINK=0 +MODE="all" +ROOT_PATH="" +RAW_AGENTS=() +POSITIONAL=() + +usage() { + cat <<'EOF' +morph-skill-ln — Create or remove Agent Skill symlinks inside the morph-doc repo (project-local skills directories for each tool) + +Usage: + morph-skill-ln [options] [skill-id] + When skill-id is omitted: batch-process all directories under skills/morph-*/ that contain SKILL.md (same list for --unlink). + +Path: + -r, --root PATH Absolute path to the morph-doc repo root (parent of skills/). + Omit to use: -r flag / MORPH_DOC_ROOT env var / repo root inferred from script location. + +Targets: + -a, --agent ARG Repeatable. ARG is one of: + • Built-in name: cursor | claude | openclaw | windsurf | codex + • Or a repo-relative path (must contain / or start with .) + When no --agent is specified, defaults to: cursor claude openclaw windsurf + +Actions: + --unlink Remove symlinks (delete from the selected --agent directories; only + symbolic links are deleted — regular files/directories are skipped with a warning). + Does not run ln. + +Other: + --dry-run Print commands that would be executed without writing anything + -h, --help Show this help + +Environment variables: + MORPH_DOC_ROOT Used as repo root when -r/--root is not provided + +Examples: + ./scripts/morph-skill-ln -a cursor -a claude + ./scripts/morph-skill-ln --unlink -a cursor morph-js-sdk + ./scripts/morph-skill-ln --unlink --root /path/to/morph-doc --dry-run +EOF +} + +while [[ $# -gt 0 ]]; do + case "$1" in + --dry-run) + DRY_RUN=1 + shift + ;; + --unlink) + UNLINK=1 + shift + ;; + -h | --help) + usage + exit 0 + ;; + -r | --root) + if [[ -z "${2:-}" ]]; then + echo "Option $1 requires a PATH argument" >&2 + exit 1 + fi + ROOT_PATH="$2" + shift 2 + ;; + -a | --agent) + if [[ -z "${2:-}" ]]; then + echo "Option $1 requires an ARG (built-in name or repo-relative path)" >&2 + exit 1 + fi + RAW_AGENTS+=("$2") + shift 2 + ;; + -*) + echo "Unknown option: $1 (use --help)" >&2 + exit 1 + ;; + *) + POSITIONAL+=("$1") + shift + ;; + esac +done + +if [[ ${#POSITIONAL[@]} -gt 1 ]]; then + echo "At most one skill-id may be specified; got: ${POSITIONAL[*]}" >&2 + exit 1 +fi +if [[ ${#POSITIONAL[@]} -eq 1 ]]; then + MODE="single" + SKILL_ARG="${POSITIONAL[0]}" +fi + +if [[ -n "$ROOT_PATH" ]]; then + if [[ ! -d "$ROOT_PATH" ]]; then + echo "Not a directory: ${ROOT_PATH}" >&2 + exit 1 + fi + MORPH_DOC_ROOT="$(cd "$ROOT_PATH" && pwd)" +else + MORPH_DOC_ROOT="${MORPH_DOC_ROOT:-$DEFAULT_ROOT}" +fi + +SKILLS_ROOT="${MORPH_DOC_ROOT}/skills" +# Single skill with --unlink: allow skills/ to no longer exist; still remove links in agent directories +if [[ "$UNLINK" -eq 1 && "$MODE" == "single" ]]; then + : +elif [[ ! -d "$SKILLS_ROOT" ]]; then + echo "skills directory not found: ${SKILLS_ROOT} (check -r/--root or MORPH_DOC_ROOT)" >&2 + exit 1 +fi + +normalize_agent_subpath() { + local key="$1" + case "$key" in + *..*) + echo "--agent path must not contain ..: $key" >&2 + return 1 + ;; + esac + case "$key" in + cursor) echo ".cursor/skills"; return 0 ;; + claude) echo ".claude/skills"; return 0 ;; + openclaw) echo ".openclaw/skills"; return 0 ;; + windsurf) echo ".windsurf/skills"; return 0 ;; + codex) echo ".codex/skills"; return 0 ;; + esac + case "$key" in + */* | .*) + local p="${key#./}" + [[ -n "$p" ]] || { + echo "Invalid --agent path: $key" >&2 + return 1 + } + echo "$p" + return 0 + ;; + esac + echo "Unknown --agent: $key (built-in: cursor claude openclaw windsurf codex; or a repo-relative path such as .windsurf/skills)" >&2 + return 1 +} + +AGENT_SUBPATHS=() +append_unique() { + local sp="$1" + local i n=${#AGENT_SUBPATHS[@]} + for ((i = 0; i < n; i++)); do + [[ "${AGENT_SUBPATHS[i]}" == "$sp" ]] && return 0 + done + AGENT_SUBPATHS+=("$sp") +} + +register_agent_arg() { + local raw="$1" + local sp + sp="$(normalize_agent_subpath "$raw")" || return 1 + append_unique "$sp" +} + +if [[ ${#RAW_AGENTS[@]} -eq 0 ]]; then + register_agent_arg cursor + register_agent_arg claude + register_agent_arg openclaw + register_agent_arg windsurf +else + for raw in "${RAW_AGENTS[@]}"; do + register_agent_arg "$raw" || exit 1 + done +fi + +mkdir_p_global() { + [[ "$UNLINK" -eq 1 ]] && return 0 + local parts=() + local sp d i + for ((i = 0; i < ${#AGENT_SUBPATHS[@]}; i++)); do + sp="${AGENT_SUBPATHS[i]}" + d="${MORPH_DOC_ROOT}/${sp}" + parts+=("$d") + done + if [[ ${#parts[@]} -eq 0 ]]; then + return 0 + fi + if [[ "$DRY_RUN" -eq 1 ]]; then + echo "mkdir -p $(printf ' %q' "${parts[@]}")" + return 0 + fi + mkdir -p "${parts[@]}" +} + +link_one() { + local id="$1" + local src="${MORPH_DOC_ROOT}/skills/${id}" + if [[ ! -d "$src" ]]; then + echo "Skipping (directory not found): ${src}" >&2 + return 1 + fi + if [[ ! -f "${src}/SKILL.md" ]]; then + echo "Skipping (no SKILL.md): ${src}" >&2 + return 1 + fi + src="$(cd "$src" && pwd)" + + local sp d i + for ((i = 0; i < ${#AGENT_SUBPATHS[@]}; i++)); do + sp="${AGENT_SUBPATHS[i]}" + d="${MORPH_DOC_ROOT}/${sp}/${id}" + if [[ "$DRY_RUN" -eq 1 ]]; then + echo "ln -sfn \"${src}\" \"${d}\"" + else + ln -sfn "${src}" "${d}" + fi + done + echo "Linked: ${id}" +} + +unlink_one() { + local id="$1" + local sp d i removed=0 + for ((i = 0; i < ${#AGENT_SUBPATHS[@]}; i++)); do + sp="${AGENT_SUBPATHS[i]}" + d="${MORPH_DOC_ROOT}/${sp}/${id}" + if [[ ! -e "$d" ]] && [[ ! -L "$d" ]]; then + echo "Skipping (does not exist): ${d}" >&2 + continue + fi + if [[ -L "$d" ]]; then + if [[ "$DRY_RUN" -eq 1 ]]; then + echo "rm -f $(printf '%q' "$d")" + else + rm -f "$d" + fi + echo "Removed link: ${d}" + removed=$((removed + 1)) + else + echo "Skipping (not a symlink, not deleted): ${d}" >&2 + fi + done + if [[ "$removed" -eq 0 ]]; then + return 1 + fi + return 0 +} + +if [[ "$UNLINK" -eq 1 ]]; then + if [[ "$MODE" == "single" ]]; then + unlink_one "${SKILL_ARG}" || { + echo "Could not remove any symlinks (path does not exist or is not a symlink): ${SKILL_ARG}" >&2 + exit 1 + } + exit 0 + fi + + count=0 + shopt -s nullglob + for d in "${SKILLS_ROOT}"/morph-*/; do + [[ -d "$d" ]] || continue + id="$(basename "$d")" + [[ -f "${d}SKILL.md" ]] || continue + if unlink_one "$id"; then + count=$((count + 1)) + fi + done + shopt -u nullglob + + if [[ "$count" -eq 0 ]]; then + echo "No symlinks removed (no matching skills/morph-* or no symlinks found at targets)" >&2 + exit 1 + fi + echo "Done. Processed ${count} skill(s)." + exit 0 +fi + +mkdir_p_global + +if [[ "$MODE" == "single" ]]; then + link_one "${SKILL_ARG}" || exit 1 + exit 0 +fi + +count=0 +shopt -s nullglob +for d in "${SKILLS_ROOT}"/morph-*/; do + [[ -d "$d" ]] || continue + id="$(basename "$d")" + [[ -f "${d}SKILL.md" ]] || continue + if link_one "$id"; then + count=$((count + 1)) + fi +done +shopt -u nullglob + +if [[ "$count" -eq 0 ]]; then + echo "No linkable skills/morph-*/ found (each must contain SKILL.md)" >&2 + exit 1 +fi + +echo "Done. ${count} skill(s) linked." diff --git a/scripts/run-tests.mjs b/scripts/run-tests.mjs new file mode 100644 index 000000000..d11ef7587 --- /dev/null +++ b/scripts/run-tests.mjs @@ -0,0 +1,61 @@ +/** + * Run __tests__/*.test.mjs in order (package.json invokes only this script to avoid long chains). + */ +import { spawnSync } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath, pathToFileURL } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const TEST_DIR = path.join(ROOT, '__tests__'); + +/** @type {readonly string[]} */ +export const TEST_FILES = [ + 'run-tests-manifest.test.mjs', + 'doc-skill-pairing.test.mjs', + 'morph-doc-skill-inventory.test.mjs', + 'morph-contracts-skill-tokenlist.test.mjs', + 'skills-sidebar.test.mjs', + 'vision-md.test.mjs', + 'morph-js-sdk-skill.test.mjs', + 'morph-rails-skill.test.mjs', + 'morph-tx-cost-skill.test.mjs', + 'morphchain-bridge-skill.test.mjs', + 'morph-doc-agent.test.mjs', + 'morph-dapp-agent.test.mjs', + 'morph-skill-ln.test.mjs', + 'morph-agent-ln.test.mjs', + 'morph-dapp-planning-skill.test.mjs', + 'morph-dapp-codegen-skill.test.mjs', + 'morph-dapp-code-review-skill.test.mjs', + 'morph-dapp-workflow-skill.test.mjs', + 'agent-driven-development-workflow-doc.test.mjs', + 'examples-viem-alt-fee.test.mjs', + 'is-alt-fee.test.mjs', + 'markdown-actions-routes.test.mjs', +]; + +function main() { + for (const name of TEST_FILES) { + const full = path.join(TEST_DIR, name); + if (!fs.existsSync(full)) { + console.error(`Missing test file: ${name}`); + process.exit(1); + } + const r = spawnSync(process.execPath, [full], { stdio: 'inherit', cwd: ROOT }); + if (r.error) { + console.error(r.error); + process.exit(1); + } + if (r.status !== 0) { + process.exit(r.status ?? 1); + } + } +} + +const isMain = + import.meta.url === pathToFileURL(path.resolve(process.argv[1] ?? '')).href; +if (isMain) { + main(); +} diff --git a/sidebars-skills.js b/sidebars-skills.js new file mode 100644 index 000000000..db615c6f4 --- /dev/null +++ b/sidebars-skills.js @@ -0,0 +1,32 @@ +/** + * Agent Skills (skills/) sidebar: mirrors each subdirectory's SKILL.md and skills/README.md. + * When adding a new skill, append an entry here; or run __tests__/skills-sidebar.test.mjs to validate against the directory. + */ + +// @ts-check + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const SkillsSidebar = [ + { type: 'doc', id: 'README', label: 'Overview' }, + { + type: 'category', + label: 'Skill playbooks', + collapsed: false, + items: [ + { type: 'doc', id: 'morph-contracts/SKILL', label: 'Morph Contract Addresses' }, + { type: 'doc', id: 'morph-dapp-code-review/SKILL', label: 'Morph dApp Code Review' }, + { type: 'doc', id: 'morph-dapp-codegen/SKILL', label: 'Morph dApp TDD Codegen' }, + { type: 'doc', id: 'morph-dapp-planning/SKILL', label: 'Morph dApp Planning' }, + { type: 'doc', id: 'morph-dapp-workflow/SKILL', label: 'Morph dApp End-to-End Workflow' }, + { type: 'doc', id: 'morph-full-node-run-on-host/SKILL', label: 'Morph Full Node (host)' }, + { type: 'doc', id: 'morph-js-sdk/SKILL', label: 'Morph JS/TS SDK' }, + { type: 'doc', id: 'morph-rails/SKILL', label: 'Morph Rails' }, + { type: 'doc', id: 'morph-skill-ln/SKILL', label: 'morph-skill-ln (symlink script)' }, + { type: 'doc', id: 'morph-tx-cost/SKILL', label: 'Morph Transaction Fees' }, + ], + }, +]; + +module.exports = { + SkillsSidebar, +}; diff --git a/skills/README.md b/skills/README.md new file mode 100644 index 000000000..4c5a106f4 --- /dev/null +++ b/skills/README.md @@ -0,0 +1,148 @@ +--- +slug: / +sidebar_label: Overview +title: Morph Skills +--- + +# morph-doc Skills + +This page is the entry point for the **Agent Skill system in the morph-doc repository**: it explains the **division of responsibility between `skills/` and `docs/`**, the **conventions and validation**, and how to **one-click or manually** symlink skill directories into the global loading paths for Cursor / Claude Code / OpenClaw. + +- **Vision & contract (doc-as-SKILL, `doc_skill_id`):** [`VISION.md`](https://github.com/morph-l2/morph-doc/blob/main/VISION.md) (repo root) +- **Generate or audit a Skill from a single target:** [`agents/morph-doc-agent.md`](https://github.com/morph-l2/morph-doc/blob/main/agents/morph-doc-agent.md) +- **Only care about "how to link globally":** see [One-click Script `morph-skill-ln`](#one-click-script-morph-skill-ln) and [Manual Commands](#manual-symlink-commands) below; topic skill **[morph-skill-ln](/skills/morph-skill-ln/SKILL)**. + +--- + +## What is `skills/` + +- **Canonical path**: **`skills//`** under the repo root, with **`SKILL.md`** as the main file (e.g. `skills/morph-js-sdk/SKILL.md`). Skills have been migrated out of `.cursor/skills`; **do not** treat `.cursor/skills` as the authoritative in-repo path. +- **Relationship to human docs**: Long-form content, tables, and demos live in **`docs/`** as the source of truth; Skills provide **routable summaries, execution steps, and pointers** — avoiding full duplication of MDX pages. When binding to a specific page, use **`doc_skill_id`** in the MDX frontmatter; its value must match the `skills//` directory name and the **`name`** field in `SKILL.md` (validation: `__tests__/doc-skill-pairing.test.mjs`). +- **Inventory & frontmatter checks**: `__tests__/morph-doc-skill-inventory.test.mjs` runs basic consistency checks on `skills/*/SKILL.md`. + +--- + +## Using within this repo + +When you open **morph-doc** directly in Cursor / IDE, the model reads the **`skills/`** directory from the project, so **no additional symlinks** to other local directories are usually needed. + +--- + +## Reusing in any project (symlink into each tool's skills directory) + +If you want a Skill to be available in conversations **without opening morph-doc**, symlink the corresponding directory to the global skills path of each tool (macOS / Linux). + +### One-click Script `morph-skill-ln` + +Run from the **morph-doc repo root**. When no repo root is provided, the default is the parent directory of the script; you can also specify it with **`-r` / `--root`** or the environment variable **`MORPH_DOC_ROOT`** (priority: `-r` > `MORPH_DOC_ROOT` > default). + +**Selecting target agents**: use **`-a` / `--agent`** (repeatable). Built-in names **`cursor`**, **`claude`**, **`openclaw`**, **`windsurf`**, **`codex`** map to **`/.cursor/skills`**, **`.claude/skills`**, **`.openclaw/skills`**, **`.windsurf/skills`**, **`.codex/skills`** respectively (all pointing to `/skills/`). When no `--agent` is specified, defaults to **cursor + claude + openclaw + windsurf**. Other tools can be specified with a **repo-relative path** (must contain `/` or start with `.`), e.g. **`--agent .windsurf/skills`** is equivalent to built-in **`windsurf`**, or **`--agent mytool/skills`** for a custom directory. + +```bash +./scripts/morph-skill-ln # batch; default root + four agents above +./scripts/morph-skill-ln morph-js-sdk # single skill id +./scripts/morph-skill-ln -a cursor -a claude # only link Cursor and Claude Code +./scripts/morph-skill-ln -r /path/to/morph-doc -a windsurf +./scripts/morph-skill-ln --agent .windsurf/skills --dry-run +./scripts/morph-skill-ln --dry-run # only print mkdir/ln, no writes +./scripts/morph-skill-ln --unlink -a cursor morph-js-sdk # remove symlink under .cursor/skills +./scripts/morph-skill-ln --unlink --dry-run # preview rm -f commands +``` + +To specify the path via environment variable: + +```bash +export MORPH_DOC_ROOT="/absolute/path/to/morph-doc" +./scripts/morph-skill-ln +``` + +For equivalent manual commands and tool notes, see the next two sections; for behavior details and troubleshooting, see **`skills/morph-skill-ln/SKILL.md`**. + +### Manual Symlink Commands + +Replace `MORPH_DOC_ROOT` with the **absolute path** to this repo's root, and `SKILL_ID` with the directory name (must match `name` in `SKILL.md` frontmatter). + +**Single skill (using `morph-js-sdk` as an example, linking within the repo matching the script's default agents)** + +```bash +MORPH_DOC_ROOT="/path/to/morph-doc" +SKILL_ID="morph-js-sdk" +SKILL_DIR="${MORPH_DOC_ROOT}/skills/${SKILL_ID}" + +mkdir -p "${MORPH_DOC_ROOT}/.cursor/skills" "${MORPH_DOC_ROOT}/.claude/skills" \ + "${MORPH_DOC_ROOT}/.openclaw/skills" "${MORPH_DOC_ROOT}/.windsurf/skills" + +ln -sfn "${SKILL_DIR}" "${MORPH_DOC_ROOT}/.cursor/skills/${SKILL_ID}" +ln -sfn "${SKILL_DIR}" "${MORPH_DOC_ROOT}/.claude/skills/${SKILL_ID}" +ln -sfn "${SKILL_DIR}" "${MORPH_DOC_ROOT}/.openclaw/skills/${SKILL_ID}" +ln -sfn "${SKILL_DIR}" "${MORPH_DOC_ROOT}/.windsurf/skills/${SKILL_ID}" +``` + +**Batch: create symlinks for all `morph-*` skills in this repo** + +```bash +MORPH_DOC_ROOT="/path/to/morph-doc" + +mkdir -p "${MORPH_DOC_ROOT}/.cursor/skills" "${MORPH_DOC_ROOT}/.claude/skills" \ + "${MORPH_DOC_ROOT}/.openclaw/skills" "${MORPH_DOC_ROOT}/.windsurf/skills" + +for d in "${MORPH_DOC_ROOT}/skills"/morph-*/; do + [ -d "$d" ] || continue + id="$(basename "$d")" + [ -f "${d}SKILL.md" ] || continue + ln -sfn "${MORPH_DOC_ROOT}/skills/${id}" "${MORPH_DOC_ROOT}/.cursor/skills/${id}" + ln -sfn "${MORPH_DOC_ROOT}/skills/${id}" "${MORPH_DOC_ROOT}/.claude/skills/${id}" + ln -sfn "${MORPH_DOC_ROOT}/skills/${id}" "${MORPH_DOC_ROOT}/.openclaw/skills/${id}" + ln -sfn "${MORPH_DOC_ROOT}/skills/${id}" "${MORPH_DOC_ROOT}/.windsurf/skills/${id}" +done +``` + +Using `ln -sfn` updates an existing symlink target in-place. + +--- + +## Tool Notes (corresponding to `morph-skill-ln` built-in `--agent` values) + +| Tool | In-repo path (relative to morph-doc root) | Notes | +|------|------------------------------------------|-------| +| **Cursor** | `.cursor/skills//` | Corresponds to `-a cursor`. | +| **Claude Code** | `.claude/skills//` | Corresponds to `-a claude`. | +| **OpenClaw** | `.openclaw/skills//` | Corresponds to `-a openclaw`; workspace behavior follows OpenClaw docs. | +| **Windsurf (Cascade)** | `.windsurf/skills//` | Corresponds to `-a windsurf` or `-a .windsurf/skills` (official Cascade workspace skills path). | +| **Codex compatible** | `.codex/skills//` | Corresponds to `-a codex`. | + +Other directories can be added with **`--agent `** (must contain `/` or start with `.`). + +--- + +## Linking agents (sibling mechanism) + +Agent definitions (files under `agents/.md`, e.g. `morph-doc-agent`, `morph-dapp-agent`) are symlinked separately from skills, because they live as **single `.md` files** rather than directories, and they land in **`.cursor/agents/`** / **`.claude/agents/`** (not `…/skills/`). + +Use the parallel script `scripts/morph-agent-ln` — same flag surface as `morph-skill-ln`: + +```bash +./scripts/morph-agent-ln # batch; default root + cursor/claude/openclaw/windsurf +./scripts/morph-agent-ln morph-dapp-agent # single agent name (with or without .md) +./scripts/morph-agent-ln -a cursor -a claude # only link Cursor and Claude Code +./scripts/morph-agent-ln --dry-run # only print mkdir/ln, no writes +./scripts/morph-agent-ln --unlink -a cursor morph-dapp-agent +``` + +Built-in `--agent` names map to repo-relative paths: + +| Tool | Agents path | +|------|------------| +| **Cursor** | `.cursor/agents/.md` | +| **Claude Code** | `.claude/agents/.md` | +| **OpenClaw** | `.openclaw/agents/.md` | +| **Windsurf** | `.windsurf/agents/.md` | +| **Codex compatible** | `.codex/agents/.md` | + +Skills and agents are linked independently — running only `morph-skill-ln` will not expose `agents/*.md` to your IDE, and vice versa. Typical first-time setup: run both once. + +--- + +## Correspondence with `doc_skill_id` + +Docs paired with MDX use `doc_skill_id` in their frontmatter; its value must match both the `skills//` directory name and the `name` field in `SKILL.md`. Validation: `__tests__/doc-skill-pairing.test.mjs` in the repo root. diff --git a/skills/morph-contracts/SKILL.md b/skills/morph-contracts/SKILL.md new file mode 100644 index 000000000..099862c35 --- /dev/null +++ b/skills/morph-contracts/SKILL.md @@ -0,0 +1,128 @@ +--- +name: morph-contracts +description: "Morph network info and contract addresses for Mainnet (chainId 2818) and Hoodi Testnet (chainId 2910): RPC URLs, block explorers, L1/L2 bridge contracts, gateway routers, token addresses, predeploys, and the Morph Bridge mainnet token list (ERC-20 + gateways). Use when the user needs RPC endpoints, chain IDs, contract addresses, token addresses for Morph Mainnet or Hoodi Testnet, or bridge-listed token pairs between Ethereum and Morph." +last_verified: 2026-04-20 +verified_against: + - docs/build-on-morph/developer-resources/1-contracts.md + - ../morph-bridge/public/morph-list/src/mainnet/tokenList.json +--- + +# Morph Contract Addresses Reference (Execution Playbook) + +## Single Source of Truth + +- **General contracts (rollup, messengers, predeploys):** `docs/build-on-morph/developer-resources/1-contracts.md` +- **Bridge-listed tokens + per-token gateway addresses (Mainnet):** canonical JSON is maintained in the Morph Bridge app — see [Bridge token list (Mainnet)](#bridge-token-list-mainnet) below. The tables in this Skill mirror that file; if they disagree, **trust the JSON** in the repo path given there. + +## Network Info + +| Network | RPC URL | Chain ID | Explorer | +|---------|---------|----------|----------| +| Morph Mainnet | `https://rpc-quicknode.morph.network` | **2818** | `https://explorer.morph.network` | +| Morph Hoodi Testnet | `https://rpc-hoodi.morph.network` | **2910** | `https://explorer-hoodi.morph.network` | +| Ethereum Mainnet | `https://ethereum-rpc.publicnode.com` | 1 | `https://etherscan.io` | +| Ethereum Hoodi Testnet | `https://ethereum-hoodi-rpc.publicnode.com` | 560048 | `https://hoodi.etherscan.io` | + +## Mainnet Common Contracts + +### L2 Predeploys (Morph Mainnet) + +| Contract | Address | +|----------|---------| +| L2GatewayRouter | `0x5300000000000000000000000000000000000002` | +| L2CrossDomainMessenger | `0x5300000000000000000000000000000000000007` | +| L2ETHGateway | `0x5300000000000000000000000000000000000006` | +| L2ToL1MessagePasser | `0x5300000000000000000000000000000000000001` | +| GasPriceOracle | `0x530000000000000000000000000000000000000f` | +| L2WETH | `0x5300000000000000000000000000000000000011` | +| TokenRegistry (AltFee) | `0x5300000000000000000000000000000000000021` | +| EIP-8004 IdentityRegistry | `0x8004A169FB4a3325136EB29fA0ceB6D2e539a432` | +| EIP-8004 ReputationRegistry | `0x8004BAa17C55a88189AE136b182e5fdA19dE9b63` | + +### L1 Contracts (Ethereum Mainnet) + +| Contract | Address | +|----------|---------| +| L1GatewayRouter | `0x7497756ada7e656ae9f00781af49fc0fd08f8a8a` | +| L1CrossDomainMessenger | `0xdc71366effa760804dcfc3edf87fa2a6f1623304` | +| Rollup | `0x759894ced0e6af42c26668076ffa84d02e3cef60` | + +## Bridge token list (Mainnet) + +**Canonical file (same content the bridge UI uses):** `morph-bridge/public/morph-list/src/mainnet/tokenList.json` — from **morph-doc** at repo root use `../morph-bridge/public/morph-list/src/mainnet/tokenList.json` (sibling app in the monorepo). + +- **List metadata:** `timestamp` in JSON (e.g. `2025-07-31T16:00:00Z`); treat the JSON as the live list if this Skill’s tables drift. + +### Ethereum Mainnet (`chainId` 1) — bridge entries + +| Symbol | Display / note | Address | Decimals | `gatewayName` | `gatewayAddress` | +|--------|----------------|---------|----------|---------------|------------------| +| ETH | — | `0x0000000000000000000000000000000000000000` | 18 | L1ETHGateway | `0x1c1ffb5828c3a48b54e8910f1c75256a498ade68` | +| USDT | USDT(USDT0) | `0xdAC17F958D2ee523a2206206994597C13D831ec7` | 6 | L1StandardERC20Gateway | `0x44c28f61a5c2dd24fc71d7df8e85e18af4ab2bd8` | +| WBTC | — | `0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599` | 8 | L1StandardERC20Gateway | `0x44c28f61a5c2dd24fc71d7df8e85e18af4ab2bd8` | +| WETH | — | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 18 | L1WETHGateway | `0x788890ba6f105cca373c4ff01055cd34de01877f` | +| LegacyUSDC | — | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | 6 | L1USDCGateway | `0x2C8314f5AADa5D7a9D32eeFebFc43aCCAbe1b289` | +| USDC | LayerZero path on L2 | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | 6 | L1USDCGateway | `0x2C8314f5AADa5D7a9D32eeFebFc43aCCAbe1b289` | +| DAI | — | `0x6B175474E89094C44Da98b954EedeAC495271d0F` | 18 | L1CustomERC20Gateway | `0xa534badd09b4c62b7b1c32c41df310aa17b52ef1` | +| BGB | `protocol`: ccip | `0x54D2252757e1672EEaD234D27B1270728fF90581` | 18 | L1StandardERC20Gateway | `0x44c28f61a5c2dd24fc71d7df8e85e18af4ab2bd8` | +| MX | — | `0x11eeF04c884E24d9B7B4760e7476D06ddF797f36` | 18 | L1StandardERC20Gateway | `0x44c28f61a5c2dd24fc71d7df8e85e18af4ab2bd8` | +| GT | — | `0xE66747a101bFF2dBA3697199DCcE5b743b454759` | 18 | L1StandardERC20Gateway | `0x44c28f61a5c2dd24fc71d7df8e85e18af4ab2bd8` | +| HTX | — | `0x61ec85ab89377db65762e234c946b5c25a56e99e` | 18 | L1StandardERC20Gateway | `0x44c28f61a5c2dd24fc71d7df8e85e18af4ab2bd8` | +| HT | — | `0x6f259637dcd74c767781e37bc6133cd6a68aa161` | 18 | L1StandardERC20Gateway | `0x44c28f61a5c2dd24fc71d7df8e85e18af4ab2bd8` | +| BGBTC | — | `0x0520930f21b14cafac7a27b102487bee7138a017` | 8 | L1StandardERC20Gateway | `0x44c28f61a5c2dd24fc71d7df8e85e18af4ab2bd8` | +| OMZ | — | `0xd7D9BaBf56A66dAFF2aC5dc96F7e886c05124676` | 18 | L1StandardERC20Gateway | `0x44c28f61a5c2dd24fc71d7df8e85e18af4ab2bd8` | + +### Morph Mainnet (`chainId` 2818) — bridge entries + +| Symbol | `displaySymbol` / note | Name | Address | Decimals | `protocol` | `gatewayName` | `gatewayAddress` | +|--------|-------------------------|------|---------|----------|--------------|---------------|------------------| +| ETH | — | Ethereum Token | `0x0000000000000000000000000000000000000000` | 18 | — | L2ETHGateway | `0x5300000000000000000000000000000000000006` | +| USDT | USDT.e | Tether Morph Bridged | `0xc7D67A9cBB121b3b0b9c053DD9f469523243379A` | 6 | native | L2StandardERC20Gateway | `0x5300000000000000000000000000000000000008` | +| USDT | USDT (USDT0) | Tether USD | `0xe7cd86e13AC4309349F30B3435a9d337750fC82D` | 6 | layerzero | *(empty in JSON)* | *(empty in JSON)* | +| WBTC | — | Wrapped Bitcoin | `0x803DcE4D3f4Ae2e17AF6C51343040dEe320C149D` | 8 | — | L2StandardERC20Gateway | `0x5300000000000000000000000000000000000008` | +| WETH | — | WETH | `0x5300000000000000000000000000000000000011` | 18 | — | L2WETHGateway | `0x5300000000000000000000000000000000000010` | +| LegacyUSDC | — | LegacyUSDC | `0x1199E23C0baE9710cCd9F645FA57794e5D469D06` | 6 | — | L2USDCGateway | `0x5300000000000000000000000000000000000020` | +| USDC | USDC.e | USDC Morph Bridged | `0xe34c91815d7fc18A9e2148bcD4241d0a5848b693` | 6 | native | L2USDCGateway | `0xc5e44E2fFe9523809146eD17D62bb382ECCf426B` | +| USDC | USDC | USDC | `0xCfb1186F4e93D60E60a8bDd997427D1F33bc372B` | 6 | layerzero | *(empty in JSON)* | *(empty in JSON)* | +| DAI | — | Dai | `0xef8A24599229D002B28bA2F5C0eBdD3c0EFFbed4` | 18 | — | L2CustomERC20Gateway | `0x5300000000000000000000000000000000000016` | +| BGB | BGB(old) | BitgetToken | `0x55d1f1879969bdbB9960d269974564C58DBc3238` | 18 | native | L2StandardERC20Gateway | `0x5300000000000000000000000000000000000008` | +| BGB | — | BitgetToken | `0x389C08Bc23A7317000a1FD76c7c5B0cb0b4640b5` | 18 | ccip | *(empty in JSON)* | *(empty in JSON)* | +| MX | — | MX Token | `0x0BEeF4B01281D85492713a015d51fEc5b6D14687` | 18 | — | L2StandardERC20Gateway | `0x5300000000000000000000000000000000000008` | +| GT | — | GateChainToken | `0x37d9A4d0b8B920CB2502dE3cA11c2227F4ADAcE9` | 18 | — | L2StandardERC20Gateway | `0x5300000000000000000000000000000000000008` | +| HTX | — | HTX | `0xD4eA4A71815D6999D1e28658f6E2d514BB356fA1` | 18 | — | L2StandardERC20Gateway | `0x5300000000000000000000000000000000000008` | +| HT | — | HuobiToken | `0x18e6C1Fdf768B25778eAA4Bf4f4c66c27c5128f6` | 18 | — | L2StandardERC20Gateway | `0x5300000000000000000000000000000000000008` | +| BGBTC | — | Bitget Wrapped BTC | `0x34951712c39d6284eC1afF60798C2E01E7cfB8eF` | 8 | — | L2StandardERC20Gateway | `0x5300000000000000000000000000000000000008` | +| OMZ | — | Open Meta City | `0xAA4353dA53DE0202119b5315109130D8E4aCDe17` | 18 | — | L2StandardERC20Gateway | `0x5300000000000000000000000000000000000008` | + +> **Dual USDT / USDC / BGB variants:** the list above matches `tokenList.json`. **USDT** has bridged **USDT.e**, native **USDT0-style** USDT, and L1 USDT for deposits. **USDC** has **LegacyUSDC**, bridged **USDC.e**, and LayerZero **USDC** on L2. **BGB** has an older bridged **BGB(old)** and the current **ccip** BGB — confirm with the user which symbol/version they need. + +## AltFee Token ID Mapping + +| ID | Token | +|----|-------| +| 1 | USDT.e | +| 2 | USDC.e | +| 3 | BGB (old) | +| 4 | BGB | +| 5 | USDT | +| 6 | USDC | + +## Hoodi Testnet Contracts + +Hoodi contract addresses are in the Hoodi section of `1-contracts.md`. Common test token: L2USDC = `0x1178341838B764dCfFA5BCEAb1d41443Fd71a227` + +## Python CLI Runtime Overrides + +```bash +export MORPH_RPC_URL="https://rpc-hoodi.morph.network" +export MORPH_CHAIN_ID=2910 +export MORPH_IDENTITY_REGISTRY="0x8004A818BFB912233c491871b3d84c89A494BD9e" +export MORPH_REPUTATION_REGISTRY="0x8004B663056A597Dffe9eCcC1965A193B7388713" +``` + +## Self-Check + +- [ ] Are general contract addresses deferred to `1-contracts.md` as the authoritative source? +- [ ] For bridge tokens and gateways, is **`tokenList.json`** named as the canonical list if tables might be incomplete? +- [ ] Is the user prompted to confirm which USDT / USDC / BGB version they need? +- [ ] Are Hoodi and Mainnet addresses clearly distinguished? diff --git a/skills/morph-dapp-code-review/SKILL.md b/skills/morph-dapp-code-review/SKILL.md new file mode 100644 index 000000000..9895e9de4 --- /dev/null +++ b/skills/morph-dapp-code-review/SKILL.md @@ -0,0 +1,162 @@ +--- +name: morph-dapp-code-review +description: "Morph dApp code review: review Solidity, JS SDK, and frontend diffs across four dimensions — Security / Performance / Code Quality / Planning compliance — with Morph-specific checks (Alt Fee fields, predeployed contract addresses, chainId, L1 data fee). Use when the user wants to review a Morph-related diff or PR, asks for security/perf/quality feedback, or wants to verify implementation against a planning document. Trigger when reviewing Morph dApp changes, requesting multi-dimension feedback, or aligning implementation with planning output. Not for generating implementation (see morph-dapp-codegen)." +last_verified: 2026-04-23 +verified_against: + - docs/build-on-morph/sdk/js-sdk.mdx + - docs/build-on-morph/developer-resources/1-contracts.md + - docs/build-on-morph/build-on-morph/4-understand-transaction-cost-on-morph.md + - skills/morph-js-sdk/SKILL.md + - skills/morph-contracts/SKILL.md + - skills/morph-tx-cost/SKILL.md +--- + +# Morph dApp Code Review + +Review a Morph-related change set (diff / PR / working tree) across 4 dimensions and +add Morph-specific risk checks. **Read-only — never modify code in this skill.** + +## When to use + +- The user supplies a PR link, a commit range, or wants the current working tree + `git diff` reviewed. +- The user asks for **per-dimension** feedback (security / performance / quality / + planning compliance). +- The change touches Morph contracts, the JS SDK, L1↔L2 bridge flows, or Alt Fee + paths. + +## Input identification + +When no explicit base is given, fall back in this order: + +1. User-provided `--base --head ` → `git diff ...` +2. Current branch vs `origin/main` / `main`: `git diff origin/main...HEAD` +3. No comparable base → `git diff` + `git status` of the working tree + +Stack identification: + +| File signal | Dimension to apply | +|---|---| +| `*.sol` + `foundry.toml` / `hardhat.config.*` | Solidity dimension | +| `*.ts/*.js` + `package.json` containing `viem` / `ethers` / `@morph-network/*` | JS SDK dimension | +| `*.tsx/*.jsx` + Next.js / React deps | Frontend dimension | +| `*.md/*.mdx` + `skills/` / `docs/` | Doc/skill dimension (apply `morph-doc-agent` lens) | + +## Dimension Checklist + +Each dimension lists generic checks first, then Morph-specific checks. Tag each +finding **P0 (must fix, blocks merge) / P1 (recommended) / P2 (optional)**. + +### 1. Security + +Generic: +- Unvalidated external input; SQL/command injection; unsafe deserialization +- Private keys / mnemonics / API keys written into code or logs +- Insecure randomness (`Math.random` for keys) +- Reentrancy, integer overflow, `tx.origin` auth (Solidity) +- `delegatecall` to untrusted addresses (Solidity) + +Morph-specific: +- Are **predeployed contract addresses** sourced from + `docs/build-on-morph/developer-resources/1-contracts.md`, not copied from a public + block explorer? +- Do **L1↔L2 bridge flows** handle message receipts and replay protection? +- Do **Alt Fee** calls verify that `feeTokenID` actually exists in the Token Registry? +- Mainnet (chainId `2818`) and Hoodi (`2910`) confused → wrong-chain risk + +### 2. Performance + +Generic: +- Algorithmic complexity, N+1 calls, network IO inside loops +- Large objects never released; long-lived closures holding big buffers +- Frontend: missing code-splitting / lazy loading; gratuitous re-renders + +Morph-specific: +- Repeated `eth_gasPrice` / `GasPriceOracle.getL1Fee` per transaction — should be + batched or cached +- Bridge flows polling without backoff — risk of hammering RPC + +### 3. Code Quality + +Generic: +- Confusing names, long functions, magic numbers +- Swallowed errors (`catch (_) {}`), error messages without context +- `any` overuse, unused/missing exports +- Test quality: weak assertions, no error branches, no edge cases + +Morph-specific: +- Hard-coded `chainId: 2818` literals or RPC URLs instead of importing chain objects + from `@morph-network/chain` / `@morph-network/viem` +- Alt Fee fields injected into a non-Alt-Fee path, or vice versa +- Real keys / mnemonics shown in plain example code + +### 4. Planning compliance + +Run only when the user provides a planning document path or there is a `planning/.md` +in-repo: + +- Are planning `Goals` covered by the code? (mark each COVERED / MISSING / DEVIATED) +- Are planning `Test Cases` represented in the test files? +- Did the change add unauthorized files outside `Target Files`? +- Can each item in the planning document's `Self-Check` be backed by code evidence? +- Are 🔴 items in `Open Questions` still unresolved? (still unresolved → P0) + +## Execution Steps + +1. **Collect the diff**: pick the diff per "Input identification". Count files and + lines; if it exceeds ~5000 lines, ask the user to chunk it — do not stuff context. +2. **Identify stack and planning presence**: decide which dimensions apply. +3. **Walk each dimension**: for every hit, record `file:line` + short description + + severity + suggestion. +4. **Cross-dimension dedup**: collapse same `file + function` findings into the + highest-severity entry. +5. **Emit the report** (format below). +6. **Never run `git commit` or `git push` from this skill** — stay read-only. + +## Output Format + +```markdown +# Morph dApp Code Review + +## Summary +- Scope: → , N files / M lines diffed +- Stack: +- Planning compared: +- Findings: P0×X / P1×Y / P2×Z + +## P0 (blocking) +- [security] file:line — description — suggestion +- ... + +## P1 (recommended) +- ... + +## P2 (optional) +- ... + +## Per-Dimension +### Security +### Performance +### Code Quality +### Planning compliance +- Goal coverage table +- Uncovered test cases +``` + +## Self-Check + +- Does every finding cite `file:line` and a one-line fix suggestion? +- Did Morph-specific items (Alt Fee / chainId / predeployed addresses / L1 fee) all + get walked? +- When no planning document exists, is "planning compliance not run" stated honestly? +- Is the P0 count proportional to the change size (avoid both under-reviewing and + false-positive piling)? +- Was the run kept fully read-only (no writes to the repo)? + +## Related Skills + +- `morph-dapp-planning`: source document for the planning-compliance dimension +- `morph-dapp-codegen`: implementation stage — review feedback feeds back into its + Phase 2 +- `morph-js-sdk` / `morph-contracts` / `morph-tx-cost`: fact-tables backing the + dimension checks diff --git a/skills/morph-dapp-codegen/SKILL.md b/skills/morph-dapp-codegen/SKILL.md new file mode 100644 index 000000000..8eedd0935 --- /dev/null +++ b/skills/morph-dapp-codegen/SKILL.md @@ -0,0 +1,116 @@ +--- +name: morph-dapp-codegen +description: "Morph dApp TDD codegen: take a planning document produced by morph-dapp-planning, write failing tests first, then implementation, looping tests + lint to green for Solidity / JS SDK / frontend code. Use when the user has a Morph planning document and wants TDD-style implementation, or when the user asks to implement a feature against an existing planning file for Morph contracts, viem/ethers SDK, or a Morph-facing dApp UI. Trigger when the user wants to land code against a planning document, run a Red→Green loop, or backfill tests. Not for ad-hoc edits without planning output (run morph-dapp-planning first)." +last_verified: 2026-04-27 +verified_against: + - docs/build-on-morph/sdk/js-sdk.mdx + - docs/build-on-morph/developer-resources/1-contracts.md + - skills/morph-js-sdk/SKILL.md + - skills/morph-tx-cost/SKILL.md +--- + +# Morph dApp TDD Codegen + +Land code against an approved planning document (from `morph-dapp-planning`). The flow is +deliberately minimal: **write tests → see them fail → write impl → see them pass → +run the full suite → wrap up**. + +## When to use + +- A planning file already exists (default: `planning/.md`). +- The work touches Morph contracts (Solidity / Hardhat / Foundry), the Morph JS SDK + (viem / ethers / ethers v5), or components in the Morph doc site. + +## Prerequisites + +1. Read the planning document path and pull out `Target Files`, `Test Cases`, `Morph Constraints`, + and `Self-Check`. +2. Confirm the toolchain for the target stack is ready: + - **Solidity**: `forge --version` or `npx hardhat --version` + - **JS/TS**: `node -v`, an `npm test` entry point exists + - **In-repo morph-doc changes**: confirm `npm test` runs at the repo root +3. Clean working tree: `git status`. Commit or stash uncommitted changes so you can + roll back. +4. Single stack per run: if the planning document spans multiple stacks, split the work into + separate runs — never mix stacks in one commit. + +## Execution Steps + +### Phase 1 — Red: write failing tests first + +1. Write at least one test function per Test Case in the planning document. +2. Cover: edge cases, error branches, and mocks/stubs for external dependencies (RPC / + contract calls). +3. The build/parse step must pass: + - Solidity: `forge build` or `npx hardhat compile` + - TS: `tsc --noEmit` (or the project's existing script, e.g. `npm run build` / + `npm run typecheck`) +4. Run tests and confirm **at least one case fails** (incremental refactors may stay + green, but the output must explicitly call this out): + - Solidity: `forge test` / `npx hardhat test` + - JS/TS: `npm test` (the morph-doc project goes through + `node scripts/run-tests.mjs`; new test files must be registered in `TEST_FILES`) +5. Commit the tests immediately with a message like + `test: add failing tests for `. + +### Phase 2 — Green: write the implementation + +1. Touch only the impl files listed under `Target Files` in the planning document. Do not edit the + tests on the side. +2. Strictly honor the planning document's **Morph Constraints**: + - **Alt Fee paths** must pass `feeTokenID` for token gas; `feeLimit` is optional (pass when you need an explicit cap); non-Alt-Fee + paths must NOT carry those fields. + - **chainId / RPC** are never hard-coded — use chain objects exported by + `@morph-network/chain` or `@morph-network/viem`. When both exist, pick the one + the planning document calls for. + - **Predeployed contract addresses** come only from + `docs/build-on-morph/developer-resources/1-contracts.md` or + `skills/morph-contracts`. + - **Total gas estimates** shown to users must include the L1 data fee + (`GasPriceOracle.getL1Fee`). +3. Iterate until the suite is green. On failure → fix the code (not the tests) → + re-run. +4. Cap the inner loop at 5 retries. Still failing → stop and hand the failing stack + trace back to the user. + +### Phase 3 — Wrap up + +1. Run static checks for the area: + - Solidity: `forge fmt --check` or the project's lint + - JS/TS: `npm run lint` (if defined) + - In the morph-doc repo: `npm test` (covers skill / sidebar / pairing guards) +2. Walk the planning document's tail `Self-Check` list and tick each item ✅ or document why it is + not covered. +3. Output a change summary in the chat (do NOT bake it into code comments): + - Files changed + - Tests added / updated + - Diffs from the planning document, if any +4. **Do not auto commit** unless the user explicitly asks. + +## Morph-specific codegen checklist + +Walk this list before handing off; any unchecked item → self-correct first: + +- [ ] Transaction signing goes through Morph adapters (`MorphSigner` / + `@morph-network/viem`); do not hand-assemble Alt Fee fields with raw viem/ethers. +- [ ] RPC mocks in tests are decoupled from production RPC URLs; no private keys or + mnemonics are written into test files. +- [ ] Every `"Mainnet"` / `"Hoodi"` literal carries a paired chainId or chain object + reference. +- [ ] Any new env var introduced is documented in the example `.env` or README; **no + real secrets are written to disk**. + +## Self-Check + +- Were tests written and seen to fail before the implementation existed (Red→Green)? +- Does each Test Case in the planning document map to a concrete test function? +- Are all Morph-specific values (`feeTokenID` / `feeLimit` / chainId / contract + addresses) traceable to an authoritative source? +- Are added/changed files limited to the planning document's `Target Files` and the matching tests? +- Did `npm test` / `forge test` go fully green at the project root? + +## Related Skills + +- `morph-dapp-planning`: upstream — produces the planning document +- `morph-dapp-code-review`: downstream — review stage after coding +- `morph-js-sdk` / `morph-contracts` / `morph-tx-cost`: domain fact-tables diff --git a/skills/morph-dapp-planning/SKILL.md b/skills/morph-dapp-planning/SKILL.md new file mode 100644 index 000000000..a5673f3aa --- /dev/null +++ b/skills/morph-dapp-planning/SKILL.md @@ -0,0 +1,155 @@ +--- +name: morph-dapp-planning +description: "Morph dApp planning: turn a product requirement (optionally + API doc + Figma URL) into a testable Morph dApp planning document covering Goals, Test Cases, Target Files, and Morph chain/contract/SDK constraints. Use when the user provides a Morph product requirement, feature description, API doc, or Figma link and wants to draft or revise planning output before coding. Trigger on requests to break a requirement into a buildable plan, planning work, or to align product inputs × API × Figma. Not for generating implementation code (see morph-dapp-codegen)." +last_verified: 2026-04-27 +verified_against: + - docs/build-on-morph/sdk/js-sdk.mdx + - docs/build-on-morph/developer-resources/1-contracts.md + - docs/build-on-morph/build-on-morph/4-understand-transaction-cost-on-morph.md + - skills/morph-js-sdk/SKILL.md + - skills/morph-contracts/SKILL.md + - skills/morph-tx-cost/SKILL.md +--- + +# Morph dApp Planning + +Turn a single requirement (a written product brief, a verbal description, or product +brief + API + Figma bundle) into a **planning document** that downstream development and +review skills can consume. +Default output file: `/planning/.md`. + +## When to use + +- The user described a new feature or iteration but has no planning document yet. +- The user provided product brief / API doc / Figma links together and wants to align + all three before coding. +- An existing planning document needs an incremental update due to a requirement change. + +Do **not** use this skill to produce implementation code — hand off to +`morph-dapp-codegen`. + +## Prerequisites (minimum info to gather) + +Before writing, confirm the items below. If anything is missing, ask the user **once** in +a single AskQuestion round — do not guess as you write: + +- **Target network**: Mainnet (chainId `2818`) / Hoodi Testnet (`2910`) / both. +- **Tech stack**: contracts (Solidity / Hardhat / Foundry) / JS SDK (viem / ethers v6 / + ethers v5) / frontend (React / Next.js) / node operations. +- **Alt Fee involvement**: yes → the planning document must explicitly state how + `feeTokenID` is chosen (Token Registry) and, if the product sets one, how `feeLimit` is sourced (optional at protocol level; set for an explicit user cap in-app). +- **Product × API × Figma cross-check needed**: when the user only supplies a single + written brief, skip Stage 2 and just do single-source extraction. + +## Execution Steps + +### 1. Extract from all inputs in parallel (only when multiple inputs are provided) + +Process inputs in parallel, not sequentially. File each into a draft using the structure +below: + +- **Product brief**: module → fields (source: API / i18n / hard-coded) → interactions → + empty/error states → open questions +- **API doc**: endpoint URL/method/auth → request params → full response field tree → + server-side defaults +- **Figma**: module → UI elements → dynamic-content mapping → visual specs (color tokens, + font sizes, spacing, radii) → state frames (default / loading / empty / error) + +For Figma, prefer the Figma MCP (`get_design_context` + `get_screenshot`); without MCP, +ask the user for key screenshots. + +### 2. Cross-check the three sources, output a contradiction list + +Run only when ≥2 inputs exist. Tag every finding with a severity: + +- 🔴 **Blocker**: clear contradiction or critical missing info — must be resolved before + coding +- 🟡 **Needs confirmation**: ambiguity or inconsistency — needs sign-off from product / + design / backend +- ✅ **Aligned**: ready to flow into Goals + +Walk through three pairwise comparisons (source, field name, count, copy, navigation +target, empty/error state, etc.) and aggregate findings into a Markdown table: +`finding type | severity | description | suggested action`. + +### 3. Generate the planning document body + +Default file path: `planning/.md` (feature-id in lowercase-kebab-case). +Minimum sections: + +```markdown +# Planning + +## Context +- Source: +- Target network: mainnet | hoodi | both (chainId 2818 / 2910) +- Stacks involved: contracts | js-sdk | frontend | node +- Alt Fee involved: yes | no + +## Goals +- G1: +- G2: ... + +## Non-Goals +- Items explicitly out of scope this round + +## Test Cases +- T1: +- T2: ... +(Each Goal must map to at least one test case; include error branches.) + +## Technical Approach +- Module breakdown, dependencies, key classes/functions +- Morph-specific constraints (see Morph Constraints below) + +## Target Files +- impl: +- test: + +## Morph Constraints +- Chain / RPC: presets from morph-network/chain; do not hard-code chainId / RPC +- Contract addresses: take from docs/build-on-morph/developer-resources/1-contracts.md; + never copy from a public block explorer +- Alt Fee: tx type 0x7f, must pass `feeTokenID` for token gas; `feeLimit` optional; non-Alt-Fee paths + must NOT include those fields +- L1 data fee: user-visible total gas estimate = L2 EIP-1559 + L1 data fee + (GasPriceOracle.getL1Fee) + +## Open Questions +- Repeat 🔴 / 🟡 items from Stage 2 verbatim, each with an owner + +## References +- docs/... +- Sibling skills: morph-js-sdk / morph-contracts / morph-tx-cost +``` + +### 4. Author the planning document Self-Check (last section) + +Append the checklist below as the document's final `## Self-Check` so downstream skills +have verifiable anchors: + +- [ ] Every Goal maps to at least one Test Case +- [ ] Test Cases cover at least one error branch +- [ ] Each `Target Files` entry has a paired impl / test path that exists +- [ ] If Alt Fee is involved, the planning document states the source of `feeTokenID` + (and of `feeLimit` if the product uses an explicit cap) +- [ ] Any contract address, chainId, or RPC mentioned cites an in-repo authoritative + docs path — no copy from external sources +- [ ] Every 🔴 in Open Questions has an explicit owner; otherwise the planning document is + not allowed to advance to the next stage + +## Self-Check (run immediately after writing) + +- Does the output path follow the `planning/.md` convention? +- Are the trigger scenarios in `description` actually reflected in the planning body? +- Was the contradiction list delivered separately (not mixed into the planning body)? +- Do all referenced docs paths actually exist in the repo? + +## Related Skills + +- `morph-js-sdk`: authoritative SDK fields and Alt Fee usage +- `morph-contracts`: predeployed contract address table +- `morph-tx-cost`: L1 + L2 fee math +- `morph-dapp-codegen`: consumes this planning document for TDD implementation +- `morph-dapp-code-review`: uses the same document as the planning-compliance dimension's + source of truth diff --git a/skills/morph-dapp-workflow/SKILL.md b/skills/morph-dapp-workflow/SKILL.md new file mode 100644 index 000000000..a55628ce9 --- /dev/null +++ b/skills/morph-dapp-workflow/SKILL.md @@ -0,0 +1,106 @@ +--- +name: morph-dapp-workflow +description: "Morph dApp end-to-end workflow orchestrator: chain planning → TDD implementation → multi-dimension review for Morph contract / JS SDK / frontend changes. Use when the user asks to take a Morph feature from idea to merge-ready code, runs the full planning-to-review pipeline, or wants a single command that walks through planning output, implementation, and review. Trigger when the user wants to push a Morph requirement straight from product description to mergeable code, or wants an end-to-end pipeline. For atomic tasks, call the matching child skill directly instead of this workflow." +last_verified: 2026-04-27 +verified_against: + - skills/morph-dapp-planning/SKILL.md + - skills/morph-dapp-codegen/SKILL.md + - skills/morph-dapp-code-review/SKILL.md +metadata: + orchestrates: + - morph-dapp-planning + - morph-dapp-codegen + - morph-dapp-code-review +--- + +# Morph dApp End-to-End Workflow + +Run a Morph requirement through three phases: **Planning → Code → Review**. Each phase +hands off to the corresponding child skill's full flow — never copy that content into +this file. + +## When to use + +- The user brings a complete requirement (written brief / Figma / spoken description) and wants + it driven all the way to mergeable code in one go. +- A previous phase already produced output (e.g. a planning document exists) and the user wants to + resume from a middle stage. + +Do **not** use for atomic operations — call the matching child skill directly. + +## Prerequisites + +Confirm the following child skills are loadable in the current IDE / tool (inside the +morph-doc repo, you can read `skills//SKILL.md` directly): + +- `morph-dapp-planning` +- `morph-dapp-codegen` +- `morph-dapp-code-review` + +Any missing → stop and point the user at `skills/README.md` to symlink via +`scripts/morph-skill-ln`. + +## Execution Steps + +### Stage 1 — Planning + +1. Hand off to **morph-dapp-planning**'s full flow. +2. Output: `planning/.md` containing Goals / Test Cases / Target Files / + Morph Constraints / Open Questions / Self-Check. +3. **Gate**: every 🔴 in Open Questions must be cleared or explicitly accepted by the + user (recorded inline in the planning document). Otherwise stop and wait — do not enter + Stage 2. + +### Stage 2 — Code + +1. Pass the Stage 1 planning document path as input and hand off to **morph-dapp-codegen**'s full + flow. +2. Complete Red → Green → wrap-up; the project's root scripts must pass + (`npm test` / `forge test` / `tsc --noEmit` as applicable). +3. **Gate**: all tests pass, no lint errors. On failure → stop and return control to + the user. + +### Stage 3 — Review + +1. Hand off to **morph-dapp-code-review**'s full flow, using the commit recorded at + the start of this workflow as the base. +2. Pass the Stage 1 planning document path through so the planning-compliance dimension is enabled. +3. Emit the review report. + +### Stage 4 — Wrap-up (handled inside this workflow, not delegated) + +1. Aggregate outputs from all three stages (planning document path, changed-file list, review + report). +2. List blockers (review P0 + still-open 🔴 from the planning document). No blockers → tell the + user they may proceed to commit/PR. Blockers exist → recommend the inner loop + "back to Stage 2 to fix P0 → rerun Stage 3"; **never auto commit / push**. + +## State and Recovery + +Simple rule: each stage's output file IS the state. + +| Existing artifact | Inferred phase | Suggested entry | +|---|---|---| +| Only a requirement description | Fresh start | Stage 1 | +| `planning/.md` exists | Planning done | Stage 2 | +| Planning doc + associated impl/tests landed | Code done | Stage 3 | +| All of the above and the code was changed again | Needs re-review | Stage 3 | + +No manifest file, no lock. For multi-person collaboration, ask the user to `git pull` +before starting. + +## Self-Check + +- Did each of the three stages "hand off to the child skill" rather than inline its + content? +- Was a gate check performed before each transition? +- Does the final output include all three: the planning document path, the changed-file list, and + the review report? +- Was auto-commit / auto-push avoided? + +## Related Skills + +- `morph-dapp-planning` / `morph-dapp-codegen` / `morph-dapp-code-review`: the three + atomic flows orchestrated by this workflow +- `morph-js-sdk` / `morph-contracts` / `morph-tx-cost`: Morph domain fact-tables, + invoked on demand from inside the child skills diff --git a/skills/morph-full-node-run-on-host/SKILL.md b/skills/morph-full-node-run-on-host/SKILL.md new file mode 100644 index 000000000..d0f873302 --- /dev/null +++ b/skills/morph-full-node-run-on-host/SKILL.md @@ -0,0 +1,28 @@ +--- +name: morph-full-node-run-on-host +description: Guides running a Morph full node from source (geth + consensus node), hardware requirements, build, config, snapshot sync, and startup. Use when the user asks to run a Morph full node on bare metal, sync from snapshot, or troubleshoot host-based node setup. Canonical human-readable documentation lives in the morph-doc repository path below. +last_verified: 2026-04-20 +verified_against: + - docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md +--- + +# Morph Full Node (Running from Source on Host) + +## Authoritative Documentation (single source of truth) + +Full steps, commands, and notes are in the doc: + +`docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md` + +(Site route id: `build-on-morph/developer-resources/node-operation/full-node/run-on-host`) + +## Agent Working Method (skill = execution playbook) + +1. Confirm target network (mainnet / Hoodi testnet) and whether to sync from snapshot (recommended). +2. Check hardware: execution layer geth and consensus layer node run as separate processes; disk space must account for continuous archive growth. +3. Follow the doc in order: clone `morph` repo and checkout release → `make geth` → `make build` in the `node` directory → download data.zip, generate `jwt-secret.txt`. +4. Download and extract the corresponding snapshot; point data directories to the `geth-data` / `node-data` layout described in the doc. +5. Start geth first (with JWT, engine API), then start node; ports and RPC follow the doc. +6. If the user deviates from the doc path (e.g. missing C compiler, wrong path), troubleshoot against the doc commands one by one. + +Do not fabricate download URLs or release tags not present in the doc; open the above doc to verify when in doubt. diff --git a/skills/morph-js-sdk/SKILL.md b/skills/morph-js-sdk/SKILL.md new file mode 100644 index 000000000..0ffda00b4 --- /dev/null +++ b/skills/morph-js-sdk/SKILL.md @@ -0,0 +1,83 @@ +--- +name: morph-js-sdk +description: "Morph JavaScript/TypeScript SDK: Alt Fee (tx type 0x7f), @morph-network/viem, @morph-network/ethers, @morph-network/ethers5, @morph-network/chain presets, Token Registry, feeTokenID/feeLimit, RPC and chainId. Use when the user builds or debugs Morph dApps in JS/TS, picks Viem vs Ethers, configures wallets/clients, sends gas in ERC-20, queries supported fee tokens, integrates npm packages, or asks about Morph-specific transaction fields, adapters, or network IDs (e.g. 2818, 2910). SKILL.md includes abbreviated Viem/Ethers snippets; full API tables and extended examples are in morph-doc js-sdk.mdx." +last_verified: 2026-04-27 +verified_against: + - docs/build-on-morph/sdk/js-sdk.mdx + - examples/viem-alt-fee/ +--- + +# Morph JS/TS SDK (Execution Playbook) + +## Source of Truth + +Read the in-repo doc before writing code or drawing conclusions: + +- File: `docs/build-on-morph/sdk/js-sdk.mdx` +- Site route id: `build-on-morph/sdk/js-sdk` +- Standalone Node example: `examples/viem-alt-fee/` (aligned with Quick Start values) + +The doc covers installation matrix, Quick Start, per-package API Reference, chain and Token Registry descriptions. This skill does not duplicate the long tables and signatures; open the corresponding section of the above file when details are needed. + +## Minimal Example (consistent with `js-sdk.mdx` Quick Start; use doc values as canonical) + +The skeletons below cover the most common paths; `feeTokenID` / `feeLimit`, gas, and chain object names follow the doc and current package exports. + +### Viem (`@morph-network/viem`) + +```typescript +import { createPublicClient, createWalletClient, http, parseEther } from "viem"; +import { privateKeyToAccount } from "viem/accounts"; +import { morphHoodiTestnet } from "@morph-network/viem"; + +const account = privateKeyToAccount(""); +const publicClient = createPublicClient({ chain: morphHoodiTestnet, transport: http() }); +const walletClient = createWalletClient({ account, chain: morphHoodiTestnet, transport: http() }); + +const hash = await walletClient.sendTransaction({ + account, + to: "0x...", + value: parseEther("0.001"), + nonce: await publicClient.getTransactionCount({ address: account.address }), + gas: 100000n, + maxFeePerGas: 15000000n, + maxPriorityFeePerGas: 14000000n, + feeTokenID: 4, + feeLimit: 252637086960555000n, +}); +``` + +### Ethers v6 (`@morph-network/ethers`) + +```typescript +import { BrowserProvider, parseEther } from "ethers"; +import { MorphSigner, MORPH_HOODI_TESTNET } from "@morph-network/ethers"; + +const provider = new BrowserProvider(window.ethereum); +const signer = MorphSigner.from(await provider.getSigner()); + +await signer.sendTransaction({ + to: "0x...", + value: parseEther("0.001"), + chainId: MORPH_HOODI_TESTNET.chainId, + gasLimit: 100000n, + maxFeePerGas: 15000000n, + maxPriorityFeePerGas: 14000000n, + feeTokenID: 4, + feeLimit: 252637086960555000n, +}); +``` + +## Execution Steps + +1. **Choose stack**: Select the adapter package based on the user's underlying library — Viem → `@morph-network/viem`; Ethers v6 → `@morph-network/ethers`; Ethers v5 → `@morph-network/ethers5`. Use `@morph-network/chain` (or the viem chain export aligned with the doc) for chain definitions. +2. **Distinguish Alt Fee from regular transactions**: Alt Fee is Morph's proprietary type `0x7f` and requires a valid `feeTokenID` (token gas); `feeLimit` is optional (protocol can fall back to balance as cap — see `js-sdk.mdx` and `10-altfeetx.md`); do not guess Morph field semantics from pure EIP-1559 experience or skip Registry-related steps. +3. **Chain and network**: Mainnet / Hoodi chainId, RPC names follow the doc and current package exports (commonly seen in doc: Mainnet `2818`, Hoodi testnet `2910`); if the user's version is outdated, prompt them to align with the package versions listed in the doc rather than hardcoding old constants. +4. **Site Demo**: The React Demo referenced in `js-sdk.mdx` only runs inside the Docusaurus site; when helping users in IDE, use the static code blocks from the doc — do not assume `@site/...` components can be imported. +5. **Do not fabricate exports**: Function names, types, and re-exported chain objects follow the doc and installed package `d.ts`; when uncertain, ask the user to paste their `package.json` version or copy the API table from the doc themselves. + +## Self-Check + +- Is the answer backed by `js-sdk.mdx`? +- Do the Alt Fee fields cover both Registry / limit semantics (as described in the doc)? +- Is the difference in syntax explained for the user's chosen adapter (viem / ethers / ethers5)? diff --git a/skills/morph-rails/SKILL.md b/skills/morph-rails/SKILL.md new file mode 100644 index 000000000..0f28d3ac9 --- /dev/null +++ b/skills/morph-rails/SKILL.md @@ -0,0 +1,78 @@ +--- +name: morph-rails +description: "Morph Rails programmable payment middleware on Morph L2: permissionless PayFi stack, non-custodial settlement, AltFee gas abstraction in Rails flows, Reference Key reconciliation, Agentic Payment (x402 + Skill Hub). Use when the user asks what Morph Rails is, PayFi on Morph, payment infrastructure vs raw chain ops, merchant/agent payment rails, or how Rails pieces fit together — not for deep AltFee signing or full x402 CLI/API tables (see linked docs under Single Source of Truth / Sub-topics)." +last_verified: 2026-04-20 +verified_against: + - docs/morph-rails/0-overview.md + - docs/about-morph/morph-rails.md + - docs/morph-rails/infra-solutions/1-altfee.md + - docs/morph-rails/infra-solutions/2-reference-key.md + - docs/morph-rails/agentic-payment/1-x402-facilitator.md + - docs/morph-rails/agentic-payment/2-morph-skill.md +--- + +# Morph Rails (Execution Playbook) + +## Single Source of Truth + +| Topic | In-repo path | +|-------|--------------| +| Overview & narrative (open infrastructure, modules) | `docs/about-morph/morph-rails.md` | +| Architecture & typical transaction flows (merchant / AI Agent) | `docs/morph-rails/0-overview.md` | +| Infrastructure capability: AltFee | `docs/morph-rails/infra-solutions/1-altfee.md` | +| Infrastructure capability: Reference Key | `docs/morph-rails/infra-solutions/2-reference-key.md` | +| Agentic: x402 Facilitator integration | `docs/morph-rails/agentic-payment/1-x402-facilitator.md` | +| Agentic: Morph Skill Hub | `docs/morph-rails/agentic-payment/2-morph-skill.md` | + +Details and long tables follow the **files above**; this SKILL only provides routing and boundaries to avoid duplicating topic-specific skills. + +## What is Morph Rails (one sentence) + +**Morph Rails** is a **programmable payment middleware layer** built on Morph: it encapsulates on-chain complexity — gas, monitoring, reconciliation, settlement — into production-grade payment capabilities accessible via SDK / API / CLI / MCP. **Non-custodial** (does not hold user or merchant funds at the middleware layer), **permissionless** access. + +## Core Principles (aligned with docs) + +- **Programmability** — Payment flows are configurable via SDK, API, CLI, MCP; composable with autonomous Agent orchestration. +- **Non-Custodial** — Settlement happens on-chain; the middleware is an orchestration layer, not a custodian. +- **Permissionless** — No approval process, no minimum transaction volume (consistent with `0-overview` narrative). +- **Full-Stack** — Includes infrastructure services, middleware, Agent toolchain, and merchant-side capabilities (vs "protocol only" solutions). + +## Typical Workflows (for explaining "the full Rail" to users) + +**Merchant payment receipt (Transaction Flow in docs):** +Payment app initiates → Rails interface → risk/compliance check → **AltFee** pays gas with stablecoins → transaction carries **Reference Key** → on-chain settlement on Morph → merchant reconciles with Reference Key. + +**AI Agent paying for API:** +Skill Hub / discovery endpoint → HTTP `402 Payment Required` → **x402 Facilitator** constructs and signs payment → **AltFee** pays gas with USDC etc. (zero ETH possible) → resource returned after on-chain settlement (see `0-overview`). + +## Sub-topics → Specific Skills / Docs + +| User question focus | Open first | +|---------------------|------------| +| Rails overview, architecture diagram, who it's for | `docs/morph-rails/0-overview.md`, `docs/about-morph/morph-rails.md` | +| HTTP 402, Facilitator, HMAC, merchant credentials, CLI `x402-*` | `docs/morph-rails/agentic-payment/1-x402-facilitator.md` | +| Transaction type `0x7f`, `feeTokenID` / `feeLimit`, Viem/Ethers signing | `docs/about-morph/10-altfeetx.md`, `docs/morph-rails/infra-solutions/1-altfee.md` | +| JS/TS client, chain preset, npm packages | **`skills/morph-js-sdk/SKILL.md`** | +| Merchant order reconciliation, on-chain reference lookup | `docs/morph-rails/infra-solutions/2-reference-key.md` (check the page for mainnet availability timeline) | +| Agent-side Skill list, `morph-wallet` / `morph-altfee` etc. | `docs/morph-rails/agentic-payment/2-morph-skill.md`, [morph-skill GitHub](https://github.com/morph-l2/morph-skill) | + +## Common Boundary Confusion + +- **Morph Rails ≠ x402 only**: x402 is one key protocol for **Agent-to-Agent micropayments** within the Rails ecosystem; use this skill when discussing the full payment stack, and open **`1-x402-facilitator.md`** for verify/settle/HMAC/CLI details. +- **Morph Rails ≠ full AltFee spec**: Rails docs mention "pay gas with USDC"; for transaction fields and signing details, refer to **`10-altfeetx.md`**, **`1-altfee.md`**, and the AltFee technical sections linked from those pages. +- **Morph Skill (Hub / morph-skill repo) ≠ this repo's Agent Skills**: the former is an on-chain/Agent-side capability module; the **`skills/`** directory in this repo contains SKILL documentation for IDE/model tools — do not conflate the two. + +## Execution Steps (model) + +1. Determine if the user wants the "full picture" or a "sub-protocol/sub-feature" — full picture: only read this SKILL + `0-overview`; otherwise redirect to the topic-specific skill. +2. For addresses, chain IDs, contract lists, use **morph-contracts** (if installed) or `docs/` contract chapters — do not hardcode from memory. +3. Before delivering: verify Rails is described as non-custodial and permissionless; verify the split between x402/AltFee responsibilities is clear. + +## Self-Check + +- [ ] Does it point to `docs/morph-rails/0-overview.md` or `docs/about-morph/morph-rails.md` as the full-picture source of truth? +- [ ] Does it clarify that x402 is one component of Rails, and redirect details to **`1-x402-facilitator.md`**? +- [ ] Does it clarify that AltFee is a common Rails capability, and redirect signing/type details to **`10-altfeetx.md`** / **`1-altfee.md`**? +- [ ] Does it distinguish Morph Skill Hub (product) from the `skills/` Agent Skills in this repo? +- [ ] Does Reference Key remind the reader to check availability and API description in `2-reference-key.md`? +- [ ] Does it avoid repeating the long x402 Facilitator API table inside the SKILL (readers should open `1-x402-facilitator.md`)? diff --git a/skills/morph-skill-ln/SKILL.md b/skills/morph-skill-ln/SKILL.md new file mode 100644 index 000000000..82bcbc721 --- /dev/null +++ b/skills/morph-skill-ln/SKILL.md @@ -0,0 +1,74 @@ +--- +name: morph-skill-ln +description: "Morph-doc Agent Skills 安装脚本:将 skills// 链到仓库内各工具 skills 目录(--agent …),或用 --unlink 移除对应软链。Use when the user runs morph-skill-ln, unlinks agent symlinks, needs Windsurf .windsurf/skills, or troubleshoots project-local skills in Cursor/Claude/OpenClaw." +last_verified: 2026-04-20 +verified_against: + - scripts/morph-skill-ln + - skills/README.md +--- + +# morph-skill-ln (Execution Playbook) + +## Single Source of Truth + +| Topic | In-repo path | +|-------|--------------| +| Skills overview (directory conventions, relationship to human docs, symlink notes, tool table) | `skills/README.md` | +| Doc-as-SKILL vision & `doc_skill_id` contract | `VISION.md` | +| Generate/audit a Skill from a single target | `agents/morph-doc-agent.md` | + +This SKILL only describes **how to use the script to create symlinks**; conventions and index follow **`skills/README.md`**. + +## When to Use + +- Create **project-local** skill symlinks for **Cursor / Claude Code / OpenClaw / Windsurf (Cascade)** etc. under the repo root (`/skills/` → `/.*/skills/`). +- Use **`./scripts/morph-skill-ln --agent …`** to select the tool; **Windsurf** uses **`-a windsurf`** (maps to **`.windsurf/skills`**, consistent with the official Cascade Skills workspace path). +- Batch update symlink targets (after repo path changes, re-linking on a new machine) or troubleshoot "Agent does not list skill". + +## Canonical Path Conventions + +- Canonical in-repo directory: **`skills//`** (containing `SKILL.md`); **do not** treat `.cursor/skills` as the sole in-repo source. +- `name` (frontmatter), directory name, and optional MDX `doc_skill_id` must match; validation: `__tests__/doc-skill-pairing.test.mjs`. + +## Execution Steps (model / human) + +1. Confirm **morph-doc** is cloned locally. **Repo root**: **`-r` / `--root PATH`** or **`MORPH_DOC_ROOT`** or the script default (**`-r` > `MORPH_DOC_ROOT` > default**). +2. **Target Agent**: **`-a` / `--agent ARG`** (repeatable). **Built-in**: `cursor`, `claude`, `openclaw`, `windsurf`, `codex`; when **no `--agent`** is passed, defaults to **cursor + claude + openclaw + windsurf**. **Custom**: pass a **repo-relative path** (containing `/` or starting with `.`), e.g. **`.windsurf/skills`**, **`mytool/skills`** — maps to `//`. +3. Example commands from the repo root: + + ```bash + ./scripts/morph-skill-ln + ./scripts/morph-skill-ln morph-js-sdk + ./scripts/morph-skill-ln -a cursor -a windsurf morph-js-sdk + ./scripts/morph-skill-ln -r /absolute/path/to/morph-doc -a claude + ./scripts/morph-skill-ln --dry-run + ./scripts/morph-skill-ln --unlink -a cursor morph-js-sdk + ``` + +4. **Remove symlinks**: **`--unlink`**, with the same **`--agent`** as when linking; only deletes **symbolic links** (regular files/directories are skipped with a warning). **`--dry-run`** prints **`rm -f`** commands. For a single skill, **`skills//` does not need to exist**. See **`./scripts/morph-skill-ln --help`** for details. + +5. When linking (without `--unlink`): **`mkdir -p`** the selected directories and **`ln -sfn`** to `/skills/`. + +## Tool Path Mapping (in-repo) + +| Built-in `--agent` | Links to (relative to repo root) | +|--------------------|----------------------------------| +| cursor | `.cursor/skills//` | +| claude | `.claude/skills//` | +| openclaw | `.openclaw/skills//` | +| windsurf | `.windsurf/skills//` (Windsurf Cascade workspace skills) | +| codex | `.codex/skills//` | + +## Common Pitfalls + +- **Canonical directory** is still **`skills//`**; `.cursor/skills` etc. are **mirror links** for Agent discovery, aligned with **`--agent`** selection. +- **Batch mode** only enumerates `skills/morph-*/`; non-`morph-` prefixed directories must be linked with a **single `skill-id` argument**. +- **`--dry-run`** only prints commands, does not write to the filesystem. +- **`--unlink`** does not delete real directories under `skills/`, only removes links in agent directories. + +## Self-Check + +- [ ] Does it point to `skills/README.md` as the overview entry point? +- [ ] Does it explain `-r` / `MORPH_DOC_ROOT` and the **`--agent`** default (cursor + claude + openclaw + windsurf)? +- [ ] Does it list built-in agents and their in-repo paths (including **Windsurf → `.windsurf/skills`**)? +- [ ] Does it remind that `doc_skill_id` / `name` / directory name must match (see VISION and pairing tests)? diff --git a/skills/morph-tx-cost/SKILL.md b/skills/morph-tx-cost/SKILL.md new file mode 100644 index 000000000..d75d7ea77 --- /dev/null +++ b/skills/morph-tx-cost/SKILL.md @@ -0,0 +1,81 @@ +--- +name: morph-tx-cost +description: "Morph L2 transaction fee model: L2 execution fee (EIP-1559 gas) plus L1 data/security fee, GasPriceOracle getL1Fee, eth_gasPrice / eth_estimateGas, UI total-fee display, max-ETH sends, and common RPC errors. Use when the user asks about gas cost, tx fees, l1Fee + l2Fee, why fees differ from Ethereum-only math, or fee estimation on Morph — not for AltFeeTx field signing (see docs/about-morph/10-altfeetx.md)." +last_verified: 2026-04-20 +verified_against: + - docs/build-on-morph/build-on-morph/4-understand-transaction-cost-on-morph.md + - docs/about-morph/10-altfeetx.md + - docs/build-on-morph/sdk/functions/estimateL1GasCost.md + - docs/build-on-morph/sdk/functions/estimateL2GasCost.md +--- + +# Morph Transaction Fees (Execution Playbook) + +## Single Source of Truth + +| Topic | In-repo path | +|-------|--------------| +| **Fee model, formula, RPC, common errors (primary entry)** | `docs/build-on-morph/build-on-morph/4-understand-transaction-cost-on-morph.md` | +| AltFee: total fee first calculated in ETH (L1+L2), then converted to ERC-20 | `docs/about-morph/10-altfeetx.md` (Fee Calculation) | +| JS/TS: `estimateL1GasCost` / `estimateL2GasCost` etc. | `docs/build-on-morph/sdk/functions/estimateL1GasCost.md`, `estimateL2GasCost.md`; overview in `docs/build-on-morph/sdk/js-sdk.mdx` | + +Details, long explanations, and on-chain notes follow **`4-understand-transaction-cost-on-morph.md`**; this SKILL only provides actionable key points and routing. + +## Core Facts (Quick Reference) + +The total cost of a single transaction on Morph has **two components** (unlike the pure L1 mental model of `gasPrice × gasLimit`): + +1. **L2 execution fee** — Similar to Ethereum: gas consumed by execution and storage × L2 gas price. + - Morph supports **EIP-1559**: `l2_gas_price = l2_base_fee + l2_priority_fee`. + - `l2_execution_fee = l2_gas_price * l2_gas_used`. + +2. **L1 data / security fee** — Transaction data is published to Ethereum for verifiability and security; users bear this cost, and it **typically dominates total cost**. + - The doc provides a formula involving `l1BaseFee`, `commitScalar`, `l1BlobBaseFee`, `blobScalar`, and per-byte pricing for `len(tx_data)`; **read specific parameters from the on-chain Gas Price Oracle**, do not hardcode them. + +**When displaying an estimated fee to users**: show the **sum of L2 execution fee + L1 data fee**, not just `gasPrice * gasLimit`. + +## On-chain Estimation (L1 Data Fee) + +- Predeploy **`GasPriceOracle`** (also called L1 Gas Price Oracle in docs); Morph Mainnet example address is in **`4-understand-transaction-cost-on-morph.md`** via the Explorer link (typically a `0x5300…000f`-style predeploy). +- Call with **raw transaction data**: `getL1Fee(bytes _data) returns (uint256)` to estimate the **L1 data fee**. +- The doc states: once a transaction is processed by the sequencer, the L1 fee the user owes is finalized; subsequent fluctuations do not affect the actual fee deducted for an already-executed transaction (see the Tip on that page). + +## Sending Transactions & RPC Conventions + +- Sending flow is the same as Ethereum: use `eth_gasPrice` to get the current L2 gas price; use `eth_estimateGas` to estimate the gas limit. +- **Insufficient balance** may cause the node to return: + `invalid transaction: insufficient funds for l1Fee + l2Fee + value` (must cover **value, L2 fee, and L1 fee** simultaneously). +- **Gas price too low/too high** may cause Morph to return a custom `-32000` error (see the same doc for error text); handle per the doc's "gas price updates" section (refer to the page). + +## "Send Max ETH" (max send) + +When transferring as much ETH as possible from a user's balance, you must subtract both the estimated **L2 execution fee** and the **L1 data fee** from the intended transfer amount, or an insufficient funds error will occur. + +## Sub-topics → Specific Skills + +| User question focus | Open first | +|---------------------|------------| +| Paying gas with USDT/USDC etc., tx type `0x7f`, `feeTokenID` / `feeLimit` | `docs/about-morph/10-altfeetx.md` | +| Viem/Ethers client, chain preset, SDK package names | **`skills/morph-js-sdk/SKILL.md`** + `docs/build-on-morph/sdk/js-sdk.mdx` | +| Mainnet / Hoodi contract and RPC quick reference | **`skills/morph-contracts/SKILL.md`** (if installed) | + +## Common Boundary Confusion + +- **This skill**: explains **ETH-denominated** L2+L1 fee structure, display, and RPC errors. +- **AltFee token gas (`10-altfeetx.md`)**: after the total ETH fee is calculated, how to use the Token Registry and a `0x7f` transaction to pay with ERC-20; do not expand RLP/signing details in this skill. +- **Official L1↔L2 bridge (deposits/withdrawals, challenge periods)**: not covered here — see `docs/build-on-morph/build-on-morph/3-bridge-between-morph-and-ethereum.md`; distinct from the gas/L1 data fee of a single L2 tx. + +## Execution Steps (model) + +1. Determine if the user is asking about **fee composition/estimation/UI**, or **paying gas with tokens** — the latter redirects to **`docs/about-morph/10-altfeetx.md`**. +2. For contract addresses and chain IDs, use **morph-contracts** or `docs/` contract chapters — do not hardcode from memory. +3. Before delivering: verify that **total fee = L2 execution + L1 data** is emphasized; verify it points to `4-understand-transaction-cost-on-morph.md` as the authoritative reference. + +## Self-Check + +- [ ] Is **`docs/build-on-morph/build-on-morph/4-understand-transaction-cost-on-morph.md`** listed as the primary source of truth? +- [ ] Are both **L2 execution fee** and **L1 data fee** explicitly stated, with the note that they must be **summed** for display? +- [ ] Is it mentioned that the L1 data fee is estimated via **`getL1Fee`** (GasPrice Oracle), not just by multiplying gas? +- [ ] Does it cover **`insufficient funds for l1Fee + l2Fee + value`** and gas-price-too-low/too-high errors (per the doc)? +- [ ] In "token gas payment" scenarios, does it redirect to **`10-altfeetx.md`** and avoid repeating the AltFee signing table? +- [ ] Does it avoid pasting the full formula derivation inside the SKILL (use "open the above MD file" instead)? diff --git a/src/components/ApiExplorer/configs/networks.ts b/src/components/ApiExplorer/configs/networks.ts index 26cb92e04..6c256f8da 100644 --- a/src/components/ApiExplorer/configs/networks.ts +++ b/src/components/ApiExplorer/configs/networks.ts @@ -1,6 +1,6 @@ /** * Morph Network Configuration - * Hardcoded network info to avoid @morphchain/core dependency + * Hardcoded network info to avoid @morphnetwork/core dependency */ export const MORPH_MAINNET = { diff --git a/src/components/MarkdownActionsDropdown/index.js b/src/components/MarkdownActionsDropdown/index.js index d6beafefb..b33320f71 100644 --- a/src/components/MarkdownActionsDropdown/index.js +++ b/src/components/MarkdownActionsDropdown/index.js @@ -1,4 +1,5 @@ import React, { useState, useRef, useEffect } from 'react'; +import { isMarkdownActionsPathname } from '../../utils/isMarkdownActionsPathname'; export default function MarkdownActionsDropdown() { const [copied, setCopied] = useState(false); @@ -8,8 +9,7 @@ export default function MarkdownActionsDropdown() { // Get pathname from window.location const currentPath = typeof window !== 'undefined' ? window.location.pathname : ''; - // Only show on docs pages (not blog, homepage, etc.) - const isDocsPage = currentPath.startsWith('/docs/'); + const showMarkdownActions = isMarkdownActionsPathname(currentPath); // Handle click outside to close dropdown useEffect(() => { @@ -33,7 +33,7 @@ export default function MarkdownActionsDropdown() { }; }, [isOpen]); - if (!isDocsPage) { + if (!showMarkdownActions) { return null; } diff --git a/src/theme/Root.js b/src/theme/Root.js index 69e5d8de9..7397d73e8 100644 --- a/src/theme/Root.js +++ b/src/theme/Root.js @@ -3,6 +3,7 @@ import React, { useEffect } from 'react'; import { useLocation } from '@docusaurus/router'; import { createRoot } from 'react-dom/client'; import MarkdownActionsDropdown from '../components/MarkdownActionsDropdown'; +import { isMarkdownActionsPathname } from '../utils/isMarkdownActionsPathname'; export default function Root({ children }) { const { hash, pathname } = useLocation(); @@ -42,8 +43,7 @@ export default function Root({ children }) { let containerElement = null; const injectDropdown = () => { - // Only inject on docs pages - if (!pathname.startsWith('/docs/')) return; + if (!isMarkdownActionsPathname(pathname)) return; // Check if already injected anywhere on the page if (document.querySelector('.markdown-actions-container')) return; diff --git a/src/utils/isAltFee.js b/src/utils/isAltFee.js new file mode 100644 index 000000000..32c059f90 --- /dev/null +++ b/src/utils/isAltFee.js @@ -0,0 +1,73 @@ +/** + * Whether a tx/request payload is AltFee per Morph rules (type, feeTokenID, optional feeLimit). + * CommonJS so Node test runners can `require()` it without package `"type":"module"`. + * + * 1) type: omitted/null → skip; 127 / 127n / "0x7f" / "altFee" (case-insensitive) → proceed; otherwise false + * 2) When type is explicitly AltFee: feeTokenID null/omitted → throw (upstream contract violation) + * 3) Core: feeTokenID present and > 0; feeLimit optional — if provided must be >= 0 and finite, else false + * + * @param {object} [params={}] + * @param {number|bigint|string|undefined|null} [params.type] + * @param {number|bigint|undefined|null} [params.feeTokenID] + * @param {number|bigint|undefined|null} [params.feeLimit] + * @returns {boolean} + * @throws {Error} When type is AltFee and `feeTokenID` is `null` or `undefined` + */ +function isAltFeeTypeExplicit(type) { + if (type === undefined || type === null) return false; + if (type === 127) return true; + if (typeof type === 'bigint' && type === 127n) return true; + if (typeof type === 'string') { + if (type === '0x7f' || type === '0X7F') return true; + if (type.toLowerCase() === 'altfee') return true; + } + return false; +} + +function isFeeLimitValid(feeLimit) { + if (typeof feeLimit === 'bigint') { + return feeLimit >= 0n; + } + const n = Number(feeLimit); + return Number.isFinite(n) && n >= 0; +} + +function isPositiveFeeTokenId(feeTokenID) { + if (feeTokenID === undefined || feeTokenID === null) return false; + if (typeof feeTokenID === 'bigint') { + return feeTokenID > 0n; + } + if (typeof feeTokenID === 'number') { + return Number.isFinite(feeTokenID) && Number.isInteger(feeTokenID) && feeTokenID > 0; + } + return false; +} + +function isAltFee(params) { + const p = params === undefined || params === null ? {} : params; + const { type, feeTokenID, feeLimit } = p; + + if (type !== undefined && type !== null) { + if (!isAltFeeTypeExplicit(type)) { + return false; + } + } + + if (isAltFeeTypeExplicit(type) && (feeTokenID === undefined || feeTokenID === null)) { + throw new Error('AltFee: when type is AltFee (0x7f/127/altFee), feeTokenID is required'); + } + + if (!isPositiveFeeTokenId(feeTokenID)) { + return false; + } + + if (feeLimit !== undefined && feeLimit !== null) { + if (!isFeeLimitValid(feeLimit)) { + return false; + } + } + + return true; +} + +module.exports = { isAltFee, isAltFeeTypeExplicit, isFeeLimitValid, isPositiveFeeTokenId }; diff --git a/src/utils/isMarkdownActionsPathname.js b/src/utils/isMarkdownActionsPathname.js new file mode 100644 index 000000000..99c2dfd4b --- /dev/null +++ b/src/utils/isMarkdownActionsPathname.js @@ -0,0 +1,12 @@ +/** + * Pathnames where MarkdownActionsDropdown is injected (Docusaurus `docs` + `skills` plugins). + * CommonJS so Node test runners can `require()` it without package `"type":"module"`. + * @param {string} pathname + * @returns {boolean} + */ +function isMarkdownActionsPathname(pathname) { + if (typeof pathname !== 'string' || !pathname) return false; + return pathname.startsWith('/docs/') || pathname.startsWith('/skills/'); +} + +module.exports = { isMarkdownActionsPathname }; From 09e38dc7fb123ac6f3aece415a6d05c1aadfbb1e Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Mon, 27 Apr 2026 15:08:58 +0800 Subject: [PATCH 02/25] fix: build --- docs/build-on-morph/sdk/js-sdk.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-on-morph/sdk/js-sdk.mdx b/docs/build-on-morph/sdk/js-sdk.mdx index d75825920..843f1f9a0 100644 --- a/docs/build-on-morph/sdk/js-sdk.mdx +++ b/docs/build-on-morph/sdk/js-sdk.mdx @@ -83,7 +83,7 @@ Alt Fee Transaction (type `0x7f`) lets users pay gas with registered ERC-20 toke **Key fields:** - `feeTokenID`: Token ID in the Token Registry (required when paying gas in that token) -- `feeLimit` (optional): Max token amount the user authorizes for gas; if omitted, the chain may use the sender’s token balance as the effective cap (see [AltFeeTx spec](/about-morph/10-altfeetx)) +- `feeLimit` (optional): Max token amount the user authorizes for gas; if omitted, the chain may use the sender’s token balance as the effective cap (see AltFeeTx spec) --- From 5311dfcdd5597a401ac67180123c92a33139646c Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Mon, 27 Apr 2026 19:09:23 +0800 Subject: [PATCH 03/25] fix: doc agent --- .../build-toolchain-constraints.test.mjs | 42 + package.json | 8 +- pnpm-lock.yaml | 15640 ++++++++-------- scripts/run-tests.mjs | 2 +- 4 files changed, 7616 insertions(+), 8076 deletions(-) create mode 100644 __tests__/build-toolchain-constraints.test.mjs diff --git a/__tests__/build-toolchain-constraints.test.mjs b/__tests__/build-toolchain-constraints.test.mjs new file mode 100644 index 000000000..125eac4ee --- /dev/null +++ b/__tests__/build-toolchain-constraints.test.mjs @@ -0,0 +1,42 @@ +/** + * Pin webpack to a range compatible with Docusaurus 3.1 + webpackbar (ProgressPlugin options). + * Webpack 5.97+ validates ProgressPlugin strictly; webpackbar 5.0.x passes legacy fields (name, color, reporters). + * @see https://github.com/webpack/webpack/issues — keep in sync with package.json pnpm.overrides.webpack + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const PKG = JSON.parse(fs.readFileSync(path.join(ROOT, 'package.json'), 'utf8')); + +const PINNED = '5.96.1'; + +assert.equal( + PKG.pnpm?.overrides?.webpack, + PINNED, + `package.json pnpm.overrides.webpack must be ${PINNED} (webpackbar + Docusaurus build)`, +); +assert.equal( + PKG.devDependencies?.webpack, + PINNED, + `package.json devDependencies.webpack must be ${PINNED} so install resolves a single copy`, +); +assert.match( + PKG.devDependencies?.typescript ?? '', + /^[~^]?5\.(4|5|6|7|8|9)\./, + 'typescript should be >=5.4 for viem/ox peer (package.json devDependencies.typescript)', +); + +const lockPath = path.join(ROOT, 'pnpm-lock.yaml'); +assert.ok(fs.existsSync(lockPath), 'pnpm-lock.yaml exists'); +const lockHead = fs.readFileSync(lockPath, 'utf8').slice(0, 800); +assert.match( + lockHead, + new RegExp(`overrides:\\s*\\n\\s*webpack:\\s*${PINNED.replace(/\./g, '\\.')}`), + 'pnpm-lock.yaml must record webpack override', +); + +console.log('build-toolchain-constraints: ok'); diff --git a/package.json b/package.json index 846516d87..615e3ce5c 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,13 @@ "@docusaurus/types": "3.1.1", "@types/react": "^18.2.29", "pre-commit": "^1.2.2", - "typescript": "~5.2.2" + "typescript": "~5.4.5", + "webpack": "5.96.1" + }, + "pnpm": { + "overrides": { + "webpack": "5.96.1" + } }, "browserslist": { "production": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 641dcb138..824468dc3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,820 +1,1856 @@ -lockfileVersion: '9.0' +lockfileVersion: '6.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -importers: - - .: - dependencies: - '@docsearch/react': - specifier: ^3.5.2 - version: 3.9.0(@algolia/client-search@5.50.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) - '@docusaurus/core': - specifier: 3.1.1 - version: 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/plugin-client-redirects': - specifier: 3.1.1 - version: 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/preset-classic': - specifier: 3.1.1 - version: 3.1.1(@algolia/client-search@5.50.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.2.2) - '@docusaurus/theme-common': - specifier: 3.1.1 - version: 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/theme-search-algolia': - specifier: 3.1.1 - version: 3.1.1(@algolia/client-search@5.50.0)(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.2.2) - '@mdx-js/react': - specifier: 3.0.1 - version: 3.0.1(@types/react@18.3.28)(react@18.3.1) - '@morph-network/viem': - specifier: 0.1.0 - version: 0.1.0(@morph-network/chain@0.0.2)(typescript@5.2.2) - '@morui/theme': - specifier: ^2.1.0 - version: 2.1.0(tailwindcss@3.4.19) - autoprefixer: - specifier: ^10.4.17 - version: 10.4.27(postcss@8.5.8) - classnames: - specifier: ^2.5.1 - version: 2.5.1 - docusaurus-markdown-source-plugin: - specifier: ^2.0.1 - version: 2.2.4(@docusaurus/core@3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - docusaurus-plugin-sass: - specifier: ^0.2.5 - version: 0.2.6(@docusaurus/core@3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2))(sass@1.98.0)(webpack@5.105.4) - dotenv: - specifier: ^16.0.3 - version: 16.6.1 - lottie-react: - specifier: ^2.4.0 - version: 2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - postcss: - specifier: ^8.4.33 - version: 8.5.8 - prism-react-renderer: - specifier: ^2.1.0 - version: 2.4.1(react@18.3.1) - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) - rehype-katex: - specifier: ^7.0.0 - version: 7.0.1 - remark-math: - specifier: ^6.0.0 - version: 6.0.0 - sass: - specifier: ^1.71.0 - version: 1.98.0 - tailwindcss: - specifier: ^3.4.1 - version: 3.4.19 - viem: - specifier: ^2.44.4 - version: 2.47.6(typescript@5.2.2) - devDependencies: - '@docusaurus/module-type-aliases': - specifier: 3.1.1 - version: 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/tsconfig': - specifier: 3.1.1 - version: 3.1.1 - '@docusaurus/types': - specifier: 3.1.1 - version: 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react': - specifier: ^18.2.29 - version: 18.3.28 - pre-commit: - specifier: ^1.2.2 - version: 1.2.2 - typescript: - specifier: ~5.2.2 - version: 5.2.2 +overrides: + webpack: 5.96.1 + +dependencies: + '@docsearch/react': + specifier: ^3.5.2 + version: 3.6.3(@algolia/client-search@5.44.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2) + '@docusaurus/core': + specifier: 3.1.1 + version: 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-client-redirects': + specifier: 3.1.1 + version: 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/preset-classic': + specifier: 3.1.1 + version: 3.1.1(@algolia/client-search@5.44.0)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.4.5) + '@docusaurus/theme-common': + specifier: 3.1.1 + version: 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-mermaid': + specifier: 3.1.1 + version: 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-search-algolia': + specifier: 3.1.1 + version: 3.1.1(@algolia/client-search@5.44.0)(@docusaurus/types@3.1.1)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.4.5) + '@mdx-js/react': + specifier: 3.0.1 + version: 3.0.1(@types/react@18.3.12)(react@18.3.1) + '@morph-network/viem': + specifier: 0.1.0 + version: 0.1.0(@morph-network/chain@0.0.1)(typescript@5.4.5) + '@morui/theme': + specifier: ^2.1.0 + version: 2.1.0(tailwindcss@3.4.14) + autoprefixer: + specifier: ^10.4.17 + version: 10.4.20(postcss@8.4.47) + classnames: + specifier: ^2.5.1 + version: 2.5.1 + docusaurus-markdown-source-plugin: + specifier: ^2.0.1 + version: 2.0.1(@docusaurus/core@3.1.1)(react-dom@18.3.1)(react@18.3.1) + docusaurus-plugin-sass: + specifier: ^0.2.5 + version: 0.2.5(@docusaurus/core@3.1.1)(sass@1.80.6)(webpack@5.96.1) + dotenv: + specifier: ^16.0.3 + version: 16.4.5 + lottie-react: + specifier: ^2.4.0 + version: 2.4.0(react-dom@18.3.1)(react@18.3.1) + postcss: + specifier: ^8.4.33 + version: 8.4.47 + prism-react-renderer: + specifier: ^2.1.0 + version: 2.4.0(react@18.3.1) + react: + specifier: ^18.2.0 + version: 18.3.1 + react-dom: + specifier: ^18.2.0 + version: 18.3.1(react@18.3.1) + rehype-katex: + specifier: ^7.0.0 + version: 7.0.1 + remark-math: + specifier: ^6.0.0 + version: 6.0.0 + sass: + specifier: ^1.71.0 + version: 1.80.6 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.14 + viem: + specifier: ^2.44.4 + version: 2.44.4(typescript@5.4.5) + +devDependencies: + '@docusaurus/module-type-aliases': + specifier: 3.1.1 + version: 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/tsconfig': + specifier: 3.1.1 + version: 3.1.1 + '@docusaurus/types': + specifier: 3.1.1 + version: 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@types/react': + specifier: ^18.2.29 + version: 18.3.12 + pre-commit: + specifier: ^1.2.2 + version: 1.2.2 + typescript: + specifier: ~5.4.5 + version: 5.4.5 + webpack: + specifier: 5.96.1 + version: 5.96.1 packages: - '@adraffy/ens-normalize@1.11.1': + /@adraffy/ens-normalize@1.11.1: resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} + dev: false - '@algolia/abtesting@1.16.0': - resolution: {integrity: sha512-alHFZ68/i9qLC/muEB07VQ9r7cB8AvCcGX6dVQi2PNHhc/ZQRmmFAv8KK1ay4UiseGSFr7f0nXBKsZ/jRg7e4g==} + /@algolia/abtesting@1.10.0: + resolution: {integrity: sha512-mQT3jwuTgX8QMoqbIR7mPlWkqQqBPQaPabQzm37xg2txMlaMogK/4hCiiESGdg39MlHZOVHeV+0VJuE7f5UK8A==} engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 + dev: false - '@algolia/autocomplete-core@1.17.9': + /@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)(search-insights@2.17.2): resolution: {integrity: sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==} + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)(search-insights@2.17.2) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + dev: false + + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@5.44.0)(algoliasearch@5.12.0)(search-insights@2.17.2): + resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@5.44.0)(algoliasearch@5.12.0)(search-insights@2.17.2) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@5.44.0)(algoliasearch@5.12.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + dev: false - '@algolia/autocomplete-plugin-algolia-insights@1.17.9': + /@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)(search-insights@2.17.2): resolution: {integrity: sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==} peerDependencies: search-insights: '>= 1 < 3' + dependencies: + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0) + search-insights: 2.17.2 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + dev: false + + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@5.44.0)(algoliasearch@5.12.0)(search-insights@2.17.2): + resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} + peerDependencies: + search-insights: '>= 1 < 3' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@5.44.0)(algoliasearch@5.12.0) + search-insights: 2.17.2 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + dev: false + + /@algolia/autocomplete-preset-algolia@1.17.6(@algolia/client-search@5.44.0)(algoliasearch@5.12.0): + resolution: {integrity: sha512-Cvg5JENdSCMuClwhJ1ON1/jSuojaYMiUW2KePm18IkdCzPJj/NXojaOxw58RFtQFpJgfVW8h2E8mEoDtLlMdeA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/autocomplete-shared': 1.17.6(@algolia/client-search@5.44.0)(algoliasearch@5.12.0) + '@algolia/client-search': 5.44.0 + algoliasearch: 5.12.0 + dev: false - '@algolia/autocomplete-preset-algolia@1.17.9': + /@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0): resolution: {integrity: sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0) + '@algolia/client-search': 5.44.0 + algoliasearch: 5.44.0 + dev: false + + /@algolia/autocomplete-shared@1.17.6(@algolia/client-search@5.44.0)(algoliasearch@5.12.0): + resolution: {integrity: sha512-aq/3V9E00Tw2GC/PqgyPGXtqJUlVc17v4cn1EUhSc+O/4zd04Uwb3UmPm8KDaYQQOrkt1lwvCj2vG2wRE5IKhw==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/client-search': 5.44.0 + algoliasearch: 5.12.0 + dev: false - '@algolia/autocomplete-shared@1.17.9': + /@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0): resolution: {integrity: sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/client-search': 5.44.0 + algoliasearch: 5.44.0 + dev: false + + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@5.44.0)(algoliasearch@5.12.0): + resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/client-search': 5.44.0 + algoliasearch: 5.12.0 + dev: false + + /@algolia/cache-browser-local-storage@4.25.3: + resolution: {integrity: sha512-J0vrnbIYmDIf9d9qQwBXaHn10VoQ/rA+2iBMr/idfsjHhL9I4h2pC9Dj1i0ggDLv9sPajbeVVh0BdC+mDbo7Tw==} + dependencies: + '@algolia/cache-common': 4.25.3 + dev: false + + /@algolia/cache-common@4.25.3: + resolution: {integrity: sha512-dDls2jhGFdkGnoKwXADBnjosHKdKiwlY+tzaua5J0q9XJptn6DCBDUt3pg46GhTRz+64x08M+dyp8nNoV+3/Jw==} + dev: false + + /@algolia/cache-in-memory@4.25.3: + resolution: {integrity: sha512-6u/fVDr3ZIJIgtqdgUDB5kL9KcOdowmxf052bjfI1XhFTpxmIa49HcAEh1y2R0YqmmNDQHaPCT0QzwkINhWbug==} + dependencies: + '@algolia/cache-common': 4.25.3 + dev: false + + /@algolia/client-abtesting@5.12.0: + resolution: {integrity: sha512-hx4eVydkm3yrFCFxmcBtSzI/ykt0cZ6sDWch+v3JTgKpD2WtosMJU3Upv1AjQ4B6COSHCOWEX3vfFxW6OoH6aA==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.12.0 + '@algolia/requester-browser-xhr': 5.12.0 + '@algolia/requester-fetch': 5.12.0 + '@algolia/requester-node-http': 5.12.0 + dev: false + + /@algolia/client-abtesting@5.44.0: + resolution: {integrity: sha512-KY5CcrWhRTUo/lV7KcyjrZkPOOF9bjgWpMj9z98VA+sXzVpZtkuskBLCKsWYFp2sbwchZFTd3wJM48H0IGgF7g==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 + dev: false - '@algolia/cache-browser-local-storage@4.27.0': - resolution: {integrity: sha512-YGog2s57sO20lvpa+hv5XLAAmiTI1kHsCMRtPVfiaOdIQnvRla21lfH08onqEbZihOPVI8GULwt79zQB2ymKzg==} + /@algolia/client-account@4.25.3: + resolution: {integrity: sha512-TkSVT5+davX4Dzt3gyEJ+SAfaVT5bHrZctAiup/AGPV7sNBigv4kuZv40OEbMMgu1uPJ4zw3tA39Oj/mOjd6gg==} + dependencies: + '@algolia/client-common': 4.25.3 + '@algolia/client-search': 4.25.3 + '@algolia/transporter': 4.25.3 + dev: false - '@algolia/cache-common@4.27.0': - resolution: {integrity: sha512-Sr8zjNXj82p6lO4W9CdzfF0m0/9h/H6VAdSHOTtimm/cTzXIYXRI2IZq7+Nt2ljJ7Ukx+7dIFcxQjE57eQSPsw==} + /@algolia/client-analytics@4.25.3: + resolution: {integrity: sha512-vHSU4zBaENbRjzwFYB3OQuDlKXwe+YDRgyGh1kKZhcMRDSsEBH/PGNWn+2ZmtbgrNS52TC+TJ8oUOg5wXIeISw==} + dependencies: + '@algolia/client-common': 4.25.3 + '@algolia/client-search': 4.25.3 + '@algolia/requester-common': 4.25.3 + '@algolia/transporter': 4.25.3 + dev: false - '@algolia/cache-in-memory@4.27.0': - resolution: {integrity: sha512-abgMRTcVD0IllNvMM9JFhxtyLn1v6Ey7mQ7+BGS3JCzvkCX7KZqlS0BIuVUDgx9sPIfOeNsG/awGzMmP50TwZw==} + /@algolia/client-analytics@5.12.0: + resolution: {integrity: sha512-EpTsSv6IW8maCfXCDIptgT7+mQJj7pImEkcNUnxR8yUKAHzTogTXv9yGm2WXOZFVuwstd2i0sImhQ1Vz8RH/hA==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.12.0 + '@algolia/requester-browser-xhr': 5.12.0 + '@algolia/requester-fetch': 5.12.0 + '@algolia/requester-node-http': 5.12.0 + dev: false - '@algolia/client-abtesting@5.50.0': - resolution: {integrity: sha512-mfgUdLQNxOAvCZUGzPQxjahEWEPuQkKlV0ZtGmePOa9ZxIQZlk31vRBNbM6ScU8jTH41SCYE77G/lCifDr1SVw==} + /@algolia/client-analytics@5.44.0: + resolution: {integrity: sha512-LKOCE8S4ewI9bN3ot9RZoYASPi8b78E918/DVPW3HHjCMUe6i+NjbNG6KotU4RpP6AhRWZjjswbOkWelUO+OoA==} engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 + dev: false - '@algolia/client-account@4.27.0': - resolution: {integrity: sha512-sSHxwrKTKJrwfoR/LcQJZfmiWJcM5d9Rp7afMChxOcdGdkSdIwrNBC8SCcHRenA3GsZ6mg+j6px7KWYxJ34btA==} + /@algolia/client-common@4.25.3: + resolution: {integrity: sha512-ExRdFnJDe7t1/DgJUsqjzZKeI9gkLft4oVttlyTMru8TRNWA6eZ0wHRj4uQ9N3sxmzPiw3C53wigor705n1yQw==} + dependencies: + '@algolia/requester-common': 4.25.3 + '@algolia/transporter': 4.25.3 + dev: false - '@algolia/client-analytics@4.27.0': - resolution: {integrity: sha512-MqIDyxODljn9ZC4oqjQD0kez2a4zjIJ9ywA/b7cIiUiK/tDjZNTVjYd9WXMKQlXnWUwfrfXJZClVVqN1iCXS+Q==} + /@algolia/client-common@5.12.0: + resolution: {integrity: sha512-od3WmO8qxyfNhKc+K3D17tvun3IMs/xMNmxCG9MiElAkYVbPPTRUYMkRneCpmJyQI0hNx2/EA4kZgzVfQjO86Q==} + engines: {node: '>= 14.0.0'} + dev: false - '@algolia/client-analytics@5.50.0': - resolution: {integrity: sha512-5mjokeKYyPaP3Q8IYJEnutI+O4dW/Ixxx5IgsSxT04pCfGqPXxTOH311hTQxyNpcGGEOGrMv8n8Z+UMTPamioQ==} + /@algolia/client-common@5.44.0: + resolution: {integrity: sha512-1yyJm4OYC2cztbS28XYVWwLXdwpLsMG4LoZLOltVglQ2+hc/i9q9fUDZyjRa2Bqt4DmkIfezagfMrokhyH4uxQ==} engines: {node: '>= 14.0.0'} + dev: false - '@algolia/client-common@4.27.0': - resolution: {integrity: sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==} + /@algolia/client-insights@5.12.0: + resolution: {integrity: sha512-8alajmsYUd+7vfX5lpRNdxqv3Xx9clIHLUItyQK0Z6gwGMbVEFe6YYhgDtwslMAP0y6b0WeJEIZJMLgT7VYpRw==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.12.0 + '@algolia/requester-browser-xhr': 5.12.0 + '@algolia/requester-fetch': 5.12.0 + '@algolia/requester-node-http': 5.12.0 + dev: false - '@algolia/client-common@5.50.0': - resolution: {integrity: sha512-emtOvR6dl3rX3sBJXXbofMNHU1qMQqQSWu319RMrNL5BWoBqyiq7y0Zn6cjJm7aGHV/Qbf+KCCYeWNKEMPI3BQ==} + /@algolia/client-insights@5.44.0: + resolution: {integrity: sha512-wVQWK6jYYsbEOjIMI+e5voLGPUIbXrvDj392IckXaCPvQ6vCMTXakQqOYCd+znQdL76S+3wHDo77HZWiAYKrtA==} engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 + dev: false - '@algolia/client-insights@5.50.0': - resolution: {integrity: sha512-IerGH2/hcj/6bwkpQg/HHRqmlGN1XwygQWythAk0gZFBrghs9danJaYuSS3ShzLSVoIVth4jY5GDPX9Lbw5cgg==} + /@algolia/client-personalization@4.25.3: + resolution: {integrity: sha512-ycCkQ0nWoH+sf0Gh20kk4NfJ+iUBc59ailqNCFcVl/0th1dtHF0P61IGetTsSmxVPZedDvnHop2z1ujWpYzNmw==} + dependencies: + '@algolia/client-common': 4.25.3 + '@algolia/requester-common': 4.25.3 + '@algolia/transporter': 4.25.3 + dev: false + + /@algolia/client-personalization@5.12.0: + resolution: {integrity: sha512-bUV9HtfkTBgpoVhxFrMkmVPG03ZN1Rtn51kiaEtukucdk3ggjR9Qu1YUfRSU2lFgxr9qJc8lTxwfvhjCeJRcqw==} engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.12.0 + '@algolia/requester-browser-xhr': 5.12.0 + '@algolia/requester-fetch': 5.12.0 + '@algolia/requester-node-http': 5.12.0 + dev: false - '@algolia/client-personalization@4.27.0': - resolution: {integrity: sha512-OZqaFFVm+10hAlmxpiTWi/o2n+YKBESbSqSy2yXAumPH/kaK4moJHFblbh8IkV3KZR0lLm4hzPtn8Q2nWNiDUA==} + /@algolia/client-personalization@5.44.0: + resolution: {integrity: sha512-lkgRjOjOkqmIkebHjHpU9rLJcJNUDMm+eVSW/KJQYLjGqykEZxal+nYJJTBbLceEU2roByP/+27ZmgIwCdf0iA==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 + dev: false - '@algolia/client-personalization@5.50.0': - resolution: {integrity: sha512-3idPJeXn5L0MmgP9jk9JJqblrQ/SguN93dNK9z9gfgyupBhHnJMOEjrRYcVgTIfvG13Y04wO+Q0FxE2Ut8PVbA==} + /@algolia/client-query-suggestions@5.12.0: + resolution: {integrity: sha512-Q5CszzGWfxbIDs9DJ/QJsL7bP6h+lJMg27KxieEnI9KGCu0Jt5iFA3GkREkgRZxRdzlHbZKkrIzhtHVbSHw/rg==} engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.12.0 + '@algolia/requester-browser-xhr': 5.12.0 + '@algolia/requester-fetch': 5.12.0 + '@algolia/requester-node-http': 5.12.0 + dev: false - '@algolia/client-query-suggestions@5.50.0': - resolution: {integrity: sha512-q7qRoWrQK1a8m5EFQEmPlo7+pg9mVQ8X5jsChtChERre0uS2pdYEDixBBl0ydBSGkdGbLUDufcACIhH/077E4g==} + /@algolia/client-query-suggestions@5.44.0: + resolution: {integrity: sha512-sYfhgwKu6NDVmZHL1WEKVLsOx/jUXCY4BHKLUOcYa8k4COCs6USGgz6IjFkUf+niwq8NCECMmTC4o/fVQOalsA==} engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 + dev: false + + /@algolia/client-search@4.25.3: + resolution: {integrity: sha512-GFA99zL6cfNSDEDHfEJ0TmVYmXCJofQpForFhCShQLfRQgBYud9UBHOh4LB6ZSzmtVDIfP33joCA9hxQWPIbFw==} + dependencies: + '@algolia/client-common': 4.25.3 + '@algolia/requester-common': 4.25.3 + '@algolia/transporter': 4.25.3 + dev: false - '@algolia/client-search@4.27.0': - resolution: {integrity: sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==} + /@algolia/client-search@5.12.0: + resolution: {integrity: sha512-R3qzEytgVLHOGNri+bpta6NtTt7YtkvUe/QBcAmMDjW4Jk1P0eBYIPfvnzIPbINRsLxIq9fZs9uAYBgsrts4Zg==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.12.0 + '@algolia/requester-browser-xhr': 5.12.0 + '@algolia/requester-fetch': 5.12.0 + '@algolia/requester-node-http': 5.12.0 + dev: false - '@algolia/client-search@5.50.0': - resolution: {integrity: sha512-Jc360x4yqb3eEg4OY4KEIdGePBxZogivKI+OGIU8aLXgAYPTECvzeOBc90312yHA1hr3AeRlAFl0rIc8lQaIrQ==} + /@algolia/client-search@5.44.0: + resolution: {integrity: sha512-/FRKUM1G4xn3vV8+9xH1WJ9XknU8rkBGlefruq9jDhYUAvYozKimhrmC2pRqw/RyHhPivmgZCRuC8jHP8piz4Q==} engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 + dev: false - '@algolia/events@4.0.1': + /@algolia/events@4.0.1: resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} + dev: false - '@algolia/ingestion@1.50.0': - resolution: {integrity: sha512-OS3/Viao+NPpyBbEY3tf6hLewppG+UclD+9i0ju56mq2DrdMJFCkEky6Sk9S5VPcbLzxzg3BqBX6u9Q35w19aQ==} + /@algolia/ingestion@1.12.0: + resolution: {integrity: sha512-zpHo6qhR22tL8FsdSI4DvEraPDi/019HmMrCFB/TUX98yzh5ooAU7sNW0qPL1I7+S++VbBmNzJOEU9VI8tEC8A==} engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.12.0 + '@algolia/requester-browser-xhr': 5.12.0 + '@algolia/requester-fetch': 5.12.0 + '@algolia/requester-node-http': 5.12.0 + dev: false + + /@algolia/ingestion@1.44.0: + resolution: {integrity: sha512-5+S5ynwMmpTpCLXGjTDpeIa81J+R4BLH0lAojOhmeGSeGEHQTqacl/4sbPyDTcidvnWhaqtyf8m42ue6lvISAw==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 + dev: false - '@algolia/logger-common@4.27.0': - resolution: {integrity: sha512-pIrmQRXtDV+zTMVXKtKCosC2rWhn0F0TdUeb9etA6RiAz6jY6bY6f0+JX7YekDK09SnmZMLIyUa7Jci+Ied9bw==} + /@algolia/logger-common@4.25.3: + resolution: {integrity: sha512-RrlmuHNTc9CIgykWh37QduDAkpX4745KQ75I+vhgT5ER3BBykaYByDTyWkyFSSlZjpDHXtOymu9epNbI5V6OWQ==} + dev: false - '@algolia/logger-console@4.27.0': - resolution: {integrity: sha512-UWvta8BxsR/u5z9eI088mOSLQaGtmoCtXeN3DYJurlxAdJwPuKtEb5+433kxA6/E9f2/JgoW89KZ1vNP9pcHBQ==} + /@algolia/logger-console@4.25.3: + resolution: {integrity: sha512-s8AtfF9W+6Pbxfwkmzywd8ThVJ04D4JZlNyBdCuWpC5b3jzx1JAXT9ZL8K2faUsO4rEdHpy9LXMURvF7cQAE0w==} + dependencies: + '@algolia/logger-common': 4.25.3 + dev: false - '@algolia/monitoring@1.50.0': - resolution: {integrity: sha512-/znwgSiGufpbJVIoDmeQaHtTq+OMdDawFRbMSJVv+12n79hW+qdQXS8/Uu3BD3yn0BzgVFJEvrsHrCsInZKdhw==} + /@algolia/monitoring@1.12.0: + resolution: {integrity: sha512-i2AJZED/zf4uhxezAJUhMKoL5QoepCBp2ynOYol0N76+TSoohaMADdPnWCqOULF4RzOwrG8wWynAwBlXsAI1RQ==} engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.12.0 + '@algolia/requester-browser-xhr': 5.12.0 + '@algolia/requester-fetch': 5.12.0 + '@algolia/requester-node-http': 5.12.0 + dev: false - '@algolia/recommend@4.27.0': - resolution: {integrity: sha512-CFy54xDjrsazPi3KN04yPmLRDT72AKokc3RLOdWQvG0/uEUjj7dhWqe9qenxpL4ydsjO7S1eY5YqmX+uMGonlg==} + /@algolia/monitoring@1.44.0: + resolution: {integrity: sha512-xhaTN8pXJjR6zkrecg4Cc9YZaQK2LKm2R+LkbAq+AYGBCWJxtSGlNwftozZzkUyq4AXWoyoc0x2SyBtq5LRtqQ==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 + dev: false + + /@algolia/recommend@4.25.3: + resolution: {integrity: sha512-/vpXzDFLmrkcM1UOvZae8i/z8wRs2uaKKlPaHqN24ySADWKyf2zxVsDmtcaGMYzBYqYsKR1XKFvwGA5HQxaZxQ==} + dependencies: + '@algolia/cache-browser-local-storage': 4.25.3 + '@algolia/cache-common': 4.25.3 + '@algolia/cache-in-memory': 4.25.3 + '@algolia/client-common': 4.25.3 + '@algolia/client-search': 4.25.3 + '@algolia/logger-common': 4.25.3 + '@algolia/logger-console': 4.25.3 + '@algolia/requester-browser-xhr': 4.25.3 + '@algolia/requester-common': 4.25.3 + '@algolia/requester-node-http': 4.25.3 + '@algolia/transporter': 4.25.3 + dev: false + + /@algolia/recommend@5.12.0: + resolution: {integrity: sha512-0jmZyKvYnB/Bj5c7WKsKedOUjnr0UtXm0LVFUdQrxXfqOqvWv9n6Vpr65UjdYG4Q49kRQxhlwtal9WJYrYymXg==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.12.0 + '@algolia/requester-browser-xhr': 5.12.0 + '@algolia/requester-fetch': 5.12.0 + '@algolia/requester-node-http': 5.12.0 + dev: false - '@algolia/recommend@5.50.0': - resolution: {integrity: sha512-dHjUfu4jfjdQiKDpCpAnM7LP5yfG0oNShtfpF5rMCel6/4HIoqJ4DC4h5GKDzgrvJYtgAhblo0AYBmOM00T+lQ==} + /@algolia/recommend@5.44.0: + resolution: {integrity: sha512-GNcite/uOIS7wgRU1MT7SdNIupGSW+vbK9igIzMePvD2Dl8dy0O3urKPKIbTuZQqiVH1Cb84y5cgLvwNrdCj/Q==} engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 + dev: false + + /@algolia/requester-browser-xhr@4.25.3: + resolution: {integrity: sha512-5ZXO55IDqXUehQKilVYU6OdUBT2XGI+JIki2UsxUkMykH4ksA9EU8YZJth1ZwEYTDC50bVSH32VCYsOFB0MUTA==} + dependencies: + '@algolia/requester-common': 4.25.3 + dev: false - '@algolia/requester-browser-xhr@4.27.0': - resolution: {integrity: sha512-dTenMBIIpyp5o3C2ZnfbsuSlD/lL9jPkk6T+2+qm38fyw2nf49ANbcHFE79NgiGrnmw7QrYveCs9NIP3Wk4v6g==} + /@algolia/requester-browser-xhr@5.12.0: + resolution: {integrity: sha512-KxwleraFuVoEGCoeW6Y1RAEbgBMS7SavqeyzWdtkJc6mXeCOJXn1iZitb8Tyn2FcpMNUKlSm0adrUTt7G47+Ow==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.12.0 + dev: false - '@algolia/requester-browser-xhr@5.50.0': - resolution: {integrity: sha512-bffIbUljAWnh/Ctu5uScORajuUavqmZ0ACYd1fQQeSSYA9NNN83ynO26pSc2dZRXpSK0fkc1//qSSFXMKGu+aw==} + /@algolia/requester-browser-xhr@5.44.0: + resolution: {integrity: sha512-YZHBk72Cd7pcuNHzbhNzF/FbbYszlc7JhZlDyQAchnX5S7tcemSS96F39Sy8t4O4WQLpFvUf1MTNedlitWdOsQ==} engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.44.0 + dev: false - '@algolia/requester-common@4.27.0': - resolution: {integrity: sha512-VC3prAQVgWTubMStb3mJz6i61Hqbtagi2LeIbgNtoFJFff3XZDcAaO1D5r0GYl2+DrB2VzUHnQXbkiuI+HHYyg==} + /@algolia/requester-common@4.25.3: + resolution: {integrity: sha512-n5dJA5jlIle5IQavlDWBXC46lw/VuwFbbknWJcPiJ6nJ6lRllpLOhV2ZJeUdCvRyg/6zG18h+9+Q/m2d/vLEIw==} + dev: false - '@algolia/requester-fetch@5.50.0': - resolution: {integrity: sha512-y0EwNvPGvkM+yTAqqO6Gpt9wVGm3CLDtpLvNEiB3VGvN3WzfkjZGtLUsG/ru2kVJIIU7QcV0puuYgEpBeFxcJg==} + /@algolia/requester-fetch@5.12.0: + resolution: {integrity: sha512-FuDZXUGU1pAg2HCnrt8+q1VGHKChV/LhvjvZlLOT7e56GJie6p+EuLu4/hMKPOVuQQ8XXtrTHKIU3Lw+7O5/bQ==} engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.12.0 + dev: false + + /@algolia/requester-fetch@5.44.0: + resolution: {integrity: sha512-B9WHl+wQ7uf46t9cq+vVM/ypVbOeuldVDq9OtKsX2ApL2g/htx6ImB9ugDOOJmB5+fE31/XPTuCcYz/j03+idA==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.44.0 + dev: false - '@algolia/requester-node-http@4.27.0': - resolution: {integrity: sha512-y8nUqaUQeSOQ5oaNo0b2QPznyBFW9LoIwljyUphJ+gUZpU6O/j2/C8ovoqDpIe6J0etqHg5RCcBizrCFZuLpyw==} + /@algolia/requester-node-http@4.25.3: + resolution: {integrity: sha512-7BXWAyVMK1Z3gT+2RPv0I48HfaIlho3nCQaB/tjziw+DdPigHRDq+xjtdzL8y+5O1g7LEdlPI9QHAgDbW/BLXw==} + dependencies: + '@algolia/requester-common': 4.25.3 + dev: false + + /@algolia/requester-node-http@5.12.0: + resolution: {integrity: sha512-ncDDY7CxZhMs6LIoPl+vHFQceIBhYPY5EfuGF1V7beO0U38xfsCYEyutEFB2kRzf4D9Gqppn3iWX71sNtrKcuw==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.12.0 + dev: false - '@algolia/requester-node-http@5.50.0': - resolution: {integrity: sha512-xpwefe4fCOWnZgXCbkGpqQY6jgBSCf2hmgnySbyzZIccrv3SoashHKGPE4x6vVG+gdHrGciMTAcDo9HOZwH22Q==} + /@algolia/requester-node-http@5.44.0: + resolution: {integrity: sha512-MULm0qeAIk4cdzZ/ehJnl1o7uB5NMokg83/3MKhPq0Pk7+I0uELGNbzIfAkvkKKEYcHALemKdArtySF9eKzh/A==} engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.44.0 + dev: false - '@algolia/transporter@4.27.0': - resolution: {integrity: sha512-PvSbELU4VjN3xSX79ki+zIdOGhTxyJXWvRDzkUjfTx2iNfPWDdTjzKbP1o+268coJztxrkuBwJz90Urek7o1Kw==} + /@algolia/transporter@4.25.3: + resolution: {integrity: sha512-2yji+TKjC1uOxhJ9pCdw7lQm6GSiQ+fMvNH4es6oz82DrBpkVHkeU49HmpyTqz8Ai9e+nW/UBz8T9+UyBul3dA==} + dependencies: + '@algolia/cache-common': 4.25.3 + '@algolia/logger-common': 4.25.3 + '@algolia/requester-common': 4.25.3 + dev: false - '@alloc/quick-lru@5.2.0': + /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} + dev: false + + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: false + + /@babel/code-frame@7.26.2: + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + dev: false - '@babel/code-frame@7.29.0': - resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + /@babel/compat-data@7.26.2: + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} engines: {node: '>=6.9.0'} + dev: false - '@babel/compat-data@7.29.0': - resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + /@babel/core@7.26.0: + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/core@7.29.0': - resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + /@babel/generator@7.26.2: + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + dev: false - '@babel/generator@7.29.1': - resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + /@babel/helper-annotate-as-pure@7.25.9: + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.26.0 + dev: false - '@babel/helper-annotate-as-pure@7.27.3': - resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + /@babel/helper-builder-binary-assignment-operator-visitor@7.25.9: + resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-compilation-targets@7.28.6': - resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + /@babel/helper-compilation-targets@7.25.9: + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.28.0 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: false - '@babel/helper-create-class-features-plugin@7.28.6': - resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} + /@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.25.9 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-create-regexp-features-plugin@7.28.5': - resolution: {integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==} + /@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.1.1 + semver: 6.3.1 + dev: false - '@babel/helper-define-polyfill-provider@0.6.8': - resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==} + /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.0): + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + debug: 4.3.7 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.28.5': - resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} + /@babel/helper-member-expression-to-functions@7.25.9: + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-module-imports@7.28.6': - resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + /@babel/helper-module-imports@7.25.9: + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-module-transforms@7.28.6': - resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + /@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-optimise-call-expression@7.27.1': - resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + /@babel/helper-optimise-call-expression@7.25.9: + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.26.0 + dev: false - '@babel/helper-plugin-utils@7.28.6': - resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} + /@babel/helper-plugin-utils@7.25.9: + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} engines: {node: '>=6.9.0'} + dev: false - '@babel/helper-remap-async-to-generator@7.27.1': - resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} + /@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-replace-supers@7.28.6': - resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} + /@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-simple-access@7.25.9: + resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + /@babel/helper-skip-transparent-expression-wrappers@7.25.9: + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + /@babel/helper-string-parser@7.25.9: + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} + dev: false - '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + /@babel/helper-validator-identifier@7.25.9: + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} + dev: false - '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + /@babel/helper-validator-option@7.25.9: + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} + dev: false - '@babel/helper-wrap-function@7.28.6': - resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} + /@babel/helper-wrap-function@7.25.9: + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/helpers@7.29.2': - resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} + /@babel/helpers@7.26.0: + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + dev: false - '@babel/parser@7.29.2': - resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + /@babel/parser@7.26.2: + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.26.0 + dev: false - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': - resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==} + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': - resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} + /@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': - resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': - resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6': - resolution: {integrity: sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==} + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + dev: false - '@babel/plugin-syntax-dynamic-import@7.8.3': + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-syntax-import-assertions@7.28.6': - resolution: {integrity: sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==} + /@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-syntax-import-attributes@7.28.6': - resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} + /@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-syntax-jsx@7.28.6': - resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} + /@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-syntax-typescript@7.28.6': - resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} + /@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-arrow-functions@7.27.1': - resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + /@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-async-generator-functions@7.29.0': - resolution: {integrity: sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==} + /@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-async-to-generator@7.28.6': - resolution: {integrity: sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==} + /@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-block-scoped-functions@7.27.1': - resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} + /@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-block-scoping@7.28.6': - resolution: {integrity: sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==} + /@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-class-properties@7.28.6': - resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==} + /@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-class-static-block@7.28.6': - resolution: {integrity: sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==} + /@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-classes@7.28.6': - resolution: {integrity: sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==} + /@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-computed-properties@7.28.6': - resolution: {integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==} + /@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 + dev: false - '@babel/plugin-transform-destructuring@7.28.5': - resolution: {integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==} + /@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-dotall-regex@7.28.6': - resolution: {integrity: sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==} + /@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-duplicate-keys@7.27.1': - resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} + /@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0': - resolution: {integrity: sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==} + /@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-dynamic-import@7.27.1': - resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-explicit-resource-management@7.28.6': - resolution: {integrity: sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==} + /@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-exponentiation-operator@7.28.6': - resolution: {integrity: sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==} + /@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-export-namespace-from@7.27.1': - resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} + /@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-for-of@7.27.1': - resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} + /@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-function-name@7.27.1': - resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} + /@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-json-strings@7.28.6': - resolution: {integrity: sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==} + /@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-literals@7.27.1': - resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} + /@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-logical-assignment-operators@7.28.6': - resolution: {integrity: sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==} + /@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-member-expression-literals@7.27.1': - resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} + /@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-modules-amd@7.27.1': - resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} + /@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-modules-commonjs@7.28.6': - resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} + /@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-simple-access': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-modules-systemjs@7.29.0': - resolution: {integrity: sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==} + /@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-modules-umd@7.27.1': - resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} + /@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-named-capturing-groups-regex@7.29.0': - resolution: {integrity: sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==} + /@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-new-target@7.27.1': - resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} + /@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6': - resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==} + /@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-numeric-separator@7.28.6': - resolution: {integrity: sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==} + /@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-object-rest-spread@7.28.6': - resolution: {integrity: sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==} + /@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + dev: false - '@babel/plugin-transform-object-super@7.27.1': - resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} + /@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-optional-catch-binding@7.28.6': - resolution: {integrity: sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==} + /@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-optional-chaining@7.28.6': - resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==} + /@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-parameters@7.27.7': - resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} + /@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-private-methods@7.28.6': - resolution: {integrity: sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==} + /@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.28.6': - resolution: {integrity: sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==} + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-property-literals@7.27.1': - resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} + /@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-react-constant-elements@7.27.1': - resolution: {integrity: sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==} + /@babel/plugin-transform-react-constant-elements@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-react-display-name@7.28.0': - resolution: {integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==} + /@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-react-jsx-development@7.27.1': - resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} + /@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-react-jsx@7.28.6': - resolution: {integrity: sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==} + /@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-react-pure-annotations@7.27.1': - resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} + /@babel/plugin-transform-react-pure-annotations@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-regenerator@7.29.0': - resolution: {integrity: sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==} + /@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + regenerator-transform: 0.15.2 + dev: false - '@babel/plugin-transform-regexp-modifiers@7.28.6': - resolution: {integrity: sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==} + /@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-reserved-words@7.27.1': - resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} + /@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-runtime@7.29.0': - resolution: {integrity: sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==} + /@babel/plugin-transform-runtime@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-shorthand-properties@7.27.1': - resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} + /@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-spread@7.28.6': - resolution: {integrity: sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==} + /@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-sticky-regex@7.27.1': - resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} + /@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-template-literals@7.27.1': - resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} + /@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-typeof-symbol@7.27.1': - resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} + /@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-typescript@7.28.6': - resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} + /@babel/plugin-transform-typescript@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-unicode-escapes@7.27.1': - resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} + /@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-unicode-property-regex@7.28.6': - resolution: {integrity: sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==} + /@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-unicode-regex@7.27.1': - resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} + /@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/plugin-transform-unicode-sets-regex@7.28.6': - resolution: {integrity: sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==} + /@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + dev: false - '@babel/preset-env@7.29.2': - resolution: {integrity: sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==} + /@babel/preset-env@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) + core-js-compat: 3.39.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/preset-modules@0.1.6-no-external-plugins': + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/types': 7.26.0 + esutils: 2.0.3 + dev: false - '@babel/preset-react@7.28.5': - resolution: {integrity: sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==} + /@babel/preset-react@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/preset-typescript@7.28.5': - resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} + /@babel/preset-typescript@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: false - '@babel/runtime-corejs3@7.29.2': - resolution: {integrity: sha512-Lc94FOD5+0aXhdb0Tdg3RUtqT6yWbI/BbFWvlaSJ3gAb9Ks+99nHRDKADVqC37er4eCB0fHyWT+y+K3QOvJKbw==} + /@babel/runtime-corejs3@7.26.0: + resolution: {integrity: sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==} engines: {node: '>=6.9.0'} + dependencies: + core-js-pure: 3.39.0 + regenerator-runtime: 0.14.1 + dev: false - '@babel/runtime@7.29.2': - resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + /@babel/runtime@7.26.0: + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 - '@babel/template@7.28.6': - resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + /@babel/template@7.25.9: + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + dev: false - '@babel/traverse@7.29.0': - resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + /@babel/traverse@7.25.9: + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/types@7.29.0': - resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + /@babel/types@7.26.0: + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + dev: false + + /@braintree/sanitize-url@6.0.4: + resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==} + dev: false - '@colors/colors@1.5.0': + /@colors/colors@1.5.0: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} + requiresBuild: true + dev: false + optional: true - '@discoveryjs/json-ext@0.5.7': + /@discoveryjs/json-ext@0.5.7: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} + dev: false + + /@docsearch/css@3.6.3: + resolution: {integrity: sha512-3uvbg8E7rhqE1C4oBAK3tGlS2qfhi9zpfZgH/yjDPF73vd9B41urVIKujF4rczcF4E3qs34SedhehiDJ4UdNBA==} + dev: false - '@docsearch/css@3.9.0': + /@docsearch/css@3.9.0: resolution: {integrity: sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==} + dev: false + + /@docsearch/react@3.6.3(@algolia/client-search@5.44.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2): + resolution: {integrity: sha512-2munr4uBuZq1PG+Ge+F+ldIdxb3Wi8OmEIv2tQQb4RvEvvph+xtQkxwHzVIEnt5s+HecwucuXwB+3JhcZboFLg==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + dependencies: + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@5.44.0)(algoliasearch@5.12.0)(search-insights@2.17.2) + '@algolia/autocomplete-preset-algolia': 1.17.6(@algolia/client-search@5.44.0)(algoliasearch@5.12.0) + '@docsearch/css': 3.6.3 + '@types/react': 18.3.12 + algoliasearch: 5.12.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + search-insights: 2.17.2 + transitivePeerDependencies: + - '@algolia/client-search' + dev: false - '@docsearch/react@3.9.0': + /@docsearch/react@3.9.0(@algolia/client-search@5.44.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2): resolution: {integrity: sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==} peerDependencies: '@types/react': '>= 16.8.0 < 20.0.0' @@ -830,5447 +1866,358 @@ packages: optional: true search-insights: optional: true + dependencies: + '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)(search-insights@2.17.2) + '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.44.0)(algoliasearch@5.44.0) + '@docsearch/css': 3.9.0 + '@types/react': 18.3.12 + algoliasearch: 5.44.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + search-insights: 2.17.2 + transitivePeerDependencies: + - '@algolia/client-search' + dev: false - '@docusaurus/core@3.1.1': + /@docusaurus/core@3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-2nQfKFcf+MLEM7JXsXwQxPOmQAR6ytKMZVSx7tVi9HEm9WtfwBH1fp6bn8Gj4zLUhjWKCLoysQ9/Wm+EZCQ4yQ==} engines: {node: '>=18.0'} hasBin: true peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/generator': 7.26.2 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0) + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + '@babel/preset-react': 7.25.9(@babel/core@7.26.0) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) + '@babel/runtime': 7.26.0 + '@babel/runtime-corejs3': 7.26.0 + '@babel/traverse': 7.25.9 + '@docusaurus/cssnano-preset': 3.1.1 + '@docusaurus/logger': 3.1.1 + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/react-loadable': 5.5.2(react@18.3.1) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + '@slorber/static-site-generator-webpack-plugin': 4.0.7 + '@svgr/webpack': 6.5.1 + autoprefixer: 10.4.22(postcss@8.5.6) + babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.96.1) + babel-plugin-dynamic-import-node: 2.3.3 + boxen: 6.2.1 + chalk: 4.1.2 + chokidar: 3.6.0 + clean-css: 5.3.3 + cli-table3: 0.6.5 + combine-promises: 1.2.0 + commander: 5.1.0 + copy-webpack-plugin: 11.0.0(webpack@5.96.1) + core-js: 3.39.0 + css-loader: 6.11.0(webpack@5.96.1) + css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.3)(webpack@5.96.1) + cssnano: 5.1.15(postcss@8.5.6) + del: 6.1.1 + detect-port: 1.6.1 + escape-html: 1.0.3 + eta: 2.2.0 + file-loader: 6.2.0(webpack@5.96.1) + fs-extra: 11.2.0 + html-minifier-terser: 7.2.0 + html-tags: 3.3.1 + html-webpack-plugin: 5.6.3(webpack@5.96.1) + leven: 3.1.0 + lodash: 4.17.21 + mini-css-extract-plugin: 2.9.2(webpack@5.96.1) + postcss: 8.5.6 + postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.4.5)(webpack@5.96.1) + prompts: 2.4.2 + react: 18.3.1 + react-dev-utils: 12.0.1(typescript@5.4.5)(webpack@5.96.1) + react-dom: 18.3.1(react@18.3.1) + react-helmet-async: 1.3.0(react-dom@18.3.1)(react@18.3.1) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.3.1) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.96.1) + react-router: 5.3.4(react@18.3.1) + react-router-config: 5.1.1(react-router@5.3.4)(react@18.3.1) + react-router-dom: 5.3.4(react@18.3.1) + rtl-detect: 1.1.2 + semver: 7.6.3 + serve-handler: 6.1.6 + shelljs: 0.8.5 + terser-webpack-plugin: 5.3.10(webpack@5.96.1) + tslib: 2.8.1 + update-notifier: 6.0.2 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.96.1) + webpack: 5.96.1 + webpack-bundle-analyzer: 4.10.2 + webpack-dev-server: 4.15.2(webpack@5.96.1) + webpack-merge: 5.10.0 + webpackbar: 5.0.2(webpack@5.96.1) + transitivePeerDependencies: + - '@docusaurus/types' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - acorn + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false - '@docusaurus/cssnano-preset@3.1.1': + /@docusaurus/cssnano-preset@3.1.1: resolution: {integrity: sha512-LnoIDjJWbirdbVZDMq+4hwmrTl2yHDnBf9MLG9qyExeAE3ac35s4yUhJI8yyTCdixzNfKit4cbXblzzqMu4+8g==} engines: {node: '>=18.0'} + dependencies: + cssnano-preset-advanced: 5.3.10(postcss@8.5.6) + postcss: 8.5.6 + postcss-sort-media-queries: 4.4.1(postcss@8.5.6) + tslib: 2.8.1 + dev: false - '@docusaurus/logger@3.1.1': + /@docusaurus/logger@3.1.1: resolution: {integrity: sha512-BjkNDpQzewcTnST8trx4idSoAla6zZ3w22NqM/UMcFtvYJgmoE4layuTzlfql3VFPNuivvj7BOExa/+21y4X2Q==} engines: {node: '>=18.0'} + dependencies: + chalk: 4.1.2 + tslib: 2.8.1 + dev: false - '@docusaurus/mdx-loader@3.1.1': + /@docusaurus/mdx-loader@3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-xN2IccH9+sv7TmxwsDJNS97BHdmlqWwho+kIVY4tcCXkp+k4QuzvWBeunIMzeayY4Fu13A6sAjHGv5qm72KyGA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 + dependencies: + '@babel/parser': 7.26.2 + '@babel/traverse': 7.25.9 + '@docusaurus/logger': 3.1.1 + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + '@mdx-js/mdx': 3.1.0(acorn@8.14.0) + '@slorber/remark-comment': 1.0.0 + escape-html: 1.0.3 + estree-util-value-to-estree: 3.2.1 + file-loader: 6.2.0(webpack@5.96.1) + fs-extra: 11.2.0 + image-size: 1.2.1 + mdast-util-mdx: 3.0.0 + mdast-util-to-string: 4.0.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + rehype-raw: 7.0.0 + remark-directive: 3.0.0 + remark-emoji: 4.0.1 + remark-frontmatter: 5.0.0 + remark-gfm: 4.0.0 + stringify-object: 3.3.0 + tslib: 2.8.1 + unified: 11.0.5 + unist-util-visit: 5.0.0 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.96.1) + vfile: 6.0.3 + webpack: 5.96.1 + transitivePeerDependencies: + - '@docusaurus/types' + - '@swc/core' + - acorn + - esbuild + - supports-color + - uglify-js + - webpack-cli + dev: false - '@docusaurus/module-type-aliases@3.1.1': + /@docusaurus/module-type-aliases@3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-xBJyx0TMfAfVZ9ZeIOb1awdXgR4YJMocIEzTps91rq+hJDFJgJaylDtmoRhUxkwuYmNK1GJpW95b7DLztSBJ3A==} peerDependencies: react: '*' react-dom: '*' + dependencies: + '@docusaurus/react-loadable': 5.5.2(react@18.3.1) + '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@types/history': 4.7.11 + '@types/react': 18.3.12 + '@types/react-router-config': 5.0.11 + '@types/react-router-dom': 5.3.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet-async: 2.0.5(react@18.3.1) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.3.1) + transitivePeerDependencies: + - '@swc/core' + - acorn + - esbuild + - supports-color + - uglify-js + - webpack-cli - '@docusaurus/plugin-client-redirects@3.1.1': + /@docusaurus/plugin-client-redirects@3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-J/1Z75XkO+BmUXHW17FrCIYZQ3b0IKaJECH6yCxW5RQ8NMMJ+SZCtPtx5oYoAd0VHersNiUu+ZAxfOqbsn1jKQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 + dependencies: + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/logger': 3.1.1 + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + eta: 2.2.0 + fs-extra: 11.2.0 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.8.1 + transitivePeerDependencies: + - '@docusaurus/types' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - acorn + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false - '@docusaurus/plugin-content-blog@3.1.1': + /@docusaurus/plugin-content-blog@3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-ew/3VtVoG3emoAKmoZl7oKe1zdFOsI0NbcHS26kIxt2Z8vcXKCUgK9jJJrz0TbOipyETPhqwq4nbitrY3baibg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 + dependencies: + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/logger': 3.1.1 + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + cheerio: 1.0.0-rc.12 + feed: 4.2.2 + fs-extra: 11.2.0 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + reading-time: 1.5.0 + srcset: 4.0.0 + tslib: 2.8.1 + unist-util-visit: 5.0.0 + utility-types: 3.11.0 + webpack: 5.96.1 + transitivePeerDependencies: + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - acorn + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false - '@docusaurus/plugin-content-docs@3.1.1': + /@docusaurus/plugin-content-docs@3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-lhFq4E874zw0UOH7ujzxnCayOyAt0f9YPVYSb9ohxrdCM8B4szxitUw9rIX4V9JLLHVoqIJb6k+lJJ1jrcGJ0A==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 + dependencies: + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/logger': 3.1.1 + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/module-type-aliases': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + '@types/react-router-config': 5.0.11 + combine-promises: 1.2.0 + fs-extra: 11.2.0 + js-yaml: 4.1.0 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.8.1 + utility-types: 3.11.0 + webpack: 5.96.1 + transitivePeerDependencies: + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - acorn + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false - '@docusaurus/plugin-content-pages@3.1.1': + /@docusaurus/plugin-content-pages@3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-NQHncNRAJbyLtgTim9GlEnNYsFhuCxaCNkMwikuxLTiGIPH7r/jpb7O3f3jUMYMebZZZrDq5S7om9a6rvB/YCA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - - '@docusaurus/plugin-debug@3.1.1': - resolution: {integrity: sha512-xWeMkueM9wE/8LVvl4+Qf1WqwXmreMjI5Kgr7GYCDoJ8zu4kD+KaMhrh7py7MNM38IFvU1RfrGKacCEe2DRRfQ==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-google-analytics@3.1.1': - resolution: {integrity: sha512-+q2UpWTqVi8GdlLoSlD5bS/YpxW+QMoBwrPrUH/NpvpuOi0Of7MTotsQf9JWd3hymZxl2uu1o3PIrbpxfeDFDQ==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-google-gtag@3.1.1': - resolution: {integrity: sha512-0mMPiBBlQ5LFHTtjxuvt/6yzh8v7OxLi3CbeEsxXZpUzcKO/GC7UA1VOWUoBeQzQL508J12HTAlR3IBU9OofSw==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-google-tag-manager@3.1.1': - resolution: {integrity: sha512-d07bsrMLdDIryDtY17DgqYUbjkswZQr8cLWl4tzXrt5OR/T/zxC1SYKajzB3fd87zTu5W5klV5GmUwcNSMXQXA==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/plugin-sitemap@3.1.1': - resolution: {integrity: sha512-iJ4hCaMmDaUqRv131XJdt/C/jJQx8UreDWTRqZKtNydvZVh/o4yXGRRFOplea1D9b/zpwL1Y+ZDwX7xMhIOTmg==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/preset-classic@3.1.1': - resolution: {integrity: sha512-jG4ys/hWYf69iaN/xOmF+3kjs4Nnz1Ay3CjFLDtYa8KdxbmUhArA9HmP26ru5N0wbVWhY+6kmpYhTJpez5wTyg==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/react-loadable@5.5.2': - resolution: {integrity: sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==} - peerDependencies: - react: '*' - - '@docusaurus/theme-classic@3.1.1': - resolution: {integrity: sha512-GiPE/jbWM8Qv1A14lk6s9fhc0LhPEQ00eIczRO4QL2nAQJZXkjPG6zaVx+1cZxPFWbAsqSjKe2lqkwF3fGkQ7Q==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/theme-common@3.1.1': - resolution: {integrity: sha512-38urZfeMhN70YaXkwIGXmcUcv2CEYK/2l4b05GkJPrbEbgpsIZM3Xc+Js2ehBGGZmfZq8GjjQ5RNQYG+MYzCYg==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/theme-search-algolia@3.1.1': - resolution: {integrity: sha512-tBH9VY5EpRctVdaAhT+b1BY8y5dyHVZGFXyCHgTrvcXQy5CV4q7serEX7U3SveNT9zksmchPyct6i1sFDC4Z5g==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/theme-translations@3.1.1': - resolution: {integrity: sha512-xvWQFwjxHphpJq5fgk37FXCDdAa2o+r7FX8IpMg+bGZBNXyWBu3MjZ+G4+eUVNpDhVinTc+j6ucL0Ain5KCGrg==} - engines: {node: '>=18.0'} - - '@docusaurus/tsconfig@3.1.1': - resolution: {integrity: sha512-FTBuY3KvaHfMVBgvlPmDQ+KS9Q/bYtVftq2ugou3PgBDJoQmw2aUZ4Sg15HKqLGbfIkxoy9t6cqE4Yw1Ta8Q1A==} - - '@docusaurus/types@3.1.1': - resolution: {integrity: sha512-grBqOLnubUecgKFXN9q3uit2HFbCxTWX4Fam3ZFbMN0sWX9wOcDoA7lwdX/8AmeL20Oc4kQvWVgNrsT8bKRvzg==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - '@docusaurus/utils-common@3.1.1': - resolution: {integrity: sha512-eGne3olsIoNfPug5ixjepZAIxeYFzHHnor55Wb2P57jNbtVaFvij/T+MS8U0dtZRFi50QU+UPmRrXdVUM8uyMg==} - engines: {node: '>=18.0'} - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true - - '@docusaurus/utils-validation@3.1.1': - resolution: {integrity: sha512-KlY4P9YVDnwL+nExvlIpu79abfEv6ZCHuOX4ZQ+gtip+Wxj0daccdReIWWtqxM/Fb5Cz1nQvUCc7VEtT8IBUAA==} - engines: {node: '>=18.0'} - - '@docusaurus/utils@3.1.1': - resolution: {integrity: sha512-ZJfJa5cJQtRYtqijsPEnAZoduW6sjAQ7ZCWSZavLcV10Fw0Z3gSaPKA/B4micvj2afRZ4gZxT7KfYqe5H8Cetg==} - engines: {node: '>=18.0'} - peerDependencies: - '@docusaurus/types': '*' - peerDependenciesMeta: - '@docusaurus/types': - optional: true - - '@hapi/hoek@9.3.0': - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - - '@hapi/topo@5.1.0': - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.11': - resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - - '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - - '@leichtgewicht/ip-codec@2.0.5': - resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - - '@mdx-js/mdx@3.1.1': - resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - - '@mdx-js/react@3.0.1': - resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} - peerDependencies: - '@types/react': '>=16' - react: '>=16' - - '@morph-network/chain@0.0.2': - resolution: {integrity: sha512-CNx+AWg5YiL88Ix9iCbfB0xplPfkUuaPRNMhrZLFZ+A5yfc1hZ7QEH4ZQT3ZEHzKacugeMCu5cf4g2Eyedr16w==} - - '@morph-network/viem@0.1.0': - resolution: {integrity: sha512-NfR/bvmL2KgE5802r+lJ8R9rEFidjnKlL6Tuc+2E8RVZ1rFPUNRe1t7pV+L+lEZCV2awAnLOWLkAmrTuC0gq8g==} - peerDependencies: - '@morph-network/chain': ^0.0.2 - - '@morui/theme@2.1.0': - resolution: {integrity: sha512-tgxVoHk8dsLMqT4a+LqRgPQ2j2+z9pYAy4BAua2chap6Dnm9o8nzM88BD6chrzbjLX+p8ewB+Hr8C3Jmd7JQkw==} - peerDependencies: - tailwindcss: '*' - - '@noble/ciphers@1.3.0': - resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} - engines: {node: ^14.21.3 || >=16} - - '@noble/curves@1.9.1': - resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.8.0': - resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} - engines: {node: ^14.21.3 || >=16} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@parcel/watcher-android-arm64@2.5.6': - resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - - '@parcel/watcher-darwin-arm64@2.5.6': - resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - - '@parcel/watcher-darwin-x64@2.5.6': - resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - - '@parcel/watcher-freebsd-x64@2.5.6': - resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - - '@parcel/watcher-linux-arm-glibc@2.5.6': - resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@parcel/watcher-linux-arm-musl@2.5.6': - resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - libc: [musl] - - '@parcel/watcher-linux-arm64-glibc@2.5.6': - resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@parcel/watcher-linux-arm64-musl@2.5.6': - resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@parcel/watcher-linux-x64-glibc@2.5.6': - resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@parcel/watcher-linux-x64-musl@2.5.6': - resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@parcel/watcher-win32-arm64@2.5.6': - resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - - '@parcel/watcher-win32-ia32@2.5.6': - resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - - '@parcel/watcher-win32-x64@2.5.6': - resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - - '@parcel/watcher@2.5.6': - resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} - engines: {node: '>= 10.0.0'} - - '@pnpm/config.env-replace@1.1.0': - resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} - engines: {node: '>=12.22.0'} - - '@pnpm/network.ca-file@1.0.2': - resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} - engines: {node: '>=12.22.0'} - - '@pnpm/npm-conf@3.0.2': - resolution: {integrity: sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==} - engines: {node: '>=12'} - - '@polka/url@1.0.0-next.29': - resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - - '@scure/base@1.2.6': - resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} - - '@scure/bip32@1.7.0': - resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==} - - '@scure/bip39@1.6.0': - resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} - - '@sideway/address@4.1.5': - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} - - '@sideway/formula@3.0.1': - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - - '@sideway/pinpoint@2.0.0': - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - - '@sinclair/typebox@0.27.10': - resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} - - '@sindresorhus/is@4.6.0': - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - - '@sindresorhus/is@5.6.0': - resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} - engines: {node: '>=14.16'} - - '@slorber/remark-comment@1.0.0': - resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==} - - '@slorber/static-site-generator-webpack-plugin@4.0.7': - resolution: {integrity: sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==} - engines: {node: '>=14'} - - '@svgr/babel-plugin-add-jsx-attribute@6.5.1': - resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': - resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0': - resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1': - resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-svg-dynamic-title@6.5.1': - resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-svg-em-dimensions@6.5.1': - resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-transform-react-native-svg@6.5.1': - resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-transform-svg-component@6.5.1': - resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} - engines: {node: '>=12'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-preset@6.5.1': - resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} - engines: {node: '>=10'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/core@6.5.1': - resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} - engines: {node: '>=10'} - - '@svgr/hast-util-to-babel-ast@6.5.1': - resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} - engines: {node: '>=10'} - - '@svgr/plugin-jsx@6.5.1': - resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} - engines: {node: '>=10'} - peerDependencies: - '@svgr/core': ^6.0.0 - - '@svgr/plugin-svgo@6.5.1': - resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} - engines: {node: '>=10'} - peerDependencies: - '@svgr/core': '*' - - '@svgr/webpack@6.5.1': - resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} - engines: {node: '>=10'} - - '@szmarczak/http-timer@5.0.1': - resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} - engines: {node: '>=14.16'} - - '@types/body-parser@1.19.6': - resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} - - '@types/bonjour@3.5.13': - resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - - '@types/color-convert@1.9.0': - resolution: {integrity: sha512-OKGEfULrvSL2VRbkl/gnjjgbbF7ycIlpSsX7Nkab4MOWi5XxmgBYvuiQ7lcCFY5cPDz7MUNaKgxte2VRmtr4Fg==} - - '@types/color-name@2.0.0': - resolution: {integrity: sha512-63mTjolMJv75upGaUbT6J3lRDWl6pETPQsaWni9w3dMArhNBpgtHkX8ISb9zLV3YYLPA/SMk8ZGALa3k9WY/aQ==} - - '@types/color@3.0.7': - resolution: {integrity: sha512-e/ecxz2EGJhUEaoeFa9Xx6ayIkBFQ5bwKgOWzmrEtP+ApYB5ou+eOB71DasFsn3qCKzIPrbi/NKdM8lI0tnGUQ==} - - '@types/connect-history-api-fallback@1.5.4': - resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/debug@4.1.13': - resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} - - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - - '@types/estree-jsx@1.0.5': - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - - '@types/express-serve-static-core@4.19.8': - resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} - - '@types/express-serve-static-core@5.1.1': - resolution: {integrity: sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==} - - '@types/express@4.17.25': - resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} - - '@types/flat@5.0.5': - resolution: {integrity: sha512-nPLljZQKSnac53KDUDzuzdRfGI0TDb5qPrb+SrQyN3MtdQrOnGsKniHN1iYZsJEBIVQve94Y6gNz22sgISZq+Q==} - - '@types/gtag.js@0.0.12': - resolution: {integrity: sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==} - - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - - '@types/history@4.7.11': - resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} - - '@types/html-minifier-terser@6.1.0': - resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} - - '@types/http-cache-semantics@4.2.0': - resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} - - '@types/http-errors@2.0.5': - resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - - '@types/http-proxy@1.17.17': - resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} - - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/katex@0.16.8': - resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==} - - '@types/lodash.foreach@4.5.9': - resolution: {integrity: sha512-vmq0p/FK66PsALXRmK/qsnlLlCpnudvozWYrxJImHujHhXMADdeoPEY10zwmu26437w85wCvdxUqpFi+ALtkiQ==} - - '@types/lodash.get@4.4.9': - resolution: {integrity: sha512-J5dvW98sxmGnamqf+/aLP87PYXyrha9xIgc2ZlHl6OHMFR2Ejdxep50QfU0abO1+CH6+ugx+8wEUN1toImAinA==} - - '@types/lodash.kebabcase@4.1.9': - resolution: {integrity: sha512-kPrrmcVOhSsjAVRovN0lRfrbuidfg0wYsrQa5IYuoQO1fpHHGSme66oyiYA/5eQPVl8Z95OA3HG0+d2SvYC85w==} - - '@types/lodash.mapkeys@4.6.9': - resolution: {integrity: sha512-6/ERBCabeDI656LsV+oopLjdnJ/x1PCAE6kkkssH8e4i0K7Pw307noxHCbUc6cAVfTo9vx0Z+k3QZwy1IrUZcA==} - - '@types/lodash.omit@4.5.9': - resolution: {integrity: sha512-zuAVFLUPJMOzsw6yawshsYGgq2hWUHtsZgeXHZmSFhaQQFC6EQ021uDKHkSjOpNhSvtNSU9165/o3o/Q51GpTw==} - - '@types/lodash@4.17.24': - resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} - - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - - '@types/mdx@2.0.13': - resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - - '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - - '@types/ms@2.1.0': - resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - - '@types/node-forge@1.3.14': - resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - - '@types/node@17.0.45': - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - - '@types/node@25.5.0': - resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==} - - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - '@types/prismjs@1.26.6': - resolution: {integrity: sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==} - - '@types/prop-types@15.7.15': - resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - - '@types/qs@6.15.0': - resolution: {integrity: sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==} - - '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - - '@types/react-router-config@5.0.11': - resolution: {integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==} - - '@types/react-router-dom@5.3.3': - resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} - - '@types/react-router@5.1.20': - resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} - - '@types/react@18.3.28': - resolution: {integrity: sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==} - - '@types/retry@0.12.0': - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - - '@types/sax@1.2.7': - resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - - '@types/send@0.17.6': - resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} - - '@types/send@1.2.1': - resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} - - '@types/serve-index@1.9.4': - resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - - '@types/serve-static@1.15.10': - resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} - - '@types/sockjs@0.3.36': - resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - - '@types/unist@2.0.11': - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - - '@types/ws@8.18.1': - resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - - '@types/yargs@17.0.35': - resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - - '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - - '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - - '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - - '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - - '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - - '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - - '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - - '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - - '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - - '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - - '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - - '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - - '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - abitype@1.2.3: - resolution: {integrity: sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3.22.0 || ^4.0.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - acorn-import-phases@1.0.4: - resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} - engines: {node: '>=10.13.0'} - peerDependencies: - acorn: ^8.14.0 - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.5: - resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} - engines: {node: '>=0.4.0'} - - acorn@8.16.0: - resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} - engines: {node: '>=0.4.0'} - hasBin: true - - address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - - ajv@6.14.0: - resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} - - ajv@8.18.0: - resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - - algoliasearch-helper@3.28.1: - resolution: {integrity: sha512-6iXpbkkrAI5HFpCWXlNmIDSBuoN/U1XnEvb2yJAoWfqrZ+DrybI7MQ5P5mthFaprmocq+zbi6HxnR28xnZAYBw==} - peerDependencies: - algoliasearch: '>= 3.1 < 6' - - algoliasearch@4.27.0: - resolution: {integrity: sha512-C88C5grLa5VOCp9eYZJt+q99ik7yNdm92l7Q9+4XK0Md8kL05Lg8l2v9ZVX0uMW3mH9pAFxMMXlLOvqNumA4lw==} - - algoliasearch@5.50.0: - resolution: {integrity: sha512-yE5I83Q2s8euVou8Y3feXK08wyZInJWLYXgWO6Xti9jBUEZAGUahyeQ7wSZWkifLWVnQVKEz5RAmBlXG5nqxog==} - engines: {node: '>= 14.0.0'} - - ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - - ansi-html-community@0.0.8: - resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} - hasBin: true - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.3: - resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - astring@1.9.0: - resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} - hasBin: true - - at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - - autoprefixer@10.4.27: - resolution: {integrity: sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - babel-loader@9.2.1: - resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5' - - babel-plugin-dynamic-import-node@2.3.3: - resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} - - babel-plugin-polyfill-corejs2@0.4.17: - resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.13.0: - resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.14.2: - resolution: {integrity: sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.6.8: - resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - baseline-browser-mapping@2.10.12: - resolution: {integrity: sha512-qyq26DxfY4awP2gIRXhhLWfwzwI+N5Nxk6iQi8EFizIaWIjqicQTE4sLnZZVdeKPRcVNoJOkkpfzoIYuvCKaIQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - batch@0.6.1: - resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - - big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - body-parser@1.20.4: - resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - bonjour-service@1.3.0: - resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - boxen@6.2.1: - resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - boxen@7.1.1: - resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} - engines: {node: '>=14.16'} - - brace-expansion@1.1.13: - resolution: {integrity: sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - - cacheable-lookup@7.0.0: - resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} - engines: {node: '>=14.16'} - - cacheable-request@10.2.14: - resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} - engines: {node: '>=14.16'} - - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - - call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} - - call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - camelcase@7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} - engines: {node: '>=14.16'} - - caniuse-api@3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - - caniuse-lite@1.0.30001782: - resolution: {integrity: sha512-dZcaJLJeDMh4rELYFw1tvSn1bhZWYFOt468FcbHHxx/Z/dFidd1I6ciyFdi3iwfQCyOjqo9upF6lGQYtMiJWxw==} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.6.2: - resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - - cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - - cheerio@1.2.0: - resolution: {integrity: sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==} - engines: {node: '>=20.18.1'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - - classnames@2.5.1: - resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} - - clean-css@5.3.3: - resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} - engines: {node: '>= 10.0'} - - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - - cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} - engines: {node: 10.* || >= 12.*} - - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - - collapse-white-space@2.1.0: - resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color2k@2.0.3: - resolution: {integrity: sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog==} - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - - combine-promises@1.2.0: - resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==} - engines: {node: '>=10'} - - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - commander@5.1.0: - resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} - engines: {node: '>= 6'} - - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - - common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - - compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - - compression@1.8.1: - resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} - engines: {node: '>= 0.8.0'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - - config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - - configstore@6.0.0: - resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} - engines: {node: '>=12'} - - connect-history-api-fallback@2.0.0: - resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} - engines: {node: '>=0.8'} - - consola@2.15.3: - resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} - - content-disposition@0.5.2: - resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} - engines: {node: '>= 0.6'} - - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cookie-signature@1.0.7: - resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} - - cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} - - copy-text-to-clipboard@3.2.2: - resolution: {integrity: sha512-T6SqyLd1iLuqPA90J5N4cTalrtovCySh58iiZDGJ6FGznbclKh4UI+FGacQSgFzwKG77W7XT5gwbVEbd9cIH1A==} - engines: {node: '>=12'} - - copy-webpack-plugin@11.0.0: - resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} - engines: {node: '>= 14.15.0'} - peerDependencies: - webpack: ^5.1.0 - - core-js-compat@3.49.0: - resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} - - core-js-pure@3.49.0: - resolution: {integrity: sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==} - - core-js@3.49.0: - resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cosmiconfig@6.0.0: - resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} - engines: {node: '>=8'} - - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - - cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - crypto-random-string@4.0.0: - resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} - engines: {node: '>=12'} - - css-declaration-sorter@6.4.1: - resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} - engines: {node: ^10 || ^12 || >=14} - peerDependencies: - postcss: ^8.0.9 - - css-loader@6.11.0: - resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} - engines: {node: '>= 12.13.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.0.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - - css-minimizer-webpack-plugin@4.2.2: - resolution: {integrity: sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@parcel/css': '*' - '@swc/css': '*' - clean-css: '*' - csso: '*' - esbuild: '*' - lightningcss: '*' - webpack: ^5.0.0 - peerDependenciesMeta: - '@parcel/css': - optional: true - '@swc/css': - optional: true - clean-css: - optional: true - csso: - optional: true - esbuild: - optional: true - lightningcss: - optional: true - - css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - - css-select@5.2.2: - resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} - - css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - - css-what@6.2.2: - resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} - engines: {node: '>= 6'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - cssnano-preset-advanced@5.3.10: - resolution: {integrity: sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - cssnano-preset-default@5.2.14: - resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - cssnano-utils@3.1.0: - resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - cssnano@5.1.15: - resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - csso@4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} - - csstype@3.2.3: - resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - - debounce@1.2.1: - resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decode-named-character-reference@1.3.0: - resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} - - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - default-gateway@6.0.3: - resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} - engines: {node: '>= 10'} - - defer-to-connect@2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - del@6.1.1: - resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} - engines: {node: '>=10'} - - depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} - engines: {node: '>=8'} - - detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - - detect-port-alt@1.1.6: - resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} - engines: {node: '>= 4.2.1'} - hasBin: true - - detect-port@1.6.1: - resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} - engines: {node: '>= 4.0.0'} - hasBin: true - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - dns-packet@5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} - - docusaurus-markdown-source-plugin@2.2.4: - resolution: {integrity: sha512-3GiURJ441ASUKbajJBi0LQfXpWkzUy0eTJlHoruk8dM16S0B1Qt4rgFCrgMd68Wr1RtkVWfog0gI2QC3xk6z1w==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@docusaurus/core': ^3.0.0 - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 - - docusaurus-plugin-sass@0.2.6: - resolution: {integrity: sha512-2hKQQDkrufMong9upKoG/kSHJhuwd+FA3iAe/qzS/BmWpbIpe7XKmq5wlz4J5CJaOPu4x+iDJbgAxZqcoQf0kg==} - peerDependencies: - '@docusaurus/core': ^2.0.0-beta || ^3.0.0-alpha - sass: ^1.30.0 - - dom-converter@0.2.0: - resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} - - dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - - domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - - dot-prop@6.0.1: - resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} - engines: {node: '>=10'} - - dotenv@16.6.1: - resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} - engines: {node: '>=12'} - - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - - electron-to-chromium@1.5.328: - resolution: {integrity: sha512-QNQ5l45DzYytThO21403XN3FvK0hOkWDG8viNf6jqS42msJ8I4tGDSpBCgvDRRPnkffafiwAym2X2eHeGD2V0w==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - emojilib@2.4.0: - resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} - - emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - - emoticon@4.1.0: - resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - - encoding-sniffer@0.2.1: - resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} - - enhanced-resolve@5.20.1: - resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} - engines: {node: '>=10.13.0'} - - entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} - engines: {node: '>=0.12'} - - entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} - engines: {node: '>=0.12'} - - error-ex@1.3.4: - resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-module-lexer@2.0.0: - resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} - - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - - esast-util-from-estree@2.0.0: - resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} - - esast-util-from-js@2.0.1: - resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-goat@4.0.0: - resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} - engines: {node: '>=12'} - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-util-attach-comments@3.0.0: - resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} - - estree-util-build-jsx@3.0.1: - resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} - - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - - estree-util-scope@1.0.0: - resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} - - estree-util-to-js@2.0.0: - resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - - estree-util-value-to-estree@3.5.0: - resolution: {integrity: sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==} - - estree-util-visit@2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - eta@2.2.0: - resolution: {integrity: sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==} - engines: {node: '>=6.0.0'} - - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - eval@0.1.8: - resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} - engines: {node: '>= 0.8'} - - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - express@4.22.1: - resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} - engines: {node: '>= 0.10.0'} - - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-uri@3.1.0: - resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - - fastq@1.20.1: - resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} - - fault@2.0.1: - resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} - - faye-websocket@0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} - - fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} - engines: {node: '>=12.0.0'} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - feed@4.2.2: - resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} - engines: {node: '>=0.4.0'} - - file-loader@6.2.0: - resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - filesize@8.0.7: - resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} - engines: {node: '>= 0.4.0'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - finalhandler@1.3.2: - resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} - engines: {node: '>= 0.8'} - - find-cache-dir@4.0.0: - resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} - engines: {node: '>=14.16'} - - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - fork-ts-checker-webpack-plugin@6.5.3: - resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} - engines: {node: '>=10', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - - form-data-encoder@2.1.4: - resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} - engines: {node: '>= 14.17'} - - format@0.2.2: - resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} - engines: {node: '>=0.4.x'} - - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fraction.js@5.3.4: - resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - - fs-extra@11.3.4: - resolution: {integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==} - engines: {node: '>=14.14'} - - fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - - fs-monkey@1.1.0: - resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - - get-own-enumerable-property-symbols@3.0.2: - resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - github-slugger@1.5.0: - resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - - global-dirs@3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} - engines: {node: '>=10'} - - global-modules@2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} - engines: {node: '>=6'} - - global-prefix@3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} - engines: {node: '>=6'} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - got@12.6.1: - resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} - engines: {node: '>=14.16'} - - graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} - - gzip-size@6.0.0: - resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} - engines: {node: '>=10'} - - handle-thing@2.0.1: - resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-yarn@3.0.0: - resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hast-util-from-dom@5.0.1: - resolution: {integrity: sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==} - - hast-util-from-html-isomorphic@2.0.0: - resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==} - - hast-util-from-html@2.0.3: - resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} - - hast-util-from-parse5@8.0.3: - resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} - - hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - - hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - - hast-util-raw@9.1.0: - resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} - - hast-util-to-estree@3.1.3: - resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} - - hast-util-to-jsx-runtime@2.3.6: - resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} - - hast-util-to-parse5@8.0.1: - resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} - - hast-util-to-text@4.0.2: - resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - hastscript@9.0.1: - resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - history@4.10.1: - resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} - - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - - hpack.js@2.1.6: - resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - - html-entities@2.6.0: - resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} - - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - - html-minifier-terser@6.1.0: - resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} - engines: {node: '>=12'} - hasBin: true - - html-minifier-terser@7.2.0: - resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==} - engines: {node: ^14.13.1 || >=16.0.0} - hasBin: true - - html-tags@3.3.1: - resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} - engines: {node: '>=8'} - - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - - html-webpack-plugin@5.6.6: - resolution: {integrity: sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==} - engines: {node: '>=10.13.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.20.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - - htmlparser2@10.1.0: - resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} - - htmlparser2@6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - - http-cache-semantics@4.2.0: - resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} - - http-deceiver@1.2.7: - resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - - http-errors@1.8.1: - resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} - engines: {node: '>= 0.6'} - - http-errors@2.0.1: - resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} - engines: {node: '>= 0.8'} - - http-parser-js@0.5.10: - resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} - - http-proxy-middleware@2.0.9: - resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true - - http-proxy@1.18.1: - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} - - http2-wrapper@2.2.1: - resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} - engines: {node: '>=10.19.0'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - icss-utils@5.1.0: - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - image-size@1.2.1: - resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} - engines: {node: '>=16.x'} - hasBin: true - - immer@9.0.21: - resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} - - immutable@5.1.5: - resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==} - - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - - import-lazy@4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - infima@0.2.0-alpha.43: - resolution: {integrity: sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==} - engines: {node: '>=12'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - ini@2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} - - inline-style-parser@0.2.7: - resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - - interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - ipaddr.js@2.3.0: - resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==} - engines: {node: '>= 10'} - - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-arrayish@0.3.4: - resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - - is-installed-globally@0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} - engines: {node: '>=10'} - - is-npm@6.1.0: - resolution: {integrity: sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-obj@1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} - - is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - - is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-plain-obj@3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} - - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - - is-regexp@1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} - - is-root@2.1.0: - resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} - engines: {node: '>=6'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - - is-yarn-global@0.4.1: - resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} - engines: {node: '>=12'} - - isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - - isows@1.0.7: - resolution: {integrity: sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==} - peerDependencies: - ws: '*' - - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} - hasBin: true - - joi@17.13.3: - resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.14.2: - resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} - hasBin: true - - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} - hasBin: true - - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonfile@6.2.0: - resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} - - katex@0.16.44: - resolution: {integrity: sha512-EkxoDTk8ufHqHlf9QxGwcxeLkWRR3iOuYfRpfORgYfqc8s13bgb+YtRY59NK5ZpRaCwq1kqA6a5lpX8C/eLphQ==} - hasBin: true - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - - latest-version@7.0.0: - resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} - engines: {node: '>=14.16'} - - launch-editor@2.13.2: - resolution: {integrity: sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==} - - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - loader-runner@4.3.1: - resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} - engines: {node: '>=6.11.5'} - - loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} - - loader-utils@3.3.1: - resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} - engines: {node: '>= 12.13.0'} - - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - lodash.foreach@4.5.0: - resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} - - lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. - - lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - - lodash.mapkeys@4.6.0: - resolution: {integrity: sha512-0Al+hxpYvONWtg+ZqHpa/GaVzxuN3V7Xeo2p+bY06EaK/n+Y9R7nBePPN2o1LxmL0TWQSwP8LYZ008/hc9JzhA==} - - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - - lodash.omit@4.5.0: - resolution: {integrity: sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==} - deprecated: This package is deprecated. Use destructuring assignment syntax instead. - - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - - lodash@4.17.23: - resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} - - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lottie-react@2.4.1: - resolution: {integrity: sha512-LQrH7jlkigIIv++wIyrOYFLHSKQpEY4zehPicL9bQsrt1rnoKRYCYgpCUe5maqylNtacy58/sQDZTkwMcTRxZw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - lottie-web@5.13.0: - resolution: {integrity: sha512-+gfBXl6sxXMPe8tKQm7qzLnUy5DUPJPKIyRHwtpCpyUEYjHYRJC/5gjUvdkuO2c3JllrPtHXH5UJJK8LRYl5yQ==} - - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - - lowercase-keys@3.0.0: - resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - markdown-extensions@2.0.0: - resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} - engines: {node: '>=16'} - - markdown-table@3.0.4: - resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - mdast-util-directive@3.1.0: - resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} - - mdast-util-find-and-replace@3.0.2: - resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} - - mdast-util-from-markdown@2.0.3: - resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} - - mdast-util-frontmatter@2.0.1: - resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} - - mdast-util-gfm-autolink-literal@2.0.1: - resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - - mdast-util-gfm-footnote@2.1.0: - resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} - - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - - mdast-util-gfm@3.1.0: - resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} - - mdast-util-math@3.0.0: - resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} - - mdast-util-mdx-expression@2.0.1: - resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - - mdast-util-mdx-jsx@3.2.0: - resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} - - mdast-util-mdx@3.0.0: - resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} - - mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - - mdast-util-to-hast@13.2.1: - resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} - - mdast-util-to-markdown@2.1.2: - resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} - - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - - micromark-core-commonmark@2.0.3: - resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} - - micromark-extension-directive@3.0.2: - resolution: {integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==} - - micromark-extension-frontmatter@2.0.0: - resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} - - micromark-extension-gfm-autolink-literal@2.1.0: - resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - - micromark-extension-gfm-footnote@2.1.0: - resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - - micromark-extension-gfm-strikethrough@2.1.0: - resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - - micromark-extension-gfm-table@2.1.1: - resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} - - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - - micromark-extension-gfm-task-list-item@2.1.0: - resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - - micromark-extension-math@3.1.0: - resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==} - - micromark-extension-mdx-expression@3.0.1: - resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} - - micromark-extension-mdx-jsx@3.0.2: - resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} - - micromark-extension-mdx-md@2.0.0: - resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - - micromark-extension-mdxjs-esm@3.0.0: - resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - - micromark-extension-mdxjs@3.0.0: - resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - - micromark-factory-destination@2.0.1: - resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - - micromark-factory-label@2.0.1: - resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - - micromark-factory-mdx-expression@2.0.3: - resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} - - micromark-factory-space@1.1.0: - resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} - - micromark-factory-space@2.0.1: - resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - - micromark-factory-title@2.0.1: - resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - - micromark-factory-whitespace@2.0.1: - resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - - micromark-util-character@1.2.0: - resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} - - micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - - micromark-util-chunked@2.0.1: - resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - - micromark-util-classify-character@2.0.1: - resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - - micromark-util-combine-extensions@2.0.1: - resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - - micromark-util-decode-numeric-character-reference@2.0.2: - resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - - micromark-util-decode-string@2.0.1: - resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - - micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - - micromark-util-events-to-acorn@2.0.3: - resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} - - micromark-util-html-tag-name@2.0.1: - resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - - micromark-util-normalize-identifier@2.0.1: - resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - - micromark-util-resolve-all@2.0.1: - resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - - micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - - micromark-util-subtokenize@2.1.0: - resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} - - micromark-util-symbol@1.1.0: - resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} - - micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - - micromark-util-types@1.1.0: - resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} - - micromark-util-types@2.0.2: - resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - - micromark@4.0.2: - resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mime-db@1.33.0: - resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} - engines: {node: '>= 0.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-db@1.54.0: - resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} - engines: {node: '>= 0.6'} - - mime-types@2.1.18: - resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - - mimic-response@4.0.0: - resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - mini-css-extract-plugin@2.10.2: - resolution: {integrity: sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^5.0.0 - - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - minimatch@3.1.5: - resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mrmime@2.0.1: - resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} - engines: {node: '>=10'} - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - multicast-dns@7.2.5: - resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} - hasBin: true - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - negotiator@0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} - engines: {node: '>= 0.6'} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - - node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - - node-emoji@2.2.0: - resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} - engines: {node: '>=18'} - - node-forge@1.4.0: - resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} - engines: {node: '>= 6.13.0'} - - node-releases@2.0.36: - resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-url@6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - - normalize-url@8.1.1: - resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==} - engines: {node: '>=14.16'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - nprogress@0.2.0: - resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} - - obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - on-headers@1.1.0: - resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} - engines: {node: '>= 0.8'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - - opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true - - os-shim@0.1.3: - resolution: {integrity: sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==} - engines: {node: '>= 0.4.0'} - - ox@0.14.7: - resolution: {integrity: sha512-zSQ/cfBdolj7U4++NAvH7sI+VG0T3pEohITCgcQj8KlawvTDY4vGVhDT64Atsm0d6adWfIYHDpu88iUBMMp+AQ==} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - p-cancelable@3.0.0: - resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} - engines: {node: '>=12.20'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - - p-retry@4.6.2: - resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} - engines: {node: '>=8'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - package-json@8.1.1: - resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} - engines: {node: '>=14.16'} - - param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-entities@4.0.2: - resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse-numeric-range@1.3.0: - resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} - - parse5-htmlparser2-tree-adapter@7.1.0: - resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} - - parse5-parser-stream@7.1.2: - resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} - - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - - pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-is-inside@1.0.2: - resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-to-regexp@0.1.13: - resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} - - path-to-regexp@1.9.0: - resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} - - path-to-regexp@3.3.0: - resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.2: - resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} - engines: {node: '>=8.6'} - - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} - engines: {node: '>=12'} - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pirates@4.0.7: - resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} - engines: {node: '>= 6'} - - pkg-dir@7.0.0: - resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} - engines: {node: '>=14.16'} - - pkg-up@3.1.0: - resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} - engines: {node: '>=8'} - - postcss-calc@8.2.4: - resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} - peerDependencies: - postcss: ^8.2.2 - - postcss-colormin@5.3.1: - resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-convert-values@5.1.3: - resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-comments@5.1.2: - resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-duplicates@5.1.0: - resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-empty@5.1.1: - resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-overridden@5.1.0: - resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-unused@5.1.0: - resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.1.0: - resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@6.0.1: - resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} - engines: {node: '>= 18'} - peerDependencies: - jiti: '>=1.21.0' - postcss: '>=8.0.9' - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - jiti: - optional: true - postcss: - optional: true - tsx: - optional: true - yaml: - optional: true - - postcss-loader@7.3.4: - resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} - engines: {node: '>= 14.15.0'} - peerDependencies: - postcss: ^7.0.0 || ^8.0.1 - webpack: ^5.0.0 - - postcss-merge-idents@5.1.1: - resolution: {integrity: sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-merge-longhand@5.1.7: - resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-merge-rules@5.1.4: - resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-font-values@5.1.0: - resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-gradients@5.1.1: - resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-params@5.1.4: - resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-selectors@5.2.1: - resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-modules-extract-imports@3.1.0: - resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-local-by-default@4.2.0: - resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-scope@3.2.1: - resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-values@4.0.0: - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-normalize-charset@5.1.0: - resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-display-values@5.1.0: - resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-positions@5.1.1: - resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-repeat-style@5.1.1: - resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-string@5.1.0: - resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-timing-functions@5.1.0: - resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-unicode@5.1.1: - resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-url@5.1.0: - resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-whitespace@5.1.1: - resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-ordered-values@5.1.3: - resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-reduce-idents@5.2.0: - resolution: {integrity: sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-reduce-initial@5.1.2: - resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-reduce-transforms@5.1.0: - resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-selector-parser@7.1.1: - resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} - engines: {node: '>=4'} - - postcss-sort-media-queries@4.4.1: - resolution: {integrity: sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==} - engines: {node: '>=10.0.0'} - peerDependencies: - postcss: ^8.4.16 - - postcss-svgo@5.1.0: - resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-unique-selectors@5.1.1: - resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss-zindex@5.1.0: - resolution: {integrity: sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss@8.5.8: - resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} - engines: {node: ^10 || ^12 || >=14} - - pre-commit@1.2.2: - resolution: {integrity: sha512-qokTiqxD6GjODy5ETAIgzsRgnBWWQHQH2ghy86PU7mIn/wuWeTwF3otyNQZxWBwVn8XNr8Tdzj/QfUXpH+gRZA==} - - pretty-error@4.0.0: - resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} - - pretty-time@1.1.0: - resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} - engines: {node: '>=4'} - - prism-react-renderer@2.4.1: - resolution: {integrity: sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==} - peerDependencies: - react: '>=16.0.0' - - prismjs@1.30.0: - resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} - engines: {node: '>=6'} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - property-information@7.1.0: - resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} - - proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - - pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - pupa@3.3.0: - resolution: {integrity: sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==} - engines: {node: '>=12.20'} - - qs@6.14.2: - resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} - engines: {node: '>=0.6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} - - quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - range-parser@1.2.0: - resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} - engines: {node: '>= 0.6'} - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.3: - resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} - engines: {node: '>= 0.8'} - - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - - react-dev-utils@12.0.1: - resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=2.7' - webpack: '>=4' - peerDependenciesMeta: - typescript: - optional: true - - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - - react-error-overlay@6.1.0: - resolution: {integrity: sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==} - - react-fast-compare@3.2.2: - resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - - react-helmet-async@1.3.0: - resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - - react-helmet-async@3.0.0: - resolution: {integrity: sha512-nA3IEZfXiclgrz4KLxAhqJqIfFDuvzQwlKwpdmzZIuC1KNSghDEIXmyU0TKtbM+NafnkICcwx8CECFrZ/sL/1w==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-json-view-lite@1.5.0: - resolution: {integrity: sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==} - engines: {node: '>=14'} - peerDependencies: - react: ^16.13.1 || ^17.0.0 || ^18.0.0 - - react-loadable-ssr-addon-v5-slorber@1.0.3: - resolution: {integrity: sha512-GXfh9VLwB5ERaCsU6RULh7tkemeX15aNh6wuMEBtfdyMa7fFG8TXrhXlx1SoEK2Ty/l6XIkzzYIQmyaWW3JgdQ==} - engines: {node: '>=10.13.0'} - peerDependencies: - react-loadable: '*' - webpack: '>=4.41.1 || 5.x' - - react-router-config@5.1.1: - resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} - peerDependencies: - react: '>=15' - react-router: '>=5' - - react-router-dom@5.3.4: - resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} - peerDependencies: - react: '>=15' - - react-router@5.3.4: - resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} - peerDependencies: - react: '>=15' - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} - - reading-time@1.5.0: - resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} - - rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - - recma-build-jsx@1.0.0: - resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} - - recma-jsx@1.0.1: - resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - recma-parse@1.0.0: - resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} - - recma-stringify@1.0.0: - resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} - - recursive-readdir@2.2.3: - resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} - engines: {node: '>=6.0.0'} - - regenerate-unicode-properties@10.2.2: - resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regexpu-core@6.4.0: - resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} - engines: {node: '>=4'} - - registry-auth-token@5.1.1: - resolution: {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==} - engines: {node: '>=14'} - - registry-url@6.0.1: - resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} - engines: {node: '>=12'} - - regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - - regjsparser@0.13.0: - resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} - hasBin: true - - rehype-katex@7.0.1: - resolution: {integrity: sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==} - - rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - - rehype-recma@1.0.0: - resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} - - relateurl@0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} - - remark-directive@3.0.1: - resolution: {integrity: sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==} - - remark-emoji@4.0.1: - resolution: {integrity: sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - remark-frontmatter@5.0.0: - resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} - - remark-gfm@4.0.1: - resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} - - remark-math@6.0.0: - resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} - - remark-mdx@3.1.1: - resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-rehype@11.1.2: - resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} - - remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - - renderkid@3.0.0: - resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - require-like@0.1.2: - resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} - - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - - resolve-alpn@1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-pathname@3.0.0: - resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} - - resolve@1.22.11: - resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} - engines: {node: '>= 0.4'} - hasBin: true - - responselike@3.0.0: - resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} - engines: {node: '>=14.16'} - - retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - - reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rtl-detect@1.1.2: - resolution: {integrity: sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==} - - rtlcss@4.3.0: - resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==} - engines: {node: '>=12.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sass-loader@16.0.7: - resolution: {integrity: sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA==} - engines: {node: '>= 18.12.0'} - peerDependencies: - '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - sass: ^1.3.0 - sass-embedded: '*' - webpack: ^5.0.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - node-sass: - optional: true - sass: - optional: true - sass-embedded: - optional: true - webpack: - optional: true - - sass@1.98.0: - resolution: {integrity: sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A==} - engines: {node: '>=14.0.0'} - hasBin: true - - sax@1.6.0: - resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} - engines: {node: '>=11.0.0'} - - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - schema-utils@2.7.0: - resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} - engines: {node: '>= 8.9.0'} - - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - - schema-utils@4.3.3: - resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} - engines: {node: '>= 10.13.0'} - - search-insights@2.17.3: - resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} - - section-matter@1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} - - select-hose@2.0.0: - resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} - - semver-diff@4.0.0: - resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} - engines: {node: '>=12'} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} - engines: {node: '>=10'} - hasBin: true - - send@0.19.2: - resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} - engines: {node: '>= 0.8.0'} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - serve-handler@6.1.7: - resolution: {integrity: sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==} - - serve-index@1.9.2: - resolution: {integrity: sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==} - engines: {node: '>= 0.8.0'} - - serve-static@1.16.3: - resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} - engines: {node: '>= 0.8.0'} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - - shallowequal@1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shell-quote@1.8.3: - resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} - engines: {node: '>= 0.4'} - - shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} - - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - simple-swizzle@0.2.4: - resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} - - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} - - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - sitemap@7.1.3: - resolution: {integrity: sha512-tAjEd+wt/YwnEbfNB2ht51ybBJxbEWwe5ki/Z//Wh0rpBFTCUSj46GnxUKEWzhfuJTsee8x3lybHxFgUMig2hw==} - engines: {node: '>=12.0.0', npm: '>=5.6.0'} - hasBin: true - - skin-tone@2.0.0: - resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} - engines: {node: '>=8'} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - - sockjs@0.3.24: - resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - - sort-css-media-queries@2.1.0: - resolution: {integrity: sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==} - engines: {node: '>= 6.3.0'} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - source-map@0.7.6: - resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} - engines: {node: '>= 12'} - - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - spawn-sync@1.0.15: - resolution: {integrity: sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==} - - spdy-transport@3.0.0: - resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} - - spdy@4.0.2: - resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} - engines: {node: '>=6.0.0'} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - srcset@4.0.0: - resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} - engines: {node: '>=12'} - - stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - - statuses@2.0.2: - resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} - engines: {node: '>= 0.8'} - - std-env@3.10.0: - resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - - stringify-object@3.3.0: - resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} - engines: {node: '>=4'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.2.0: - resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} - engines: {node: '>=12'} - - strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - style-to-js@1.1.21: - resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} - - style-to-object@1.0.14: - resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} - - stylehacks@5.1.1: - resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - sucrase@3.35.1: - resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - svg-parser@2.0.4: - resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - - svgo@2.8.2: - resolution: {integrity: sha512-TyzE4NVGLUFy+H/Uy4N6c3G0HEeprsVfge6Lmq+0FdQQ/zqoVYB62IsBZORsiL+o96s6ff/V6/3UQo/C0cgCAA==} - engines: {node: '>=10.13.0'} - hasBin: true - - tailwind-merge@1.14.0: - resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==} - - tailwind-variants@0.1.20: - resolution: {integrity: sha512-AMh7x313t/V+eTySKB0Dal08RHY7ggYK0MSn/ad8wKWOrDUIzyiWNayRUm2PIJ4VRkvRnfNuyRuKbLV3EN+ewQ==} - engines: {node: '>=16.x', pnpm: '>=7.x'} - peerDependencies: - tailwindcss: '*' - - tailwindcss@3.4.19: - resolution: {integrity: sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==} - engines: {node: '>=14.0.0'} - hasBin: true - - tapable@1.1.3: - resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} - engines: {node: '>=6'} - - tapable@2.3.2: - resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} - engines: {node: '>=6'} - - terser-webpack-plugin@5.4.0: - resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser@5.46.1: - resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} - engines: {node: '>=10'} - hasBin: true - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - thunky@1.1.0: - resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - - tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - - tiny-warning@1.0.3: - resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} - - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} - engines: {node: '>=12.0.0'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - - type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - - typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - - typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - - typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@7.18.2: - resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} - - undici@7.24.6: - resolution: {integrity: sha512-Xi4agocCbRzt0yYMZGMA6ApD7gvtUFaxm4ZmeacWI4cZxaF6C+8I8QfofC20NAePiB/IcvZmzkJ7XPa471AEtA==} - engines: {node: '>=20.18.1'} - - unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} - engines: {node: '>=4'} - - unicode-emoji-modifier-base@1.0.0: - resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.2.1: - resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.2.0: - resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} - engines: {node: '>=4'} - - unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - - unique-string@3.0.0: - resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} - engines: {node: '>=12'} - - unist-util-find-after@5.0.0: - resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} - - unist-util-is@6.0.1: - resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} - - unist-util-position-from-estree@2.0.0: - resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-remove-position@5.0.0: - resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@6.0.2: - resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} - - unist-util-visit@5.1.0: - resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - update-notifier@6.0.2: - resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} - engines: {node: '>=14.16'} - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - url-loader@4.1.1: - resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - file-loader: '*' - webpack: ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - file-loader: - optional: true - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - utila@0.4.0: - resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - - utility-types@3.11.0: - resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} - engines: {node: '>= 4'} - - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - value-equal@1.0.1: - resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} - - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - vfile-location@5.0.3: - resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} - - vfile-message@4.0.3: - resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} - - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - - viem@2.47.6: - resolution: {integrity: sha512-zExmbI99NGvMdYa7fmqSTLgkwh48dmhgEqFrUgkpL4kfG4XkVefZ8dZqIKVUhZo6Uhf0FrrEXOsHm9LUyIvI2Q==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - watchpack@2.5.1: - resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} - engines: {node: '>=10.13.0'} - - wbuf@1.7.3: - resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} - - web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - - webpack-bundle-analyzer@4.10.2: - resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==} - engines: {node: '>= 10.13.0'} - hasBin: true - - webpack-dev-middleware@5.3.4: - resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - webpack-dev-server@4.15.2: - resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} - engines: {node: '>= 12.13.0'} - hasBin: true - peerDependencies: - webpack: ^4.37.0 || ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - - webpack-merge@5.10.0: - resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} - engines: {node: '>=10.0.0'} - - webpack-sources@3.3.4: - resolution: {integrity: sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==} - engines: {node: '>=10.13.0'} - - webpack@5.105.4: - resolution: {integrity: sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - - webpackbar@5.0.2: - resolution: {integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==} - engines: {node: '>=12'} - peerDependencies: - webpack: 3 || 4 || 5 - - websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} - - websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} - - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation - - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - - which@1.2.14: - resolution: {integrity: sha512-16uPglFkRPzgiUXYMi1Jf8Z5EzN1iB4V0ZtMXcHZnwsBtQhhHeCqoWw7tsUY42hJGNDWtUsVLTjakIa5BgAxCw==} - hasBin: true - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - widest-line@4.0.1: - resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} - engines: {node: '>=12'} - - wildcard@2.0.1: - resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.20.0: - resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xdg-basedir@5.1.0: - resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} - engines: {node: '>=12'} - - xml-js@1.6.11: - resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} - hasBin: true - - yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yaml@1.10.3: - resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} - engines: {node: '>= 6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.2.2: - resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} - engines: {node: '>=12.20'} - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@adraffy/ens-normalize@1.11.1': {} - - '@algolia/abtesting@1.16.0': - dependencies: - '@algolia/client-common': 5.50.0 - '@algolia/requester-browser-xhr': 5.50.0 - '@algolia/requester-fetch': 5.50.0 - '@algolia/requester-node-http': 5.50.0 - - '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0)(search-insights@2.17.3)': - dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0) - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - search-insights - - '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0)(search-insights@2.17.3)': - dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0) - search-insights: 2.17.3 - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0)': - dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0) - '@algolia/client-search': 5.50.0 - algoliasearch: 5.50.0 - - '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0)': - dependencies: - '@algolia/client-search': 5.50.0 - algoliasearch: 5.50.0 - - '@algolia/cache-browser-local-storage@4.27.0': - dependencies: - '@algolia/cache-common': 4.27.0 - - '@algolia/cache-common@4.27.0': {} - - '@algolia/cache-in-memory@4.27.0': - dependencies: - '@algolia/cache-common': 4.27.0 - - '@algolia/client-abtesting@5.50.0': - dependencies: - '@algolia/client-common': 5.50.0 - '@algolia/requester-browser-xhr': 5.50.0 - '@algolia/requester-fetch': 5.50.0 - '@algolia/requester-node-http': 5.50.0 - - '@algolia/client-account@4.27.0': - dependencies: - '@algolia/client-common': 4.27.0 - '@algolia/client-search': 4.27.0 - '@algolia/transporter': 4.27.0 - - '@algolia/client-analytics@4.27.0': - dependencies: - '@algolia/client-common': 4.27.0 - '@algolia/client-search': 4.27.0 - '@algolia/requester-common': 4.27.0 - '@algolia/transporter': 4.27.0 - - '@algolia/client-analytics@5.50.0': - dependencies: - '@algolia/client-common': 5.50.0 - '@algolia/requester-browser-xhr': 5.50.0 - '@algolia/requester-fetch': 5.50.0 - '@algolia/requester-node-http': 5.50.0 - - '@algolia/client-common@4.27.0': - dependencies: - '@algolia/requester-common': 4.27.0 - '@algolia/transporter': 4.27.0 - - '@algolia/client-common@5.50.0': {} - - '@algolia/client-insights@5.50.0': - dependencies: - '@algolia/client-common': 5.50.0 - '@algolia/requester-browser-xhr': 5.50.0 - '@algolia/requester-fetch': 5.50.0 - '@algolia/requester-node-http': 5.50.0 - - '@algolia/client-personalization@4.27.0': - dependencies: - '@algolia/client-common': 4.27.0 - '@algolia/requester-common': 4.27.0 - '@algolia/transporter': 4.27.0 - - '@algolia/client-personalization@5.50.0': - dependencies: - '@algolia/client-common': 5.50.0 - '@algolia/requester-browser-xhr': 5.50.0 - '@algolia/requester-fetch': 5.50.0 - '@algolia/requester-node-http': 5.50.0 - - '@algolia/client-query-suggestions@5.50.0': - dependencies: - '@algolia/client-common': 5.50.0 - '@algolia/requester-browser-xhr': 5.50.0 - '@algolia/requester-fetch': 5.50.0 - '@algolia/requester-node-http': 5.50.0 - - '@algolia/client-search@4.27.0': - dependencies: - '@algolia/client-common': 4.27.0 - '@algolia/requester-common': 4.27.0 - '@algolia/transporter': 4.27.0 - - '@algolia/client-search@5.50.0': - dependencies: - '@algolia/client-common': 5.50.0 - '@algolia/requester-browser-xhr': 5.50.0 - '@algolia/requester-fetch': 5.50.0 - '@algolia/requester-node-http': 5.50.0 - - '@algolia/events@4.0.1': {} - - '@algolia/ingestion@1.50.0': - dependencies: - '@algolia/client-common': 5.50.0 - '@algolia/requester-browser-xhr': 5.50.0 - '@algolia/requester-fetch': 5.50.0 - '@algolia/requester-node-http': 5.50.0 - - '@algolia/logger-common@4.27.0': {} - - '@algolia/logger-console@4.27.0': - dependencies: - '@algolia/logger-common': 4.27.0 - - '@algolia/monitoring@1.50.0': - dependencies: - '@algolia/client-common': 5.50.0 - '@algolia/requester-browser-xhr': 5.50.0 - '@algolia/requester-fetch': 5.50.0 - '@algolia/requester-node-http': 5.50.0 - - '@algolia/recommend@4.27.0': - dependencies: - '@algolia/cache-browser-local-storage': 4.27.0 - '@algolia/cache-common': 4.27.0 - '@algolia/cache-in-memory': 4.27.0 - '@algolia/client-common': 4.27.0 - '@algolia/client-search': 4.27.0 - '@algolia/logger-common': 4.27.0 - '@algolia/logger-console': 4.27.0 - '@algolia/requester-browser-xhr': 4.27.0 - '@algolia/requester-common': 4.27.0 - '@algolia/requester-node-http': 4.27.0 - '@algolia/transporter': 4.27.0 - - '@algolia/recommend@5.50.0': - dependencies: - '@algolia/client-common': 5.50.0 - '@algolia/requester-browser-xhr': 5.50.0 - '@algolia/requester-fetch': 5.50.0 - '@algolia/requester-node-http': 5.50.0 - - '@algolia/requester-browser-xhr@4.27.0': - dependencies: - '@algolia/requester-common': 4.27.0 - - '@algolia/requester-browser-xhr@5.50.0': - dependencies: - '@algolia/client-common': 5.50.0 - - '@algolia/requester-common@4.27.0': {} - - '@algolia/requester-fetch@5.50.0': - dependencies: - '@algolia/client-common': 5.50.0 - - '@algolia/requester-node-http@4.27.0': - dependencies: - '@algolia/requester-common': 4.27.0 - - '@algolia/requester-node-http@5.50.0': - dependencies: - '@algolia/client-common': 5.50.0 - - '@algolia/transporter@4.27.0': - dependencies: - '@algolia/cache-common': 4.27.0 - '@algolia/logger-common': 4.27.0 - '@algolia/requester-common': 4.27.0 - - '@alloc/quick-lru@5.2.0': {} - - '@babel/code-frame@7.29.0': - dependencies: - '@babel/helper-validator-identifier': 7.28.5 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.29.0': {} - - '@babel/core@7.29.0': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helpers': 7.29.2 - '@babel/parser': 7.29.2 - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.29.1': - dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - - '@babel/helper-annotate-as-pure@7.27.3': - dependencies: - '@babel/types': 7.29.0 - - '@babel/helper-compilation-targets@7.28.6': - dependencies: - '@babel/compat-data': 7.29.0 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.1 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.28.5 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.29.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.4.0 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - debug: 4.4.3 - lodash.debounce: 4.0.8 - resolve: 1.22.11 - transitivePeerDependencies: - - supports-color - - '@babel/helper-globals@7.28.0': {} - - '@babel/helper-member-expression-to-functions@7.28.5': - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.28.6': - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-optimise-call-expression@7.27.1': - dependencies: - '@babel/types': 7.29.0 - - '@babel/helper-plugin-utils@7.28.6': {} - - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-member-expression-to-functions': 7.28.5 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.27.1': {} - - '@babel/helper-validator-identifier@7.28.5': {} - - '@babel/helper-validator-option@7.27.1': {} - - '@babel/helper-wrap-function@7.28.6': - dependencies: - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helpers@7.29.2': - dependencies: - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - - '@babel/parser@7.29.2': - dependencies: - '@babel/types': 7.29.0 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-globals': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/template': 7.28.6 - - '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-react-constant-elements@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-runtime@7.29.0(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/preset-env@7.29.2(@babel/core@7.29.0)': - dependencies: - '@babel/compat-data': 7.29.0 - '@babel/core': 7.29.0 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) - '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) - '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) - '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) - core-js-compat: 3.49.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/types': 7.29.0 - esutils: 2.0.3 - - '@babel/preset-react@7.28.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - - '@babel/preset-typescript@7.28.5(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - - '@babel/runtime-corejs3@7.29.2': - dependencies: - core-js-pure: 3.49.0 - - '@babel/runtime@7.29.2': {} - - '@babel/template@7.28.6': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - - '@babel/traverse@7.29.0': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.2 - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.29.0': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - - '@colors/colors@1.5.0': - optional: true - - '@discoveryjs/json-ext@0.5.7': {} - - '@docsearch/css@3.9.0': {} - - '@docsearch/react@3.9.0(@algolia/client-search@5.50.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': - dependencies: - '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0) - '@docsearch/css': 3.9.0 - algoliasearch: 5.50.0 - optionalDependencies: - '@types/react': 18.3.28 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - search-insights: 2.17.3 - transitivePeerDependencies: - - '@algolia/client-search' - - '@docusaurus/core@3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)': - dependencies: - '@babel/core': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) - '@babel/preset-env': 7.29.2(@babel/core@7.29.0) - '@babel/preset-react': 7.28.5(@babel/core@7.29.0) - '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) - '@babel/runtime': 7.29.2 - '@babel/runtime-corejs3': 7.29.2 - '@babel/traverse': 7.29.0 - '@docusaurus/cssnano-preset': 3.1.1 - '@docusaurus/logger': 3.1.1 - '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/react-loadable': 5.5.2(react@18.3.1) - '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@slorber/static-site-generator-webpack-plugin': 4.0.7 - '@svgr/webpack': 6.5.1 - autoprefixer: 10.4.27(postcss@8.5.8) - babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.105.4) - babel-plugin-dynamic-import-node: 2.3.3 - boxen: 6.2.1 - chalk: 4.1.2 - chokidar: 3.6.0 - clean-css: 5.3.3 - cli-table3: 0.6.5 - combine-promises: 1.2.0 - commander: 5.1.0 - copy-webpack-plugin: 11.0.0(webpack@5.105.4) - core-js: 3.49.0 - css-loader: 6.11.0(webpack@5.105.4) - css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.3)(webpack@5.105.4) - cssnano: 5.1.15(postcss@8.5.8) - del: 6.1.1 - detect-port: 1.6.1 - escape-html: 1.0.3 - eta: 2.2.0 - file-loader: 6.2.0(webpack@5.105.4) - fs-extra: 11.3.4 - html-minifier-terser: 7.2.0 - html-tags: 3.3.1 - html-webpack-plugin: 5.6.6(webpack@5.105.4) - leven: 3.1.0 - lodash: 4.17.23 - mini-css-extract-plugin: 2.10.2(webpack@5.105.4) - postcss: 8.5.8 - postcss-loader: 7.3.4(postcss@8.5.8)(typescript@5.2.2)(webpack@5.105.4) - prompts: 2.4.2 - react: 18.3.1 - react-dev-utils: 12.0.1(typescript@5.2.2)(webpack@5.105.4) - react-dom: 18.3.1(react@18.3.1) - react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-loadable: '@docusaurus/react-loadable@5.5.2(react@18.3.1)' - react-loadable-ssr-addon-v5-slorber: 1.0.3(@docusaurus/react-loadable@5.5.2(react@18.3.1))(webpack@5.105.4) - react-router: 5.3.4(react@18.3.1) - react-router-config: 5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1) - react-router-dom: 5.3.4(react@18.3.1) - rtl-detect: 1.1.2 - semver: 7.7.4 - serve-handler: 6.1.7 - shelljs: 0.8.5 - terser-webpack-plugin: 5.4.0(webpack@5.105.4) - tslib: 2.8.1 - update-notifier: 6.0.2 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.105.4))(webpack@5.105.4) - webpack: 5.105.4 - webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2(webpack@5.105.4) - webpack-merge: 5.10.0 - webpackbar: 5.0.2(webpack@5.105.4) - transitivePeerDependencies: - - '@docusaurus/types' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/cssnano-preset@3.1.1': - dependencies: - cssnano-preset-advanced: 5.3.10(postcss@8.5.8) - postcss: 8.5.8 - postcss-sort-media-queries: 4.4.1(postcss@8.5.8) - tslib: 2.8.1 - - '@docusaurus/logger@3.1.1': - dependencies: - chalk: 4.1.2 - tslib: 2.8.1 - - '@docusaurus/mdx-loader@3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/parser': 7.29.2 - '@babel/traverse': 7.29.0 - '@docusaurus/logger': 3.1.1 - '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@mdx-js/mdx': 3.1.1 - '@slorber/remark-comment': 1.0.0 - escape-html: 1.0.3 - estree-util-value-to-estree: 3.5.0 - file-loader: 6.2.0(webpack@5.105.4) - fs-extra: 11.3.4 - image-size: 1.2.1 - mdast-util-mdx: 3.0.0 - mdast-util-to-string: 4.0.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - rehype-raw: 7.0.0 - remark-directive: 3.0.1 - remark-emoji: 4.0.1 - remark-frontmatter: 5.0.0 - remark-gfm: 4.0.1 - stringify-object: 3.3.0 - tslib: 2.8.1 - unified: 11.0.5 - unist-util-visit: 5.1.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.105.4))(webpack@5.105.4) - vfile: 6.0.3 - webpack: 5.105.4 - transitivePeerDependencies: - - '@docusaurus/types' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - - '@docusaurus/module-type-aliases@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@docusaurus/react-loadable': 5.5.2(react@18.3.1) - '@docusaurus/types': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/history': 4.7.11 - '@types/react': 18.3.28 - '@types/react-router-config': 5.0.11 - '@types/react-router-dom': 5.3.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-helmet-async: 3.0.0(react@18.3.1) - react-loadable: '@docusaurus/react-loadable@5.5.2(react@18.3.1)' - transitivePeerDependencies: - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - - '@docusaurus/plugin-client-redirects@3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)': dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/logger': 3.1.1 - '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - eta: 2.2.0 - fs-extra: 11.3.4 - lodash: 4.17.23 + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 + webpack: 5.96.1 transitivePeerDependencies: - - '@docusaurus/types' - '@parcel/css' - '@rspack/core' - '@swc/core' - '@swc/css' + - acorn - bufferutil - csso - debug @@ -6283,33 +2230,29 @@ snapshots: - utf-8-validate - vue-template-compiler - webpack-cli + dev: false - '@docusaurus/plugin-content-blog@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)': + /@docusaurus/plugin-debug@3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): + resolution: {integrity: sha512-xWeMkueM9wE/8LVvl4+Qf1WqwXmreMjI5Kgr7GYCDoJ8zu4kD+KaMhrh7py7MNM38IFvU1RfrGKacCEe2DRRfQ==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/logger': 3.1.1 - '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - cheerio: 1.2.0 - feed: 4.2.2 - fs-extra: 11.3.4 - lodash: 4.17.23 + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - reading-time: 1.5.0 - srcset: 4.0.0 + react-json-view-lite: 1.5.0(react@18.3.1) tslib: 2.8.1 - unist-util-visit: 5.1.0 - utility-types: 3.11.0 - webpack: 5.105.4 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' - '@swc/core' - '@swc/css' + - acorn - bufferutil - csso - debug @@ -6322,31 +2265,27 @@ snapshots: - utf-8-validate - vue-template-compiler - webpack-cli + dev: false - '@docusaurus/plugin-content-docs@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)': + /@docusaurus/plugin-google-analytics@3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): + resolution: {integrity: sha512-+q2UpWTqVi8GdlLoSlD5bS/YpxW+QMoBwrPrUH/NpvpuOi0Of7MTotsQf9JWd3hymZxl2uu1o3PIrbpxfeDFDQ==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/logger': 3.1.1 - '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/module-type-aliases': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@types/react-router-config': 5.0.11 - combine-promises: 1.2.0 - fs-extra: 11.3.4 - js-yaml: 4.1.1 - lodash: 4.17.23 + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 - utility-types: 3.11.0 - webpack: 5.105.4 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' - '@swc/core' - '@swc/css' + - acorn - bufferutil - csso - debug @@ -6359,24 +2298,28 @@ snapshots: - utf-8-validate - vue-template-compiler - webpack-cli + dev: false - '@docusaurus/plugin-content-pages@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)': + /@docusaurus/plugin-google-gtag@3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): + resolution: {integrity: sha512-0mMPiBBlQ5LFHTtjxuvt/6yzh8v7OxLi3CbeEsxXZpUzcKO/GC7UA1VOWUoBeQzQL508J12HTAlR3IBU9OofSw==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - fs-extra: 11.3.4 + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + '@types/gtag.js': 0.0.12 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 - webpack: 5.105.4 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' - '@swc/core' - '@swc/css' + - acorn - bufferutil - csso - debug @@ -6389,22 +2332,27 @@ snapshots: - utf-8-validate - vue-template-compiler - webpack-cli + dev: false - '@docusaurus/plugin-debug@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)': + /@docusaurus/plugin-google-tag-manager@3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): + resolution: {integrity: sha512-d07bsrMLdDIryDtY17DgqYUbjkswZQr8cLWl4tzXrt5OR/T/zxC1SYKajzB3fd87zTu5W5klV5GmUwcNSMXQXA==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/types': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - fs-extra: 11.3.4 + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-json-view-lite: 1.5.0(react@18.3.1) tslib: 2.8.1 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' - '@swc/core' - '@swc/css' + - acorn - bufferutil - csso - debug @@ -6417,20 +2365,32 @@ snapshots: - utf-8-validate - vue-template-compiler - webpack-cli + dev: false - '@docusaurus/plugin-google-analytics@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)': + /@docusaurus/plugin-sitemap@3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): + resolution: {integrity: sha512-iJ4hCaMmDaUqRv131XJdt/C/jJQx8UreDWTRqZKtNydvZVh/o4yXGRRFOplea1D9b/zpwL1Y+ZDwX7xMhIOTmg==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/types': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/logger': 3.1.1 + '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + sitemap: 7.1.2 tslib: 2.8.1 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' - '@swc/core' - '@swc/css' + - acorn - bufferutil - csso - debug @@ -6443,170 +2403,148 @@ snapshots: - utf-8-validate - vue-template-compiler - webpack-cli + dev: false - '@docusaurus/plugin-google-gtag@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)': + /@docusaurus/preset-classic@3.1.1(@algolia/client-search@5.44.0)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.4.5): + resolution: {integrity: sha512-jG4ys/hWYf69iaN/xOmF+3kjs4Nnz1Ay3CjFLDtYa8KdxbmUhArA9HmP26ru5N0wbVWhY+6kmpYhTJpez5wTyg==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/types': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@types/gtag.js': 0.0.12 + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-blog': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-docs': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-pages': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-debug': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-google-analytics': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-google-gtag': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-google-tag-manager': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-sitemap': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-classic': 3.1.1(@types/react@18.3.12)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-search-algolia': 3.1.1(@algolia/client-search@5.44.0)(@docusaurus/types@3.1.1)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.4.5) + '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - tslib: 2.8.1 transitivePeerDependencies: + - '@algolia/client-search' - '@parcel/css' - '@rspack/core' - '@swc/core' - '@swc/css' + - '@types/react' + - acorn - bufferutil - csso - debug - esbuild - eslint - lightningcss + - search-insights - supports-color - typescript - uglify-js - utf-8-validate - vue-template-compiler - webpack-cli + dev: false - '@docusaurus/plugin-google-tag-manager@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)': + /@docusaurus/react-loadable@5.5.2(react@18.3.1): + resolution: {integrity: sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==} + peerDependencies: + react: '*' dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/types': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@types/react': 18.3.12 + prop-types: 15.8.1 react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tslib: 2.8.1 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - '@docusaurus/plugin-sitemap@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)': + /@docusaurus/theme-classic@3.1.1(@types/react@18.3.12)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): + resolution: {integrity: sha512-GiPE/jbWM8Qv1A14lk6s9fhc0LhPEQ00eIczRO4QL2nAQJZXkjPG6zaVx+1cZxPFWbAsqSjKe2lqkwF3fGkQ7Q==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/logger': 3.1.1 - '@docusaurus/types': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - fs-extra: 11.3.4 + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/module-type-aliases': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-docs': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-pages': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-translations': 3.1.1 + '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + '@mdx-js/react': 3.0.1(@types/react@18.3.12)(react@18.3.1) + clsx: 2.1.1 + copy-text-to-clipboard: 3.2.2 + infima: 0.2.0-alpha.43 + lodash: 4.17.21 + nprogress: 0.2.0 + postcss: 8.5.6 + prism-react-renderer: 2.4.0(react@18.3.1) + prismjs: 1.29.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - sitemap: 7.1.3 + react-router-dom: 5.3.4(react@18.3.1) + rtlcss: 4.3.0 tslib: 2.8.1 + utility-types: 3.11.0 transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@docusaurus/preset-classic@3.1.1(@algolia/client-search@5.50.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.2.2)': - dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/plugin-content-blog': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/plugin-content-pages': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/plugin-debug': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/plugin-google-analytics': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/plugin-google-gtag': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/plugin-google-tag-manager': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/plugin-sitemap': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/theme-classic': 3.1.1(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/theme-search-algolia': 3.1.1(@algolia/client-search@5.50.0)(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.2.2) - '@docusaurus/types': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - '@algolia/client-search' - '@parcel/css' - '@rspack/core' - '@swc/core' - '@swc/css' - '@types/react' + - acorn - bufferutil - csso - debug - esbuild - eslint - lightningcss - - search-insights - supports-color - typescript - uglify-js - utf-8-validate - vue-template-compiler - webpack-cli + dev: false - '@docusaurus/react-loadable@5.5.2(react@18.3.1)': - dependencies: - '@types/react': 18.3.28 - prop-types: 15.8.1 - react: 18.3.1 - - '@docusaurus/theme-classic@3.1.1(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)': + /@docusaurus/theme-common@3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): + resolution: {integrity: sha512-38urZfeMhN70YaXkwIGXmcUcv2CEYK/2l4b05GkJPrbEbgpsIZM3Xc+Js2ehBGGZmfZq8GjjQ5RNQYG+MYzCYg==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/module-type-aliases': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-blog': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/plugin-content-pages': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/theme-translations': 3.1.1 - '@docusaurus/types': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@mdx-js/react': 3.0.1(@types/react@18.3.28)(react@18.3.1) + '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/module-type-aliases': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-docs': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/plugin-content-pages': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1) + '@types/history': 4.7.11 + '@types/react': 18.3.12 + '@types/react-router-config': 5.0.11 clsx: 2.1.1 - copy-text-to-clipboard: 3.2.2 - infima: 0.2.0-alpha.43 - lodash: 4.17.23 - nprogress: 0.2.0 - postcss: 8.5.8 - prism-react-renderer: 2.4.1(react@18.3.1) - prismjs: 1.30.0 + parse-numeric-range: 1.3.0 + prism-react-renderer: 2.4.0(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-router-dom: 5.3.4(react@18.3.1) - rtlcss: 4.3.0 tslib: 2.8.1 utility-types: 3.11.0 transitivePeerDependencies: + - '@docusaurus/types' - '@parcel/css' - '@rspack/core' - '@swc/core' - '@swc/css' - - '@types/react' + - acorn - bufferutil - csso - debug @@ -6619,32 +2557,30 @@ snapshots: - utf-8-validate - vue-template-compiler - webpack-cli + dev: false - '@docusaurus/theme-common@3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)': + /@docusaurus/theme-mermaid@3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): + resolution: {integrity: sha512-O6u9/7QX/ZapV4HJJSzNs0Jir1KA/LRLORWYeDvbGswqZNusj6q4iLELrKIClysJ3PB3zWUzyKtI/wjIKiV1vA==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/mdx-loader': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/module-type-aliases': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-blog': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/plugin-content-pages': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-common': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@types/history': 4.7.11 - '@types/react': 18.3.28 - '@types/react-router-config': 5.0.11 - clsx: 2.1.1 - parse-numeric-range: 1.3.0 - prism-react-renderer: 2.4.1(react@18.3.1) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/module-type-aliases': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + mermaid: 10.9.5 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 - utility-types: 3.11.0 transitivePeerDependencies: - - '@docusaurus/types' - '@parcel/css' - '@rspack/core' - '@swc/core' - '@swc/css' + - acorn - bufferutil - csso - debug @@ -6657,23 +2593,29 @@ snapshots: - utf-8-validate - vue-template-compiler - webpack-cli + dev: false - '@docusaurus/theme-search-algolia@3.1.1(@algolia/client-search@5.50.0)(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.2.2)': + /@docusaurus/theme-search-algolia@3.1.1(@algolia/client-search@5.44.0)(@docusaurus/types@3.1.1)(@types/react@18.3.12)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2)(typescript@5.4.5): + resolution: {integrity: sha512-tBH9VY5EpRctVdaAhT+b1BY8y5dyHVZGFXyCHgTrvcXQy5CV4q7serEX7U3SveNT9zksmchPyct6i1sFDC4Z5g==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.9.0(@algolia/client-search@5.50.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) + '@docsearch/react': 3.9.0(@algolia/client-search@5.44.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.2) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/logger': 3.1.1 - '@docusaurus/plugin-content-docs': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) + '@docusaurus/plugin-content-docs': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + '@docusaurus/theme-common': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) '@docusaurus/theme-translations': 3.1.1 - '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - algoliasearch: 4.27.0 - algoliasearch-helper: 3.28.1(algoliasearch@4.27.0) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) + '@docusaurus/utils-validation': 3.1.1(@docusaurus/types@3.1.1) + algoliasearch: 4.25.3 + algoliasearch-helper: 3.26.1(algoliasearch@4.25.3) clsx: 2.1.1 eta: 2.2.0 - fs-extra: 11.3.4 - lodash: 4.17.23 + fs-extra: 11.2.0 + lodash: 4.17.21 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -6686,6 +2628,7 @@ snapshots: - '@swc/core' - '@swc/css' - '@types/react' + - acorn - bufferutil - csso - debug @@ -6699,46 +2642,66 @@ snapshots: - utf-8-validate - vue-template-compiler - webpack-cli + dev: false - '@docusaurus/theme-translations@3.1.1': + /@docusaurus/theme-translations@3.1.1: + resolution: {integrity: sha512-xvWQFwjxHphpJq5fgk37FXCDdAa2o+r7FX8IpMg+bGZBNXyWBu3MjZ+G4+eUVNpDhVinTc+j6ucL0Ain5KCGrg==} + engines: {node: '>=18.0'} dependencies: - fs-extra: 11.3.4 + fs-extra: 11.2.0 tslib: 2.8.1 + dev: false - '@docusaurus/tsconfig@3.1.1': {} + /@docusaurus/tsconfig@3.1.1: + resolution: {integrity: sha512-FTBuY3KvaHfMVBgvlPmDQ+KS9Q/bYtVftq2ugou3PgBDJoQmw2aUZ4Sg15HKqLGbfIkxoy9t6cqE4Yw1Ta8Q1A==} + dev: true - '@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + /@docusaurus/types@3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-grBqOLnubUecgKFXN9q3uit2HFbCxTWX4Fam3ZFbMN0sWX9wOcDoA7lwdX/8AmeL20Oc4kQvWVgNrsT8bKRvzg==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@mdx-js/mdx': 3.1.1 + '@mdx-js/mdx': 3.1.0(acorn@8.14.0) '@types/history': 4.7.11 - '@types/react': 18.3.28 + '@types/react': 18.3.12 commander: 5.1.0 joi: 17.13.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-helmet-async: 1.3.0(react-dom@18.3.1)(react@18.3.1) utility-types: 3.11.0 - webpack: 5.105.4 + webpack: 5.96.1 webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' + - acorn - esbuild - supports-color - uglify-js - webpack-cli - '@docusaurus/utils-common@3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + /@docusaurus/utils-common@3.1.1(@docusaurus/types@3.1.1): + resolution: {integrity: sha512-eGne3olsIoNfPug5ixjepZAIxeYFzHHnor55Wb2P57jNbtVaFvij/T+MS8U0dtZRFi50QU+UPmRrXdVUM8uyMg==} + engines: {node: '>=18.0'} + peerDependencies: + '@docusaurus/types': '*' + peerDependenciesMeta: + '@docusaurus/types': + optional: true dependencies: + '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) tslib: 2.8.1 - optionalDependencies: - '@docusaurus/types': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + dev: false - '@docusaurus/utils-validation@3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + /@docusaurus/utils-validation@3.1.1(@docusaurus/types@3.1.1): + resolution: {integrity: sha512-KlY4P9YVDnwL+nExvlIpu79abfEv6ZCHuOX4ZQ+gtip+Wxj0daccdReIWWtqxM/Fb5Cz1nQvUCc7VEtT8IBUAA==} + engines: {node: '>=18.0'} dependencies: '@docusaurus/logger': 3.1.1 - '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils': 3.1.1(@docusaurus/types@3.1.1) joi: 17.13.3 - js-yaml: 4.1.1 + js-yaml: 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/types' @@ -6747,131 +2710,183 @@ snapshots: - supports-color - uglify-js - webpack-cli + dev: false - '@docusaurus/utils@3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + /@docusaurus/utils@3.1.1(@docusaurus/types@3.1.1): + resolution: {integrity: sha512-ZJfJa5cJQtRYtqijsPEnAZoduW6sjAQ7ZCWSZavLcV10Fw0Z3gSaPKA/B4micvj2afRZ4gZxT7KfYqe5H8Cetg==} + engines: {node: '>=18.0'} + peerDependencies: + '@docusaurus/types': '*' + peerDependenciesMeta: + '@docusaurus/types': + optional: true dependencies: '@docusaurus/logger': 3.1.1 + '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) '@svgr/webpack': 6.5.1 escape-string-regexp: 4.0.0 - file-loader: 6.2.0(webpack@5.105.4) - fs-extra: 11.3.4 + file-loader: 6.2.0(webpack@5.96.1) + fs-extra: 11.2.0 github-slugger: 1.5.0 globby: 11.1.0 gray-matter: 4.0.3 - jiti: 1.21.7 - js-yaml: 4.1.1 - lodash: 4.17.23 + jiti: 1.21.6 + js-yaml: 4.1.0 + lodash: 4.17.21 micromatch: 4.0.8 resolve-pathname: 3.0.0 shelljs: 0.8.5 tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.105.4))(webpack@5.105.4) - webpack: 5.105.4 - optionalDependencies: - '@docusaurus/types': 3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.96.1) + webpack: 5.96.1 transitivePeerDependencies: - '@swc/core' - esbuild - supports-color - uglify-js - webpack-cli + dev: false + + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - '@hapi/hoek@9.3.0': {} + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + dependencies: + '@hapi/hoek': 9.3.0 - '@hapi/topo@5.1.0': + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} dependencies: - '@hapi/hoek': 9.3.0 + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: false - '@jest/schemas@29.6.3': + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@sinclair/typebox': 0.27.10 + '@sinclair/typebox': 0.27.8 + dev: false - '@jest/types@29.6.3': + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 25.5.0 - '@types/yargs': 17.0.35 + '@types/node': 22.8.7 + '@types/yargs': 17.0.33 chalk: 4.1.2 + dev: false - '@jridgewell/gen-mapping@0.3.13': + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/remapping@2.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} - '@jridgewell/resolve-uri@3.1.2': {} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.11': + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/sourcemap-codec@1.5.5': {} + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@jridgewell/trace-mapping@0.3.31': + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.5.0 - '@leichtgewicht/ip-codec@2.0.5': {} + /@leichtgewicht/ip-codec@2.0.5: + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + dev: false - '@mdx-js/mdx@3.1.1': + /@mdx-js/mdx@3.1.0(acorn@8.14.0): + resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 - acorn: 8.16.0 collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 estree-util-scope: 1.0.0 estree-walker: 3.0.3 - hast-util-to-jsx-runtime: 2.3.6 + hast-util-to-jsx-runtime: 2.3.2 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 - recma-jsx: 1.0.1(acorn@8.16.0) + recma-jsx: 1.0.0(acorn@8.14.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 - remark-mdx: 3.1.1 + remark-mdx: 3.1.0 remark-parse: 11.0.0 - remark-rehype: 11.1.2 - source-map: 0.7.6 + remark-rehype: 11.1.1 + source-map: 0.7.4 unified: 11.0.5 unist-util-position-from-estree: 2.0.0 unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.1.0 + unist-util-visit: 5.0.0 vfile: 6.0.3 transitivePeerDependencies: + - acorn - supports-color - '@mdx-js/react@3.0.1(@types/react@18.3.28)(react@18.3.1)': + /@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1): + resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' dependencies: '@types/mdx': 2.0.13 - '@types/react': 18.3.28 + '@types/react': 18.3.12 react: 18.3.1 + dev: false - '@morph-network/chain@0.0.2': {} + /@morph-network/chain@0.0.1: + resolution: {integrity: sha512-CMduYgJqEdl6gJxEaa/lYFb/wz2YUnRwRw9tfAlO1iHfSlBLs9L5FUkabsjwzfxliGnc5OmlCjHljUlmzwxJZA==, tarball: https://security-jfrog.bitget.tools:8506/artifactory/api/npm/BK-npmjs-virtual/@morph-network/chain/-/@morph-network/chain-0.0.1.tgz} + dev: false - '@morph-network/viem@0.1.0(@morph-network/chain@0.0.2)(typescript@5.2.2)': + /@morph-network/viem@0.1.0(@morph-network/chain@0.0.1)(typescript@5.4.5): + resolution: {integrity: sha512-3XIStB5OVcUJ4TJACpHC9MHQ4/Emiu6xOej+fxdb6AJPDbRE804bNBt7WKEF12C8G4gLZhXQ7A0fSvn07Di0vg==, tarball: https://security-jfrog.bitget.tools:8506/artifactory/api/npm/BK-npmjs-virtual/@morph-network/viem/-/@morph-network/viem-0.1.0.tgz} + peerDependencies: + '@morph-network/chain': ^0.0.1 dependencies: - '@morph-network/chain': 0.0.2 - viem: 2.47.6(typescript@5.2.2) + '@morph-network/chain': 0.0.1 + viem: 2.44.4(typescript@5.4.5) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod + dev: false - '@morui/theme@2.1.0(tailwindcss@3.4.19)': + /@morui/theme@2.1.0(tailwindcss@3.4.14): + resolution: {integrity: sha512-tgxVoHk8dsLMqT4a+LqRgPQ2j2+z9pYAy4BAua2chap6Dnm9o8nzM88BD6chrzbjLX+p8ewB+Hr8C3Jmd7JQkw==} + peerDependencies: + tailwindcss: '*' dependencies: - '@types/color': 3.0.7 + '@types/color': 3.0.6 '@types/flat': 5.0.5 '@types/lodash.foreach': 4.5.9 '@types/lodash.get': 4.4.9 @@ -6887,763 +2902,1278 @@ snapshots: lodash.kebabcase: 4.1.1 lodash.mapkeys: 4.6.0 lodash.omit: 4.5.0 - tailwind-variants: 0.1.20(tailwindcss@3.4.19) - tailwindcss: 3.4.19 + tailwind-variants: 0.1.20(tailwindcss@3.4.14) + tailwindcss: 3.4.14 + dev: false - '@noble/ciphers@1.3.0': {} + /@noble/ciphers@1.3.0: + resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} + engines: {node: ^14.21.3 || >=16} + dev: false - '@noble/curves@1.9.1': + /@noble/curves@1.9.1: + resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==} + engines: {node: ^14.21.3 || >=16} dependencies: '@noble/hashes': 1.8.0 + dev: false - '@noble/hashes@1.8.0': {} + /@noble/hashes@1.8.0: + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + dev: false - '@nodelib/fs.scandir@2.1.5': + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 + dev: false - '@nodelib/fs.stat@2.0.5': {} + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: false - '@nodelib/fs.walk@1.2.8': + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.20.1 - - '@parcel/watcher-android-arm64@2.5.6': - optional: true + fastq: 1.17.1 + dev: false - '@parcel/watcher-darwin-arm64@2.5.6': + /@parcel/watcher-android-arm64@2.4.1: + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-darwin-x64@2.5.6': + /@parcel/watcher-darwin-arm64@2.4.1: + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-freebsd-x64@2.5.6': + /@parcel/watcher-darwin-x64@2.4.1: + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-linux-arm-glibc@2.5.6': + /@parcel/watcher-freebsd-x64@2.4.1: + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-linux-arm-musl@2.5.6': + /@parcel/watcher-linux-arm-glibc@2.4.1: + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-linux-arm64-glibc@2.5.6': + /@parcel/watcher-linux-arm64-glibc@2.4.1: + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-linux-arm64-musl@2.5.6': + /@parcel/watcher-linux-arm64-musl@2.4.1: + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-linux-x64-glibc@2.5.6': + /@parcel/watcher-linux-x64-glibc@2.4.1: + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-linux-x64-musl@2.5.6': + /@parcel/watcher-linux-x64-musl@2.4.1: + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-win32-arm64@2.5.6': + /@parcel/watcher-win32-arm64@2.4.1: + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-win32-ia32@2.5.6': + /@parcel/watcher-win32-ia32@2.4.1: + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false optional: true - '@parcel/watcher-win32-x64@2.5.6': + /@parcel/watcher-win32-x64@2.4.1: + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false optional: true - '@parcel/watcher@2.5.6': + /@parcel/watcher@2.4.1: + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} + requiresBuild: true dependencies: - detect-libc: 2.1.2 + detect-libc: 1.0.3 is-glob: 4.0.3 + micromatch: 4.0.8 node-addon-api: 7.1.1 - picomatch: 4.0.4 optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.6 - '@parcel/watcher-darwin-arm64': 2.5.6 - '@parcel/watcher-darwin-x64': 2.5.6 - '@parcel/watcher-freebsd-x64': 2.5.6 - '@parcel/watcher-linux-arm-glibc': 2.5.6 - '@parcel/watcher-linux-arm-musl': 2.5.6 - '@parcel/watcher-linux-arm64-glibc': 2.5.6 - '@parcel/watcher-linux-arm64-musl': 2.5.6 - '@parcel/watcher-linux-x64-glibc': 2.5.6 - '@parcel/watcher-linux-x64-musl': 2.5.6 - '@parcel/watcher-win32-arm64': 2.5.6 - '@parcel/watcher-win32-ia32': 2.5.6 - '@parcel/watcher-win32-x64': 2.5.6 + '@parcel/watcher-android-arm64': 2.4.1 + '@parcel/watcher-darwin-arm64': 2.4.1 + '@parcel/watcher-darwin-x64': 2.4.1 + '@parcel/watcher-freebsd-x64': 2.4.1 + '@parcel/watcher-linux-arm-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-musl': 2.4.1 + '@parcel/watcher-linux-x64-glibc': 2.4.1 + '@parcel/watcher-linux-x64-musl': 2.4.1 + '@parcel/watcher-win32-arm64': 2.4.1 + '@parcel/watcher-win32-ia32': 2.4.1 + '@parcel/watcher-win32-x64': 2.4.1 + dev: false + optional: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: false optional: true - '@pnpm/config.env-replace@1.1.0': {} + /@pnpm/config.env-replace@1.1.0: + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + dev: false - '@pnpm/network.ca-file@1.0.2': + /@pnpm/network.ca-file@1.0.2: + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} dependencies: graceful-fs: 4.2.10 + dev: false - '@pnpm/npm-conf@3.0.2': + /@pnpm/npm-conf@2.3.1: + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} + engines: {node: '>=12'} dependencies: '@pnpm/config.env-replace': 1.1.0 '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 + dev: false - '@polka/url@1.0.0-next.29': {} + /@polka/url@1.0.0-next.28: + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + dev: false - '@scure/base@1.2.6': {} + /@scure/base@1.2.6: + resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} + dev: false - '@scure/bip32@1.7.0': + /@scure/bip32@1.7.0: + resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==} dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 + dev: false - '@scure/bip39@1.6.0': + /@scure/bip39@1.6.0: + resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} dependencies: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 + dev: false - '@sideway/address@4.1.5': + /@sideway/address@4.1.5: + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} dependencies: '@hapi/hoek': 9.3.0 - '@sideway/formula@3.0.1': {} + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - '@sideway/pinpoint@2.0.0': {} + /@sideway/pinpoint@2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - '@sinclair/typebox@0.27.10': {} + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: false - '@sindresorhus/is@4.6.0': {} + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: false - '@sindresorhus/is@5.6.0': {} + /@sindresorhus/is@5.6.0: + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + dev: false - '@slorber/remark-comment@1.0.0': + /@slorber/remark-comment@1.0.0: + resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==} dependencies: micromark-factory-space: 1.1.0 micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 + dev: false - '@slorber/static-site-generator-webpack-plugin@4.0.7': + /@slorber/static-site-generator-webpack-plugin@4.0.7: + resolution: {integrity: sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==} + engines: {node: '>=14'} dependencies: eval: 0.1.8 p-map: 4.0.0 - webpack-sources: 3.3.4 + webpack-sources: 3.2.3 + dev: false - '@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.29.0)': + /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.26.0): + resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.26.0 + dev: false - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.29.0)': + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.26.0): + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.26.0 + dev: false - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.29.0)': + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.26.0): + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.26.0 + dev: false - '@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.29.0)': + /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.26.0): + resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.26.0 + dev: false - '@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.29.0)': + /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.26.0): + resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.26.0 + dev: false - '@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.29.0)': + /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.26.0): + resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.26.0 + dev: false - '@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.29.0)': + /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.26.0): + resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.26.0 + dev: false - '@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.29.0)': + /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.26.0): + resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.26.0 + dev: false - '@svgr/babel-preset@6.5.1(@babel/core@7.29.0)': + /@svgr/babel-preset@6.5.1(@babel/core@7.26.0): + resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.29.0 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.29.0) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.29.0) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.29.0) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.29.0) - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.29.0) - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.29.0) - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.29.0) - '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.29.0) - - '@svgr/core@6.5.1': + '@babel/core': 7.26.0 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.26.0) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.26.0) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.26.0) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.26.0) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.26.0) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.26.0) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.26.0) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.26.0) + dev: false + + /@svgr/core@6.5.1: + resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} + engines: {node: '>=10'} dependencies: - '@babel/core': 7.29.0 - '@svgr/babel-preset': 6.5.1(@babel/core@7.29.0) + '@babel/core': 7.26.0 + '@svgr/babel-preset': 6.5.1(@babel/core@7.26.0) '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) camelcase: 6.3.0 cosmiconfig: 7.1.0 transitivePeerDependencies: - supports-color + dev: false - '@svgr/hast-util-to-babel-ast@6.5.1': + /@svgr/hast-util-to-babel-ast@6.5.1: + resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} + engines: {node: '>=10'} dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.26.0 entities: 4.5.0 + dev: false - '@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1)': + /@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1): + resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.29.0 - '@svgr/babel-preset': 6.5.1(@babel/core@7.29.0) + '@babel/core': 7.26.0 + '@svgr/babel-preset': 6.5.1(@babel/core@7.26.0) '@svgr/core': 6.5.1 '@svgr/hast-util-to-babel-ast': 6.5.1 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color + dev: false - '@svgr/plugin-svgo@6.5.1(@svgr/core@6.5.1)': + /@svgr/plugin-svgo@6.5.1(@svgr/core@6.5.1): + resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': '*' dependencies: '@svgr/core': 6.5.1 cosmiconfig: 7.1.0 deepmerge: 4.3.1 - svgo: 2.8.2 + svgo: 2.8.0 + dev: false - '@svgr/webpack@6.5.1': + /@svgr/webpack@6.5.1: + resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} + engines: {node: '>=10'} dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-react-constant-elements': 7.27.1(@babel/core@7.29.0) - '@babel/preset-env': 7.29.2(@babel/core@7.29.0) - '@babel/preset-react': 7.28.5(@babel/core@7.29.0) - '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-constant-elements': 7.25.9(@babel/core@7.26.0) + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + '@babel/preset-react': 7.25.9(@babel/core@7.26.0) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) '@svgr/core': 6.5.1 '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) transitivePeerDependencies: - supports-color + dev: false - '@szmarczak/http-timer@5.0.1': + /@szmarczak/http-timer@5.0.1: + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} dependencies: defer-to-connect: 2.0.1 + dev: false + + /@trysound/sax@0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: false + + /@types/acorn@4.0.6: + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + dependencies: + '@types/estree': 1.0.6 - '@types/body-parser@1.19.6': + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 25.5.0 + '@types/node': 22.8.7 + dev: false - '@types/bonjour@3.5.13': + /@types/bonjour@3.5.13: + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: - '@types/node': 25.5.0 + '@types/node': 22.8.7 + dev: false - '@types/color-convert@1.9.0': + /@types/color-convert@2.0.4: + resolution: {integrity: sha512-Ub1MmDdyZ7mX//g25uBAoH/mWGd9swVbt8BseymnaE18SU4po/PjmCrHxqIIRjBo3hV/vh1KGr0eMxUhp+t+dQ==} dependencies: - '@types/color-name': 2.0.0 + '@types/color-name': 1.1.5 + dev: false + + /@types/color-name@1.1.5: + resolution: {integrity: sha512-j2K5UJqGTxeesj6oQuGpMgifpT5k9HprgQd8D1Y0lOFqKHl3PJu5GMeS4Y5EgjS55AE6OQxf8mPED9uaGbf4Cg==} + dev: false - '@types/color-name@2.0.0': {} + /@types/color@3.0.6: + resolution: {integrity: sha512-NMiNcZFRUAiUUCCf7zkAelY8eV3aKqfbzyFQlXpPIEeoNDbsEHGpb854V3gzTsGKYj830I5zPuOwU/TP5/cW6A==} + dependencies: + '@types/color-convert': 2.0.4 + dev: false - '@types/color@3.0.7': + /@types/connect-history-api-fallback@1.5.4: + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: - '@types/color-convert': 1.9.0 + '@types/express-serve-static-core': 5.0.1 + '@types/node': 22.8.7 + dev: false - '@types/connect-history-api-fallback@1.5.4': + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/express-serve-static-core': 5.1.1 - '@types/node': 25.5.0 + '@types/node': 22.8.7 + dev: false + + /@types/d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + dev: false - '@types/connect@3.4.38': + /@types/d3-scale@4.0.9: + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} dependencies: - '@types/node': 25.5.0 + '@types/d3-time': 3.0.4 + dev: false - '@types/debug@4.1.13': + /@types/d3-time@3.0.4: + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + dev: false + + /@types/debug@4.1.12: + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} dependencies: - '@types/ms': 2.1.0 + '@types/ms': 0.7.34 - '@types/eslint-scope@3.7.7': + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} dependencies: '@types/eslint': 9.6.1 - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 - '@types/eslint@9.6.1': + /@types/eslint@9.6.1: + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 - '@types/estree-jsx@1.0.5': + /@types/estree-jsx@1.0.5: + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 - '@types/estree@1.0.8': {} + /@types/estree@1.0.6: + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/express-serve-static-core@4.19.8': + /@types/express-serve-static-core@4.19.6: + resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} dependencies: - '@types/node': 25.5.0 - '@types/qs': 6.15.0 + '@types/node': 22.8.7 + '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 - '@types/send': 1.2.1 + '@types/send': 0.17.4 + dev: false - '@types/express-serve-static-core@5.1.1': + /@types/express-serve-static-core@5.0.1: + resolution: {integrity: sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA==} dependencies: - '@types/node': 25.5.0 - '@types/qs': 6.15.0 + '@types/node': 22.8.7 + '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 - '@types/send': 1.2.1 + '@types/send': 0.17.4 + dev: false - '@types/express@4.17.25': + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: - '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 4.19.8 - '@types/qs': 6.15.0 - '@types/serve-static': 1.15.10 + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.6 + '@types/qs': 6.9.16 + '@types/serve-static': 1.15.7 + dev: false - '@types/flat@5.0.5': {} + /@types/flat@5.0.5: + resolution: {integrity: sha512-nPLljZQKSnac53KDUDzuzdRfGI0TDb5qPrb+SrQyN3MtdQrOnGsKniHN1iYZsJEBIVQve94Y6gNz22sgISZq+Q==} + dev: false - '@types/gtag.js@0.0.12': {} + /@types/gtag.js@0.0.12: + resolution: {integrity: sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==} + dev: false - '@types/hast@3.0.4': + /@types/hast@3.0.4: + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} dependencies: '@types/unist': 3.0.3 - '@types/history@4.7.11': {} + /@types/history@4.7.11: + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} - '@types/html-minifier-terser@6.1.0': {} + /@types/html-minifier-terser@6.1.0: + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + dev: false - '@types/http-cache-semantics@4.2.0': {} + /@types/http-cache-semantics@4.0.4: + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + dev: false - '@types/http-errors@2.0.5': {} + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: false - '@types/http-proxy@1.17.17': + /@types/http-proxy@1.17.15: + resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} dependencies: - '@types/node': 25.5.0 + '@types/node': 22.8.7 + dev: false - '@types/istanbul-lib-coverage@2.0.6': {} + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: false - '@types/istanbul-lib-report@3.0.3': + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: '@types/istanbul-lib-coverage': 2.0.6 + dev: false - '@types/istanbul-reports@3.0.4': + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} dependencies: '@types/istanbul-lib-report': 3.0.3 + dev: false - '@types/json-schema@7.0.15': {} + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/katex@0.16.8': {} + /@types/katex@0.16.7: + resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} + dev: false - '@types/lodash.foreach@4.5.9': + /@types/lodash.foreach@4.5.9: + resolution: {integrity: sha512-vmq0p/FK66PsALXRmK/qsnlLlCpnudvozWYrxJImHujHhXMADdeoPEY10zwmu26437w85wCvdxUqpFi+ALtkiQ==} dependencies: - '@types/lodash': 4.17.24 + '@types/lodash': 4.17.13 + dev: false - '@types/lodash.get@4.4.9': + /@types/lodash.get@4.4.9: + resolution: {integrity: sha512-J5dvW98sxmGnamqf+/aLP87PYXyrha9xIgc2ZlHl6OHMFR2Ejdxep50QfU0abO1+CH6+ugx+8wEUN1toImAinA==} dependencies: - '@types/lodash': 4.17.24 + '@types/lodash': 4.17.13 + dev: false - '@types/lodash.kebabcase@4.1.9': + /@types/lodash.kebabcase@4.1.9: + resolution: {integrity: sha512-kPrrmcVOhSsjAVRovN0lRfrbuidfg0wYsrQa5IYuoQO1fpHHGSme66oyiYA/5eQPVl8Z95OA3HG0+d2SvYC85w==} dependencies: - '@types/lodash': 4.17.24 + '@types/lodash': 4.17.13 + dev: false - '@types/lodash.mapkeys@4.6.9': + /@types/lodash.mapkeys@4.6.9: + resolution: {integrity: sha512-6/ERBCabeDI656LsV+oopLjdnJ/x1PCAE6kkkssH8e4i0K7Pw307noxHCbUc6cAVfTo9vx0Z+k3QZwy1IrUZcA==} dependencies: - '@types/lodash': 4.17.24 + '@types/lodash': 4.17.13 + dev: false - '@types/lodash.omit@4.5.9': + /@types/lodash.omit@4.5.9: + resolution: {integrity: sha512-zuAVFLUPJMOzsw6yawshsYGgq2hWUHtsZgeXHZmSFhaQQFC6EQ021uDKHkSjOpNhSvtNSU9165/o3o/Q51GpTw==} dependencies: - '@types/lodash': 4.17.24 + '@types/lodash': 4.17.13 + dev: false - '@types/lodash@4.17.24': {} + /@types/lodash@4.17.13: + resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} + dev: false - '@types/mdast@4.0.4': + /@types/mdast@3.0.15: + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + dependencies: + '@types/unist': 2.0.11 + dev: false + + /@types/mdast@4.0.4: + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} dependencies: '@types/unist': 3.0.3 - '@types/mdx@2.0.13': {} + /@types/mdx@2.0.13: + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - '@types/mime@1.3.5': {} + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: false - '@types/ms@2.1.0': {} + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/node-forge@1.3.14': + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 25.5.0 + '@types/node': 22.8.7 + dev: false - '@types/node@17.0.45': {} + /@types/node@17.0.45: + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + dev: false - '@types/node@25.5.0': + /@types/node@22.8.7: + resolution: {integrity: sha512-LidcG+2UeYIWcMuMUpBKOnryBWG/rnmOHQR5apjn8myTQcx3rinFRn7DcIFhMnS0PPFSC6OafdIKEad0lj6U0Q==} dependencies: - undici-types: 7.18.2 + undici-types: 6.19.8 - '@types/parse-json@4.0.2': {} + /@types/parse-json@4.0.2: + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + dev: false - '@types/prismjs@1.26.6': {} + /@types/prismjs@1.26.5: + resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} + dev: false - '@types/prop-types@15.7.15': {} + /@types/prop-types@15.7.13: + resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} - '@types/qs@6.15.0': {} + /@types/qs@6.9.16: + resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} + dev: false - '@types/range-parser@1.2.7': {} + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + dev: false - '@types/react-router-config@5.0.11': + /@types/react-router-config@5.0.11: + resolution: {integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.28 + '@types/react': 18.3.12 '@types/react-router': 5.1.20 - '@types/react-router-dom@5.3.3': + /@types/react-router-dom@5.3.3: + resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.28 + '@types/react': 18.3.12 '@types/react-router': 5.1.20 - '@types/react-router@5.1.20': + /@types/react-router@5.1.20: + resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.28 + '@types/react': 18.3.12 - '@types/react@18.3.28': + /@types/react@18.3.12: + resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} dependencies: - '@types/prop-types': 15.7.15 - csstype: 3.2.3 + '@types/prop-types': 15.7.13 + csstype: 3.1.3 - '@types/retry@0.12.0': {} + /@types/retry@0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + dev: false - '@types/sax@1.2.7': + /@types/sax@1.2.7: + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: - '@types/node': 17.0.45 + '@types/node': 22.8.7 + dev: false - '@types/send@0.17.6': + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 25.5.0 + '@types/node': 22.8.7 + dev: false - '@types/send@1.2.1': + /@types/serve-index@1.9.4: + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} dependencies: - '@types/node': 25.5.0 + '@types/express': 4.17.21 + dev: false - '@types/serve-index@1.9.4': + /@types/serve-static@1.15.7: + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: - '@types/express': 4.17.25 + '@types/http-errors': 2.0.4 + '@types/node': 22.8.7 + '@types/send': 0.17.4 + dev: false - '@types/serve-static@1.15.10': + /@types/sockjs@0.3.36: + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@types/http-errors': 2.0.5 - '@types/node': 25.5.0 - '@types/send': 0.17.6 + '@types/node': 22.8.7 + dev: false - '@types/sockjs@0.3.36': - dependencies: - '@types/node': 25.5.0 + /@types/trusted-types@2.0.7: + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + requiresBuild: true + dev: false + optional: true - '@types/unist@2.0.11': {} + /@types/unist@2.0.11: + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - '@types/unist@3.0.3': {} + /@types/unist@3.0.3: + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/ws@8.18.1': + /@types/ws@8.5.13: + resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} dependencies: - '@types/node': 25.5.0 + '@types/node': 22.8.7 + dev: false - '@types/yargs-parser@21.0.3': {} + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: false - '@types/yargs@17.0.35': + /@types/yargs@17.0.33: + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} dependencies: '@types/yargs-parser': 21.0.3 + dev: false - '@ungap/structured-clone@1.3.0': {} + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@webassemblyjs/ast@1.14.1': + /@webassemblyjs/ast@1.12.1: + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} dependencies: - '@webassemblyjs/helper-numbers': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - '@webassemblyjs/helper-api-error@1.13.2': {} + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - '@webassemblyjs/helper-buffer@1.14.1': {} + /@webassemblyjs/helper-buffer@1.12.1: + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} - '@webassemblyjs/helper-numbers@1.13.2': + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.13.2 - '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 - '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - '@webassemblyjs/helper-wasm-section@1.14.1': + /@webassemblyjs/helper-wasm-section@1.12.1: + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/ieee754@1.13.2': + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} dependencies: '@xtuc/ieee754': 1.2.0 - '@webassemblyjs/leb128@1.13.2': + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} dependencies: '@xtuc/long': 4.2.2 - '@webassemblyjs/utf8@1.13.2': {} + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - '@webassemblyjs/wasm-edit@1.14.1': + /@webassemblyjs/wasm-edit@1.12.1: + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/helper-wasm-section': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-opt': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wast-printer': 1.14.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 - '@webassemblyjs/wasm-gen@1.14.1': + /@webassemblyjs/wasm-gen@1.12.1: + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 - '@webassemblyjs/wasm-opt@1.14.1': + /@webassemblyjs/wasm-opt@1.12.1: + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 - '@webassemblyjs/wasm-parser@1.14.1': + /@webassemblyjs/wasm-parser@1.12.1: + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-api-error': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 - '@webassemblyjs/wast-printer@1.14.1': + /@webassemblyjs/wast-printer@1.12.1: + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} dependencies: - '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@xtuc/ieee754@1.2.0': {} + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - '@xtuc/long@4.2.2': {} + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - abitype@1.2.3(typescript@5.2.2): - optionalDependencies: - typescript: 5.2.2 + /abitype@1.2.3(typescript@5.4.5): + resolution: {integrity: sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3.22.0 || ^4.0.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + dependencies: + typescript: 5.4.5 + dev: false - accepts@1.3.8: + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} dependencies: mime-types: 2.1.35 negotiator: 0.6.3 + dev: false - acorn-import-phases@1.0.4(acorn@8.16.0): - dependencies: - acorn: 8.16.0 - - acorn-jsx@5.3.2(acorn@8.16.0): + /acorn-jsx@5.3.2(acorn@8.14.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.16.0 + acorn: 8.14.0 - acorn-walk@8.3.5: + /acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} dependencies: - acorn: 8.16.0 + acorn: 8.14.0 + dev: false - acorn@8.16.0: {} + /acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true - address@1.2.2: {} + /address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + dev: false - aggregate-error@3.1.0: + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 + dev: false - ajv-formats@2.1.1(ajv@8.18.0): - optionalDependencies: - ajv: 8.18.0 + /ajv-formats@2.1.1(ajv@8.17.1): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.17.1 + dev: false - ajv-keywords@3.5.2(ajv@6.14.0): + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 dependencies: - ajv: 6.14.0 + ajv: 6.12.6 - ajv-keywords@5.1.0(ajv@8.18.0): + /ajv-keywords@5.1.0(ajv@8.17.1): + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 dependencies: - ajv: 8.18.0 + ajv: 8.17.1 fast-deep-equal: 3.1.3 + dev: false - ajv@6.14.0: + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.18.0: + /ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.0 + fast-uri: 3.0.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + dev: false - algoliasearch-helper@3.28.1(algoliasearch@4.27.0): + /algoliasearch-helper@3.26.1(algoliasearch@4.25.3): + resolution: {integrity: sha512-CAlCxm4fYBXtvc5MamDzP6Svu8rW4z9me4DCBY1rQ2UDJ0u0flWmusQ8M3nOExZsLLRcUwUPoRAPMrhzOG3erw==} + peerDependencies: + algoliasearch: '>= 3.1 < 6' dependencies: '@algolia/events': 4.0.1 - algoliasearch: 4.27.0 - - algoliasearch@4.27.0: - dependencies: - '@algolia/cache-browser-local-storage': 4.27.0 - '@algolia/cache-common': 4.27.0 - '@algolia/cache-in-memory': 4.27.0 - '@algolia/client-account': 4.27.0 - '@algolia/client-analytics': 4.27.0 - '@algolia/client-common': 4.27.0 - '@algolia/client-personalization': 4.27.0 - '@algolia/client-search': 4.27.0 - '@algolia/logger-common': 4.27.0 - '@algolia/logger-console': 4.27.0 - '@algolia/recommend': 4.27.0 - '@algolia/requester-browser-xhr': 4.27.0 - '@algolia/requester-common': 4.27.0 - '@algolia/requester-node-http': 4.27.0 - '@algolia/transporter': 4.27.0 - - algoliasearch@5.50.0: - dependencies: - '@algolia/abtesting': 1.16.0 - '@algolia/client-abtesting': 5.50.0 - '@algolia/client-analytics': 5.50.0 - '@algolia/client-common': 5.50.0 - '@algolia/client-insights': 5.50.0 - '@algolia/client-personalization': 5.50.0 - '@algolia/client-query-suggestions': 5.50.0 - '@algolia/client-search': 5.50.0 - '@algolia/ingestion': 1.50.0 - '@algolia/monitoring': 1.50.0 - '@algolia/recommend': 5.50.0 - '@algolia/requester-browser-xhr': 5.50.0 - '@algolia/requester-fetch': 5.50.0 - '@algolia/requester-node-http': 5.50.0 - - ansi-align@3.0.1: + algoliasearch: 4.25.3 + dev: false + + /algoliasearch@4.25.3: + resolution: {integrity: sha512-kgeIixgDiB+FbH1cHDFUtTNkxdJadHryF8lSPIHHQkEeUrzZA1Hi3PLL+EgNubO0dch4ALNb5G4rw+FDCv3Vbw==} + dependencies: + '@algolia/cache-browser-local-storage': 4.25.3 + '@algolia/cache-common': 4.25.3 + '@algolia/cache-in-memory': 4.25.3 + '@algolia/client-account': 4.25.3 + '@algolia/client-analytics': 4.25.3 + '@algolia/client-common': 4.25.3 + '@algolia/client-personalization': 4.25.3 + '@algolia/client-search': 4.25.3 + '@algolia/logger-common': 4.25.3 + '@algolia/logger-console': 4.25.3 + '@algolia/recommend': 4.25.3 + '@algolia/requester-browser-xhr': 4.25.3 + '@algolia/requester-common': 4.25.3 + '@algolia/requester-node-http': 4.25.3 + '@algolia/transporter': 4.25.3 + dev: false + + /algoliasearch@5.12.0: + resolution: {integrity: sha512-psGBRYdGgik8I6m28iAB8xpubvjEt7UQU+w5MAJUA2324WHiGoHap5BPkkjB14rMaXeRts6pmOsrVIglGyOVwg==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-abtesting': 5.12.0 + '@algolia/client-analytics': 5.12.0 + '@algolia/client-common': 5.12.0 + '@algolia/client-insights': 5.12.0 + '@algolia/client-personalization': 5.12.0 + '@algolia/client-query-suggestions': 5.12.0 + '@algolia/client-search': 5.12.0 + '@algolia/ingestion': 1.12.0 + '@algolia/monitoring': 1.12.0 + '@algolia/recommend': 5.12.0 + '@algolia/requester-browser-xhr': 5.12.0 + '@algolia/requester-fetch': 5.12.0 + '@algolia/requester-node-http': 5.12.0 + dev: false + + /algoliasearch@5.44.0: + resolution: {integrity: sha512-f8IpsbdQjzTjr/4mJ/jv5UplrtyMnnciGax6/B0OnLCs2/GJTK13O4Y7Ff1AvJVAaztanH+m5nzPoUq6EAy+aA==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/abtesting': 1.10.0 + '@algolia/client-abtesting': 5.44.0 + '@algolia/client-analytics': 5.44.0 + '@algolia/client-common': 5.44.0 + '@algolia/client-insights': 5.44.0 + '@algolia/client-personalization': 5.44.0 + '@algolia/client-query-suggestions': 5.44.0 + '@algolia/client-search': 5.44.0 + '@algolia/ingestion': 1.44.0 + '@algolia/monitoring': 1.44.0 + '@algolia/recommend': 5.44.0 + '@algolia/requester-browser-xhr': 5.44.0 + '@algolia/requester-fetch': 5.44.0 + '@algolia/requester-node-http': 5.44.0 + dev: false + + /ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: string-width: 4.2.3 + dev: false - ansi-html-community@0.0.8: {} + /ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: false - ansi-regex@5.0.1: {} + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: false - ansi-regex@6.2.2: {} + /ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + dev: false - ansi-styles@4.3.0: + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: color-convert: 2.0.1 + dev: false - ansi-styles@6.2.3: {} + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: false - any-promise@1.3.0: {} + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: false - anymatch@3.1.3: + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 - picomatch: 2.3.2 + picomatch: 2.3.1 + dev: false - arg@5.0.2: {} + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: false - argparse@1.0.10: + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 + dev: false - argparse@2.0.1: {} + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: false + + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: false - array-flatten@1.1.1: {} + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: false - array-union@2.1.0: {} + /astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true - astring@1.9.0: {} + /at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: false - at-least-node@1.0.0: {} + /autoprefixer@10.4.20(postcss@8.4.47): + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.24.2 + caniuse-lite: 1.0.30001677 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.4.47 + postcss-value-parser: 4.2.0 + dev: false - autoprefixer@10.4.27(postcss@8.5.8): + /autoprefixer@10.4.22(postcss@8.5.6): + resolution: {integrity: sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 dependencies: - browserslist: 4.28.1 - caniuse-lite: 1.0.30001782 + browserslist: 4.28.0 + caniuse-lite: 1.0.30001756 fraction.js: 5.3.4 + normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.8 + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - babel-loader@9.2.1(@babel/core@7.29.0)(webpack@5.105.4): + /babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.96.1): + resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: 5.96.1 dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.26.0 find-cache-dir: 4.0.0 - schema-utils: 4.3.3 - webpack: 5.105.4 + schema-utils: 4.2.0 + webpack: 5.96.1 + dev: false - babel-plugin-dynamic-import-node@2.3.3: + /babel-plugin-dynamic-import-node@2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} dependencies: - object.assign: 4.1.7 + object.assign: 4.1.5 + dev: false - babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): + /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0): + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.29.0 - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + '@babel/compat-data': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: false - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) - core-js-compat: 3.49.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.0): + /babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) - core-js-compat: 3.49.0 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) + core-js-compat: 3.39.0 transitivePeerDependencies: - supports-color + dev: false - babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.0): + /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.0): + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) transitivePeerDependencies: - supports-color + dev: false - bail@2.0.2: {} + /bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - balanced-match@1.0.2: {} + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: false - baseline-browser-mapping@2.10.12: {} + /baseline-browser-mapping@2.8.31: + resolution: {integrity: sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==} + hasBin: true - batch@0.6.1: {} + /batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + dev: false - big.js@5.2.2: {} + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: false - binary-extensions@2.3.0: {} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: false - body-parser@1.20.4: + /body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 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 + http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.14.2 - raw-body: 2.5.3 + qs: 6.13.0 + raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 transitivePeerDependencies: - supports-color + dev: false - bonjour-service@1.3.0: + /bonjour-service@1.2.1: + resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} dependencies: fast-deep-equal: 3.1.3 multicast-dns: 7.2.5 + dev: false - boolbase@1.0.0: {} + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: false - boxen@6.2.1: + /boxen@6.2.1: + resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: ansi-align: 3.0.1 camelcase: 6.3.0 @@ -7653,496 +4183,1132 @@ snapshots: type-fest: 2.19.0 widest-line: 4.0.1 wrap-ansi: 8.1.0 + dev: false - boxen@7.1.1: + /boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} + engines: {node: '>=14.16'} dependencies: ansi-align: 3.0.1 camelcase: 7.0.1 - chalk: 5.6.2 + chalk: 5.3.0 cli-boxes: 3.0.0 string-width: 5.1.2 type-fest: 2.19.0 widest-line: 4.0.1 wrap-ansi: 8.1.0 + dev: false - brace-expansion@1.1.13: + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 + dev: false - braces@3.0.3: + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} dependencies: fill-range: 7.1.1 + dev: false + + /browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001677 + electron-to-chromium: 1.5.50 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.2) + dev: false + + /browserslist@4.28.0: + resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + baseline-browser-mapping: 2.8.31 + caniuse-lite: 1.0.30001756 + electron-to-chromium: 1.5.259 + node-releases: 2.0.27 + update-browserslist-db: 1.1.4(browserslist@4.28.0) + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: false + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: false + + /cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + dev: false + + /cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + dependencies: + '@types/http-cache-semantics': 4.0.4 + get-stream: 6.0.1 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.0.1 + responselike: 3.0.0 + dev: false + + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + dev: false + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: false + + /camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.8.1 + dev: false + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: false + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: false + + /camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + dev: false + + /caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + dependencies: + browserslist: 4.28.0 + caniuse-lite: 1.0.30001756 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: false + + /caniuse-lite@1.0.30001677: + resolution: {integrity: sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==} + dev: false + + /caniuse-lite@1.0.30001756: + resolution: {integrity: sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==} + + /ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: false + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: false + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: false + + /character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + /character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + /character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + /character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + /cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + dev: false + + /cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + htmlparser2: 8.0.2 + parse5: 7.2.1 + parse5-htmlparser2-tree-adapter: 7.1.0 + dev: false + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: false + + /chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + dependencies: + readdirp: 4.0.2 + dev: false + + /chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: false + + /classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + dev: false + + /clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + dependencies: + source-map: 0.6.1 + dev: false + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: false + + /cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + dev: false + + /cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + dev: false + + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + + /clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + dev: false + + /collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: false + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: false + + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + + /color2k@2.0.3: + resolution: {integrity: sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog==} + dev: false - browserslist@4.28.1: + /color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} dependencies: - baseline-browser-mapping: 2.10.12 - caniuse-lite: 1.0.30001782 - electron-to-chromium: 1.5.328 - node-releases: 2.0.36 - update-browserslist-db: 1.2.3(browserslist@4.28.1) + color-convert: 2.0.1 + color-string: 1.9.1 + dev: false + + /colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: false + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: false + + /combine-promises@1.2.0: + resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==} + engines: {node: '>=10'} + dev: false + + /comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: false + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: false + + /commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: false + + /commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: false - buffer-from@1.1.2: {} + /common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + dev: false - bytes@3.0.0: {} + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.54.0 + dev: false - bytes@3.1.2: {} + /compression@1.7.5: + resolution: {integrity: sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==} + engines: {node: '>= 0.8.0'} + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.0.2 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: false - cacheable-lookup@7.0.0: {} + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: false - cacheable-request@10.2.14: + /concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} dependencies: - '@types/http-cache-semantics': 4.2.0 - get-stream: 6.0.1 - http-cache-semantics: 4.2.0 - keyv: 4.5.4 - mimic-response: 4.0.0 - normalize-url: 8.1.1 - responselike: 3.0.0 + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + dev: true - call-bind-apply-helpers@1.0.2: + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 + ini: 1.3.8 + proto-list: 1.2.4 + dev: false - call-bind@1.0.8: + /configstore@6.0.0: + resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} + engines: {node: '>=12'} dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - get-intrinsic: 1.3.0 - set-function-length: 1.2.2 + dot-prop: 6.0.1 + graceful-fs: 4.2.11 + unique-string: 3.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 5.1.0 + dev: false - call-bound@1.0.4: - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 + /connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + dev: false + + /consola@2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + dev: false - callsites@3.1.0: {} + /content-disposition@0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} + dev: false - camel-case@4.1.2: + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} dependencies: - pascal-case: 3.1.2 - tslib: 2.8.1 - - camelcase-css@2.0.1: {} + safe-buffer: 5.2.1 + dev: false - camelcase@6.3.0: {} + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: false - camelcase@7.0.1: {} + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: false - caniuse-api@3.0.0: - dependencies: - browserslist: 4.28.1 - caniuse-lite: 1.0.30001782 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: false - caniuse-lite@1.0.30001782: {} + /cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + dev: false - ccount@2.0.1: {} + /copy-text-to-clipboard@3.2.2: + resolution: {integrity: sha512-T6SqyLd1iLuqPA90J5N4cTalrtovCySh58iiZDGJ6FGznbclKh4UI+FGacQSgFzwKG77W7XT5gwbVEbd9cIH1A==} + engines: {node: '>=12'} + dev: false - chalk@4.1.2: + /copy-webpack-plugin@11.0.0(webpack@5.96.1): + resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: 5.96.1 dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + globby: 13.2.2 + normalize-path: 3.0.0 + schema-utils: 4.2.0 + serialize-javascript: 6.0.2 + webpack: 5.96.1 + dev: false - chalk@5.6.2: {} + /core-js-compat@3.39.0: + resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} + dependencies: + browserslist: 4.28.0 + dev: false - char-regex@1.0.2: {} + /core-js-pure@3.39.0: + resolution: {integrity: sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==} + requiresBuild: true + dev: false - character-entities-html4@2.1.0: {} + /core-js@3.39.0: + resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==} + requiresBuild: true + dev: false - character-entities-legacy@3.0.0: {} + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - character-entities@2.0.2: {} + /cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + dependencies: + layout-base: 1.0.2 + dev: false - character-reference-invalid@2.0.1: {} + /cosmiconfig@6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: false - cheerio-select@2.1.0: + /cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} dependencies: - boolbase: 1.0.0 - css-select: 5.2.2 - css-what: 6.2.2 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: false - cheerio@1.2.0: + /cosmiconfig@8.3.6(typescript@5.4.5): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.2.2 - encoding-sniffer: 0.2.1 - htmlparser2: 10.1.0 - parse5: 7.3.0 - parse5-htmlparser2-tree-adapter: 7.1.0 - parse5-parser-stream: 7.1.2 - undici: 7.24.6 - whatwg-mimetype: 4.0.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 5.4.5 + dev: false - chokidar@3.6.0: + /cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.2.14 + dev: true - chokidar@4.0.3: + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} dependencies: - readdirp: 4.1.2 + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: false - chrome-trace-event@1.0.4: {} + /crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + dependencies: + type-fest: 1.4.0 + dev: false - ci-info@3.9.0: {} + /css-declaration-sorter@6.4.1(postcss@8.5.6): + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.5.6 + dev: false - classnames@2.5.1: {} + /css-loader@6.11.0(webpack@5.96.1): + resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: 5.96.1 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) + postcss-modules-local-by-default: 4.0.5(postcss@8.5.6) + postcss-modules-scope: 3.2.0(postcss@8.5.6) + postcss-modules-values: 4.0.0(postcss@8.5.6) + postcss-value-parser: 4.2.0 + semver: 7.6.3 + webpack: 5.96.1 + dev: false - clean-css@5.3.3: + /css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.3)(webpack@5.96.1): + resolution: {integrity: sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@parcel/css': '*' + '@swc/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + lightningcss: '*' + webpack: 5.96.1 + peerDependenciesMeta: + '@parcel/css': + optional: true + '@swc/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + lightningcss: + optional: true dependencies: + clean-css: 5.3.3 + cssnano: 5.1.15(postcss@8.5.6) + jest-worker: 29.7.0 + postcss: 8.5.6 + schema-utils: 4.2.0 + serialize-javascript: 6.0.2 source-map: 0.6.1 + webpack: 5.96.1 + dev: false - clean-stack@2.2.0: {} - - cli-boxes@3.0.0: {} + /css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: false - cli-table3@0.6.5: + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: - string-width: 4.2.3 - optionalDependencies: - '@colors/colors': 1.5.0 + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: false - clone-deep@4.0.1: + /css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: false - clsx@2.1.1: {} + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: false - collapse-white-space@2.1.0: {} + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: false - color-convert@2.0.1: + /cssnano-preset-advanced@5.3.10(postcss@8.5.6): + resolution: {integrity: sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - color-name: 1.1.4 + autoprefixer: 10.4.22(postcss@8.5.6) + cssnano-preset-default: 5.2.14(postcss@8.5.6) + postcss: 8.5.6 + postcss-discard-unused: 5.1.0(postcss@8.5.6) + postcss-merge-idents: 5.1.1(postcss@8.5.6) + postcss-reduce-idents: 5.2.0(postcss@8.5.6) + postcss-zindex: 5.1.0(postcss@8.5.6) + dev: false - color-name@1.1.4: {} - - color-string@1.9.1: + /cssnano-preset-default@5.2.14(postcss@8.5.6): + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.4 - - color2k@2.0.3: {} - - color@4.2.3: + css-declaration-sorter: 6.4.1(postcss@8.5.6) + cssnano-utils: 3.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-calc: 8.2.4(postcss@8.5.6) + postcss-colormin: 5.3.1(postcss@8.5.6) + postcss-convert-values: 5.1.3(postcss@8.5.6) + postcss-discard-comments: 5.1.2(postcss@8.5.6) + postcss-discard-duplicates: 5.1.0(postcss@8.5.6) + postcss-discard-empty: 5.1.1(postcss@8.5.6) + postcss-discard-overridden: 5.1.0(postcss@8.5.6) + postcss-merge-longhand: 5.1.7(postcss@8.5.6) + postcss-merge-rules: 5.1.4(postcss@8.5.6) + postcss-minify-font-values: 5.1.0(postcss@8.5.6) + postcss-minify-gradients: 5.1.1(postcss@8.5.6) + postcss-minify-params: 5.1.4(postcss@8.5.6) + postcss-minify-selectors: 5.2.1(postcss@8.5.6) + postcss-normalize-charset: 5.1.0(postcss@8.5.6) + postcss-normalize-display-values: 5.1.0(postcss@8.5.6) + postcss-normalize-positions: 5.1.1(postcss@8.5.6) + postcss-normalize-repeat-style: 5.1.1(postcss@8.5.6) + postcss-normalize-string: 5.1.0(postcss@8.5.6) + postcss-normalize-timing-functions: 5.1.0(postcss@8.5.6) + postcss-normalize-unicode: 5.1.1(postcss@8.5.6) + postcss-normalize-url: 5.1.0(postcss@8.5.6) + postcss-normalize-whitespace: 5.1.1(postcss@8.5.6) + postcss-ordered-values: 5.1.3(postcss@8.5.6) + postcss-reduce-initial: 5.1.2(postcss@8.5.6) + postcss-reduce-transforms: 5.1.0(postcss@8.5.6) + postcss-svgo: 5.1.0(postcss@8.5.6) + postcss-unique-selectors: 5.1.1(postcss@8.5.6) + dev: false + + /cssnano-utils@3.1.0(postcss@8.5.6): + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - - colord@2.9.3: {} - - colorette@2.0.20: {} + postcss: 8.5.6 + dev: false - combine-promises@1.2.0: {} - - comma-separated-tokens@2.0.3: {} + /cssnano@5.1.15(postcss@8.5.6): + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.5.6) + lilconfig: 2.1.0 + postcss: 8.5.6 + yaml: 1.10.2 + dev: false - commander@10.0.1: {} + /csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: false - commander@2.20.3: {} + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - commander@4.1.1: {} + /cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.2): + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + dependencies: + cose-base: 1.0.3 + cytoscape: 3.33.2 + dev: false - commander@5.1.0: {} + /cytoscape@3.33.2: + resolution: {integrity: sha512-sj4HXd3DokGhzZAdjDejGvTPLqlt84vNFN8m7bGsOzDY5DyVcxIb2ejIXat2Iy7HxWhdT/N1oKyheJ5YdpsGuw==} + engines: {node: '>=0.10'} + dev: false - commander@7.2.0: {} + /d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + dependencies: + internmap: 1.0.1 + dev: false - commander@8.3.0: {} + /d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + dependencies: + internmap: 2.0.3 + dev: false - common-path-prefix@3.0.0: {} + /d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + dev: false - compressible@2.0.18: + /d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} dependencies: - mime-db: 1.54.0 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + dev: false - compression@1.8.1: + /d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} dependencies: - bytes: 3.1.2 - compressible: 2.0.18 - debug: 2.6.9 - negotiator: 0.6.4 - on-headers: 1.1.0 - safe-buffer: 5.2.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color + d3-path: 3.1.0 + dev: false - concat-map@0.0.1: {} + /d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + dev: false - concat-stream@1.6.2: + /d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 + d3-array: 3.2.4 + dev: false - config-chain@1.1.13: + /d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} dependencies: - ini: 1.3.8 - proto-list: 1.2.4 + delaunator: 5.1.0 + dev: false - configstore@6.0.0: - dependencies: - dot-prop: 6.0.1 - graceful-fs: 4.2.11 - unique-string: 3.0.0 - write-file-atomic: 3.0.3 - xdg-basedir: 5.1.0 + /d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + dev: false - connect-history-api-fallback@2.0.0: {} + /d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + dev: false - consola@2.15.3: {} + /d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + dev: false - content-disposition@0.5.2: {} + /d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + dev: false - content-disposition@0.5.4: + /d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} dependencies: - safe-buffer: 5.2.1 + d3-dsv: 3.0.1 + dev: false - content-type@1.0.5: {} - - convert-source-map@2.0.0: {} + /d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + dev: false - cookie-signature@1.0.7: {} + /d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} + engines: {node: '>=12'} + dev: false - cookie@0.7.2: {} + /d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + dev: false - copy-text-to-clipboard@3.2.2: {} + /d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + dev: false - copy-webpack-plugin@11.0.0(webpack@5.105.4): + /d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} dependencies: - fast-glob: 3.3.3 - glob-parent: 6.0.2 - globby: 13.2.2 - normalize-path: 3.0.0 - schema-utils: 4.3.3 - serialize-javascript: 6.0.2 - webpack: 5.105.4 + d3-color: 3.1.0 + dev: false - core-js-compat@3.49.0: - dependencies: - browserslist: 4.28.1 + /d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + dev: false - core-js-pure@3.49.0: {} + /d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + dev: false - core-js@3.49.0: {} + /d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + dev: false - core-util-is@1.0.3: {} + /d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + dev: false - cosmiconfig@6.0.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.1 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.3 + /d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + dev: false - cosmiconfig@7.1.0: + /d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.1 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.3 + d3-array: 2.12.1 + d3-shape: 1.3.7 + dev: false - cosmiconfig@8.3.6(typescript@5.2.2): + /d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} dependencies: - import-fresh: 3.3.1 - js-yaml: 4.1.1 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 5.2.2 + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + dev: false - cross-spawn@5.1.0: + /d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} dependencies: - lru-cache: 4.1.5 - shebang-command: 1.2.0 - which: 1.2.14 + d3-array: 3.2.4 + d3-format: 3.1.2 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + dev: false - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 + /d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + dev: false - crypto-random-string@4.0.0: + /d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} dependencies: - type-fest: 1.4.0 + d3-path: 1.0.9 + dev: false - css-declaration-sorter@6.4.1(postcss@8.5.8): + /d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} dependencies: - postcss: 8.5.8 + d3-path: 3.1.0 + dev: false - css-loader@6.11.0(webpack@5.105.4): + /d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} dependencies: - icss-utils: 5.1.0(postcss@8.5.8) - postcss: 8.5.8 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.8) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.8) - postcss-modules-scope: 3.2.1(postcss@8.5.8) - postcss-modules-values: 4.0.0(postcss@8.5.8) - postcss-value-parser: 4.2.0 - semver: 7.7.4 - optionalDependencies: - webpack: 5.105.4 + d3-time: 3.1.0 + dev: false - css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.3)(webpack@5.105.4): + /d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} dependencies: - cssnano: 5.1.15(postcss@8.5.8) - jest-worker: 29.7.0 - postcss: 8.5.8 - schema-utils: 4.3.3 - serialize-javascript: 6.0.2 - source-map: 0.6.1 - webpack: 5.105.4 - optionalDependencies: - clean-css: 5.3.3 + d3-array: 3.2.4 + dev: false - css-select@4.3.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.2.2 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 + /d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + dev: false - css-select@5.2.2: + /d3-transition@3.0.1(d3-selection@3.0.0): + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 dependencies: - boolbase: 1.0.0 - css-what: 6.2.2 - domhandler: 5.0.3 - domutils: 3.2.2 - nth-check: 2.1.1 + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + dev: false - css-tree@1.1.3: + /d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + dev: false - css-what@6.2.2: {} - - cssesc@3.0.0: {} - - cssnano-preset-advanced@5.3.10(postcss@8.5.8): - dependencies: - autoprefixer: 10.4.27(postcss@8.5.8) - cssnano-preset-default: 5.2.14(postcss@8.5.8) - postcss: 8.5.8 - postcss-discard-unused: 5.1.0(postcss@8.5.8) - postcss-merge-idents: 5.1.1(postcss@8.5.8) - postcss-reduce-idents: 5.2.0(postcss@8.5.8) - postcss-zindex: 5.1.0(postcss@8.5.8) - - cssnano-preset-default@5.2.14(postcss@8.5.8): - dependencies: - css-declaration-sorter: 6.4.1(postcss@8.5.8) - cssnano-utils: 3.1.0(postcss@8.5.8) - postcss: 8.5.8 - postcss-calc: 8.2.4(postcss@8.5.8) - postcss-colormin: 5.3.1(postcss@8.5.8) - postcss-convert-values: 5.1.3(postcss@8.5.8) - postcss-discard-comments: 5.1.2(postcss@8.5.8) - postcss-discard-duplicates: 5.1.0(postcss@8.5.8) - postcss-discard-empty: 5.1.1(postcss@8.5.8) - postcss-discard-overridden: 5.1.0(postcss@8.5.8) - postcss-merge-longhand: 5.1.7(postcss@8.5.8) - postcss-merge-rules: 5.1.4(postcss@8.5.8) - postcss-minify-font-values: 5.1.0(postcss@8.5.8) - postcss-minify-gradients: 5.1.1(postcss@8.5.8) - postcss-minify-params: 5.1.4(postcss@8.5.8) - postcss-minify-selectors: 5.2.1(postcss@8.5.8) - postcss-normalize-charset: 5.1.0(postcss@8.5.8) - postcss-normalize-display-values: 5.1.0(postcss@8.5.8) - postcss-normalize-positions: 5.1.1(postcss@8.5.8) - postcss-normalize-repeat-style: 5.1.1(postcss@8.5.8) - postcss-normalize-string: 5.1.0(postcss@8.5.8) - postcss-normalize-timing-functions: 5.1.0(postcss@8.5.8) - postcss-normalize-unicode: 5.1.1(postcss@8.5.8) - postcss-normalize-url: 5.1.0(postcss@8.5.8) - postcss-normalize-whitespace: 5.1.1(postcss@8.5.8) - postcss-ordered-values: 5.1.3(postcss@8.5.8) - postcss-reduce-initial: 5.1.2(postcss@8.5.8) - postcss-reduce-transforms: 5.1.0(postcss@8.5.8) - postcss-svgo: 5.1.0(postcss@8.5.8) - postcss-unique-selectors: 5.1.1(postcss@8.5.8) - - cssnano-utils@3.1.0(postcss@8.5.8): - dependencies: - postcss: 8.5.8 - - cssnano@5.1.15(postcss@8.5.8): - dependencies: - cssnano-preset-default: 5.2.14(postcss@8.5.8) - lilconfig: 2.1.0 - postcss: 8.5.8 - yaml: 1.10.3 - - csso@4.2.0: + /d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} dependencies: - css-tree: 1.1.3 - - csstype@3.2.3: {} - - debounce@1.2.1: {} + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.2 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + dev: false + + /dagre-d3-es@7.0.13: + resolution: {integrity: sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==} + dependencies: + d3: 7.9.0 + lodash-es: 4.18.1 + dev: false + + /dayjs@1.11.20: + resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} + dev: false + + /debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + dev: false - debug@2.6.9: + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 + dev: false - debug@4.4.3: + /debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 - decode-named-character-reference@1.3.0: + /decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 - decompress-response@6.0.0: + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} dependencies: mimic-response: 3.1.0 + dev: false - deep-extend@0.6.0: {} + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: false - deepmerge@4.3.1: {} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: false - default-gateway@6.0.3: + /default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} dependencies: execa: 5.1.1 + dev: false - defer-to-connect@2.0.1: {} + /defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + dev: false - define-data-property@1.1.4: + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} dependencies: - es-define-property: 1.0.1 + es-define-property: 1.0.0 es-errors: 1.3.0 - gopd: 1.2.0 + gopd: 1.0.1 + dev: false - define-lazy-prop@2.0.0: {} + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: false - define-properties@1.2.1: + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 + dev: false - del@6.1.1: + /del@6.1.1: + resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} + engines: {node: '>=10'} dependencies: globby: 11.1.0 graceful-fs: 4.2.11 @@ -8152,271 +5318,452 @@ snapshots: p-map: 4.0.0 rimraf: 3.0.2 slash: 3.0.0 + dev: false + + /delaunator@5.1.0: + resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} + dependencies: + robust-predicates: 3.0.3 + dev: false - depd@1.1.2: {} + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: false - depd@2.0.0: {} + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: false - dequal@2.0.3: {} + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} - destroy@1.2.0: {} + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: false - detect-libc@2.1.2: + /detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + requiresBuild: true + dev: false optional: true - detect-node@2.1.0: {} + /detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: false - detect-port-alt@1.1.6: + /detect-port-alt@1.1.6: + resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} + engines: {node: '>= 4.2.1'} + hasBin: true dependencies: address: 1.2.2 debug: 2.6.9 transitivePeerDependencies: - supports-color + dev: false - detect-port@1.6.1: + /detect-port@1.6.1: + resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} + engines: {node: '>= 4.0.0'} + hasBin: true dependencies: address: 1.2.2 - debug: 4.4.3 + debug: 4.3.7 transitivePeerDependencies: - supports-color + dev: false - devlop@1.1.0: + /devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} dependencies: dequal: 2.0.3 - didyoumean@1.2.2: {} + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: false + + /diff@5.2.2: + resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==} + engines: {node: '>=0.3.1'} + dev: false - dir-glob@3.0.1: + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dependencies: path-type: 4.0.0 + dev: false - dlv@1.1.3: {} + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: false - dns-packet@5.6.1: + /dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} dependencies: '@leichtgewicht/ip-codec': 2.0.5 + dev: false - docusaurus-markdown-source-plugin@2.2.4(@docusaurus/core@3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + /docusaurus-markdown-source-plugin@2.0.1(@docusaurus/core@3.1.1)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-RiKMi+SDlrQQ25VkbOvz9M7glH9lcpAsz0WzepilnC2MgXA6uLNpl7PezrlY6nvW7MnhB4Aakwwonz+0WVBQAQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@docusaurus/core': ^3.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - fs-extra: 11.3.4 + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + dev: false - docusaurus-plugin-sass@0.2.6(@docusaurus/core@3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2))(sass@1.98.0)(webpack@5.105.4): + /docusaurus-plugin-sass@0.2.5(@docusaurus/core@3.1.1)(sass@1.80.6)(webpack@5.96.1): + resolution: {integrity: sha512-Z+D0fLFUKcFpM+bqSUmqKIU+vO+YF1xoEQh5hoFreg2eMf722+siwXDD+sqtwU8E4MvVpuvsQfaHwODNlxJAEg==} + peerDependencies: + '@docusaurus/core': ^2.0.0-beta || ^3.0.0-alpha + sass: ^1.30.0 dependencies: - '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - sass: 1.98.0 - sass-loader: 16.0.7(sass@1.98.0)(webpack@5.105.4) + '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) + sass: 1.80.6 + sass-loader: 10.5.2(sass@1.80.6)(webpack@5.96.1) transitivePeerDependencies: - - '@rspack/core' + - fibers - node-sass - - sass-embedded - webpack + dev: false - dom-converter@0.2.0: + /dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} dependencies: utila: 0.4.0 + dev: false - dom-serializer@1.4.1: + /dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} dependencies: domelementtype: 2.3.0 domhandler: 4.3.1 entities: 2.2.0 + dev: false - dom-serializer@2.0.0: + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 + dev: false - domelementtype@2.3.0: {} + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: false - domhandler@4.3.1: + /domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 + dev: false - domhandler@5.0.3: + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 + dev: false - domutils@2.8.0: + /dompurify@3.4.0: + resolution: {integrity: sha512-nolgK9JcaUXMSmW+j1yaSvaEaoXYHwWyGJlkoCTghc97KgGDDSnpoU/PlEnw63Ah+TGKFOyY+X5LnxaWbCSfXg==} + optionalDependencies: + '@types/trusted-types': 2.0.7 + dev: false + + /domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: dom-serializer: 1.4.1 domelementtype: 2.3.0 domhandler: 4.3.1 + dev: false - domutils@3.2.2: + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 + dev: false - dot-case@3.0.4: + /dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 tslib: 2.8.1 + dev: false - dot-prop@6.0.1: + /dot-prop@6.0.1: + resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} + engines: {node: '>=10'} dependencies: is-obj: 2.0.0 + dev: false - dotenv@16.6.1: {} + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + dev: false - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: false + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false - duplexer@0.1.2: {} + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: false - eastasianwidth@0.2.0: {} + /electron-to-chromium@1.5.259: + resolution: {integrity: sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ==} - ee-first@1.1.1: {} + /electron-to-chromium@1.5.50: + resolution: {integrity: sha512-eMVObiUQ2LdgeO1F/ySTXsvqvxb6ZH2zPGaMYsWzRDdOddUa77tdmI0ltg+L16UpbWdhPmuF3wIQYyQq65WfZw==} + dev: false - electron-to-chromium@1.5.328: {} + /elkjs@0.9.3: + resolution: {integrity: sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==} + dev: false - emoji-regex@8.0.0: {} + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: false - emoji-regex@9.2.2: {} + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false - emojilib@2.4.0: {} + /emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + dev: false - emojis-list@3.0.0: {} + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: false - emoticon@4.1.0: {} + /emoticon@4.1.0: + resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==} + dev: false - encodeurl@2.0.0: {} + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: false - encoding-sniffer@0.2.1: - dependencies: - iconv-lite: 0.6.3 - whatwg-encoding: 3.1.1 + /encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + dev: false - enhanced-resolve@5.20.1: + /enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 - tapable: 2.3.2 - - entities@2.2.0: {} + tapable: 2.2.1 - entities@4.5.0: {} - - entities@6.0.1: {} + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: false - entities@7.0.1: {} + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false - error-ex@1.3.4: + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 + dev: false - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: false - es-module-lexer@2.0.0: {} + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: false - es-object-atoms@1.1.1: - dependencies: - es-errors: 1.3.0 + /es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - esast-util-from-estree@2.0.0: + /esast-util-from-estree@2.0.0: + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} dependencies: '@types/estree-jsx': 1.0.5 devlop: 1.1.0 estree-util-visit: 2.0.0 unist-util-position-from-estree: 2.0.0 - esast-util-from-js@2.0.1: + /esast-util-from-js@2.0.1: + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} dependencies: '@types/estree-jsx': 1.0.5 - acorn: 8.16.0 + acorn: 8.14.0 esast-util-from-estree: 2.0.0 - vfile-message: 4.0.3 + vfile-message: 4.0.2 - escalade@3.2.0: {} + /escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} - escape-goat@4.0.0: {} + /escape-goat@4.0.0: + resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} + engines: {node: '>=12'} + dev: false - escape-html@1.0.3: {} + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: false - escape-string-regexp@4.0.0: {} + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: false - escape-string-regexp@5.0.0: {} + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: false - eslint-scope@5.1.1: + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - esprima@4.0.1: {} + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: false - esrecurse@4.3.0: + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} - estraverse@5.3.0: {} + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} - estree-util-attach-comments@3.0.0: + /estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 - estree-util-build-jsx@3.0.1: + /estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} dependencies: '@types/estree-jsx': 1.0.5 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 estree-walker: 3.0.3 - estree-util-is-identifier-name@3.0.0: {} + /estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - estree-util-scope@1.0.0: + /estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 devlop: 1.1.0 - estree-util-to-js@2.0.0: + /estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} dependencies: '@types/estree-jsx': 1.0.5 astring: 1.9.0 - source-map: 0.7.6 + source-map: 0.7.4 - estree-util-value-to-estree@3.5.0: + /estree-util-value-to-estree@3.2.1: + resolution: {integrity: sha512-Vt2UOjyPbNQQgT5eJh+K5aATti0OjCIAGc9SgMdOFYbohuifsWclR74l0iZTJwePMgWYdX1hlVS+dedH9XV8kw==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 + dev: false - estree-util-visit@2.0.0: + /estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} dependencies: '@types/estree-jsx': 1.0.5 '@types/unist': 3.0.3 - estree-walker@3.0.3: + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 - esutils@2.0.3: {} + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: false - eta@2.2.0: {} + /eta@2.2.0: + resolution: {integrity: sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==} + engines: {node: '>=6.0.0'} + dev: false - etag@1.8.1: {} + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: false - eval@0.1.8: + /eval@0.1.8: + resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} + engines: {node: '>= 0.8'} dependencies: - '@types/node': 25.5.0 + '@types/node': 22.8.7 require-like: 0.1.2 + dev: false - eventemitter3@4.0.7: {} + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: false - eventemitter3@5.0.1: {} + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: false - events@3.3.0: {} + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} - execa@5.1.1: + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} dependencies: - cross-spawn: 7.0.6 + cross-spawn: 7.0.3 get-stream: 6.0.1 human-signals: 2.1.0 is-stream: 2.0.1 @@ -8425,133 +5772,210 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 + dev: false - express@4.22.1: + /express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.4 + body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.7.2 - cookie-signature: 1.0.7 + 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.2 + finalhandler: 1.3.1 fresh: 0.5.2 - http-errors: 2.0.1 + 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.13 + path-to-regexp: 0.1.12 proxy-addr: 2.0.7 - qs: 6.14.2 + qs: 6.13.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.19.2 - serve-static: 1.16.3 + send: 0.19.0 + serve-static: 1.16.2 setprototypeof: 1.2.0 - statuses: 2.0.2 + statuses: 2.0.1 type-is: 1.6.18 utils-merge: 1.0.1 vary: 1.1.2 transitivePeerDependencies: - supports-color + dev: false - extend-shallow@2.0.1: + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} dependencies: is-extendable: 0.1.1 + dev: false - extend@3.0.2: {} + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - fast-deep-equal@3.1.3: {} + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-glob@3.3.3: + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.8 + dev: false - fast-json-stable-stringify@2.1.0: {} + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-uri@3.1.0: {} + /fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + dev: false - fastq@1.20.1: + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: - reusify: 1.1.0 + reusify: 1.0.4 + dev: false - fault@2.0.1: + /fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} dependencies: format: 0.2.2 + dev: false - faye-websocket@0.11.4: + /faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} dependencies: websocket-driver: 0.7.4 + dev: false - fdir@6.5.0(picomatch@4.0.4): - optionalDependencies: - picomatch: 4.0.4 - - feed@4.2.2: + /feed@4.2.2: + resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} + engines: {node: '>=0.4.0'} dependencies: xml-js: 1.6.11 + dev: false - file-loader@6.2.0(webpack@5.105.4): + /file-loader@6.2.0(webpack@5.96.1): + resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: 5.96.1 dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.105.4 + webpack: 5.96.1 + dev: false - filesize@8.0.7: {} + /filesize@8.0.7: + resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} + engines: {node: '>= 0.4.0'} + dev: false - fill-range@7.1.1: + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 + dev: false - finalhandler@1.3.2: + /finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} 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 + statuses: 2.0.1 unpipe: 1.0.0 transitivePeerDependencies: - supports-color + dev: false - find-cache-dir@4.0.0: + /find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} dependencies: common-path-prefix: 3.0.0 pkg-dir: 7.0.0 + dev: false - find-up@3.0.0: + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} dependencies: locate-path: 3.0.0 + dev: false - find-up@5.0.0: + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + dev: false - find-up@6.3.0: + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: locate-path: 7.2.0 path-exists: 5.0.0 + dev: false + + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true - flat@5.0.2: {} + /follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false - follow-redirects@1.15.11: {} + /foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: false - fork-ts-checker-webpack-plugin@6.5.3(typescript@5.2.2)(webpack@5.105.4): + /fork-ts-checker-webpack-plugin@6.5.3(typescript@5.4.5)(webpack@5.96.1): + resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: 5.96.1 + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.26.2 '@types/json-schema': 7.0.15 chalk: 4.1.2 chokidar: 3.6.0 @@ -8560,124 +5984,211 @@ snapshots: fs-extra: 9.1.0 glob: 7.2.3 memfs: 3.5.3 - minimatch: 3.1.5 + minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.7.4 + semver: 7.6.3 tapable: 1.1.3 - typescript: 5.2.2 - webpack: 5.105.4 + typescript: 5.4.5 + webpack: 5.96.1 + dev: false - form-data-encoder@2.1.4: {} + /form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + dev: false + + /format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + dev: false - format@0.2.2: {} + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: false - forwarded@0.2.0: {} + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: false - fraction.js@5.3.4: {} + /fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + dev: false - fresh@0.5.2: {} + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: false - fs-extra@11.3.4: + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} dependencies: graceful-fs: 4.2.11 - jsonfile: 6.2.0 + jsonfile: 6.1.0 universalify: 2.0.1 + dev: false - fs-extra@9.1.0: + /fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.11 - jsonfile: 6.2.0 + jsonfile: 6.1.0 universalify: 2.0.1 + dev: false - fs-monkey@1.1.0: {} + /fs-monkey@1.1.0: + resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} + dev: false - fs.realpath@1.0.0: {} + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: false - fsevents@2.3.3: + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: false optional: true - function-bind@1.1.2: {} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: false - gensync@1.0.0-beta.2: {} + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: false - get-intrinsic@1.3.0: + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} 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 + has-proto: 1.0.3 + has-symbols: 1.0.3 hasown: 2.0.2 - math-intrinsics: 1.1.0 + dev: false - get-own-enumerable-property-symbols@3.0.2: {} - - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 + /get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + dev: false - get-stream@6.0.1: {} + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: false - github-slugger@1.5.0: {} + /github-slugger@1.5.0: + resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + dev: false - glob-parent@5.1.2: + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 + dev: false - glob-parent@6.0.2: + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 + dev: false - glob-to-regexp@0.4.1: {} + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + dev: false - glob@7.2.3: + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.5 + minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: false - global-dirs@3.0.1: + /global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} dependencies: ini: 2.0.0 + dev: false - global-modules@2.0.0: + /global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} dependencies: global-prefix: 3.0.0 + dev: false - global-prefix@3.0.0: + /global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} dependencies: ini: 1.3.8 kind-of: 6.0.3 which: 1.3.1 + dev: false + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: false - globby@11.1.0: + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.3 + fast-glob: 3.3.2 ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 + dev: false - globby@13.2.2: + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.3.3 + fast-glob: 3.3.2 ignore: 5.3.2 merge2: 1.4.1 slash: 4.0.0 + dev: false - gopd@1.2.0: {} + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + dev: false - got@12.6.1: + /got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} dependencies: '@sindresorhus/is': 5.6.0 '@szmarczak/http-timer': 5.0.1 @@ -8690,98 +6201,143 @@ snapshots: lowercase-keys: 3.0.0 p-cancelable: 3.0.0 responselike: 3.0.0 + dev: false - graceful-fs@4.2.10: {} + /graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: false - graceful-fs@4.2.11: {} + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - gray-matter@4.0.3: + /gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} dependencies: - js-yaml: 3.14.2 + js-yaml: 3.14.1 kind-of: 6.0.3 section-matter: 1.0.0 strip-bom-string: 1.0.0 + dev: false - gzip-size@6.0.0: + /gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} dependencies: duplexer: 0.1.2 + dev: false - handle-thing@2.0.1: {} + /handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + dev: false - has-flag@4.0.0: {} + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} - has-property-descriptors@1.0.2: + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: - es-define-property: 1.0.1 + es-define-property: 1.0.0 + dev: false + + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: false - has-symbols@1.1.0: {} + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: false - has-yarn@3.0.0: {} + /has-yarn@3.0.0: + resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false - hasown@2.0.2: + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 + dev: false - hast-util-from-dom@5.0.1: + /hast-util-from-dom@5.0.0: + resolution: {integrity: sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==} dependencies: '@types/hast': 3.0.4 - hastscript: 9.0.1 + hastscript: 8.0.0 web-namespaces: 2.0.1 + dev: false - hast-util-from-html-isomorphic@2.0.0: + /hast-util-from-html-isomorphic@2.0.0: + resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==} dependencies: '@types/hast': 3.0.4 - hast-util-from-dom: 5.0.1 + hast-util-from-dom: 5.0.0 hast-util-from-html: 2.0.3 unist-util-remove-position: 5.0.0 + dev: false - hast-util-from-html@2.0.3: + /hast-util-from-html@2.0.3: + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} dependencies: '@types/hast': 3.0.4 devlop: 1.1.0 - hast-util-from-parse5: 8.0.3 - parse5: 7.3.0 + hast-util-from-parse5: 8.0.1 + parse5: 7.2.1 vfile: 6.0.3 - vfile-message: 4.0.3 + vfile-message: 4.0.2 + dev: false - hast-util-from-parse5@8.0.3: + /hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 devlop: 1.1.0 - hastscript: 9.0.1 - property-information: 7.1.0 + hastscript: 8.0.0 + property-information: 6.5.0 vfile: 6.0.3 vfile-location: 5.0.3 web-namespaces: 2.0.1 + dev: false - hast-util-is-element@3.0.0: + /hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} dependencies: '@types/hast': 3.0.4 + dev: false - hast-util-parse-selector@4.0.0: + /hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} dependencies: '@types/hast': 3.0.4 + dev: false - hast-util-raw@9.1.0: + /hast-util-raw@9.0.4: + resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 - '@ungap/structured-clone': 1.3.0 - hast-util-from-parse5: 8.0.3 - hast-util-to-parse5: 8.0.1 + '@ungap/structured-clone': 1.2.0 + hast-util-from-parse5: 8.0.1 + hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.1 - parse5: 7.3.0 + mdast-util-to-hast: 13.2.0 + parse5: 7.2.1 unist-util-position: 5.0.0 - unist-util-visit: 5.1.0 + unist-util-visit: 5.0.0 vfile: 6.0.3 web-namespaces: 2.0.1 zwitch: 2.0.4 + dev: false - hast-util-to-estree@3.1.3: + /hast-util-to-estree@3.1.0: + resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -8790,19 +6346,20 @@ snapshots: estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 - property-information: 7.1.0 + property-information: 6.5.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.21 + style-to-object: 0.4.4 unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: - supports-color - hast-util-to-jsx-runtime@2.3.6: + /hast-util-to-jsx-runtime@2.3.2: + resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 '@types/hast': 3.0.4 '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 @@ -8810,72 +6367,95 @@ snapshots: estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 - property-information: 7.1.0 + property-information: 6.5.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.21 + style-to-object: 1.0.8 unist-util-position: 5.0.0 - vfile-message: 4.0.3 + vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - hast-util-to-parse5@8.0.1: + /hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} dependencies: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 - property-information: 7.1.0 + property-information: 6.5.0 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 + dev: false - hast-util-to-text@4.0.2: + /hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 + dev: false - hast-util-whitespace@3.0.0: + /hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} dependencies: '@types/hast': 3.0.4 - hastscript@9.0.1: + /hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} dependencies: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 - property-information: 7.1.0 + property-information: 6.5.0 space-separated-tokens: 2.0.2 + dev: false - he@1.2.0: {} + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: false - history@4.10.1: + /history@4.10.1: + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} dependencies: - '@babel/runtime': 7.29.2 + '@babel/runtime': 7.26.0 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.3 tiny-warning: 1.0.3 value-equal: 1.0.1 + dev: false - hoist-non-react-statics@3.3.2: + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: react-is: 16.13.1 + dev: false - hpack.js@2.1.6: + /hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} dependencies: inherits: 2.0.4 obuf: 1.1.2 readable-stream: 2.3.8 wbuf: 1.7.3 + dev: false - html-entities@2.6.0: {} + /html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + dev: false - html-escaper@2.0.2: {} + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: false - html-minifier-terser@6.1.0: + /html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true dependencies: camel-case: 4.1.2 clean-css: 5.3.3 @@ -8883,9 +6463,13 @@ snapshots: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.46.1 + terser: 5.36.0 + dev: false - html-minifier-terser@7.2.0: + /html-minifier-terser@7.2.0: + resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==} + engines: {node: ^14.13.1 || >=16.0.0} + hasBin: true dependencies: camel-case: 4.1.2 clean-css: 5.3.3 @@ -8893,258 +6477,486 @@ snapshots: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.46.1 + terser: 5.36.0 + dev: false - html-tags@3.3.1: {} + /html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + dev: false - html-void-elements@3.0.0: {} + /html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + dev: false - html-webpack-plugin@5.6.6(webpack@5.105.4): + /html-webpack-plugin@5.6.3(webpack@5.96.1): + resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} + engines: {node: '>=10.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: 5.96.1 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 - lodash: 4.17.23 + lodash: 4.17.21 pretty-error: 4.0.0 - tapable: 2.3.2 - optionalDependencies: - webpack: 5.105.4 + tapable: 2.2.1 + webpack: 5.96.1 + dev: false - htmlparser2@10.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 7.0.1 - - htmlparser2@6.1.0: + /htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} dependencies: domelementtype: 2.3.0 domhandler: 4.3.1 domutils: 2.8.0 entities: 2.2.0 + dev: false + + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: false - http-cache-semantics@4.2.0: {} + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: false - http-deceiver@1.2.7: {} + /http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + dev: false - http-errors@1.8.1: + /http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} dependencies: depd: 1.1.2 - inherits: 2.0.4 - setprototypeof: 1.2.0 + inherits: 2.0.3 + setprototypeof: 1.1.0 statuses: 1.5.0 - toidentifier: 1.0.1 + dev: false - http-errors@2.0.1: + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 - statuses: 2.0.2 + statuses: 2.0.1 toidentifier: 1.0.1 + dev: false - http-parser-js@0.5.10: {} + /http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + dev: false - http-proxy-middleware@2.0.9(@types/express@4.17.25): + /http-proxy-middleware@2.0.9(@types/express@4.17.21): + resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true dependencies: - '@types/http-proxy': 1.17.17 + '@types/express': 4.17.21 + '@types/http-proxy': 1.17.15 http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 micromatch: 4.0.8 - optionalDependencies: - '@types/express': 4.17.25 transitivePeerDependencies: - debug + dev: false - http-proxy@1.18.1: + /http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.11 + follow-redirects: 1.15.9 requires-port: 1.0.0 transitivePeerDependencies: - debug + dev: false - http2-wrapper@2.2.1: + /http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 + dev: false - human-signals@2.1.0: {} + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: false - iconv-lite@0.4.24: + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: false - iconv-lite@0.6.3: + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: false - icss-utils@5.1.0(postcss@8.5.8): + /icss-utils@5.1.0(postcss@8.5.6): + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 + dev: false - ignore@5.3.2: {} + /ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + dev: false - image-size@1.2.1: + /image-size@1.2.1: + resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} + engines: {node: '>=16.x'} + hasBin: true dependencies: queue: 6.0.2 + dev: false - immer@9.0.21: {} + /immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + dev: false - immutable@5.1.5: {} + /immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + dev: false - import-fresh@3.3.1: + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: false - import-lazy@4.0.0: {} + /import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: false - imurmurhash@0.1.4: {} + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: false - indent-string@4.0.0: {} + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: false - infima@0.2.0-alpha.43: {} + /infima@0.2.0-alpha.43: + resolution: {integrity: sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==} + engines: {node: '>=12'} + dev: false - inflight@1.0.6: + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. dependencies: once: 1.4.0 wrappy: 1.0.2 + dev: false + + /inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: false - inherits@2.0.4: {} + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: false + + /ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + dev: false - ini@1.3.8: {} + /inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - ini@2.0.0: {} + /inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} - inline-style-parser@0.2.7: {} + /internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + dev: false + + /internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + dev: false - interpret@1.4.0: {} + /interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + dev: false - invariant@2.2.4: + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 - ipaddr.js@1.9.1: {} + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: false - ipaddr.js@2.3.0: {} + /ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + dev: false - is-alphabetical@2.0.1: {} + /is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - is-alphanumerical@2.0.1: + /is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} dependencies: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - is-arrayish@0.2.1: {} + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: false - is-arrayish@0.3.4: {} + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false - is-binary-path@2.1.0: + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: binary-extensions: 2.3.0 + dev: false - is-ci@3.0.1: + /is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true dependencies: ci-info: 3.9.0 + dev: false - is-core-module@2.16.1: + /is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} dependencies: hasown: 2.0.2 + dev: false - is-decimal@2.0.1: {} + /is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - is-docker@2.2.1: {} + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: false - is-extendable@0.1.1: {} + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: false - is-extglob@2.1.1: {} + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: false - is-fullwidth-code-point@3.0.0: {} + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: false - is-glob@4.0.3: + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 + dev: false - is-hexadecimal@2.0.1: {} + /is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - is-installed-globally@0.4.0: + /is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} dependencies: global-dirs: 3.0.1 is-path-inside: 3.0.3 + dev: false - is-npm@6.1.0: {} + /is-npm@6.0.0: + resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false - is-number@7.0.0: {} + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: false - is-obj@1.0.1: {} + /is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + dev: false - is-obj@2.0.0: {} + /is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + dev: false - is-path-cwd@2.2.0: {} + /is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + dev: false - is-path-inside@3.0.3: {} + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: false - is-plain-obj@3.0.0: {} + /is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + dev: false - is-plain-obj@4.1.0: {} + /is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} - is-plain-object@2.0.4: + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - is-regexp@1.0.0: {} + /is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + dev: false - is-root@2.1.0: {} + /is-root@2.1.0: + resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} + engines: {node: '>=6'} + dev: false - is-stream@2.0.1: {} + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: false - is-typedarray@1.0.0: {} + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: false - is-wsl@2.2.0: + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} dependencies: is-docker: 2.2.1 + dev: false - is-yarn-global@0.4.1: {} + /is-yarn-global@0.4.1: + resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} + engines: {node: '>=12'} + dev: false - isarray@0.0.1: {} + /isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + dev: false - isarray@1.0.0: {} + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - isexe@2.0.0: {} + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isobject@3.0.1: {} + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} - isows@1.0.7(ws@8.18.3): + /isows@1.0.7(ws@8.18.3): + resolution: {integrity: sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==} + peerDependencies: + ws: '*' dependencies: ws: 8.18.3 + dev: false + + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: false - jest-util@29.7.0: + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 25.5.0 + '@types/node': 22.8.7 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 - picomatch: 2.3.2 + picomatch: 2.3.1 + dev: false - jest-worker@27.5.1: + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 25.5.0 + '@types/node': 22.8.7 merge-stream: 2.0.0 supports-color: 8.1.1 - jest-worker@29.7.0: + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 25.5.0 + '@types/node': 22.8.7 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 + dev: false - jiti@1.21.7: {} + /jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + dev: false - joi@17.13.3: + /joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -9152,270 +6964,442 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - js-tokens@4.0.0: {} + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.2: + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 + dev: false - js-yaml@4.1.1: + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true dependencies: argparse: 2.0.1 + dev: false - jsesc@3.1.0: {} + /jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + dev: false - json-buffer@3.0.1: {} + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: false - json-parse-even-better-errors@2.3.1: {} + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-schema-traverse@0.4.1: {} + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - json-schema-traverse@1.0.0: {} + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: false - json5@2.2.3: {} + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: false - jsonfile@6.2.0: + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 + dev: false - katex@0.16.44: + /katex@0.16.11: + resolution: {integrity: sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==} + hasBin: true dependencies: commander: 8.3.0 + dev: false - keyv@4.5.4: + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 + dev: false + + /khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + dev: false + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: false - kind-of@6.0.3: {} + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: false - kleur@3.0.3: {} + /klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + dev: false - latest-version@7.0.0: + /latest-version@7.0.0: + resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} + engines: {node: '>=14.16'} dependencies: package-json: 8.1.1 + dev: false - launch-editor@2.13.2: + /launch-editor@2.9.1: + resolution: {integrity: sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==} dependencies: picocolors: 1.1.1 - shell-quote: 1.8.3 + shell-quote: 1.8.1 + dev: false + + /layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + dev: false - leven@3.1.0: {} + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: false - lilconfig@2.1.0: {} + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: false - lilconfig@3.1.3: {} + /lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + dev: false - lines-and-columns@1.2.4: {} + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: false - loader-runner@4.3.1: {} + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} - loader-utils@2.0.4: + /loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} dependencies: big.js: 5.2.2 emojis-list: 3.0.0 json5: 2.2.3 + dev: false - loader-utils@3.3.1: {} + /loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} + dev: false - locate-path@3.0.0: + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} dependencies: p-locate: 3.0.0 path-exists: 3.0.0 + dev: false - locate-path@6.0.0: + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: p-locate: 5.0.0 + dev: false - locate-path@7.2.0: + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-locate: 6.0.0 + dev: false + + /lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + dev: false - lodash.debounce@4.0.8: {} + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: false - lodash.foreach@4.5.0: {} + /lodash.foreach@4.5.0: + resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} + dev: false - lodash.get@4.4.2: {} + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: false - lodash.kebabcase@4.1.1: {} + /lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + dev: false - lodash.mapkeys@4.6.0: {} + /lodash.mapkeys@4.6.0: + resolution: {integrity: sha512-0Al+hxpYvONWtg+ZqHpa/GaVzxuN3V7Xeo2p+bY06EaK/n+Y9R7nBePPN2o1LxmL0TWQSwP8LYZ008/hc9JzhA==} + dev: false - lodash.memoize@4.1.2: {} + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: false - lodash.omit@4.5.0: {} + /lodash.omit@4.5.0: + resolution: {integrity: sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==} + dev: false - lodash.uniq@4.5.0: {} + /lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: false - lodash@4.17.23: {} + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false - longest-streak@3.1.0: {} + /longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - loose-envify@1.4.0: + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true dependencies: js-tokens: 4.0.0 - lottie-react@2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + /lottie-react@2.4.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-pDJGj+AQlnlyHvOHFK7vLdsDcvbuqvwPZdMlJ360wrzGFurXeKPr8SiRCjLf3LrNYKANQtSsh5dz9UYQHuqx4w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - lottie-web: 5.13.0 + lottie-web: 5.12.2 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + dev: false - lottie-web@5.13.0: {} + /lottie-web@5.12.2: + resolution: {integrity: sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg==} + dev: false - lower-case@2.0.2: + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: tslib: 2.8.1 + dev: false + + /lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false - lowercase-keys@3.0.0: {} + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + dev: false - lru-cache@4.1.5: + /lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: pseudomap: 1.0.2 yallist: 2.1.2 + dev: true - lru-cache@5.1.1: + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 + dev: false - markdown-extensions@2.0.0: {} - - markdown-table@3.0.4: {} + /markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} - math-intrinsics@1.1.0: {} + /markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + dev: false - mdast-util-directive@3.1.0: + /mdast-util-directive@3.0.0: + resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 - ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 - parse-entities: 4.0.2 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.1 + parse-entities: 4.0.1 stringify-entities: 4.0.4 - unist-util-visit-parents: 6.0.2 + unist-util-visit-parents: 6.0.1 transitivePeerDependencies: - supports-color + dev: false - mdast-util-find-and-replace@3.0.2: + /mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} dependencies: '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 - unist-util-is: 6.0.1 - unist-util-visit-parents: 6.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + + /mdast-util-from-markdown@1.3.1: + resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.11 + decode-named-character-reference: 1.0.2 + mdast-util-to-string: 3.2.0 + micromark: 3.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-decode-string: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: false - mdast-util-from-markdown@2.0.3: + /mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 - decode-named-character-reference: 1.3.0 + decode-named-character-reference: 1.0.2 devlop: 1.1.0 mdast-util-to-string: 4.0.0 - micromark: 4.0.2 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-decode-string: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color - mdast-util-frontmatter@2.0.1: + /mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 escape-string-regexp: 5.0.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.1 micromark-extension-frontmatter: 2.0.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-autolink-literal@2.0.1: + /mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} dependencies: '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.2 - micromark-util-character: 2.1.1 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.1.0 + dev: false - mdast-util-gfm-footnote@2.1.0: + /mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 - micromark-util-normalize-identifier: 2.0.1 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.1 + micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-strikethrough@2.0.0: + /mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.1 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-table@2.0.0: + /mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.1 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm-task-list-item@2.0.0: + /mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.1 transitivePeerDependencies: - supports-color + dev: false - mdast-util-gfm@3.1.0: + /mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} dependencies: - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.2 mdast-util-gfm-autolink-literal: 2.0.1 - mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-footnote: 2.0.0 mdast-util-gfm-strikethrough: 2.0.0 mdast-util-gfm-table: 2.0.0 mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.2 + mdast-util-to-markdown: 2.1.1 transitivePeerDependencies: - supports-color + dev: false - mdast-util-math@3.0.0: + /mdast-util-math@3.0.0: + resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 longest-streak: 3.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.1 unist-util-remove-position: 5.0.0 transitivePeerDependencies: - supports-color + dev: false - mdast-util-mdx-expression@2.0.1: + /mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.1 transitivePeerDependencies: - supports-color - mdast-util-mdx-jsx@3.2.0: + /mdast-util-mdx-jsx@3.1.3: + resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 @@ -9423,535 +7407,968 @@ snapshots: '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 - parse-entities: 4.0.2 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.1 + parse-entities: 4.0.1 stringify-entities: 4.0.4 unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.3 + vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - mdast-util-mdx@3.0.0: + /mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} dependencies: - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.2 mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 - mdast-util-to-markdown: 2.1.2 + mdast-util-to-markdown: 2.1.1 transitivePeerDependencies: - supports-color - mdast-util-mdxjs-esm@2.0.1: + /mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.1 transitivePeerDependencies: - supports-color - mdast-util-phrasing@4.1.0: + /mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} dependencies: '@types/mdast': 4.0.4 - unist-util-is: 6.0.1 + unist-util-is: 6.0.0 - mdast-util-to-hast@13.2.1: + /mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.0 + '@ungap/structured-clone': 1.2.0 devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.1 + micromark-util-sanitize-uri: 2.0.0 trim-lines: 3.0.1 unist-util-position: 5.0.0 - unist-util-visit: 5.1.0 + unist-util-visit: 5.0.0 vfile: 6.0.3 - mdast-util-to-markdown@2.1.2: + /mdast-util-to-markdown@2.1.1: + resolution: {integrity: sha512-OrkcCoqAkEg9b1ykXBrA0ehRc8H4fGU/03cACmW2xXzau1+dIdS+qJugh1Cqex3hMumSBgSE/5pc7uqP12nLAw==} dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 longest-streak: 3.1.0 mdast-util-phrasing: 4.1.0 mdast-util-to-string: 4.0.0 - micromark-util-classify-character: 2.0.1 - micromark-util-decode-string: 2.0.1 - unist-util-visit: 5.1.0 + micromark-util-classify-character: 2.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 zwitch: 2.0.4 - mdast-util-to-string@4.0.0: + /mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + dependencies: + '@types/mdast': 3.0.15 + dev: false + + /mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} dependencies: '@types/mdast': 4.0.4 - mdn-data@2.0.14: {} + /mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: false - media-typer@0.3.0: {} + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: false - memfs@3.5.3: + /memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} dependencies: fs-monkey: 1.1.0 + dev: false - merge-descriptors@1.0.3: {} + /merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + dev: false + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge-stream@2.0.0: {} + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: false + + /mermaid@10.9.5: + resolution: {integrity: sha512-eRlKEjzak4z1rcXeCd1OAlyawhrptClQDo8OuI8n6bSVqJ9oMfd5Lrf3Q+TdJHewi/9AIOc3UmEo8Fz+kNzzuQ==} + dependencies: + '@braintree/sanitize-url': 6.0.4 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + cytoscape: 3.33.2 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.2) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.13 + dayjs: 1.11.20 + dompurify: 3.4.0 + elkjs: 0.9.3 + katex: 0.16.11 + khroma: 2.1.0 + lodash-es: 4.18.1 + mdast-util-from-markdown: 1.3.1 + non-layered-tidy-tree-layout: 2.0.2 + stylis: 4.3.6 + ts-dedent: 2.2.0 + uuid: 9.0.1 + web-worker: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false - merge2@1.4.1: {} + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: false - methods@1.1.2: {} + /micromark-core-commonmark@1.1.0: + resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-factory-destination: 1.1.0 + micromark-factory-label: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-factory-title: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-html-tag-name: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false - micromark-core-commonmark@2.0.3: + /micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} dependencies: - decode-named-character-reference: 1.3.0 + decode-named-character-reference: 1.0.2 devlop: 1.1.0 - micromark-factory-destination: 2.0.1 - micromark-factory-label: 2.0.1 - micromark-factory-space: 2.0.1 - micromark-factory-title: 2.0.1 - micromark-factory-whitespace: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-html-tag-name: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-subtokenize: 2.1.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-directive@3.0.2: + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-extension-directive@3.0.2: + resolution: {integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==} dependencies: devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-factory-whitespace: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - parse-entities: 4.0.2 - - micromark-extension-frontmatter@2.0.0: + micromark-factory-space: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + parse-entities: 4.0.1 + dev: false + + /micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} dependencies: fault: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-autolink-literal@2.1.0: + /micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} dependencies: - micromark-util-character: 2.1.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-character: 2.1.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-footnote@2.1.0: + /micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} dependencies: devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-strikethrough@2.1.0: + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} dependencies: devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-table@2.1.1: + /micromark-extension-gfm-table@2.1.0: + resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} dependencies: devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-tagfilter@2.0.0: + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} dependencies: - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm-task-list-item@2.1.0: + /micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} dependencies: devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - micromark-extension-gfm@3.0.0: + /micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} dependencies: micromark-extension-gfm-autolink-literal: 2.1.0 micromark-extension-gfm-footnote: 2.1.0 micromark-extension-gfm-strikethrough: 2.1.0 - micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-table: 2.1.0 micromark-extension-gfm-tagfilter: 2.0.0 micromark-extension-gfm-task-list-item: 2.1.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - micromark-extension-math@3.1.0: + /micromark-extension-math@3.1.0: + resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==} dependencies: - '@types/katex': 0.16.8 + '@types/katex': 0.16.7 devlop: 1.1.0 - katex: 0.16.44 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + katex: 0.16.11 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false - micromark-extension-mdx-expression@3.0.1: + /micromark-extension-mdx-expression@3.0.0: + resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-mdx-jsx@3.0.2: - dependencies: - '@types/estree': 1.0.8 + micromark-factory-mdx-expression: 2.0.2 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-extension-mdx-jsx@3.0.1: + resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.6 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - vfile-message: 4.0.3 - - micromark-extension-mdx-md@2.0.0: + micromark-factory-mdx-expression: 2.0.2 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + + /micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} dependencies: - micromark-util-types: 2.0.2 + micromark-util-types: 2.0.0 - micromark-extension-mdxjs-esm@3.0.0: + /micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-core-commonmark: 2.0.1 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.3 + vfile-message: 4.0.2 - micromark-extension-mdxjs@3.0.0: + /micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) - micromark-extension-mdx-expression: 3.0.1 - micromark-extension-mdx-jsx: 3.0.2 + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + micromark-extension-mdx-expression: 3.0.0 + micromark-extension-mdx-jsx: 3.0.1 micromark-extension-mdx-md: 2.0.0 micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-factory-destination@1.1.0: + resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false - micromark-factory-destination@2.0.1: + /micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-factory-label@1.1.0: + resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false - micromark-factory-label@2.0.1: + /micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} dependencies: devlop: 1.1.0 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 - micromark-factory-mdx-expression@2.0.3: + /micromark-factory-mdx-expression@2.0.2: + resolution: {integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.3 + vfile-message: 4.0.2 + + /micromark-factory-space@1.1.0: + resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} + dependencies: + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + + /micromark-factory-title@1.1.0: + resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 - micromark-factory-space@1.1.0: + /micromark-factory-whitespace@1.1.0: + resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} dependencies: + micromark-factory-space: 1.1.0 micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + + /micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-util-character@1.2.0: + resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} + dependencies: + micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + dev: false - micromark-factory-space@2.0.1: + /micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} dependencies: - micromark-util-character: 2.1.1 - micromark-util-types: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 - micromark-factory-title@2.0.1: + /micromark-util-chunked@1.1.0: + resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-symbol: 1.1.0 + dev: false - micromark-factory-whitespace@2.0.1: + /micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-symbol: 2.0.0 - micromark-util-character@1.2.0: + /micromark-util-classify-character@1.1.0: + resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} dependencies: + micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + dev: false + + /micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 - micromark-util-character@2.1.1: + /micromark-util-combine-extensions@1.1.0: + resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} dependencies: - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-chunked: 1.1.0 + micromark-util-types: 1.1.0 + dev: false - micromark-util-chunked@2.0.1: + /micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} dependencies: - micromark-util-symbol: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 - micromark-util-classify-character@2.0.1: + /micromark-util-decode-numeric-character-reference@1.1.0: + resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-symbol: 1.1.0 + dev: false - micromark-util-combine-extensions@2.0.1: + /micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} dependencies: - micromark-util-chunked: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-symbol: 2.0.0 - micromark-util-decode-numeric-character-reference@2.0.2: + /micromark-util-decode-string@1.1.0: + resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} dependencies: - micromark-util-symbol: 2.0.1 + decode-named-character-reference: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-symbol: 1.1.0 + dev: false - micromark-util-decode-string@2.0.1: + /micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} dependencies: - decode-named-character-reference: 1.3.0 - micromark-util-character: 2.1.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-symbol: 2.0.1 + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + + /micromark-util-encode@1.1.0: + resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} + dev: false - micromark-util-encode@2.0.1: {} + /micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - micromark-util-events-to-acorn@2.0.3: + /micromark-util-events-to-acorn@2.0.2: + resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} dependencies: - '@types/estree': 1.0.8 + '@types/acorn': 4.0.6 + '@types/estree': 1.0.6 '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - vfile-message: 4.0.3 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + + /micromark-util-html-tag-name@1.2.0: + resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + dev: false + + /micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + /micromark-util-normalize-identifier@1.1.0: + resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} + dependencies: + micromark-util-symbol: 1.1.0 + dev: false + + /micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + dependencies: + micromark-util-symbol: 2.0.0 + + /micromark-util-resolve-all@1.1.0: + resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} + dependencies: + micromark-util-types: 1.1.0 + dev: false - micromark-util-html-tag-name@2.0.1: {} + /micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + dependencies: + micromark-util-types: 2.0.0 - micromark-util-normalize-identifier@2.0.1: + /micromark-util-sanitize-uri@1.2.0: + resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} dependencies: - micromark-util-symbol: 2.0.1 + micromark-util-character: 1.2.0 + micromark-util-encode: 1.1.0 + micromark-util-symbol: 1.1.0 + dev: false - micromark-util-resolve-all@2.0.1: + /micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} dependencies: - micromark-util-types: 2.0.2 + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 - micromark-util-sanitize-uri@2.0.1: + /micromark-util-subtokenize@1.1.0: + resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} dependencies: - micromark-util-character: 2.1.1 - micromark-util-encode: 2.0.1 - micromark-util-symbol: 2.0.1 + micromark-util-chunked: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false - micromark-util-subtokenize@2.1.0: + /micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} dependencies: devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + /micromark-util-symbol@1.1.0: + resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} + dev: false - micromark-util-symbol@1.1.0: {} + /micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - micromark-util-symbol@2.0.1: {} + /micromark-util-types@1.1.0: + resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} + dev: false - micromark-util-types@1.1.0: {} + /micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - micromark-util-types@2.0.2: {} + /micromark@3.2.0: + resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.7 + decode-named-character-reference: 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-combine-extensions: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-encode: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: false - micromark@4.0.2: + /micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} dependencies: - '@types/debug': 4.1.13 - debug: 4.4.3 - decode-named-character-reference: 1.3.0 + '@types/debug': 4.1.12 + debug: 4.3.7 + decode-named-character-reference: 1.0.2 devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-combine-extensions: 2.0.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-encode: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-subtokenize: 2.1.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color - micromatch@4.0.8: + /micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} dependencies: braces: 3.0.3 - picomatch: 2.3.2 + picomatch: 2.3.1 + dev: false - mime-db@1.33.0: {} + /mime-db@1.33.0: + resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} + engines: {node: '>= 0.6'} + dev: false - mime-db@1.52.0: {} + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} - mime-db@1.54.0: {} + /mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + dev: false - mime-types@2.1.18: + /mime-types@2.1.18: + resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.33.0 + dev: false - mime-types@2.1.35: + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - mime@1.6.0: {} + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: false - mimic-fn@2.1.0: {} + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: false - mimic-response@3.1.0: {} + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: false - mimic-response@4.0.0: {} + /mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false - mini-css-extract-plugin@2.10.2(webpack@5.105.4): + /mini-css-extract-plugin@2.9.2(webpack@5.96.1): + resolution: {integrity: sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: 5.96.1 dependencies: - schema-utils: 4.3.3 - tapable: 2.3.2 - webpack: 5.105.4 + schema-utils: 4.2.0 + tapable: 2.2.1 + webpack: 5.96.1 + dev: false + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: false - minimalistic-assert@1.0.1: {} + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: false - minimatch@3.1.5: + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: - brace-expansion: 1.1.13 + brace-expansion: 2.0.1 + dev: false + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: false - minimist@1.2.8: {} + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: false - mrmime@2.0.1: {} + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: false - ms@2.0.0: {} + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false - ms@2.1.3: {} + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - multicast-dns@7.2.5: + /multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true dependencies: dns-packet: 5.6.1 thunky: 1.1.0 + dev: false - mz@2.7.0: + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 + dev: false + + /nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false - nanoid@3.3.11: {} + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false - negotiator@0.6.3: {} + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: false - negotiator@0.6.4: {} + /negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + dev: false - neo-async@2.6.2: {} + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - no-case@3.0.4: + /no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 tslib: 2.8.1 + dev: false - node-addon-api@7.1.1: + /node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + requiresBuild: true + dev: false optional: true - node-emoji@2.2.0: + /node-emoji@2.1.3: + resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} + engines: {node: '>=18'} dependencies: '@sindresorhus/is': 4.6.0 char-regex: 1.0.2 emojilib: 2.4.0 skin-tone: 2.0.0 + dev: false + + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: false + + /node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + dev: false - node-forge@1.4.0: {} + /node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - node-releases@2.0.36: {} + /non-layered-tidy-tree-layout@2.0.2: + resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} + dev: false + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: false - normalize-path@3.0.0: {} + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: false - normalize-url@6.1.0: {} + /normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: false - normalize-url@8.1.1: {} + /normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + engines: {node: '>=14.16'} + dev: false - npm-run-path@4.0.1: + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} dependencies: path-key: 3.1.1 + dev: false - nprogress@0.2.0: {} + /nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + dev: false - nth-check@2.1.1: + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 + dev: false - object-assign@4.1.1: {} + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} - object-hash@3.0.0: {} + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: false - object-inspect@1.13.4: {} + /object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + dev: false - object-keys@1.1.1: {} + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: false - object.assign@4.1.7: + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 + call-bind: 1.0.7 define-properties: 1.2.1 - es-object-atoms: 1.1.1 - has-symbols: 1.1.0 + has-symbols: 1.0.3 object-keys: 1.1.1 + dev: false - obuf@1.1.2: {} + /obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + dev: false - on-finished@2.4.1: + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 + dev: false - on-headers@1.1.0: {} + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: false - once@1.4.0: + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + dev: false - onetime@5.1.2: + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 + dev: false - open@8.4.2: + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 + dev: false - opener@1.5.2: {} + /opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + dev: false - os-shim@0.1.3: {} + /os-shim@0.1.3: + resolution: {integrity: sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==} + engines: {node: '>= 0.4.0'} + dev: true - ox@0.14.7(typescript@5.2.2): + /ox@0.11.3(typescript@5.4.5): + resolution: {integrity: sha512-1bWYGk/xZel3xro3l8WGg6eq4YEKlaqvyMtVhfMFpbJzK2F6rj4EDRtqDCWVEJMkzcmEi9uW2QxsqELokOlarw==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -9959,490 +8376,880 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.2.2) + abitype: 1.2.3(typescript@5.4.5) eventemitter3: 5.0.1 - optionalDependencies: - typescript: 5.2.2 + typescript: 5.4.5 transitivePeerDependencies: - zod + dev: false - p-cancelable@3.0.0: {} + /p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + dev: false - p-limit@2.3.0: + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} dependencies: p-try: 2.2.0 + dev: false - p-limit@3.1.0: + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 + dev: false - p-limit@4.0.0: + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - yocto-queue: 1.2.2 + yocto-queue: 1.1.1 + dev: false - p-locate@3.0.0: + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} dependencies: p-limit: 2.3.0 + dev: false - p-locate@5.0.0: + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: p-limit: 3.1.0 + dev: false - p-locate@6.0.0: + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-limit: 4.0.0 + dev: false - p-map@4.0.0: + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 + dev: false - p-retry@4.6.2: + /p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} dependencies: '@types/retry': 0.12.0 retry: 0.13.1 + dev: false + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: false - p-try@2.2.0: {} + /package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + dev: false - package-json@8.1.1: + /package-json@8.1.1: + resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} + engines: {node: '>=14.16'} dependencies: got: 12.6.1 - registry-auth-token: 5.1.1 + registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.7.4 + semver: 7.6.3 + dev: false - param-case@3.0.4: + /param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 tslib: 2.8.1 + dev: false - parent-module@1.0.1: + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: false - parse-entities@4.0.2: + /parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} dependencies: '@types/unist': 2.0.11 + character-entities: 2.0.2 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.3.0 + decode-named-character-reference: 1.0.2 is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - parse-json@5.2.0: + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.29.0 - error-ex: 1.3.4 + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + dev: false - parse-numeric-range@1.3.0: {} + /parse-numeric-range@1.3.0: + resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} + dev: false - parse5-htmlparser2-tree-adapter@7.1.0: + /parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} dependencies: domhandler: 5.0.3 - parse5: 7.3.0 - - parse5-parser-stream@7.1.2: - dependencies: - parse5: 7.3.0 + parse5: 7.2.1 + dev: false - parse5@7.3.0: + /parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} dependencies: - entities: 6.0.1 + entities: 4.5.0 + dev: false - parseurl@1.3.3: {} + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: false - pascal-case@3.1.2: + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 tslib: 2.8.1 + dev: false + + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + dev: false - path-exists@3.0.0: {} + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: false - path-exists@4.0.0: {} + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false - path-exists@5.0.0: {} + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: false - path-is-absolute@1.0.1: {} + /path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + dev: false - path-is-inside@1.0.2: {} + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: false - path-key@3.1.1: {} + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: false - path-parse@1.0.7: {} + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + dev: false - path-to-regexp@0.1.13: {} + /path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + dev: false - path-to-regexp@1.9.0: + /path-to-regexp@1.9.0: + resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} dependencies: isarray: 0.0.1 + dev: false - path-to-regexp@3.3.0: {} - - path-type@4.0.0: {} + /path-to-regexp@3.3.0: + resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} + dev: false - picocolors@1.1.1: {} + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: false - picomatch@2.3.2: {} + /picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@4.0.4: {} + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: false - pify@2.3.0: {} + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: false - pirates@4.0.7: {} + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: false - pkg-dir@7.0.0: + /pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} dependencies: find-up: 6.3.0 + dev: false - pkg-up@3.1.0: + /pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} dependencies: find-up: 3.0.0 + dev: false - postcss-calc@8.2.4(postcss@8.5.8): + /postcss-calc@8.2.4(postcss@8.5.6): + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 + dev: false - postcss-colormin@5.3.1(postcss@8.5.8): + /postcss-colormin@5.3.1(postcss@8.5.6): + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - browserslist: 4.28.1 + browserslist: 4.28.0 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.5.8 + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-convert-values@5.1.3(postcss@8.5.8): + /postcss-convert-values@5.1.3(postcss@8.5.6): + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - browserslist: 4.28.1 - postcss: 8.5.8 + browserslist: 4.28.0 + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-discard-comments@5.1.2(postcss@8.5.8): + /postcss-discard-comments@5.1.2(postcss@8.5.6): + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 + dev: false - postcss-discard-duplicates@5.1.0(postcss@8.5.8): + /postcss-discard-duplicates@5.1.0(postcss@8.5.6): + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 + dev: false - postcss-discard-empty@5.1.1(postcss@8.5.8): + /postcss-discard-empty@5.1.1(postcss@8.5.6): + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 + dev: false - postcss-discard-overridden@5.1.0(postcss@8.5.8): + /postcss-discard-overridden@5.1.0(postcss@8.5.6): + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 + dev: false - postcss-discard-unused@5.1.0(postcss@8.5.8): + /postcss-discard-unused@5.1.0(postcss@8.5.6): + resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-selector-parser: 6.1.2 + dev: false - postcss-import@15.1.0(postcss@8.5.8): + /postcss-import@15.1.0(postcss@8.4.47): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 dependencies: - postcss: 8.5.8 + postcss: 8.4.47 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.11 + resolve: 1.22.8 + dev: false - postcss-js@4.1.0(postcss@8.5.8): + /postcss-js@4.0.1(postcss@8.4.47): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.5.8 + postcss: 8.4.47 + dev: false - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.8): + /postcss-load-config@4.0.2(postcss@8.4.47): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true dependencies: - lilconfig: 3.1.3 - optionalDependencies: - jiti: 1.21.7 - postcss: 8.5.8 + lilconfig: 3.1.2 + postcss: 8.4.47 + yaml: 2.6.0 + dev: false - postcss-loader@7.3.4(postcss@8.5.8)(typescript@5.2.2)(webpack@5.105.4): + /postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.4.5)(webpack@5.96.1): + resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} + engines: {node: '>= 14.15.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: 5.96.1 dependencies: - cosmiconfig: 8.3.6(typescript@5.2.2) - jiti: 1.21.7 - postcss: 8.5.8 - semver: 7.7.4 - webpack: 5.105.4 + cosmiconfig: 8.3.6(typescript@5.4.5) + jiti: 1.21.6 + postcss: 8.5.6 + semver: 7.6.3 + webpack: 5.96.1 transitivePeerDependencies: - typescript + dev: false - postcss-merge-idents@5.1.1(postcss@8.5.8): + /postcss-merge-idents@5.1.1(postcss@8.5.6): + resolution: {integrity: sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - cssnano-utils: 3.1.0(postcss@8.5.8) - postcss: 8.5.8 + cssnano-utils: 3.1.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-merge-longhand@5.1.7(postcss@8.5.8): + /postcss-merge-longhand@5.1.7(postcss@8.5.6): + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.5.8) + stylehacks: 5.1.1(postcss@8.5.6) + dev: false - postcss-merge-rules@5.1.4(postcss@8.5.8): + /postcss-merge-rules@5.1.4(postcss@8.5.6): + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - browserslist: 4.28.1 + browserslist: 4.28.0 caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.5.8) - postcss: 8.5.8 + cssnano-utils: 3.1.0(postcss@8.5.6) + postcss: 8.5.6 postcss-selector-parser: 6.1.2 + dev: false - postcss-minify-font-values@5.1.0(postcss@8.5.8): + /postcss-minify-font-values@5.1.0(postcss@8.5.6): + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-minify-gradients@5.1.1(postcss@8.5.8): + /postcss-minify-gradients@5.1.1(postcss@8.5.6): + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.5.8) - postcss: 8.5.8 + cssnano-utils: 3.1.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-minify-params@5.1.4(postcss@8.5.8): + /postcss-minify-params@5.1.4(postcss@8.5.6): + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - browserslist: 4.28.1 - cssnano-utils: 3.1.0(postcss@8.5.8) - postcss: 8.5.8 + browserslist: 4.28.0 + cssnano-utils: 3.1.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-minify-selectors@5.2.1(postcss@8.5.8): + /postcss-minify-selectors@5.2.1(postcss@8.5.6): + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-selector-parser: 6.1.2 + dev: false - postcss-modules-extract-imports@3.1.0(postcss@8.5.8): + /postcss-modules-extract-imports@3.1.0(postcss@8.5.6): + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 + dev: false - postcss-modules-local-by-default@4.2.0(postcss@8.5.8): + /postcss-modules-local-by-default@4.0.5(postcss@8.5.6): + resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.5.8) - postcss: 8.5.8 - postcss-selector-parser: 7.1.1 + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 + dev: false - postcss-modules-scope@3.2.1(postcss@8.5.8): + /postcss-modules-scope@3.2.0(postcss@8.5.6): + resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 dependencies: - postcss: 8.5.8 - postcss-selector-parser: 7.1.1 + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + dev: false - postcss-modules-values@4.0.0(postcss@8.5.8): + /postcss-modules-values@4.0.0(postcss@8.5.6): + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.5.8) - postcss: 8.5.8 + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + dev: false - postcss-nested@6.2.0(postcss@8.5.8): + /postcss-nested@6.2.0(postcss@8.4.47): + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 dependencies: - postcss: 8.5.8 + postcss: 8.4.47 postcss-selector-parser: 6.1.2 + dev: false - postcss-normalize-charset@5.1.0(postcss@8.5.8): + /postcss-normalize-charset@5.1.0(postcss@8.5.6): + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 + dev: false - postcss-normalize-display-values@5.1.0(postcss@8.5.8): + /postcss-normalize-display-values@5.1.0(postcss@8.5.6): + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-normalize-positions@5.1.1(postcss@8.5.8): + /postcss-normalize-positions@5.1.1(postcss@8.5.6): + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-normalize-repeat-style@5.1.1(postcss@8.5.8): + /postcss-normalize-repeat-style@5.1.1(postcss@8.5.6): + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-normalize-string@5.1.0(postcss@8.5.8): + /postcss-normalize-string@5.1.0(postcss@8.5.6): + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-normalize-timing-functions@5.1.0(postcss@8.5.8): + /postcss-normalize-timing-functions@5.1.0(postcss@8.5.6): + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-normalize-unicode@5.1.1(postcss@8.5.8): + /postcss-normalize-unicode@5.1.1(postcss@8.5.6): + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - browserslist: 4.28.1 - postcss: 8.5.8 + browserslist: 4.28.0 + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-normalize-url@5.1.0(postcss@8.5.8): + /postcss-normalize-url@5.1.0(postcss@8.5.6): + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: normalize-url: 6.1.0 - postcss: 8.5.8 + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-normalize-whitespace@5.1.1(postcss@8.5.8): + /postcss-normalize-whitespace@5.1.1(postcss@8.5.6): + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-ordered-values@5.1.3(postcss@8.5.8): + /postcss-ordered-values@5.1.3(postcss@8.5.6): + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - cssnano-utils: 3.1.0(postcss@8.5.8) - postcss: 8.5.8 + cssnano-utils: 3.1.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-reduce-idents@5.2.0(postcss@8.5.8): + /postcss-reduce-idents@5.2.0(postcss@8.5.6): + resolution: {integrity: sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-reduce-initial@5.1.2(postcss@8.5.8): + /postcss-reduce-initial@5.1.2(postcss@8.5.6): + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - browserslist: 4.28.1 + browserslist: 4.28.0 caniuse-api: 3.0.0 - postcss: 8.5.8 + postcss: 8.5.6 + dev: false - postcss-reduce-transforms@5.1.0(postcss@8.5.8): + /postcss-reduce-transforms@5.1.0(postcss@8.5.6): + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: false - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@7.1.1: + /postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + dev: false - postcss-sort-media-queries@4.4.1(postcss@8.5.8): + /postcss-sort-media-queries@4.4.1(postcss@8.5.6): + resolution: {integrity: sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.4.16 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 sort-css-media-queries: 2.1.0 + dev: false - postcss-svgo@5.1.0(postcss@8.5.8): + /postcss-svgo@5.1.0(postcss@8.5.6): + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - svgo: 2.8.2 + svgo: 2.8.0 + dev: false - postcss-unique-selectors@5.1.1(postcss@8.5.8): + /postcss-unique-selectors@5.1.1(postcss@8.5.6): + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.5.8 + postcss: 8.5.6 postcss-selector-parser: 6.1.2 + dev: false - postcss-value-parser@4.2.0: {} + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: false + + /postcss-zindex@5.1.0(postcss@8.5.6): + resolution: {integrity: sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.5.6 + dev: false - postcss-zindex@5.1.0(postcss@8.5.8): + /postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} dependencies: - postcss: 8.5.8 + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + dev: false - postcss@8.5.8: + /postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 + dev: false - pre-commit@1.2.2: + /pre-commit@1.2.2: + resolution: {integrity: sha512-qokTiqxD6GjODy5ETAIgzsRgnBWWQHQH2ghy86PU7mIn/wuWeTwF3otyNQZxWBwVn8XNr8Tdzj/QfUXpH+gRZA==} + requiresBuild: true dependencies: cross-spawn: 5.1.0 spawn-sync: 1.0.15 which: 1.2.14 + dev: true - pretty-error@4.0.0: + /pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} dependencies: - lodash: 4.17.23 + lodash: 4.17.21 renderkid: 3.0.0 + dev: false - pretty-time@1.1.0: {} + /pretty-time@1.1.0: + resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} + engines: {node: '>=4'} + dev: false - prism-react-renderer@2.4.1(react@18.3.1): + /prism-react-renderer@2.4.0(react@18.3.1): + resolution: {integrity: sha512-327BsVCD/unU4CNLZTWVHyUHKnsqcvj2qbPlQ8MiBE2eq2rgctjigPA1Gp9HLF83kZ20zNN6jgizHJeEsyFYOw==} + peerDependencies: + react: '>=16.0.0' dependencies: - '@types/prismjs': 1.26.6 + '@types/prismjs': 1.26.5 clsx: 2.1.1 react: 18.3.1 + dev: false - prismjs@1.30.0: {} + /prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + dev: false - process-nextick-args@2.0.1: {} + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - prompts@2.4.2: + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 + dev: false - prop-types@15.8.1: + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - property-information@7.1.0: {} + /property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - proto-list@1.2.4: {} + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: false - proxy-addr@2.0.7: + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 + dev: false - pseudomap@1.0.2: {} + /pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true - punycode@2.3.1: {} + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} - pupa@3.3.0: + /pupa@3.1.0: + resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} + engines: {node: '>=12.20'} dependencies: escape-goat: 4.0.0 + dev: false - qs@6.14.2: + /qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} dependencies: - side-channel: 1.1.0 + side-channel: 1.0.6 + dev: false - queue-microtask@1.2.3: {} + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: false - queue@6.0.2: + /queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} dependencies: inherits: 2.0.4 + dev: false - quick-lru@5.1.1: {} + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: false - randombytes@2.1.0: + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 - range-parser@1.2.0: {} + /range-parser@1.2.0: + resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} + engines: {node: '>= 0.6'} + dev: false - range-parser@1.2.1: {} + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: false - raw-body@2.5.3: + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} dependencies: bytes: 3.1.2 - http-errors: 2.0.1 + http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 + dev: false - rc@1.2.8: + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true dependencies: deep-extend: 0.6.0 ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 + dev: false - react-dev-utils@12.0.1(typescript@5.2.2)(webpack@5.105.4): + /react-dev-utils@12.0.1(typescript@5.4.5)(webpack@5.96.1): + resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=2.7' + webpack: 5.96.1 + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.26.2 address: 1.2.2 - browserslist: 4.28.1 + browserslist: 4.28.0 chalk: 4.1.2 - cross-spawn: 7.0.6 + cross-spawn: 7.0.3 detect-port-alt: 1.1.6 escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(typescript@5.2.2)(webpack@5.105.4) + fork-ts-checker-webpack-plugin: 6.5.3(typescript@5.4.5)(webpack@5.96.1) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -10454,30 +9261,40 @@ snapshots: prompts: 2.4.2 react-error-overlay: 6.1.0 recursive-readdir: 2.2.3 - shell-quote: 1.8.3 + shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - webpack: 5.105.4 - optionalDependencies: - typescript: 5.2.2 + typescript: 5.4.5 + webpack: 5.96.1 transitivePeerDependencies: - eslint - supports-color - vue-template-compiler + dev: false - react-dom@18.3.1(react@18.3.1): + /react-dom@18.3.1(react@18.3.1): + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 dependencies: loose-envify: 1.4.0 react: 18.3.1 scheduler: 0.23.2 - react-error-overlay@6.1.0: {} + /react-error-overlay@6.1.0: + resolution: {integrity: sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==} + dev: false - react-fast-compare@3.2.2: {} + /react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + /react-helmet-async@1.3.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.29.2 + '@babel/runtime': 7.26.0 invariant: 2.2.4 prop-types: 15.8.1 react: 18.3.1 @@ -10485,34 +9302,57 @@ snapshots: react-fast-compare: 3.2.2 shallowequal: 1.1.0 - react-helmet-async@3.0.0(react@18.3.1): + /react-helmet-async@2.0.5(react@18.3.1): + resolution: {integrity: sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 dependencies: invariant: 2.2.4 react: 18.3.1 react-fast-compare: 3.2.2 shallowequal: 1.1.0 - react-is@16.13.1: {} + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-json-view-lite@1.5.0(react@18.3.1): + /react-json-view-lite@1.5.0(react@18.3.1): + resolution: {integrity: sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==} + engines: {node: '>=14'} + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 dependencies: react: 18.3.1 + dev: false - react-loadable-ssr-addon-v5-slorber@1.0.3(@docusaurus/react-loadable@5.5.2(react@18.3.1))(webpack@5.105.4): + /react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.96.1): + resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} + engines: {node: '>=10.13.0'} + peerDependencies: + react-loadable: '*' + webpack: 5.96.1 dependencies: - '@babel/runtime': 7.29.2 - react-loadable: '@docusaurus/react-loadable@5.5.2(react@18.3.1)' - webpack: 5.105.4 + '@babel/runtime': 7.26.0 + react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.3.1) + webpack: 5.96.1 + dev: false - react-router-config@5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1): + /react-router-config@5.1.1(react-router@5.3.4)(react@18.3.1): + resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} + peerDependencies: + react: '>=15' + react-router: '>=5' dependencies: - '@babel/runtime': 7.29.2 + '@babel/runtime': 7.26.0 react: 18.3.1 react-router: 5.3.4(react@18.3.1) + dev: false - react-router-dom@5.3.4(react@18.3.1): + /react-router-dom@5.3.4(react@18.3.1): + resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} + peerDependencies: + react: '>=15' dependencies: - '@babel/runtime': 7.29.2 + '@babel/runtime': 7.26.0 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -10520,10 +9360,14 @@ snapshots: react-router: 5.3.4(react@18.3.1) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 + dev: false - react-router@5.3.4(react@18.3.1): + /react-router@5.3.4(react@18.3.1): + resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} + peerDependencies: + react: '>=15' dependencies: - '@babel/runtime': 7.29.2 + '@babel/runtime': 7.26.0 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -10533,16 +9377,22 @@ snapshots: react-is: 16.13.1 tiny-invariant: 1.3.3 tiny-warning: 1.0.3 + dev: false - react@18.3.1: + /react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - read-cache@1.0.0: + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 + dev: false - readable-stream@2.3.8: + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -10552,130 +9402,194 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 - readable-stream@3.6.2: + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 + dev: false - readdirp@3.6.0: + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: - picomatch: 2.3.2 + picomatch: 2.3.1 + dev: false - readdirp@4.1.2: {} + /readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} + dev: false - reading-time@1.5.0: {} + /reading-time@1.5.0: + resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} + dev: false - rechoir@0.6.2: + /rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} dependencies: - resolve: 1.22.11 + resolve: 1.22.8 + dev: false - recma-build-jsx@1.0.0: + /recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 estree-util-build-jsx: 3.0.1 vfile: 6.0.3 - recma-jsx@1.0.1(acorn@8.16.0): + /recma-jsx@1.0.0(acorn@8.14.0): + resolution: {integrity: sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==} dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) + acorn-jsx: 5.3.2(acorn@8.14.0) estree-util-to-js: 2.0.0 recma-parse: 1.0.0 recma-stringify: 1.0.0 unified: 11.0.5 + transitivePeerDependencies: + - acorn - recma-parse@1.0.0: + /recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 esast-util-from-js: 2.0.1 unified: 11.0.5 vfile: 6.0.3 - recma-stringify@1.0.0: + /recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 estree-util-to-js: 2.0.0 unified: 11.0.5 vfile: 6.0.3 - recursive-readdir@2.2.3: + /recursive-readdir@2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} dependencies: - minimatch: 3.1.5 + minimatch: 3.1.2 + dev: false - regenerate-unicode-properties@10.2.2: + /regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} dependencies: regenerate: 1.4.2 + dev: false + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: false - regenerate@1.4.2: {} + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regexpu-core@6.4.0: + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.26.0 + dev: false + + /regexpu-core@6.1.1: + resolution: {integrity: sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==} + engines: {node: '>=4'} dependencies: regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.2 + regenerate-unicode-properties: 10.2.0 regjsgen: 0.8.0 - regjsparser: 0.13.0 + regjsparser: 0.11.2 unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.1 + unicode-match-property-value-ecmascript: 2.2.0 + dev: false - registry-auth-token@5.1.1: + /registry-auth-token@5.0.2: + resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} + engines: {node: '>=14'} dependencies: - '@pnpm/npm-conf': 3.0.2 + '@pnpm/npm-conf': 2.3.1 + dev: false - registry-url@6.0.1: + /registry-url@6.0.1: + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + engines: {node: '>=12'} dependencies: rc: 1.2.8 + dev: false - regjsgen@0.8.0: {} + /regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + dev: false - regjsparser@0.13.0: + /regjsparser@0.11.2: + resolution: {integrity: sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==} + hasBin: true dependencies: - jsesc: 3.1.0 + jsesc: 3.0.2 + dev: false - rehype-katex@7.0.1: + /rehype-katex@7.0.1: + resolution: {integrity: sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==} dependencies: '@types/hast': 3.0.4 - '@types/katex': 0.16.8 + '@types/katex': 0.16.7 hast-util-from-html-isomorphic: 2.0.0 hast-util-to-text: 4.0.2 - katex: 0.16.44 - unist-util-visit-parents: 6.0.2 + katex: 0.16.11 + unist-util-visit-parents: 6.0.1 vfile: 6.0.3 + dev: false - rehype-raw@7.0.0: + /rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} dependencies: '@types/hast': 3.0.4 - hast-util-raw: 9.1.0 + hast-util-raw: 9.0.4 vfile: 6.0.3 + dev: false - rehype-recma@1.0.0: + /rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.6 '@types/hast': 3.0.4 - hast-util-to-estree: 3.1.3 + hast-util-to-estree: 3.1.0 transitivePeerDependencies: - supports-color - relateurl@0.2.7: {} + /relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + dev: false - remark-directive@3.0.1: + /remark-directive@3.0.0: + resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} dependencies: '@types/mdast': 4.0.4 - mdast-util-directive: 3.1.0 + mdast-util-directive: 3.0.0 micromark-extension-directive: 3.0.2 unified: 11.0.5 transitivePeerDependencies: - supports-color + dev: false - remark-emoji@4.0.1: + /remark-emoji@4.0.1: + resolution: {integrity: sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: '@types/mdast': 4.0.4 emoticon: 4.1.0 - mdast-util-find-and-replace: 3.0.2 - node-emoji: 2.2.0 + mdast-util-find-and-replace: 3.0.1 + node-emoji: 2.1.3 unified: 11.0.5 + dev: false - remark-frontmatter@5.0.0: + /remark-frontmatter@5.0.0: + resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} dependencies: '@types/mdast': 4.0.4 mdast-util-frontmatter: 2.0.1 @@ -10683,19 +9597,23 @@ snapshots: unified: 11.0.5 transitivePeerDependencies: - supports-color + dev: false - remark-gfm@4.0.1: + /remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} dependencies: '@types/mdast': 4.0.4 - mdast-util-gfm: 3.1.0 + mdast-util-gfm: 3.0.0 micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 remark-stringify: 11.0.0 unified: 11.0.5 transitivePeerDependencies: - supports-color + dev: false - remark-math@6.0.0: + /remark-math@6.0.0: + resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} dependencies: '@types/mdast': 4.0.4 mdast-util-math: 3.0.0 @@ -10703,332 +9621,519 @@ snapshots: unified: 11.0.5 transitivePeerDependencies: - supports-color + dev: false - remark-mdx@3.1.1: + /remark-mdx@3.1.0: + resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} dependencies: mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 transitivePeerDependencies: - supports-color - remark-parse@11.0.0: + /remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3 - micromark-util-types: 2.0.2 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.0 unified: 11.0.5 transitivePeerDependencies: - supports-color - remark-rehype@11.1.2: + /remark-rehype@11.1.1: + resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.1 + mdast-util-to-hast: 13.2.0 unified: 11.0.5 vfile: 6.0.3 - remark-stringify@11.0.0: + /remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} dependencies: '@types/mdast': 4.0.4 - mdast-util-to-markdown: 2.1.2 + mdast-util-to-markdown: 2.1.1 unified: 11.0.5 + dev: false - renderkid@3.0.0: + /renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} dependencies: css-select: 4.3.0 dom-converter: 0.2.0 htmlparser2: 6.1.0 - lodash: 4.17.23 + lodash: 4.17.21 strip-ansi: 6.0.1 + dev: false - require-from-string@2.0.2: {} + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: false - require-like@0.1.2: {} + /require-like@0.1.2: + resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} + dev: false - requires-port@1.0.0: {} + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: false - resolve-alpn@1.2.1: {} + /resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: false - resolve-from@4.0.0: {} + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: false - resolve-pathname@3.0.0: {} + /resolve-pathname@3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + dev: false - resolve@1.22.11: + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true dependencies: - is-core-module: 2.16.1 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: false - responselike@3.0.0: + /responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} dependencies: lowercase-keys: 3.0.0 + dev: false - retry@0.13.1: {} + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: false - reusify@1.1.0: {} + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: false - rimraf@3.0.2: + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true dependencies: glob: 7.2.3 + dev: false + + /robust-predicates@3.0.3: + resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} + dev: false - rtl-detect@1.1.2: {} + /rtl-detect@1.1.2: + resolution: {integrity: sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==} + dev: false - rtlcss@4.3.0: + /rtlcss@4.3.0: + resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==} + engines: {node: '>=12.0.0'} + hasBin: true dependencies: escalade: 3.2.0 picocolors: 1.1.1 - postcss: 8.5.8 + postcss: 8.5.6 strip-json-comments: 3.1.1 + dev: false - run-parallel@1.2.0: + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 + dev: false + + /rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + dev: false - safe-buffer@5.1.2: {} + /sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: false + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - safe-buffer@5.2.1: {} + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safer-buffer@2.1.2: {} + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: false - sass-loader@16.0.7(sass@1.98.0)(webpack@5.105.4): + /sass-loader@10.5.2(sass@1.80.6)(webpack@5.96.1): + resolution: {integrity: sha512-vMUoSNOUKJILHpcNCCyD23X34gve1TS7Rjd9uXHeKqhvBG39x6XbswFDtpbTElj6XdMFezoWhkh5vtKudf2cgQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + sass: ^1.3.0 + webpack: 5.96.1 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true dependencies: + klona: 2.0.6 + loader-utils: 2.0.4 neo-async: 2.6.2 - optionalDependencies: - sass: 1.98.0 - webpack: 5.105.4 + sass: 1.80.6 + schema-utils: 3.3.0 + semver: 7.6.3 + webpack: 5.96.1 + dev: false - sass@1.98.0: + /sass@1.80.6: + resolution: {integrity: sha512-ccZgdHNiBF1NHBsWvacvT5rju3y1d/Eu+8Ex6c21nHp2lZGLBEtuwc415QfiI1PJa1TpCo3iXwwSRjRpn2Ckjg==} + engines: {node: '>=14.0.0'} + hasBin: true dependencies: - chokidar: 4.0.3 - immutable: 5.1.5 + chokidar: 4.0.1 + immutable: 4.3.7 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.5.6 + '@parcel/watcher': 2.4.1 + dev: false - sax@1.6.0: {} + /sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + dev: false - scheduler@0.23.2: + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} dependencies: loose-envify: 1.4.0 - schema-utils@2.7.0: + /schema-utils@2.7.0: + resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} + engines: {node: '>= 8.9.0'} dependencies: '@types/json-schema': 7.0.15 - ajv: 6.14.0 - ajv-keywords: 3.5.2(ajv@6.14.0) + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false - schema-utils@3.3.0: + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} dependencies: '@types/json-schema': 7.0.15 - ajv: 6.14.0 - ajv-keywords: 3.5.2(ajv@6.14.0) + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) - schema-utils@4.3.3: + /schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} dependencies: '@types/json-schema': 7.0.15 - ajv: 8.18.0 - ajv-formats: 2.1.1(ajv@8.18.0) - ajv-keywords: 5.1.0(ajv@8.18.0) + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + dev: false - search-insights@2.17.3: {} + /search-insights@2.17.2: + resolution: {integrity: sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==} + dev: false - section-matter@1.0.0: + /section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} dependencies: extend-shallow: 2.0.1 kind-of: 6.0.3 + dev: false - select-hose@2.0.0: {} + /select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + dev: false - selfsigned@2.4.1: + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} dependencies: - '@types/node-forge': 1.3.14 - node-forge: 1.4.0 + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + dev: false - semver-diff@4.0.0: + /semver-diff@4.0.0: + resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} + engines: {node: '>=12'} dependencies: - semver: 7.7.4 + semver: 7.6.3 + dev: false - semver@6.3.1: {} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: false - semver@7.7.4: {} + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + dev: false - send@0.19.2: + /send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} dependencies: debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - encodeurl: 2.0.0 + encodeurl: 1.0.2 escape-html: 1.0.3 etag: 1.8.1 fresh: 0.5.2 - http-errors: 2.0.1 + http-errors: 2.0.0 mime: 1.6.0 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 - statuses: 2.0.2 + statuses: 2.0.1 transitivePeerDependencies: - supports-color + dev: false - serialize-javascript@6.0.2: + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} dependencies: randombytes: 2.1.0 - serve-handler@6.1.7: + /serve-handler@6.1.6: + resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==} dependencies: bytes: 3.0.0 content-disposition: 0.5.2 mime-types: 2.1.18 - minimatch: 3.1.5 + minimatch: 3.1.2 path-is-inside: 1.0.2 path-to-regexp: 3.3.0 range-parser: 1.2.0 + dev: false - serve-index@1.9.2: + /serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} dependencies: accepts: 1.3.8 batch: 0.6.1 debug: 2.6.9 escape-html: 1.0.3 - http-errors: 1.8.1 + http-errors: 1.6.3 mime-types: 2.1.35 parseurl: 1.3.3 transitivePeerDependencies: - supports-color + dev: false - serve-static@1.16.3: + /serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.19.2 + send: 0.19.0 transitivePeerDependencies: - supports-color + dev: false - set-function-length@1.2.2: + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 has-property-descriptors: 1.0.2 + dev: false + + /setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: false - setprototypeof@1.2.0: {} + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: false - shallow-clone@3.0.1: + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} dependencies: kind-of: 6.0.3 - shallowequal@1.1.0: {} + /shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - shebang-command@1.2.0: + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 + dev: true - shebang-command@2.0.0: + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 + dev: false - shebang-regex@1.0.0: {} + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: true - shebang-regex@3.0.0: {} + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: false - shell-quote@1.8.3: {} + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: false - shelljs@0.8.5: + /shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true dependencies: glob: 7.2.3 interpret: 1.4.0 rechoir: 0.6.2 + dev: false - side-channel-list@1.0.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - - side-channel-map@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - - side-channel-weakmap@1.0.2: + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} dependencies: - call-bound: 1.0.4 + call-bind: 1.0.7 es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - side-channel-map: 1.0.1 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + dev: false - side-channel@1.1.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - side-channel-list: 1.0.0 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: false - signal-exit@3.0.7: {} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false - simple-swizzle@0.2.4: + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: - is-arrayish: 0.3.4 + is-arrayish: 0.3.2 + dev: false - sirv@2.0.4: + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} dependencies: - '@polka/url': 1.0.0-next.29 - mrmime: 2.0.1 + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 totalist: 3.0.1 + dev: false - sisteransi@1.0.5: {} + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: false - sitemap@7.1.3: + /sitemap@7.1.2: + resolution: {integrity: sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==} + engines: {node: '>=12.0.0', npm: '>=5.6.0'} + hasBin: true dependencies: '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.6.0 + sax: 1.4.1 + dev: false - skin-tone@2.0.0: + /skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} dependencies: unicode-emoji-modifier-base: 1.0.0 + dev: false - slash@3.0.0: {} + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: false - slash@4.0.0: {} + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: false - sockjs@0.3.24: + /sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} dependencies: faye-websocket: 0.11.4 uuid: 8.3.2 websocket-driver: 0.7.4 + dev: false - sort-css-media-queries@2.1.0: {} + /sort-css-media-queries@2.1.0: + resolution: {integrity: sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==} + engines: {node: '>= 6.3.0'} + dev: false - source-map-js@1.2.1: {} + /source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + dev: false - source-map-support@0.5.21: + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - source-map@0.6.1: {} + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} - source-map@0.7.6: {} + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} - space-separated-tokens@2.0.2: {} + /space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - spawn-sync@1.0.15: + /spawn-sync@1.0.15: + resolution: {integrity: sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==} + requiresBuild: true dependencies: concat-stream: 1.6.2 os-shim: 0.1.3 + dev: true - spdy-transport@3.0.0: + /spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.4.3 + debug: 4.3.7 detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -11036,248 +10141,420 @@ snapshots: wbuf: 1.7.3 transitivePeerDependencies: - supports-color + dev: false - spdy@4.0.2: + /spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} dependencies: - debug: 4.4.3 + debug: 4.3.7 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 spdy-transport: 3.0.0 transitivePeerDependencies: - supports-color + dev: false - sprintf-js@1.0.3: {} + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: false - srcset@4.0.0: {} + /srcset@4.0.0: + resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} + engines: {node: '>=12'} + dev: false - stable@0.1.8: {} + /stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: false - statuses@1.5.0: {} + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false - statuses@2.0.2: {} + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: false - std-env@3.10.0: {} + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + dev: false - string-width@4.2.3: + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + dev: false - string-width@5.1.2: + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.2.0 + strip-ansi: 7.1.0 + dev: false - string_decoder@1.1.1: + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 - string_decoder@1.3.0: + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 + dev: false - stringify-entities@4.0.4: + /stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - stringify-object@3.3.0: + /stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} dependencies: get-own-enumerable-property-symbols: 3.0.2 is-obj: 1.0.1 is-regexp: 1.0.0 + dev: false - strip-ansi@6.0.1: + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 + dev: false - strip-ansi@7.2.0: + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} dependencies: - ansi-regex: 6.2.2 + ansi-regex: 6.1.0 + dev: false - strip-bom-string@1.0.0: {} + /strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + dev: false - strip-final-newline@2.0.0: {} + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: false - strip-json-comments@2.0.1: {} + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: false - strip-json-comments@3.1.1: {} + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: false - style-to-js@1.1.21: + /style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} dependencies: - style-to-object: 1.0.14 + inline-style-parser: 0.1.1 - style-to-object@1.0.14: + /style-to-object@1.0.8: + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} dependencies: - inline-style-parser: 0.2.7 + inline-style-parser: 0.2.4 - stylehacks@5.1.1(postcss@8.5.8): + /stylehacks@5.1.1(postcss@8.5.6): + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - browserslist: 4.28.1 - postcss: 8.5.8 + browserslist: 4.28.0 + postcss: 8.5.6 postcss-selector-parser: 6.1.2 + dev: false + + /stylis@4.3.6: + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + dev: false - sucrase@3.35.1: + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true dependencies: - '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 + glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 - pirates: 4.0.7 - tinyglobby: 0.2.15 + pirates: 4.0.6 ts-interface-checker: 0.1.13 + dev: false - supports-color@7.2.0: + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 + dev: false - supports-color@8.1.1: + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - supports-preserve-symlinks-flag@1.0.0: {} + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: false - svg-parser@2.0.4: {} + /svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + dev: false - svgo@2.8.2: + /svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true dependencies: + '@trysound/sax': 0.2.0 commander: 7.2.0 css-select: 4.3.0 css-tree: 1.1.3 csso: 4.2.0 picocolors: 1.1.1 - sax: 1.6.0 stable: 0.1.8 + dev: false - tailwind-merge@1.14.0: {} + /tailwind-merge@1.14.0: + resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==} + dev: false - tailwind-variants@0.1.20(tailwindcss@3.4.19): + /tailwind-variants@0.1.20(tailwindcss@3.4.14): + resolution: {integrity: sha512-AMh7x313t/V+eTySKB0Dal08RHY7ggYK0MSn/ad8wKWOrDUIzyiWNayRUm2PIJ4VRkvRnfNuyRuKbLV3EN+ewQ==} + engines: {node: '>=16.x', pnpm: '>=7.x'} + peerDependencies: + tailwindcss: '*' dependencies: tailwind-merge: 1.14.0 - tailwindcss: 3.4.19 + tailwindcss: 3.4.14 + dev: false - tailwindcss@3.4.19: + /tailwindcss@3.4.14: + resolution: {integrity: sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==} + engines: {node: '>=14.0.0'} + hasBin: true dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 chokidar: 3.6.0 didyoumean: 1.2.2 dlv: 1.1.3 - fast-glob: 3.3.3 + fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.21.7 - lilconfig: 3.1.3 + jiti: 1.21.6 + lilconfig: 2.1.0 micromatch: 4.0.8 normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.8 - postcss-import: 15.1.0(postcss@8.5.8) - postcss-js: 4.1.0(postcss@8.5.8) - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.8) - postcss-nested: 6.2.0(postcss@8.5.8) + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47) + postcss-nested: 6.2.0(postcss@8.4.47) postcss-selector-parser: 6.1.2 - resolve: 1.22.11 - sucrase: 3.35.1 + resolve: 1.22.8 + sucrase: 3.35.0 transitivePeerDependencies: - - tsx - - yaml + - ts-node + dev: false - tapable@1.1.3: {} + /tapable@1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + dev: false - tapable@2.3.2: {} + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} - terser-webpack-plugin@5.4.0(webpack@5.105.4): + /terser-webpack-plugin@5.3.10(webpack@5.96.1): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: 5.96.1 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 - schema-utils: 4.3.3 - terser: 5.46.1 - webpack: 5.105.4 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.36.0 + webpack: 5.96.1 - terser@5.46.1: + /terser@5.36.0: + resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} + engines: {node: '>=10'} + hasBin: true dependencies: - '@jridgewell/source-map': 0.3.11 - acorn: 8.16.0 + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.0 commander: 2.20.3 source-map-support: 0.5.21 - text-table@0.2.0: {} + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: false - thenify-all@1.6.0: + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 + dev: false - thenify@3.3.1: + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 + dev: false - thunky@1.1.0: {} - - tiny-invariant@1.3.3: {} + /thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + dev: false - tiny-warning@1.0.3: {} + /tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + dev: false - tinyglobby@0.2.15: - dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + /tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + dev: false - to-regex-range@5.0.1: + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 + dev: false + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: false - toidentifier@1.0.1: {} + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: false - totalist@3.0.1: {} + /trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - trim-lines@3.0.1: {} + /trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - trough@2.2.0: {} + /ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + dev: false - ts-interface-checker@0.1.13: {} + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: false - tslib@2.8.1: {} + /tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + dev: false - type-fest@1.4.0: {} + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: false - type-fest@2.19.0: {} + /type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + dev: false - type-is@1.6.18: + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} dependencies: media-typer: 0.3.0 mime-types: 2.1.35 + dev: false - typedarray-to-buffer@3.1.5: + /typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 + dev: false - typedarray@0.0.6: {} - - typescript@5.2.2: {} + /typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: true - undici-types@7.18.2: {} + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true - undici@7.24.6: {} + /undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - unicode-canonical-property-names-ecmascript@2.0.1: {} + /unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + dev: false - unicode-emoji-modifier-base@1.0.0: {} + /unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + dev: false - unicode-match-property-ecmascript@2.0.0: + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} dependencies: unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.2.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: false - unicode-match-property-value-ecmascript@2.2.1: {} + /unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} + dev: false - unicode-property-aliases-ecmascript@2.2.0: {} + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: false - unified@11.0.5: + /unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} dependencies: '@types/unist': 3.0.3 bail: 2.0.2 @@ -11287,149 +10564,256 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 - unique-string@3.0.0: + /unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} dependencies: crypto-random-string: 4.0.0 + dev: false - unist-util-find-after@5.0.0: + /unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} dependencies: '@types/unist': 3.0.3 - unist-util-is: 6.0.1 + unist-util-is: 6.0.0 + dev: false - unist-util-is@6.0.1: + /unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: '@types/unist': 3.0.3 - unist-util-position-from-estree@2.0.0: + /unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} dependencies: '@types/unist': 3.0.3 - unist-util-position@5.0.0: + /unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} dependencies: '@types/unist': 3.0.3 - unist-util-remove-position@5.0.0: + /unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} dependencies: '@types/unist': 3.0.3 - unist-util-visit: 5.1.0 + unist-util-visit: 5.0.0 + dev: false + + /unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + dependencies: + '@types/unist': 2.0.11 + dev: false - unist-util-stringify-position@4.0.0: + /unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} dependencies: '@types/unist': 3.0.3 - unist-util-visit-parents@6.0.2: + /unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} dependencies: '@types/unist': 3.0.3 - unist-util-is: 6.0.1 + unist-util-is: 6.0.0 - unist-util-visit@5.1.0: + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} dependencies: '@types/unist': 3.0.3 - unist-util-is: 6.0.1 - unist-util-visit-parents: 6.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: false - universalify@2.0.1: {} + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: false - unpipe@1.0.0: {} + /update-browserslist-db@1.1.1(browserslist@4.24.2): + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 + dev: false - update-browserslist-db@1.2.3(browserslist@4.28.1): + /update-browserslist-db@1.1.4(browserslist@4.28.0): + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' dependencies: - browserslist: 4.28.1 + browserslist: 4.28.0 escalade: 3.2.0 picocolors: 1.1.1 - update-notifier@6.0.2: + /update-notifier@6.0.2: + resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} + engines: {node: '>=14.16'} dependencies: boxen: 7.1.1 - chalk: 5.6.2 + chalk: 5.3.0 configstore: 6.0.0 has-yarn: 3.0.0 import-lazy: 4.0.0 is-ci: 3.0.1 is-installed-globally: 0.4.0 - is-npm: 6.1.0 + is-npm: 6.0.0 is-yarn-global: 0.4.1 latest-version: 7.0.0 - pupa: 3.3.0 - semver: 7.7.4 + pupa: 3.1.0 + semver: 7.6.3 semver-diff: 4.0.0 xdg-basedir: 5.1.0 + dev: false - uri-js@4.4.1: + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.1 - url-loader@4.1.1(file-loader@6.2.0(webpack@5.105.4))(webpack@5.105.4): + /url-loader@4.1.1(file-loader@6.2.0)(webpack@5.96.1): + resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + file-loader: '*' + webpack: 5.96.1 + peerDependenciesMeta: + file-loader: + optional: true dependencies: + file-loader: 6.2.0(webpack@5.96.1) loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.105.4 - optionalDependencies: - file-loader: 6.2.0(webpack@5.105.4) + webpack: 5.96.1 + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + dev: false - util-deprecate@1.0.2: {} + /utility-types@3.11.0: + resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} + engines: {node: '>= 4'} - utila@0.4.0: {} + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: false - utility-types@3.11.0: {} + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false - utils-merge@1.0.1: {} + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false - uuid@8.3.2: {} + /uvu@0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + dequal: 2.0.3 + diff: 5.2.2 + kleur: 4.1.5 + sade: 1.8.1 + dev: false - value-equal@1.0.1: {} + /value-equal@1.0.1: + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + dev: false - vary@1.1.2: {} + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: false - vfile-location@5.0.3: + /vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} dependencies: '@types/unist': 3.0.3 vfile: 6.0.3 + dev: false - vfile-message@4.0.3: + /vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} dependencies: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 - vfile@6.0.3: + /vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} dependencies: '@types/unist': 3.0.3 - vfile-message: 4.0.3 + vfile-message: 4.0.2 - viem@2.47.6(typescript@5.2.2): + /viem@2.44.4(typescript@5.4.5): + resolution: {integrity: sha512-sJDLVl2EsS5Fo7GSWZME5CXEV7QRYkUJPeBw7ac+4XI3D4ydvMw/gjulTsT5pgqcpu70BploFnOAC6DLpan1Yg==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.2.2) + abitype: 1.2.3(typescript@5.4.5) isows: 1.0.7(ws@8.18.3) - ox: 0.14.7(typescript@5.2.2) + ox: 0.11.3(typescript@5.4.5) + typescript: 5.4.5 ws: 8.18.3 - optionalDependencies: - typescript: 5.2.2 transitivePeerDependencies: - bufferutil - utf-8-validate - zod + dev: false - watchpack@2.5.1: + /watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - wbuf@1.7.3: + /wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} dependencies: minimalistic-assert: 1.0.1 + dev: false + + /web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + dev: false - web-namespaces@2.0.1: {} + /web-worker@1.5.0: + resolution: {integrity: sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==} + dev: false - webpack-bundle-analyzer@4.10.2: + /webpack-bundle-analyzer@4.10.2: + resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==} + engines: {node: '>= 10.13.0'} + hasBin: true dependencies: '@discoveryjs/json-ext': 0.5.7 - acorn: 8.16.0 - acorn-walk: 8.3.5 + acorn: 8.14.0 + acorn-walk: 8.3.4 commander: 7.2.0 debounce: 1.2.1 escape-string-regexp: 4.0.0 @@ -11442,171 +10826,279 @@ snapshots: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false - webpack-dev-middleware@5.3.4(webpack@5.105.4): + /webpack-dev-middleware@5.3.4(webpack@5.96.1): + resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: 5.96.1 dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 - schema-utils: 4.3.3 - webpack: 5.105.4 + schema-utils: 4.2.0 + webpack: 5.96.1 + dev: false - webpack-dev-server@4.15.2(webpack@5.105.4): + /webpack-dev-server@4.15.2(webpack@5.96.1): + resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: 5.96.1 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.25 + '@types/express': 4.17.21 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.10 + '@types/serve-static': 1.15.7 '@types/sockjs': 0.3.36 - '@types/ws': 8.18.1 + '@types/ws': 8.5.13 ansi-html-community: 0.0.8 - bonjour-service: 1.3.0 + bonjour-service: 1.2.1 chokidar: 3.6.0 colorette: 2.0.20 - compression: 1.8.1 + compression: 1.7.5 connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 - express: 4.22.1 + express: 4.21.2 graceful-fs: 4.2.11 html-entities: 2.6.0 - http-proxy-middleware: 2.0.9(@types/express@4.17.25) - ipaddr.js: 2.3.0 - launch-editor: 2.13.2 + http-proxy-middleware: 2.0.9(@types/express@4.17.21) + ipaddr.js: 2.2.0 + launch-editor: 2.9.1 open: 8.4.2 p-retry: 4.6.2 rimraf: 3.0.2 - schema-utils: 4.3.3 + schema-utils: 4.2.0 selfsigned: 2.4.1 - serve-index: 1.9.2 + serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.105.4) - ws: 8.20.0 - optionalDependencies: - webpack: 5.105.4 + webpack: 5.96.1 + webpack-dev-middleware: 5.3.4(webpack@5.96.1) + ws: 8.18.3 transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate + dev: false - webpack-merge@5.10.0: + /webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} dependencies: clone-deep: 4.0.1 flat: 5.0.2 wildcard: 2.0.1 - webpack-sources@3.3.4: {} + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} - webpack@5.105.4: + /webpack@5.96.1: + resolution: {integrity: sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true dependencies: '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.16.0 - acorn-import-phases: 1.0.4(acorn@8.16.0) - browserslist: 4.28.1 + '@types/estree': 1.0.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.14.0 + browserslist: 4.28.0 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.20.1 - es-module-lexer: 2.0.0 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.1 + loader-runner: 4.3.0 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.3 - tapable: 2.3.2 - terser-webpack-plugin: 5.4.0(webpack@5.105.4) - watchpack: 2.5.1 - webpack-sources: 3.3.4 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.96.1) + watchpack: 2.4.2 + webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpackbar@5.0.2(webpack@5.105.4): + /webpackbar@5.0.2(webpack@5.96.1): + resolution: {integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==} + engines: {node: '>=12'} + peerDependencies: + webpack: 5.96.1 dependencies: chalk: 4.1.2 consola: 2.15.3 pretty-time: 1.1.0 - std-env: 3.10.0 - webpack: 5.105.4 + std-env: 3.7.0 + webpack: 5.96.1 + dev: false - websocket-driver@0.7.4: + /websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} dependencies: - http-parser-js: 0.5.10 + http-parser-js: 0.5.8 safe-buffer: 5.2.1 websocket-extensions: 0.1.4 + dev: false - websocket-extensions@0.1.4: {} - - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 - - whatwg-mimetype@4.0.0: {} + /websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + dev: false - which@1.2.14: + /which@1.2.14: + resolution: {integrity: sha512-16uPglFkRPzgiUXYMi1Jf8Z5EzN1iB4V0ZtMXcHZnwsBtQhhHeCqoWw7tsUY42hJGNDWtUsVLTjakIa5BgAxCw==} + hasBin: true dependencies: isexe: 2.0.0 + dev: true - which@1.3.1: + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true dependencies: isexe: 2.0.0 + dev: false - which@2.0.2: + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 + dev: false - widest-line@4.0.1: + /widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} dependencies: string-width: 5.1.2 + dev: false + + /wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - wildcard@2.0.1: {} + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: false - wrap-ansi@8.1.0: + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} dependencies: - ansi-styles: 6.2.3 + ansi-styles: 6.2.1 string-width: 5.1.2 - strip-ansi: 7.2.0 + strip-ansi: 7.1.0 + dev: false - wrappy@1.0.2: {} + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: false - write-file-atomic@3.0.3: + /write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} dependencies: imurmurhash: 0.1.4 is-typedarray: 1.0.0 signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 + dev: false - ws@7.5.10: {} - - ws@8.18.3: {} + /ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false - ws@8.20.0: {} + /ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false - xdg-basedir@5.1.0: {} + /xdg-basedir@5.1.0: + resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} + engines: {node: '>=12'} + dev: false - xml-js@1.6.11: + /xml-js@1.6.11: + resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} + hasBin: true dependencies: - sax: 1.6.0 + sax: 1.4.1 + dev: false + + /yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true - yallist@2.1.2: {} + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: false - yallist@3.1.1: {} + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: false - yaml@1.10.3: {} + /yaml@2.6.0: + resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} + engines: {node: '>= 14'} + hasBin: true + dev: false - yocto-queue@0.1.0: {} + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: false - yocto-queue@1.2.2: {} + /yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + dev: false - zwitch@2.0.4: {} + /zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} diff --git a/scripts/run-tests.mjs b/scripts/run-tests.mjs index d11ef7587..8d104b3d9 100644 --- a/scripts/run-tests.mjs +++ b/scripts/run-tests.mjs @@ -13,6 +13,7 @@ const TEST_DIR = path.join(ROOT, '__tests__'); /** @type {readonly string[]} */ export const TEST_FILES = [ 'run-tests-manifest.test.mjs', + 'build-toolchain-constraints.test.mjs', 'doc-skill-pairing.test.mjs', 'morph-doc-skill-inventory.test.mjs', 'morph-contracts-skill-tokenlist.test.mjs', @@ -21,7 +22,6 @@ export const TEST_FILES = [ 'morph-js-sdk-skill.test.mjs', 'morph-rails-skill.test.mjs', 'morph-tx-cost-skill.test.mjs', - 'morphchain-bridge-skill.test.mjs', 'morph-doc-agent.test.mjs', 'morph-dapp-agent.test.mjs', 'morph-skill-ln.test.mjs', From a5842d11cd96298b323caddf3b8a5da9802cc367 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Tue, 28 Apr 2026 10:27:09 +0800 Subject: [PATCH 04/25] fix: add agents --- AGENTS.md | 10 +- CLAUDE.md | 3 +- __tests__/agents-sidebar.test.mjs | 31 +++++ __tests__/markdown-actions-routes.test.mjs | 3 +- __tests__/markdown-source-export.test.mjs | 21 +++ __tests__/mdx-navigation-pages.test.mjs | 30 +++++ agents/morph-dapp-agent.md | 9 +- agents/morph-doc-agent.md | 17 ++- ...ion-page.md => 0-user-navigation-page.mdx} | 0 docs/about-morph/4-morphs-architecture.md | 2 +- ...age.md => 0-developer-navigation-page.mdx} | 3 +- docusaurus.config.js | 16 ++- plugins/markdown-source-plugin.js | 121 +++++++++++------- scripts/run-tests.mjs | 3 + sidebars-agents.js | 16 +++ sidebars-skills.js | 27 +++- src/utils/isMarkdownActionsPathname.js | 8 +- 17 files changed, 248 insertions(+), 72 deletions(-) create mode 100644 __tests__/agents-sidebar.test.mjs create mode 100644 __tests__/markdown-source-export.test.mjs create mode 100644 __tests__/mdx-navigation-pages.test.mjs rename docs/about-morph/{0-user-navigation-page.md => 0-user-navigation-page.mdx} (100%) rename docs/build-on-morph/{0-developer-navigation-page.md => 0-developer-navigation-page.mdx} (97%) create mode 100644 sidebars-agents.js diff --git a/AGENTS.md b/AGENTS.md index ffdcbc2b2..735214454 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -13,7 +13,7 @@ This is the Morph Documentation website (Docusaurus 3.1.1). Morph is an optimist - **Vision (docs-as-SKILL, external brain, toolchain):** [`VISION.md`](./VISION.md) — write and review MDX/SKILL pairs against this contract so models can instantiate behavior reliably. - **Human-readable docs:** `docs/` (MDX). Prefer linking to the authoritative page instead of duplicating long specs in chat. - **Executable topic summaries:** `skills//SKILL.md` (see [`skills/README.md`](./skills/README.md)). Use these for routing and concise procedures. -- **Agent sub-definition:** [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md) — skill authoring from a single goal. Canonical skill path is **`skills//`** at repo root; see [`skills/README.md`](./skills/README.md) to symlink into Cursor / Claude Code / OpenClaw global dirs. When in doubt, treat `docs/` + `skills/` as the product source of truth. +- **Agent sub-definition:** `agents/*.md` (also published under `/agents/` on the doc site; navbar **Agents**). Start with [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md) for skill authoring from a single goal. Canonical skill path is **`skills//`** at repo root; see [`skills/README.md`](./skills/README.md) to symlink into Cursor / Claude Code / OpenClaw global dirs. When in doubt, treat `docs/` + `skills/` as the product source of truth. ## Development commands @@ -45,6 +45,8 @@ This is the Morph Documentation website (Docusaurus 3.1.1). Morph is an optimist - `docs/` — MDX content (`build-on-morph/`, `about-morph/`, `how-morph-works/`, `morph-rails/`, …) - `docs/build-on-morph/sdk/{classes,enumerations,functions,interfaces,type-aliases,variables}/` — **typedoc-generated API reference**; do **not** hand-edit these files or add frontmatter (including `doc_skill_id`), they will be overwritten on regeneration. See [`VISION.md`](./VISION.md) § Pairing Policy. +- `skills/` — executable SKILL topics (mirrored on the site at `/skills/`) +- `agents/` — agent role definitions (mirrored on the site at `/agents/`) - `src/components/` — React (`MorphRpc/`, `AltFee/`, `ApiExplorer/`, …) - `static/` — assets - `plugins/` — custom Docusaurus plugins @@ -52,7 +54,7 @@ This is the Morph Documentation website (Docusaurus 3.1.1). Morph is an optimist ### Configuration -- `docusaurus.config.js` — main config, sidebars reference +- `docusaurus.config.js` — main config, sidebars reference (`sidebars.js`, `sidebars-skills.js`, `sidebars-agents.js`) - `sidebars.js` — nav (Get Started, Morph Chain, Node Operators, Learn, Morph Rails) - `tailwind.config.js` — theme tokens - `config.json` — Algolia DocSearch @@ -63,7 +65,7 @@ This is the Morph Documentation website (Docusaurus 3.1.1). Morph is an optimist ### Plugins -- Markdown source plugin: `plugins/markdown-source-plugin.js` +- Markdown source plugin: `plugins/markdown-source-plugin.js` — post-build exports cleaned `.md` into `build/docs/`, `build/skills/`, and `build/agents/` (mirrors site routes) - Client redirects, Sass plugin, Mermaid theme ## Documentation structure (sidebar) @@ -73,6 +75,8 @@ This is the Morph Documentation website (Docusaurus 3.1.1). Morph is an optimist 3. **Node Operators** — full node, validators 4. **Learn** — concepts and architecture 5. **Morph Rails** — infrastructure (e.g. AltFee, Reference Key) +6. **Agent Skills** — `skills/` SKILL playbooks (site path `/skills/`) +7. **Agents** — `agents/*.md` role definitions (site path `/agents/`) ## Component patterns diff --git a/CLAUDE.md b/CLAUDE.md index c5542838d..18e745dff 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -10,10 +10,11 @@ Optional personal overrides: `CLAUDE.local.md` (git-ignored). Nested `CLAUDE.md` ## What this repo is -A Docusaurus 3.1.1 site (`morph-doc`) that doubles as the source of truth for **Morph Agent Skills**. Two linked surfaces: +A Docusaurus 3.1.1 site (`morph-doc`) that doubles as the source of truth for **Morph Agent Skills** and agent definitions. Linked surfaces: - `docs/**/*.mdx|.md` — human-readable documentation. Long-form content, tables, demos. - `skills//SKILL.md` — routable, executable summaries for AI agents. Each declares YAML frontmatter (`name`, `description`, `last_verified`, `verified_against`). +- `agents/*.md` — agent role definitions (also routed at `/agents/` on the built site). Pairing is enforced: MDX pages marked `doc_skill_id: ` must match a `skills//SKILL.md` whose `name` equals ``. See `__tests__/doc-skill-pairing.test.mjs`. diff --git a/__tests__/agents-sidebar.test.mjs b/__tests__/agents-sidebar.test.mjs new file mode 100644 index 000000000..c2c7201c5 --- /dev/null +++ b/__tests__/agents-sidebar.test.mjs @@ -0,0 +1,31 @@ +/** + * sidebars-agents.js doc ids must match agents/*.md (top-level only). + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const AGENTS_DIR = path.join(ROOT, 'agents'); +const SIDEBAR_FILE = path.join(ROOT, 'sidebars-agents.js'); + +const mdFiles = fs + .readdirSync(AGENTS_DIR) + .filter((f) => f.endsWith('.md')) + .sort(); + +const expectedIds = mdFiles.map((f) => path.basename(f, '.md')).sort(); + +const sidebarSrc = fs.readFileSync(SIDEBAR_FILE, 'utf8'); +const listed = [...sidebarSrc.matchAll(/id:\s*['"]([^'"]+)['"]/g)].map((m) => m[1]); +listed.sort(); + +assert.deepEqual( + listed, + expectedIds, + 'sidebars-agents.js doc ids must match agents/*.md (update sidebar when adding an agent doc)', +); + +console.log('agents-sidebar: ok (%d pages)', expectedIds.length); diff --git a/__tests__/markdown-actions-routes.test.mjs b/__tests__/markdown-actions-routes.test.mjs index 23843e9d9..9a4a9bf39 100644 --- a/__tests__/markdown-actions-routes.test.mjs +++ b/__tests__/markdown-actions-routes.test.mjs @@ -1,5 +1,5 @@ /** - * MarkdownActionsDropdown + Root injection: eligible pathnames (docs + skills plugins). + * MarkdownActionsDropdown + Root injection: eligible pathnames (docs + skills + agents plugins). */ import assert from 'node:assert/strict'; import fs from 'node:fs'; @@ -16,6 +16,7 @@ const ROOT = path.join(__dirname, '..'); assert.equal(isMarkdownActionsPathname('/docs/foo/bar'), true); assert.equal(isMarkdownActionsPathname('/skills/README'), true); assert.equal(isMarkdownActionsPathname('/skills/morphchain-bridge/SKILL'), true); +assert.equal(isMarkdownActionsPathname('/agents/morph-doc-agent'), true); assert.equal(isMarkdownActionsPathname('/blog/post'), false); assert.equal(isMarkdownActionsPathname('/'), false); assert.equal(isMarkdownActionsPathname(''), false); diff --git a/__tests__/markdown-source-export.test.mjs b/__tests__/markdown-source-export.test.mjs new file mode 100644 index 000000000..ba749abc1 --- /dev/null +++ b/__tests__/markdown-source-export.test.mjs @@ -0,0 +1,21 @@ +/** + * plugins/markdown-source-plugin.js must export cleaned .md for docs, skills, and agents into build/. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const PLUGIN = path.join(__dirname, '..', 'plugins', 'markdown-source-plugin.js'); +const src = fs.readFileSync(PLUGIN, 'utf8'); + +assert.match(src, /MARKDOWN_EXPORT_SOURCES\s*=\s*\[/, 'MARKDOWN_EXPORT_SOURCES array exists'); +for (const sub of ['docs', 'skills', 'agents']) { + assert.ok( + src.includes(`sourceSubdir: '${sub}'`) && src.includes(`outSubdir: '${sub}'`), + `export config must include ${sub}`, + ); +} + +console.log('markdown-source-export: ok'); diff --git a/__tests__/mdx-navigation-pages.test.mjs b/__tests__/mdx-navigation-pages.test.mjs new file mode 100644 index 000000000..784e79971 --- /dev/null +++ b/__tests__/mdx-navigation-pages.test.mjs @@ -0,0 +1,30 @@ +/** + * With `markdown.format: 'detect'` (docusaurus.config.js), only `.mdx` is compiled as MDX. + * Navigation pages use `import` + ``; they must stay `.mdx` or components won't render. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); + +const MDX_NAV_PAGES = [ + 'docs/build-on-morph/0-developer-navigation-page.mdx', + 'docs/about-morph/0-user-navigation-page.mdx', +]; + +for (const rel of MDX_NAV_PAGES) { + const abs = path.join(ROOT, rel); + assert.ok(fs.existsSync(abs), `expected ${rel} to exist`); + assert.ok(rel.endsWith('.mdx'), `${rel} must use .mdx for MDX (import/JSX)`); + const raw = fs.readFileSync(abs, 'utf8'); + assert.ok( + raw.includes("from '@site/src/components/Card'") || raw.includes('from "@site/src/components/Card"'), + `${rel} must import Card from @site/src/components/Card`, + ); + assert.ok(raw.includes('.md` + one code landing + one review report. Do not fan out into parallel multi-feature runs in the same session. -3. **Morph facts come from the repo, never training data.** Addresses, chainIds, RPCs, Alt Fee fields must be resolved via the fact-table SKILLs that the child SKILLs already cite — see [`CLAUDE.md`](../CLAUDE.md) § Repo-specific conventions. +3. **Morph facts come from the repo, never training data.** Addresses, chainIds, RPCs, Alt Fee fields must be resolved via the fact-table SKILLs that the child SKILLs already cite — see [`CLAUDE.md`](https://github.com/morph-l2/morph-doc/blob/main/CLAUDE.md) § Repo-specific conventions. 4. **Read-only on review, no auto commit/push at any stage.** The review SKILL must stay read-only; wrap-up surfaces blockers to the user and stops. ## Default SKILL set (must be loadable) @@ -26,7 +27,7 @@ Child SKILLs the workflow hands off to: Fact-table SKILLs are **already referenced by the four child SKILLs above via their `verified_against` and `Related Skills` sections** — do not re-list them here; load them transitively only when the executing child SKILL tells you to. -If any of the four files above is missing from the current IDE, stop and point the user at [`skills/README.md`](../skills/README.md) (use `scripts/morph-skill-ln` to symlink into Cursor / Claude Code / OpenClaw global dirs). +If any of the four files above is missing from the current IDE, stop and point the user at [`skills/README.md`](https://github.com/morph-l2/morph-doc/blob/main/skills/README.md) (use `scripts/morph-skill-ln` to symlink into Cursor / Claude Code / OpenClaw global dirs). ## Routing rules @@ -55,7 +56,7 @@ Classify every incoming request before picking a SKILL: - Do not skip the planning stage for non-trivial features — if the user pushes to jump straight to code without a planning document, ask once; if they insist, record the decision in the planning document's Open Questions or abort. - Do not hard-code Morph chainIds, RPC URLs, or predeployed addresses in any generated output — the child SKILLs already enforce this, so reject code that violates it instead of patching it up silently. - Do not auto `git commit` / `git push`; the review SKILL is read-only and the wrap-up stage defers the merge decision to the user. -- Do not write new SKILLs or refactor existing ones from this agent; for that, hand off to [`morph-doc-agent`](./morph-doc-agent.md). +- Do not write new SKILLs or refactor existing ones from this agent; for that, hand off to [morph-doc-agent](/agents/morph-doc-agent). ## Related Skills diff --git a/agents/morph-doc-agent.md b/agents/morph-doc-agent.md index 73081460f..872a469d6 100644 --- a/agents/morph-doc-agent.md +++ b/agents/morph-doc-agent.md @@ -1,8 +1,11 @@ --- name: morph-doc-agent -description: Dedicated to the Morph doc repository: given a single "goal/topic" from the user, generates a loadable, executable Agent Skill (skills//SKILL.md under the repo root); or runs conformance checks on existing skills (frontmatter, directory-name consistency, doc_skill_id pairing). Doc-as-SKILL — write or audit following the Skill spec so the model can instantiate the corresponding domain behavior from that SKILL. Use when writing or refactoring morph-doc skills, auditing existing skills, turning a topic into a skill, or when the user says they want a skill doc from a goal. +title: Morph Doc Agent +description: "Dedicated to the Morph doc repository: given a single goal/topic from the user, generates a loadable, executable Agent Skill (skills//SKILL.md under the repo root); or runs conformance checks on existing skills (frontmatter, directory-name consistency, doc_skill_id pairing). Doc-as-SKILL — write or audit following the Skill spec so the model can instantiate the corresponding domain behavior from that SKILL. Use when writing or refactoring morph-doc skills, auditing existing skills, turning a topic into a skill, or when the user says they want a skill doc from a goal." --- + + You are **morph-doc-agent**: in the `morph-doc` repository, you turn a user's **single goal** into **a SKILL that a model can directly use**, or run **conformance checks and gap reports** on existing `skills//SKILL.md` files — not lengthy prose written for humans. ## Core Principles (must follow) @@ -12,15 +15,15 @@ You are **morph-doc-agent**: in the `morph-doc` repository, you turn a user's ** 2. **Write "docs" to the SKILL spec** - **Required YAML frontmatter**: `name` (matches directory name, lowercase + hyphens) and `description` (third-person, clearly states capability boundary and **trigger scenarios** to help the model route). - - **Recommended frontmatter**: `last_verified` (ISO date) and `verified_against` (list of source paths). See [`VISION.md`](../VISION.md) § Skill Verification Metadata for semantics and the 90-day decay rule. + - **Recommended frontmatter**: `last_verified` (ISO date) and `verified_against` (list of source paths). See [`VISION.md`](https://github.com/morph-l2/morph-doc/blob/main/VISION.md) § Skill Verification Metadata for semantics and the 90-day decay rule. - **Body**: concise and executable; assume the model already has general programming knowledge — only add repo/topic-specific flows, constraints, and facts. - - **Cross-skill references**: when pointing to a sibling skill, use a dedicated `## Related Skills` section (pointer only, no content copy). See [`VISION.md`](../VISION.md) § Cross-Skill References. + - **Cross-skill references**: when pointing to a sibling skill, use a dedicated `## Related Skills` section (pointer only, no content copy). See [`VISION.md`](https://github.com/morph-l2/morph-doc/blob/main/VISION.md) § Cross-Skill References. 3. **Single goal → single skill** User provides one goal (topic, scenario, type of questions to cover) → you derive a **skill directory name** (e.g. `morph-`) and produce a **complete** `SKILL.md`. 4. **Runnable immediately after writing** - Any reader (or model) who places the skill in **`skills//`** in the repo (or symlinks it to Cursor / Claude / OpenClaw global skills per [`skills/README.md`](../skills/README.md)) should be able to trigger it by matching the `description` in conversation — and the model should execute per the SKILL body. Therefore the body must contain: **what to read first, what to do next, what to self-check**. + Any reader (or model) who places the skill in **`skills//`** in the repo (or symlinks it to Cursor / Claude / OpenClaw global skills per [`skills/README.md`](https://github.com/morph-l2/morph-doc/blob/main/skills/README.md)) should be able to trigger it by matching the `description` in conversation — and the model should execute per the SKILL body. Therefore the body must contain: **what to read first, what to do next, what to self-check**. ## Alignment with this repo @@ -34,7 +37,7 @@ You are **morph-doc-agent**: in the `morph-doc` repository, you turn a user's ** Confirm in one sentence: which chain the skill covers (Mainnet/Hoodi), the audience (contract/node/SDK), and **what is out of scope**. 2. **Classify doc type** - Per [`VISION.md`](../VISION.md) § Pairing Policy, decide whether the topic is *actionable*, *fact-table*, *conceptual*, *narrative*, or *generated*. Only actionable and fact-table docs need a paired Skill; skip creation for narrative/generated topics and tell the user why. + Per [`VISION.md`](https://github.com/morph-l2/morph-doc/blob/main/VISION.md) § Pairing Policy, decide whether the topic is *actionable*, *fact-table*, *conceptual*, *narrative*, or *generated*. Only actionable and fact-table docs need a paired Skill; skip creation for narrative/generated topics and tell the user why. 3. **Search the repo** Use search tools to locate specs, examples, and existing components in `docs/` and `src/`; record paths in the SKILL's "Single Source of Truth" or `references/`. Capture these paths — they become `verified_against` entries. @@ -52,7 +55,7 @@ You are **morph-doc-agent**: in the `morph-doc` repository, you turn a user's ** 3–7 checkable items so the model can verify key facts before delivering (addresses, mutual exclusions, chain IDs, etc.). 7. **Destination path** - Explicitly tell the user the file should land at: **`skills//SKILL.md`** (and optionally reference the global symlink instructions in [`skills/README.md`](../skills/README.md)). + Explicitly tell the user the file should land at: **`skills//SKILL.md`** (and optionally reference the global symlink instructions in [`skills/README.md`](https://github.com/morph-l2/morph-doc/blob/main/skills/README.md)). ## Auditing Existing Skills @@ -68,7 +71,7 @@ When the user requests "check / audit / inventory existing skills" or a consiste Confirm at least one executable thread exists: e.g. a "Single Source of Truth" or equivalent pointer to a `docs/` path, "Execution Steps" or "Self-Check" — can be trimmed by topic, but headings without any action are not acceptable. 4. **Doc pairing** - If a MDX/MD file declares `doc_skill_id`, its value must equal the corresponding directory name, and that `skills//SKILL.md`'s `name` must match. Pairing is locked by [`__tests__/doc-skill-pairing.test.mjs`](../__tests__/doc-skill-pairing.test.mjs); frontmatter-to-directory-name consistency for all skills is validated by [`__tests__/morph-doc-skill-inventory.test.mjs`](../__tests__/morph-doc-skill-inventory.test.mjs). + If a MDX/MD file declares `doc_skill_id`, its value must equal the corresponding directory name, and that `skills//SKILL.md`'s `name` must match. Pairing is locked by [`__tests__/doc-skill-pairing.test.mjs`](https://github.com/morph-l2/morph-doc/blob/main/__tests__/doc-skill-pairing.test.mjs); frontmatter-to-directory-name consistency for all skills is validated by [`__tests__/morph-doc-skill-inventory.test.mjs`](https://github.com/morph-l2/morph-doc/blob/main/__tests__/morph-doc-skill-inventory.test.mjs). 5. **Output audit report** Provide a table or list with: passing items, failing items (file path + specific issue), and optional fix suggestions (correct `name`, add `description`, add `doc_skill_id`, etc.). diff --git a/docs/about-morph/0-user-navigation-page.md b/docs/about-morph/0-user-navigation-page.mdx similarity index 100% rename from docs/about-morph/0-user-navigation-page.md rename to docs/about-morph/0-user-navigation-page.mdx diff --git a/docs/about-morph/4-morphs-architecture.md b/docs/about-morph/4-morphs-architecture.md index 672301265..046954a52 100644 --- a/docs/about-morph/4-morphs-architecture.md +++ b/docs/about-morph/4-morphs-architecture.md @@ -57,7 +57,7 @@ This modular architecture enhances flexibility, adaptability, and composability Morph’s architecture is further defined by five pivotal roles: Sequencers, Validators, Nodes, Provers, and Layer 1 (Ethereum). Each role carries specific responsibilities and uses distinct components to fulfill its function, contributing to the seamless operation of the network. -For a deeper understanding of Morph’s architecture, please visit our comprehensive [Developer Docs](../build-on-morph/0-developer-navigation-page.md). +For a deeper understanding of Morph’s architecture, please visit our comprehensive [Developer Docs](../build-on-morph/0-developer-navigation-page.mdx). ## Safety and Security diff --git a/docs/build-on-morph/0-developer-navigation-page.md b/docs/build-on-morph/0-developer-navigation-page.mdx similarity index 97% rename from docs/build-on-morph/0-developer-navigation-page.md rename to docs/build-on-morph/0-developer-navigation-page.mdx index 7f75a3cfc..55679f026 100644 --- a/docs/build-on-morph/0-developer-navigation-page.md +++ b/docs/build-on-morph/0-developer-navigation-page.mdx @@ -4,12 +4,13 @@ lang: en-US keywords: [morph,ethereum,rollup,layer2,validity proof,optimistic zk-rollup] description: Upgrade your blockchain experience with Morph - the secure decentralized, cost-efficient, and high-performing optimistic zk-rollup solution. Try it now! --- + import { CardGroup, Card } from '@site/src/components/Card' If you’re ready to build applications on Morph, you’re in the right place. -For regular users or first-time visitors, we recommend starting with our [For Users section](../about-morph/0-user-navigation-page.md) section to explore introductory content such as definitions, our vision, key concepts, and more. +For regular users or first-time visitors, we recommend starting with our [For Users section](../about-morph/0-user-navigation-page.mdx) section to explore introductory content such as definitions, our vision, key concepts, and more. ### What is Morph? diff --git a/docusaurus.config.js b/docusaurus.config.js index 51c48665f..b3663aadf 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -78,6 +78,20 @@ const config = { rehypePlugins: [rehypeKatex], }), ], + [ + '@docusaurus/plugin-content-docs', + /** @type {import('@docusaurus/plugin-content-docs').Options} */ + ({ + id: 'agents', + path: 'agents', + routeBasePath: 'agents', + sidebarPath: require.resolve('./sidebars-agents.js'), + editUrl: ({ docPath }) => + `https://github.com/morph-l2/morph-doc/edit/main/agents/${docPath}`, + remarkPlugins: [remarkMath], + rehypePlugins: [rehypeKatex], + }), + ], 'docusaurus-plugin-sass', // Use local plugin instead of npm package to fix /docs/ path require.resolve('./plugins/markdown-source-plugin.js'), @@ -390,7 +404,7 @@ const config = { sidebarId: 'SkillsSidebar', docsPluginId: 'skills', label: 'Agent Skills', - }, + } ], }, footer: { diff --git a/plugins/markdown-source-plugin.js b/plugins/markdown-source-plugin.js index ebb5916c0..17bd520ee 100644 --- a/plugins/markdown-source-plugin.js +++ b/plugins/markdown-source-plugin.js @@ -2,10 +2,19 @@ const fs = require('fs-extra'); const path = require('path'); /** - * Local Docusaurus plugin to copy raw markdown files to build output - * Modified to output files under /docs/ path to match HTML URLs + * Local Docusaurus plugin to copy cleaned markdown files into build output + * so static hosting can serve plain `.md` alongside HTML (paths mirror site routes). + * + * Sources: docs/, skills/, agents/ → build/docs/, build/skills/, build/agents/ */ +/** @type {{ sourceSubdir: string; outSubdir: string; urlPrefix: string }[]} */ +const MARKDOWN_EXPORT_SOURCES = [ + { sourceSubdir: 'docs', outSubdir: 'docs', urlPrefix: '/docs/' }, + { sourceSubdir: 'skills', outSubdir: 'skills', urlPrefix: '/skills/' }, + { sourceSubdir: 'agents', outSubdir: 'agents', urlPrefix: '/agents/' }, +]; + // Convert Tabs/TabItem components to readable markdown format function convertTabsToMarkdown(content) { const tabsPattern = /]*>([\s\S]*?)<\/Tabs>/g; @@ -48,20 +57,23 @@ function convertDetailsToMarkdown(content) { }); } -// Extract title from frontmatter +// Extract title from frontmatter (fallback `name` for SKILL/agent defs without `title`) function getTitleFromFrontmatter(content) { const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); if (!frontmatterMatch) return null; const frontmatter = frontmatterMatch[1]; const titleMatch = frontmatter.match(/^title:\s*(.+)$/m); - if (titleMatch) return titleMatch[1].trim(); - + if (titleMatch) return titleMatch[1].trim().replace(/^["']|["']$/g, ''); + const nameMatch = frontmatter.match(/^name:\s*(.+)$/m); + if (nameMatch) return nameMatch[1].trim().replace(/^["']|["']$/g, ''); + return null; } -// Clean markdown content for raw display -function cleanMarkdownForDisplay(content, filepath) { +// Clean markdown content for raw display (urlPrefix fixes relative img/ links for each docs plugin route) +function cleanMarkdownForDisplay(content, filepath, urlPrefix = '/docs/') { + const base = urlPrefix.endsWith('/') ? urlPrefix.slice(0, -1) : urlPrefix; const fileDir = filepath.replace(/[^/]*$/, ''); // Extract title from frontmatter before stripping it @@ -140,7 +152,7 @@ function cleanMarkdownForDisplay(content, filepath) { content = content.replace( /!\[([^\]]*)\]\((\.\/)?img\/([^)]+)\)/g, (match, alt, relPrefix, filename) => { - return `![${alt}](/docs/${fileDir}img/${filename})`; + return `![${alt}](${base}/${fileDir}img/${filename})`; } ); @@ -267,51 +279,68 @@ module.exports = function markdownSourcePlugin(context, options) { name: 'markdown-source-plugin-local', async postBuild({ outDir }) { - const docsDir = path.join(context.siteDir, 'docs'); - // Output to /docs/ subdirectory to match HTML URLs - const buildDir = path.join(outDir, 'docs'); - - console.log('[markdown-source-plugin-local] Copying markdown source files to /docs/...'); - - const mdFiles = findMarkdownFiles(docsDir); - - let copiedCount = 0; - - for (const mdFile of mdFiles) { - const sourcePath = path.join(docsDir, mdFile); - - try { - // Read content first to extract id/slug from frontmatter - const content = await fs.readFile(sourcePath, 'utf8'); - - // Get the output path (uses id from frontmatter or removes numeric prefix) - const outputPath = getOutputPath(mdFile, content); - const destPath = path.join(buildDir, outputPath); - - await fs.ensureDir(path.dirname(destPath)); - - const cleanedContent = cleanMarkdownForDisplay(content, outputPath); - - await fs.writeFile(destPath, cleanedContent, 'utf8'); - copiedCount++; + let totalCopied = 0; + + for (const { sourceSubdir, outSubdir, urlPrefix } of MARKDOWN_EXPORT_SOURCES) { + const sourceDir = path.join(context.siteDir, sourceSubdir); + if (!fs.existsSync(sourceDir)) { + console.warn( + `[markdown-source-plugin-local] Skip missing directory: ${sourceSubdir}` + ); + continue; + } - if (mdFile !== outputPath) { - console.log(` ✓ Processed: ${mdFile} → docs/${outputPath}`); - } else { - console.log(` ✓ Processed: docs/${outputPath}`); + const buildDir = path.join(outDir, outSubdir); + console.log( + `[markdown-source-plugin-local] Copying markdown source files to /${outSubdir}/...` + ); + + const mdFiles = findMarkdownFiles(sourceDir); + + for (const mdFile of mdFiles) { + const sourcePath = path.join(sourceDir, mdFile); + + try { + const content = await fs.readFile(sourcePath, 'utf8'); + const outputPath = getOutputPath(mdFile, content); + const destPath = path.join(buildDir, outputPath); + + await fs.ensureDir(path.dirname(destPath)); + + const cleanedContent = cleanMarkdownForDisplay( + content, + outputPath, + urlPrefix + ); + + await fs.writeFile(destPath, cleanedContent, 'utf8'); + totalCopied++; + + if (mdFile !== outputPath) { + console.log(` ✓ Processed: ${sourceSubdir}/${mdFile} → ${outSubdir}/${outputPath}`); + } else { + console.log(` ✓ Processed: ${outSubdir}/${outputPath}`); + } + } catch (error) { + console.error( + ` ✗ Failed to process ${sourceSubdir}/${mdFile}:`, + error.message + ); } - } catch (error) { - console.error(` ✗ Failed to process docs/${mdFile}:`, error.message); } } - console.log(`[markdown-source-plugin-local] Successfully copied ${copiedCount} markdown files`); + console.log( + `[markdown-source-plugin-local] Successfully copied ${totalCopied} markdown files (docs + skills + agents)` + ); - // Copy image directories + // Copy image directories from docs/ only (site images live under docs) + const docsDir = path.join(context.siteDir, 'docs'); console.log('[markdown-source-plugin-local] Copying image directories...'); const imgDirCount = await copyImageDirectories(docsDir, outDir); - console.log(`[markdown-source-plugin-local] Successfully copied ${imgDirCount} image directories`); + console.log( + `[markdown-source-plugin-local] Successfully copied ${imgDirCount} image directories` + ); }, }; -}; - +}; \ No newline at end of file diff --git a/scripts/run-tests.mjs b/scripts/run-tests.mjs index 8d104b3d9..e76c37d98 100644 --- a/scripts/run-tests.mjs +++ b/scripts/run-tests.mjs @@ -31,9 +31,12 @@ export const TEST_FILES = [ 'morph-dapp-code-review-skill.test.mjs', 'morph-dapp-workflow-skill.test.mjs', 'agent-driven-development-workflow-doc.test.mjs', + 'agents-sidebar.test.mjs', 'examples-viem-alt-fee.test.mjs', 'is-alt-fee.test.mjs', 'markdown-actions-routes.test.mjs', + 'markdown-source-export.test.mjs', + 'mdx-navigation-pages.test.mjs', ]; function main() { diff --git a/sidebars-agents.js b/sidebars-agents.js new file mode 100644 index 000000000..290a43665 --- /dev/null +++ b/sidebars-agents.js @@ -0,0 +1,16 @@ +/** + * Agent definitions (agents/*.md): mirror markdown files in agents/. + * When adding a file here, append an entry; run __tests__/agents-sidebar.test.mjs to validate. + */ + +// @ts-check + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const AgentsSidebar = [ + { type: 'doc', id: 'morph-doc-agent', label: 'Morph Doc Agent' }, + { type: 'doc', id: 'morph-dapp-agent', label: 'Morph dApp Agent' }, +]; + +module.exports = { + AgentsSidebar, +}; diff --git a/sidebars-skills.js b/sidebars-skills.js index db615c6f4..8e84ddf7a 100644 --- a/sidebars-skills.js +++ b/sidebars-skills.js @@ -1,6 +1,7 @@ /** * Agent Skills (skills/) sidebar: mirrors each subdirectory's SKILL.md and skills/README.md. * When adding a new skill, append an entry here; or run __tests__/skills-sidebar.test.mjs to validate against the directory. + * Agent *definitions* (agents/*.md) live in the separate docs plugin at /agents/ — the "Agents" links below point there. */ // @ts-check @@ -10,19 +11,35 @@ const SkillsSidebar = [ { type: 'doc', id: 'README', label: 'Overview' }, { type: 'category', - label: 'Skill playbooks', + label: 'Agents', + collapsed: false, + items: [ + { type: 'link', label: 'Morph Doc Agent', href: '/agents/morph-doc-agent' }, + { type: 'link', label: 'Morph dApp Agent', href: '/agents/morph-dapp-agent' }, + ], + }, + { + type: 'category', + label: 'Harness', collapsed: false, items: [ - { type: 'doc', id: 'morph-contracts/SKILL', label: 'Morph Contract Addresses' }, - { type: 'doc', id: 'morph-dapp-code-review/SKILL', label: 'Morph dApp Code Review' }, - { type: 'doc', id: 'morph-dapp-codegen/SKILL', label: 'Morph dApp TDD Codegen' }, - { type: 'doc', id: 'morph-dapp-planning/SKILL', label: 'Morph dApp Planning' }, { type: 'doc', id: 'morph-dapp-workflow/SKILL', label: 'Morph dApp End-to-End Workflow' }, + { type: 'doc', id: 'morph-dapp-planning/SKILL', label: 'Morph dApp Planning' }, + { type: 'doc', id: 'morph-dapp-codegen/SKILL', label: 'Morph dApp TDD Codegen' }, + { type: 'doc', id: 'morph-dapp-code-review/SKILL', label: 'Morph dApp Code Review' }, + ], + }, + { + type: 'category', + label: 'Skill playbooks', + collapsed: false, + items: [ { type: 'doc', id: 'morph-full-node-run-on-host/SKILL', label: 'Morph Full Node (host)' }, { type: 'doc', id: 'morph-js-sdk/SKILL', label: 'Morph JS/TS SDK' }, { type: 'doc', id: 'morph-rails/SKILL', label: 'Morph Rails' }, { type: 'doc', id: 'morph-skill-ln/SKILL', label: 'morph-skill-ln (symlink script)' }, { type: 'doc', id: 'morph-tx-cost/SKILL', label: 'Morph Transaction Fees' }, + { type: 'doc', id: 'morph-contracts/SKILL', label: 'Morph Contract Addresses' }, ], }, ]; diff --git a/src/utils/isMarkdownActionsPathname.js b/src/utils/isMarkdownActionsPathname.js index 99c2dfd4b..2c01576d2 100644 --- a/src/utils/isMarkdownActionsPathname.js +++ b/src/utils/isMarkdownActionsPathname.js @@ -1,12 +1,16 @@ /** - * Pathnames where MarkdownActionsDropdown is injected (Docusaurus `docs` + `skills` plugins). + * Pathnames where MarkdownActionsDropdown is injected (`docs` + `skills` + `agents` plugins). * CommonJS so Node test runners can `require()` it without package `"type":"module"`. * @param {string} pathname * @returns {boolean} */ function isMarkdownActionsPathname(pathname) { if (typeof pathname !== 'string' || !pathname) return false; - return pathname.startsWith('/docs/') || pathname.startsWith('/skills/'); + return ( + pathname.startsWith('/docs/') || + pathname.startsWith('/skills/') || + pathname.startsWith('/agents/') + ); } module.exports = { isMarkdownActionsPathname }; From d210ca23a55aa8c37eb17c1d79e7dda673a9008d Mon Sep 17 00:00:00 2001 From: "marvel.yu" Date: Tue, 28 Apr 2026 14:55:02 +0800 Subject: [PATCH 05/25] update withdaw img and fix tx status desc (#143) Co-authored-by: marvel.yu --- .../docs/protocol/general/bridge/withdraw.png | Bin 99262 -> 1481761 bytes ...3-transaction-statuses-on-morph-mainnet.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/docs/protocol/general/bridge/withdraw.png b/assets/docs/protocol/general/bridge/withdraw.png index 9b6116a0dcf10f67017291e07d70528e557ebb48..2f0f75908673bde95f8042718ba67b2e41b79e59 100644 GIT binary patch literal 1481761 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

xzK1af4)?sA9MGXB!-u=G{WY8K+!Niaka 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

h-y%%fq7D7-IDf!V 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 k70v3g+y*Ef(?QY%e3?m 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

uswyW* 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 z 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ΝT@-AOyxEUXFdy965HGSi{j-2h8 z9VwX{Xmzzxs8#d>T|f*(pD038ogF-A>o=9Q#bUt%Zr#XhJ*OaB;O6s^-Ua^w+O#7R zc{?eJ-9*TQKm^I6Cpn#JjKup!0Ju5Ut!$Ed+P9k`FP(*8?f^C3cITvi1JcVeq}aq5 z#LbD2P&$+)A0C*L@^a#0H8HGvw{L=OHV%b((-5F~1FMfl2FpcI@u@{5>n&MfH8y*r za|Fnzl1h%1++2Egj1wi|S5#$1wAE36MhXJmzpcyYP7|z5q3s}d5TI21;00`p@ZoGN zozmwib0e*X*Bk$iVl!jY9P%TTA8m9w2wO6LsK5)<-yFQn-wW?!6CCoS;H3j$e(gdq zOTt>kYDs!(m3dp0(exB@m>!w;4UfmT1@?gz zN9i+q{x5#exJxSnYwU1M7?07)Y;zSl3to;I0kIB!e(u`Ce&!|>{MeU|v*a?(&~^4@ z`OCSZLBm6=rY-5yBXROSx0HOrz6AJMjp?i~Y_fPxgehk`(?os+&o_qULNlB>CYN5oHK{*v^VmEAePOVrYfgzo#<0wwR)A^!cj_~EJ*(-pC( zhlbH+r0~T{wSw@r!Q73f1`=K3FTTzwx^;1!p zEYwu3)j9#``~3o>T1IA~i-AZ#J!m+%q|&fpeMIw-L3yL@`vAv;7bZoM1jFS0mDhom z3SSuq??&bfE%M#Rj4Mxme4bmUUjXgxnbNK$wmwdeh!@WjSI*f?(#IL|IevgIiu;NL zrTonPu(*!QeOIsKc8;AI2j-cC*ls8;co9fF&zAQuEE159YTF_`R-5L) zar$b;z+8)Q%>0Y6%At`eAn&I6dX0&GvEWT%JAGS4Gso49`8E*jok2SVgXBM)M(6(G z6KDn|`wh0v2BM2%kD_8Q)~7n*H+{OAj9lbW%0;`Ct4p0<;4mxkaY_ff8=SE&LAbL0 z)Rd}RgTcP;^>a?$9qnV60RSERpKyEX!v=>4iP)QmO$DWp{EpFcvhtOvI3Lq!uvRk&?2s+)}OKFQJz{``f&wVo18F9T!DHbcR7x|WFA3IXXX?6dT6Z4RCZFx(v^I&(iXYJSuy~ zX*}U2_q194%*59f{X|HLEg|J9AfutXafw{F5Bq}3IO1|mBk0RoO08oLxYS{?Hg~Xt zfE6ThwSbkA!-e>|y~vZJHfMAFT5%e`ytu(dWT+j1fwZ?!&loN!l01B^bk>T~d#!*)C+D}wyXH7h`5hhmy$wnatWH)$6~k6d{0P=f*?MY8V`nh@mz~-4 zA=4s{;g=pa_v!eCKP;0F3q1J<#L#-??NdyMdk+fi1K5lo zNVq;SqgIfIKeQ%{tYvc4LM4w!jiLj7*{vIGZ78 zq&O!Is*icWoj9n)T75R6W6A}KBxN*38i{(has=E5c`NaAh_l?q|Di6Zj#Wmc}>F)abZ0v7lyJ z7$42CPWUi&OJE19E7Ey5WKoVgH0&%ix@cVRIh@#bSemS|&6F>@@6Q+zu%^4wy*kT% zLpFRUV2_6ry>KVKGl=o(e%8k0v{)GhhaKKmH_vMe)YO(M-=-1K5q)Jx3FSVc ztl}dDZL|3-cyO1CuYrST5P&Dl`N6(i|XuF^N#;?$HUu3GT~gtQZO`4QJ-8iqvM&N5EeXAi(H5O^GQ4Mq_w zNj_e6_rQZ@(|isQDjHu>{nA!*-BxTkP)*SXYtbu_B58b@ zEmPTtAKNB_xzscNjMRMb66JmeXJ*R}@J5BQ{gZYL@*qo@XziZ)@Jl4cvRqq$hXI6b zw3yUXT?b-U(T0wZ(FbXl;T+ADy2>kVNLkf7!$xby^{Ee0FXojijVfYX_8y7TmlGnC zd0Qgl8!tAwxWDHgrSkw4%;7$wxXc$gSmTzJ^fK}~(19Wi;Mxt{<~}9G+jDlgT;pVv zouud1ObrGpZ`~3>xuJAvpg4(fbUge_!sv;q?TYox(Mp-&N(HSBE;6_HWjoWh0^#Sj zXw!BKyN@(CquUmUGD$HRntni^RnNY5%>LAPuHNpXylPNgr98?NLfG9SjkH}U<^;Qw zqE>=N+&@5?E#tb2b`vp66o0Chnb2TR zd6M0^&shCWm^32=iD-?4$e<#t6D{f#*VHj^WJr}V!7PBwp@L_mO#JpP1{*!LV4Vjm zhLO`|v*ZgjX0EI%3^Id?QBl(80RHfmh*3PVf1N0wHxn zi%1hdOs~B3u_?@p*q3$TJt3EpTxOwmcGu#p59Qz)4RZk ztc5?@H1A30O%zbCVKT_gRw=`NTX(e>lUrjK+pvfi-vMTTtd!B` z+#EOIKx<|aouv~l4;YbC=78D6prxCW285IhIo~m$r1$+YaI9={_~=wn?3L};zGsHS z_RB|QC2|Zz#D`|2Fy}4kTsF$AD1WADHhiV3Q^BMX$qT2oT$^bevY&WI1KCs|k+`xK zwITXBUB=rVcvM)qYG;QS1bk#BqHuIzmg@P6<4+kbDsy|A ziLbt&Sw_dwmOGvPGPj0A%#51jSYOMn-dH`}bw1WW;bfeTE_(JvL&+^#vHp^6SpC~W zjWIrZ0+1&s`^g0{rWglp^V0l}Z=oNNLC=bi48ACgD)#o_*22a2giY!l`3vy_HUP60 ztDM$or?Vs!I{6ZM;7#iYCHCXJ7G~xUD*J)j2f?sf=i;MLU#YilPimcYt^*$=$B@8j z{xF^9!nAYVcxb>fD|A)YPxA4K_|ZfyjbB|wkh}AceY9~+c`>S7!6L_8lSgr0`VhBW zExQ|K0U=nmK6WSa7Xg5nC_E;7=1RZRL5^J3#8G9QNz<@L zv?vZfHjM@PgN_`YGt-SlK=2sD3QkLv)6mifC`4S|RxWhxiFE$j8+a4_$~qQ8se9=X zoBFvB_*boD=^!*L`DIjb9xLB#$S!ZMEja$7*;RLSj{wxt0(6B{|#=PBQ}9W_-IkFr{PO%6pH2R5g@ z{9@h_&Fn!83p zo-gb=J?nMog;Pj|AEnZbUg}+cJihOTEAY7br%0v^p6;yEvUM)%3i$9+Bc~%)A~IX<~$;{Bmzk*gP^|f1;sfnQbx6RSuG}6W%cXIoN<)nSoFgO z2x;HUC?dtA(9^W675@W}Etcez&O`kzxfX*BHISCLfo!A z@%D2;t&@{xJ8xn%Dn16&3Kl$>|EGuRC8G0LaiL^wPb}Rzqh3^ z%|W4rU#MQ(Z5egwE7H(nxj{?8-c*ZlN&2Dyf1S%GW1MR?-XP>%J?~Sb@GPr%8nXqz zy%%15TIQo^ekP$q5pP^N+Y(#(SU#tmc0~$75n{RzAmtn&&KU4WaOkTDlgjz%<)8bQ zHn$edS{gVnN7QJj5k(p@f5^Giq;^*=C!H`Lulzo0=Lv#lug<)I}6*dQb_!5c3&{;?A!K{9`op9< zMxU-2W0VYb_ljd;UrTOJIKs+OH|#!4a_| zR;sz!p#dhAU9aemsSL92g(se`c~RQEl7;phKOTV`fnPG>?IKpY8Jo{&u<=d=myY_?94;lI0{!a*%p{BM%sKz*wMK+# z`N(8xAeuc6kqq?>o!+8U&1$#Y%y=oq^K~))PJUwe+k{)fTnl+`#edD# z{wLM)FTIVw{H46CGrcRIu8!Tfx!&H`S4(S{8$EzV*e}z@Qi%%XO|3p1I>vwpKLAF} z9RT2^(N2+!Y^sT`ZdOI}Htfs&{VC-qLG`+BoxivP!mOS>)+=OJlur_A3WL5JJz086 z{S80D%kSdU93X86v^MH%_3LWB8`4_V-R^2nzO4}VBPV&0&R9nk;35?97CYHjig#K?rM$Ce`o{7cNk;s z+RO0LE8(4HybDJRZVMc>fr!IHt7}z1_i$P+Z>zcOG+VW^p+m5!3@bZ3u%ICJuY@c{hvp`475AkPe-9O^;`ncsx zr1Q7c@6C&Wb60%KqFVB@iP1FwCh^M&pdEo2KjnQILU^kVn7yiy}WZ`mVU3P@2@@SANZgEUDH#A0E(>7m% zooE^>h=9Q7<{Kkz-?!q46*d(Vnl#XJvp!Y3f~v({=}VdSYj~+(clS#nMrDc84}8Iv zb5T9R0XNK*86nl|J-EmA;hf7b)*aJ2B<2-gv;(7dZq@CfpT^*iMCRz$j6Rp+x=j$= zETIKP#L|UVc!KQ*I9i&Q-Ppd?q?ZcB*$R-#KD&RK#P*xF3E2G!bD;jX=xu)z)?Yli z0paxi`H64H)iNdHm!!9Dy+KCR6v$Oi-;oEXjX|J3RH2Uf&B)NXctKVw^RSv#6aet3 z2*YGx-WJ-!LhJ}SOLOivsmqpX4QeJYJ&3|$(GfY#uSm{bZ!{YRHxKp1PMRIc4eE(d z#6#afOeuvP{cUn75fbmiqnH;^y6kzhYkB!gbeev^n{cX0v11QxYCTk`#zeLzAd4su{yy}&K^CbQ0V=ZE7Q_e8_;Ur(y3qw9_LMEQ=Jv#$+mndl`zr2~ z_W(c&#l8(^3vm}63Ix6sy(gNc(lN~jAbbHp^qZOH{|uN3ypz8cuzZpB!=DjoPmufh zmTqzXMWoi|`pOOZu5EfRM>3gn_siQyn<`q%8ML{Kg>3+GrRGE!XJ;)tgou4_v+TWh zCZUp<_i=U{f34rA?6z%jYHCqiSHLLzOtvrF(KhbxkF(b*CG>Z$h z$v@QF(MwCI%@dAM((D#&i}x8(Op-0Aq^VhYA-^~$wS7yEKH^hK8_uca^UQ>9vk3LpR$FmoAL`cz*jn%D9Bk#(%np0*xquu zKR$z8VDy;_-%r^BzX8>M#E28*N=~-u*%fDwvwAQ2{&48lTH5lWI27PhFi8Htyfnftce@pq4tzQ%v( zk};O%67x)S@UBsp>Z8IkYv3i%W9w`IItI*2;hdSwZoH_qX#d1O?L)3JC(B2nI{ue{ z;}Jcp&u)7RTs6I#E3tZrGCEu0Y?k@*9KNh^JnQKlw5h38krvm@?uR+!Yb%kph_y_BZEYAE5vnwecEzKviBF?5!0ri2J4k>!2D(T)17)9ELa{tl*=bfgXAb5qor! zxS67UUA1l?^x~=hC#~lT$SR%FP!K>4By)U1rOqm6=+uO!%UO0?f8Y2(R>p|8??(}m z&G4FSbc!l^d`?l}ipfV85KsU55rdl1u!5xvag-t0-bMeVeYB1%p`3>+tfK+1Xz6NEGP2O-on)S$n|4qk5m1|v2O&aTc)8HnF4)b91r1fv)wQm2j|hKq zqgzV=IcWI9tPbtz*&ec0?o}Do5&I2eEx!JCOrwc|M|>g&?Cj<{2*~YE`MVdByh~|C zeU8%0WqNRyjM@;U>i9kVHi`B1ws&z~cga*i@)M=dF6bDxh)Lu=Z3$wWHG_dPtZ%NPU2{^^lw^gEgF-qy zmOjY(T_J3TUHNa*%l`+4in7ZWP+T=X$HM|=~Yxs_UzT-C3zjh=A7uQfYSR%H(`(hBBy*ev_)A#Ay{;g_wRzLMmTGpg048v0Am z7i%!S4W_k^cQft!Lu~r1mrR(BJHiSuUU6GT=Z`*Gwi z&V$W8D*PX9B_9&8C9wvpfsQ;LReDDwJ}Ahrx5FU6^egq|yyVyzd;Q|yb~hE#UwwN3 zV&bm%c@{SMP!5-5CxRILLfjeQUyW4#oi*ai5PYWL0L)&LrB5~i6KZJVTC{-;f-zW zQx$06r+xk(-nSn-j@u;M_jR4)ch37d)2{Zm1~qhfs#wS%Zgsoz;)e^iY%Tb4bV|H4$0oH%C=T5r0N+5X6-+vbP)*N^TuEB zTK;a@+oYok$)esuv&qE13jY#`**PSLj!V2zWI53YE$>8>yht`-G}pfXwKO{RBPiT| zIJaoylCqNLhKkmN`BdkH$hr7in2yk%4|ifBMmZO+FXR?>XQp|tRXh8JhyI|Zj1hE< zCC-4`{}c9~TWIIwN$w2mzdn~iBTN#FQqLLEO0LayhhT<+7QBqLvv^$4Jn9r->;gsb zxk~?Bzc5boiiG@N5UTrK?6dJ0Gu|N0;t{(xSrL6 z6#KGr4UV+g$<)l~yqm4`_IR~jxRyG*<;s>Ixs-!v*yW?KUP8~80FfNm1&3Vb&qY=G zL`>_TrTwgBV?q&i9QQUnkorReAfG&=ib-U7WNir!?|>Rfx?M+k;De-tQq^Lb8}hC8 zkFyO6n`_UyE*eB!4cgNhV!WI@`^Fb@$Ai^%*%uwhww)k$Xa%Nkx^Cs;;LyxTC1Gfs zyXyQS2ZLtT+w*I19+88pjaz$t)t@dRinA6<+nwi#DVYA{$9vS1xs5#fiR{G+0Jj6G zdgh8ss<9fdClTslTvkfGoR&}RdCHv@>)3x_u8YxuU+8+>Yr?yGc?zBN z_SMb=%vD^c)v?9+={NbV2h;rW#{rwJZOib$bllAkQhgQx`L@`q*1Y@IvbRval}-}~ zJRz+YGOc?e%HdgT)0-Q-_S_dTI=nVXX;wd!zmvBJ$-UPj?l9Nxo)#cw^0J%J`MQVV zCzk@)q`YlYu?hRO!*cMVSRjJ%D#n6+&&=tWP$CO7fqPUM)Xr_r@qA}!?{nZ{OyU#5 zgKB>~~Y6(KP8iDs!HmA+fAZJiTH-7m znja0_vysu`YoP7$;pyFcn^w|=L6`|Vy(8kS=ccy-&nZ4xLPr*DwD`phY>FbvKNRx( zG;=n|WV?$3K2YIcxw3iAhXo})2E=b>w0BwB?2=LTi3=wipp{oQSV+Sb3pfl1J_7K_s0zl`VMOS35`=VzN0+%*epvniCO|WDAsx!-KWmpxyPth@e>E8QMF&bF|4F1)`k^EJ@v`w zu@j;@1|pcf2?(A{r9L0ipz|{o&l6hXST|fmQw`J_S$<5;J9ffJt4VXapTNd_lS-Is z(G6ks39RN^1}qqSm=SZcYFk0K{}3J0MVmE=vip}fC~x|qAM4fAKU;_Iqo z^WPO%^QJ8t^gnwj=NQ^c@=_Ta?a|u=cDmt3y8-Gfu6Y;<8)Eb8pb@Qo^Y(L%RQ_4?;7WXHzMz zB>QF?x2ZK(=CYE$D$?TOI7EVwCc3%6Xt}ui4T&;M-L!F{rFi=6k;V7z788gnTOZ{M z-633PE&CBj`Ir*)pLKc#S$f*TLA`s#!4MXO0f%1C`XO7z#b%bz!Jkl`0c%A!+gmpw zdh|ksoGYI{Dor`ARy2v9UGx`xzi5hcEVG_SY7ie!J@|SSZtr^FQt^zpEZBRgy?0xq z{`D&Kv3Q8k%^qxU=S(eS7@sv56jbsDoZFY!IGz?6@3Ub!U7Y>IS&l!{RUOiF?fBy3MPJU1eoR8y^b26yWQJHt zK1FC>pm`(4z+WYhc7wO_PQeTFW*B(@@N-bkOqf{Y9A@kK7%#S_*x)k-2zIgbWPX*X z9^-A>2eyZ*c%0Zq=a9R81;n>6+QV}T;&s7jaly8|4Bg75jIil`nIkk+j~8+5^9$Et z+Wn~c&dOx}zVX5Fg^VSHMBc4DU~L7--a1+920(^4RG-cgD+u4ogyEM#(E;jNB~KXb zLB2zI41?4>3$_aHX-}3vY_46xLkn`6+HmlIY19Q(-a;y;EVie&Iw)l6 zTBS-HTZwGQ!7$A+i2R0*`f*|XrP9UQybJ)Mex{wvZO*xXlSDqmwk63t3B40eqg6OU zb1oh0EC)O}Fwxc|CbnGD>@ru&Z56a=WS=aVQHom9UO+83IQK-vprNjZ%Vx@HYjyQ~ z!xLn{tq?As`DsS{p9tlK0A^_^P9}g&4@-RFx7Zun?aQamw-w(~&fq!jkdUrm#fvU| zmEBQv;*?svS*hvfTwKz^m7C5vc1ZghPfd=i4ejs0@Ul6jpx)fz5~Z)OOkei8SE1p4 z!I}z6*Y!TcjNz4i7pa;I>ElNHdexSBP+=CNq$pRzn&0@+s5iIm3fy<#gteGNiy=AY z35No`q3Pn|*m`||Rn^_lS6VQbQPWXz@`D&b*}HI0WAtS;(B_g@AQn4|{%FVuUiLWK<+{unpFAoq^Xo7Hv9Qh%(RV z(GrxoTEa;vbj3ZLqsUB*0C6UL_NH$aqPy``OT$NYSI&a1>bC~vS^1xyIpUNvmzJWB z>r7DWwcv)9{m+>m5rCZKOo3kLlXsnnw9O}}omMn!Lb)y07~V%Bco^4AzdSDD3hR*< z%9_#tu%yit>d(4bG4c-9HV^2Zr7gvTAp9pDDL>5proW*0YT_A9$i?U;hkYN|(}5xE z8+5yN=;4Sow)p;zD+Pm<9b23*_bS@ex&A@FGH6@NYZcF177>|yN`U^k#O>4T%mz^Wnp=R|}^O{7yr;Wojihj#kS`|NG4tuX;YD%~qA<6{e+?^LoqArX8D z*LdfK#(rM4#gtx?K>7ST$cscI0r*@g{1(s)AH>TVF-Uf)t8~jvIoqF(8IdjtiwwSH z&7Oqj^LPl&BsdvRUkQ5Wk!0zEaaRwiZet(F5`3pK5AqXL>+jWmQEr?&@QKrr%122SLuG){D7-dt-mBM$-ZXvI&L za;{ffmcU|`pw&a~9oT)Xc+KmNbqop^efOZ&dk*@0p5U10&+X)0%enDIas7HX;di^& z`q5ub6As-G9PO?F!c&cJPE|aqF`$Nw&7U)k?vlyb4lsZw?3;rWF}Jzg~P9 ztK%2DAubB?-SqmNX2}H6`71+UOF--#HS-%%e;GG$Baaj5bDTi!Sl-$nSNGVs>G-q- z@#3Ez{X?mwD*A>!+}^HwXSdxEi^-L#f+tyoVW*adW*P^wl@rXe>k|y!i@144!oen# zOie(Qe~d(3OyM}{ZSC4wt$MA`ble~49UhOECnqfeXbJPm3; z!d?1jk~LpvGQXyNIfxr)Ab??uf91!2S-IBae>r>ucR&eze`5MS5}^Mj{gNNiMp(rM_2&A4tZoVOxwAEhK2ki|$zBMma=Lom9`xbuf*;S|0YnOh$m2^L~xpQMIc56Y+ z&_Cr)46T=QS1kCsqyBI;3&HL~+dFhjPtG@`@&EkByXyn1AV{WF>#C3B`7Kch%PgHg zAlVA|HKZeWeIPX0zWHyG>USx0zxv&5J{|hO(S0hXSkOArKm6qL>ofLf-NnpGH`8Hq z!lo5g@rO0SMUB#6!I6nqq*pgQzd!6B`bmx2x7%%&wkcb#5i_j4>i^f@4(WU}Dmux2 z4H5tJZdSeDzuWv@LH_^exXB5cqbU(0XShdQ(32KJm>>@7@qxQBhW>jSQIC^PdlN1s zUw9$zMm-HM50`HvSb4t_2$Ks9+zB;E+ZZNA5PFy)AQm zPLlIOp-XDdcDUtl@KN_Xb@%asv4>U5bPdWZL>_$q^aDh}orh;rS{0N7Xw3=^_9?B~ zmH9`Sxo76Da4cfS$2pGXtyQr9_0+b&k7s2DXWaekhwn>j-~507HMQSRA_k_eZjXbMYnI@|5~8`!k%uI z{MQ2gbxixrc>ZgF{$v=@Du(r67w*5K+xCB5xIeX?D~jB|F5G`dw+;WgaQ~Gn@_*>U z!Mg){j{p71??WyEyNxq;3kgvBFBbKj-cotxXtuOs<%BIdV)uy*+s89nj(#~6AgeJ? zwF-Q{mp?sMiXvn8LY?RY2n4&`5Mw-Lgb>lWM2083-nQD}khFamOv&)fVIi;nbk!%s z*(b!?Kd#}N3`Oo3jR46(It|oJ|8~4hbA*?8qRQKKmM$(h^gjaE>ER;K-wbQ9hRdkS zi}72I6_$oEhIM7)HV9$@U?tEG-Wx>_Tduk*y!LgIR=~33R75@KA5P%{DGE20Np~E) zIJ$D-IJj$0#C&5aG@COTD^1JWrX&*+6SHan< zXyQ=B=Hm7A!;J)?%9Unno z-qUcPfeD^43U${+l*B=h9i;z*oQscL%t139(acE$MkbCs&VVONBiqj836($6j zxM2^b%Mu~q?_5Y4AGC6Nu@55*AU#-uE!~CTgQSMt(H-J`s&p;c5OP`|xWMs6X~K%Y z{wpzSk`K0tqRnZ|wUEwL$ZHb>-y$d9aI#jk$O-{56ILrqaa%B%`H>lsgb`TyMo(ZW zmaKIM>8d?pIxRe6{ybnGy;e$e|Y*TLWB|Yj+ z`-SCjHPf`%b#+tDb(SjDEppc`O?hHcaIKiyiOc@`7EeeZ$#D5$ct}(X{|IHsR%1|1 zea{pLA4t|}o~!jpQ|ZxJy2h|sQ~;MYS{6OV3SX@T9hyFgQ>_G*%C54V-&rvf@$Hr# zgQMBUo-3R5de}^b;~Bo+QK*w3fGk}6cDP|Am7e?YV!T_J-eo2qB%(R zv%xca)r-2s0`_5mZc&Q-u!F-vzVjp;B1najDBT}?q3-fgqFC0t;h<`!k*1XBI6zRQ-Ao`|=fE1nyoKn@%muo=v4iv-^neHizRMkVB>Mw#cf7U}W22 zponu{3nU~F$iM%$jjj^6K%Qv3%{o@>mgQJNu=0~1*4JWNE;3%<97bA@dp>M2S4SBXf?kIhH(l9sEY5?{nbw=5@J)qC zbS+XOpl=(h-;kvJK3k_-Q}u-N9T6LKRpARs*vjS)5BhA%l*kglicfhkZ`f}Ab|)|B zAu3YjU{Y!bdNVsWH8mJ5p8$ewYe}IABU?w7K7fd=t+f@Ke*vh?=qIW4RD^xvdaS_a z`hc>>48H0~+VDH10JAfsauIZQ-W2kJjw?Q3WD;W%Mw@bAjQ5g#ADbG7QXGJg0eox`{#z zmpxNg)}jRrB29%x1l+Wf4iBWI<#xk-q8`;cX|T+(ezxHs+JqQ zU>mrxRd-3(IxrhH>m`7lum$TU^1JTBPF=OzC;>s@0>p|saU~(1)q@Ns&jWwEVzi~W zU4tye^UtLInT1W>fQwS%(#b{E!gLg}+R~CLze`}56<@lvxG+<6IPR7gF_jI2>2P)(@AxTWK0TS$mG3&jd%I#uu1KnqqoY}Nt zVb6shm4Nd7mHoXtRwm=G&|G%LX3nKMFL}qx#Rj;9fla55O0I&haw(M|Kdgi5wvv^C zl`Z+qTodxhtQLrkIun3qCXex_HrtR~WeJ+8RE$HGY0x2CUzjQXu{2-mk}Hzot$F{g zz0H(8!R}(z>C^v_cuDuX4W;_yr4|m-)%`Fn&U;JEauK%AhbUO9@Dmwq0tiulq z#~~aN*Pp4=$MZL|8gWOUksr(@-?*FVf z(4(PYK79%Lz=Chx`mD$p{#^oEz$M?u5_iiHsz&Pf)zsRW@!^aCP;a>z9XG$`0Pf@i zzu4lsU`X@I`sXgZ>39*drXg()K3GaZ@&+INA|bYy+COul?py`PT2304#YT={Q(u2W zqPPkI>?Mbl66rqrL=nqAS7A|?-?X~M#FeH!kX!?9Rq z;|IX$!%E?J4HwN(Gx3As`BL`Sc>6-Ez4Oe z%W)d73dB~IU$$zNc*_p=3c@d;mNcQ%zKazlp49u>EaSp&_t8#a>0zm=VjjbWx>U%> z5+=WCOhH#V@`N64%A!ooVy!xbyT!N71G{wJNqzZ%Bg*fr(gf zotx&uA{n6-3$GV;?Tp3jntICz%*ATOu4_ycJFeDUUGZXPBDUhe=7r0@-V@$yE~!<9 znxf1p#bOLK0~ObYwYD00Md=1mE9gptuUYe1{Eh1uDwYA_Y#AKpkQB{@Ux@#>0Mm$% zO0wH1qKinbDDWR0T4jZwtl&_=cGITRT8%h07Jpty*z)^C5t}7+^n4!u%o5iT8LwQ{ zSby)TjCEPz-b34rLQ*5?6Kd9XUy~UR@|owR91GT@SS)v*cD3Hc zr>-k{-9wQ=*-!2s3l0sxg6hz5jz!^o2*6<-4;3|rtycyt{Y_=1iB{^m5CAZ5>aBfU zPiBFw-1==H6I}nOV)%Bz!CytUM(q0|l}8TgP^1-mCc0ir)3ka4WtCIu)^wey_Z0sV z_g?;3M;>7fDBE;Kj(JdD#?iNx2+T}4pRl%@^dJH#O`&@)7`59MthmHKaM$R&**us= z#|Z!ME zFn#v8v)_*`vy03DsqAj_3Tg}s#!snYn1ze==LJY_N0hqObl_0u(t>~t9fy^9 zI~2JyZiBG(VUsbslE5HMzNEENV7XTpL*TS>*;k++RKO|W*Qsg)6#%#x*pnGyJCPG` z|9$gwk(3HjCH3a7^DyB=fw+J|eNBo?>f$4hnroIvL}bo4Y<=WWM|FNH^(R4J91ncK zcK=9EDAR{of6BOyuab{sM9}h|l@P?3>IArx(e)v%I(tpIdKm3nYsVcv(smnStc4bt zdW5;`Em5`IB1{6y_*JJXL9qFjBJ;wHTdwcwZ&UXIYPOz}NFJU{C0zg!X8J;S#5`Thx!JnMW~ z(BF_VRi=lycTD{5s8+8V%c`!gJKj;Ah$&OC9Ei;u=oLRi^H+{lLNWrlgWB4i9CAam zrvt%+wPolMx4dlSdl|fP13($F<`=*pcFY$7_JmS~$-^kW8VtKjLJ0Ff|KZZy)#Xy? za8an9M@f0y%X+6+#juhshs2Xb6l)dAyju5){%Yj8_H_T3@^j7dsE9*fF6p`0pGZ+T zazl)5p_-A-(&ed3T=P1G?O!C#0;MBkLc*@5HV?f!mgRBZBhhdmcCP2G{}XFQYN)cW zZIN2s$p)qzpo~eZK-19}P4%&82Lhwg=bzNM^VDa7G{btL`sjE=ue1n(@v`aLk53H?vdIeekqg*3o+vuz_m{4U) z`C?tv7WqQq9dX=$3&R}(%O?%Gjvxq2M4A2)>0X)|<)Y8XddW```?*@h-BZ|4 zihQH|v*a3{&7SHw2)Ku1&fJKCdi`m}hD+s)vQSL&wuY1}!+RazfWT zP;95}Vw_&I;e^6B3oO4Jm8pz+57lDcW*RTg_6zX)=;j3>?v=~Lgpn%xx$+A8Gp@ek|;O^s(3F)Di(N^7*5&j6iZa?X=j@(TzBo z?}C>Cqwmo|;7m8Hzm=XWV^Ea2k?fhm|nhw&{_(AOb7~77=_pyv3ODUF-|L6{0(_| z-#{<>av`P*C#+|-X4dDK0asm)r+@?ZuM`Q?Bp&>jYpIjeA*bE#l859?92!37FD);D zWmSmQhcDc0quI_*e9IBnnLv?i`JW^a7FTnv?}&)*`350iVgCVnit<&r zzNwVGA%ZH~a+aZ%I}nkEu&%k1Rk8}7SW(meeVY@sohr4hbf*8^vEj3aAL}NDUd8f} z29{t8rXJ5Lndj@;?Q_)Td`l6BW3UwIZ9;ru(k^wEPo&Z#M)B>8>A+8#yAt!^Hw5F7 z8!l26K0WY{@U`LFDnFiJME+**B1i(h7wAp$sQ=AB9pyH%*I4-opTSSz-!GV98>d#DrD`exkhXt9Y*`BQ z8AY!m1)rAfuDfZkGh$>MK5S{QrdmMvs z5B3oFlnOBU_MZH`u=WMChmQ06jYMjJt6bwAVj_+eEpK~p+i^Z>=vDk>uzrg!5xf2B znyccn;Ms+=!MWaesbOD_12lm2wh`u=kR4YFQzk}UqyQYo)?eTpaqV}qe_^#|>?-+$ ze>HEc?;JeB^J5wWhVU)rXi-BE0kge~N2x86FAdemJsoA9`lV-nqquJ%Jfee}-PMYl zbQ@Od2SUw+2Pa^N*EdPWVjcd}5%=EIEUa*ps8dyj0*L2IX|`2maBMCw1~1~Ofq*|&j?qv{g`%;_NhFHwm5Bx+f9m%JX5t) zf*)@B5PDMWFyH1NgofWI0Uy%cv71l}y}zyjh++(%d%z!~sSXtLmA5Tx_Gl9J?7OUc z)KLn`&CaMQndv+L{29Y&K5+T5C9%G^sQ5UynW$sdq_>guTZwWUU0*U=TMb$fsjK}LnWTbUA zXLx#lFd1)G{G@t|oA0HF31!Tv$X7fU6VjxM@gko_BL z<{A?y?}pv_^a`Taio(>l1J11y^^HkYdxBe%K9wgFe4yn@YT*Mt>6$*Aus zo(1H0LR*w3u8%8WMvFvvXfilx|H_&TCu#9yY-JA@>Go{ zJ?yC6efYg{X8&OX`K2Yj)HM>=K#D6{8XD)m5cN0K=}!5WJ@9IYmi}QyE9!Faxy81y zWYu9nVr-9=n^ZM(LAKvI;HWL76Gtv1pHw^W>%(nwH~56@jZMN$HSr<5g9flu=i*5* zf?Z+&#Ivv;9o7m9{+yt0XKm)T7Pzd&kI6moD+-717}x2Ph&eS%5ioIJfupL?Sgm+j z2Mf!l-z#{&i5qk%UX~BnHHczWF5d90y6h(GMC2A04>XW={~1(#lJymtDXBfg;AJ5& zU6)s3#bm~JTN19IEbMirgn?n<3tUt0NIrs2PFaMFI$cxkPxx_pHt$O(`V z<~x-^?4cmVip{4%WURy`cZ4jRhgAJEqUaSF8)B&RW%>f#1@{tL<_U1 zizCywdxyRe zyE5$K@(N8vJFNfx;K#Lm;*viPBJ$Ve z{GcnlmK*#R0I)`rn|olsZ2z;E|8H%WyN+kZ+$|TU__0?EO8%Atf3CHQT-+Yu(_JMj z{>wc2Gt$MGaJ_{N=m_KQfzRh_Ux~=$(%iRmB=%ld>AQbyH(Wo${G%U1jVHRTq9lL5 z(!aKv=TTg+2z37kI+E5@diV{Y?KbKK4j{}Yt@$4j@LvU5xo-Ne0{s~U{yVx!{;NPM z_!xfyd;YaR{~g`F{lx+SQh$PeIt$?c#2VRWm5~0sH#p;gn z;m1uZtm>Zc2G{08upj#wo{I?89fk5m|#zoz&pZ1@7gxQ;SZM0;m-djHVisExSxo_8|Mk=oEkH9TtF4g&lff73m&D`t*rQEVLjvBU7wj$BTD6JzA zCB}$&KUIhYqiMdGe}J967yp1hSg^5(eY)!5Opf#qN`o7&jD>cBCn%@So!%i zqC2^bF0KJV3`-RtPVRjm;iw_*{nFU&3EJ6~)<#Q@q3)_EmeFGp^|_vdLX9${sH@pH zWV(!Oay8w2LMjrdH^BzW(_Kp?A~IQ~iM?|6VIK2swrWJNL(<$T-Z-!#^<%y10n*<;Q@ox=9=MpFR%W$o^{h% z+e#Z-$q|TDYODf-Uo(F~mk&SpCY08vN4EABDRzhES^BFFFU$aY!bKiG_rJ1TO>2I_ z{P!h%eo(M9p6a_Lyif^s|~9zlfZ97do-Ix84U7I{|K=omQQQHUx$XBWcMr zFxyL@HGqZcUw#B${t@v(Sj5{BN8pQ*-leIAfnetT(6Sh|m>U{(LZ&xLNkDh3e%Le_ zn-|QOI!32Ng4A|?741p>c(Z7kcMXgvJDmp95fM4v_Di|?wJ1odFK-cCmp-Bm-WS`d zsK9U@IDj&e6XXND-};O?8Fvm+Bs}$NS7Rx_IxjUyJ?O~up2&zQSB#ft@DasEcwL6A_c7NPeS2fB6l4M^ zsZEvGA4s0C073uE&?#2(&@fQLXhpKkFUw4hfeBUTP>^Jwy>fz+DSXUsKDN0WO)UFinI6&<_J900J21fkiFMl3x70 zCKc8m4lC4>K;q$+uQNzf#if1p7~x8%Y`Am$ChKe= zlMh149eh~-i)R9crI)kkDZ0|MK=LKO&XQb9N>7fTf;&>cG^Fj`BKA<1b#eyfu2M? z`sL$(k3WZEzMcK0)v9g@$?fECy|#U7A>LJz7@Q3G+?UFh?s;7vge8dUwY{>4R^ytT+Y}xO>a2cbQn@+|ZLc2e%~b9@Oc@y?=6w zY~rzxqHjbTZVXeeZg*C)CQl{fL~m&AE$VR=BnnFvLPW{u#OXti7C1=~zqG`VZr-_0 z%IUlRDQW&?wBafP-;b~+`dOhqc3B3EBKCHwsRU(OO~@+=$l{?MCHKlZL3zt#J1eRn z8NNr?9{@QP#>P%V=XFq4&iQq?X>XGYI)YKu=mX4MyB6qg0>J(q15(Q?Yj{mE;E4Ha zi9*z4t?R&##S)|z14n&DEiy)s$89UD}=Ag$hfAxC)E>+&4QGFWE1B4Agzf5H@ppTKVdEZoWp5LB0mp8#tPO=PTX+w8Ej%9Uq(NB1(qOB@)Z1_z_RB-ik8`d=@%8HyVO0ufBziMT#N=FhQ4Ixoq4_b0AF3fgU zE&JO&OIf~FS9UQ7!y(3m9>>?NVNdG%ey(J=?BM1OJlcOHknUc!7`? zkY5q|V+R~fISP96cWwCc!ncDLs?SUS2_I!<#zW3g{-@W|<~aOJ?dX3$)8-P|4F4VwOo3Rc5&dGB~12)r#nAyIGQSEKBzV zx;Jr}f3=E6)omW*<9@vAK3{f(@{{UEbl5*W0)q=+n(Kc66`GJTtE$mHH}XvV)or_~ zS;2vR6BesgMYYb_cwaHP*P`oO+*|ZOmVxO6lum1oVI2@3!;!?3_Yj8GoIVC?;Se3^ zs>{d@SKd9-pKhr+*kUqM5l~8v^|Ct+>MwkPGyn1lG+%BG60&r#b5&%zSz{r6dr-bcX=N8CvVju$d56>^u zPOziM?Dy95js2Ltj=qrz)t7QRokJ01K*o)F$^!p&H__&e_1y()Q! zCWJ<#4H~3Hw3kj}#wc5}kRr=!WiNz{_A=!tTc2T|<-Td5$^^0eNTPsl&uyQI2#i_f zz0>7^=c3s;zjTP)i^@%wqaZ7lwn6xd1(qfJA)@<;(SuC(VE@cgm#@^F8b^<8t215E z=)I27-{y5;Pszqes@b(PoZBGd<8JD6+5NK6Hd(+c;7B(l+taqiB-d8Cv^no_9?uUx zKG(6wq}~jt6CS2r|6$ufr@PTH4d0i1v$0iUceA0s)_Vxw^((?oH%{&t8h+sp>Uo!2_Kr zaV%`i)me@A$9a?X^JTZf0q>nSNp}G6$?l+++kwJ`S$d6byuy$u8y{g-FaTfQU)_cW&zFxrF1+TEb3@WQMtOy!E^eh5@QP?DqUA2y zAsuA0I;{P>#}Plb)|~?4bo#ZA?$Uaq(_dfqAyB{v6;Ynt;%wbTtJaER#{vT7m&+EL zVbA;}IR&XlMN`F^9(6#bBI1Qs-*8ZvHlTbyte{-)&A1h6e4u@H`F+Kp`?5u5evram zL-(mCRvr$5+lyY5kC+G=^=Z64sH)3(EHWdw`Yk1XOe6C5Q)6iiLnf=hpWTIqO@Oo@ zh{45ERVM&v{%~yIFVuk3i@4{B4w8gwde=NXkeR2=xK57f4TTKh0Tjl+|xjo9|XR zvKSR_9BG!nSLth3Nq#z>5TYw-R{Hdt;p>G|oOzCzVsf`#kVa~hy>OqWde%EV1uW;) zt#15n>W7D{91EGAoXncx7S6@d(FNDHmV(#LpZs#4zq5V_^zAGw-Jksy4I2Ytzz7Kx z5z$Yj&=~$q)=PXM8V`U0dS0u4b@1fS0QbPd05{8c+0|*!oj_2tc?*&6?d$yR4nWW$ zc4u0*b=*?%qCO&FqNH*{R`8m$v}=~(H|_>^OO|Q?gbAV4}o%ZncMhq#lALQGVg-<5BTHGFRRYr`Jr!i$(r9;msbzJrudi@_C0>5LapBmS4BlN!Tm-+;X^6m z&N{2|w_J}$jQA$mxipE$eyHFykN2%lv@$m>o!L{px3IS!jKpP3*m_~i9D-!LkAv3n zzv+z9U-f3%Ltl|W$5gfn=EevPd9gMz{PVQpL=kHqjwud>bD+45f&r6v%dvC*Nd1@+ z!<$7N^Vj$TMT$AfAqTgt!@(R^me_YrFhvEfRBiA#r-zCGssU<<y=#^9jP~j}Lfbt13*W~m+w8Q;SZEiH z3U|wfMdN(d;Kb^2;jdRw6D-ZOqQS_*>uVl$@2<~#2)XOL_4Wd@6NG0%M(Tz$fw#NQ zjz(p)J0IXL7jQ6{iZ=Rgt}Qm#*wPrQ^6t)CMK{F{A>ow@9lqAdN7n!hiSudCueIm9 zSPjZICsYe1yd1x5UOLljgh7qVXG>I`=#W0iu`~STY?kNkt@B9WGp`=S4Cao)r*J zIIt7fFz~_q(_l2qIWLUC@*OP|r&8JTPjhY{F>%Zghty8~`HDj7_4Lw^_Hu>>IPYms zaOwTxFD)!w_jDR7^sr3$*MRXyAe*$>aA-{u{AwbUk?;EGy2Z_SkqDyj^)=?325g64q&>ZO#Ye92cAfzy zmO>1Z9dHK2G!T1_TIgLUi)pUhY(-37%M|fH)kdURum{E#O|*OmUd!HQHHI^MPbA7^ zF`mEgl%Q2sWURo9KFr6F2pH;}m^BaXm&nmB0ex2@jN3n=>x>%v3E%sK$KUD)6JssM zOcNtpxkQ&TfwGSNY>1y<^Npq9jAt*Wr9RonKa%j{XMJ+;6POQ$GDvHmtYNJvd(3om z?-X8Guo|`@hK80Nq@1u;;jsd^(>C1OZH=jL&N8oKSj^WXl4jO4W{t#Do-2{0q_x6iI zSNvs9Azt;h6jB;~t^1*wQUVo<#PvlM*!cVaf(VzzTgexq^c3tT+NLJb)e@w4u1@O7 zn(w@AWlDu?0?2xKw1*0)G2nD21ZVyXHshNoVHG%L!5-u9<9TcIrAmw2a(5~*9F2Xl z`pvn-=c?TBp&aOI=WNX(-CK@CdWbRb1SlQ7*8HRSZ+QBzf!@`Z+T+R-a52t!Ylb~$ zxev8~Q$dz>_}5!(l6SpW^0r}|&v!j&4Lw~i`P}1)v2&8qa=E_}r^NtSHV~i`XgmQr zm&ZBhktcyBA~@e1-f`jd7l1$XK!6+6KQO}|KCl*KakX;uRxrds5Dda`O(bD z`Ng~yXz_?<@?nd&)4E<()&wi+W5zAJyKBsJFPC1&HDwnKHUgYSjM28Z6D~g_7Eqp9 zxWu`XU$7wZZ}ADKtVa3jBCkn($%Ow1nYc2XmQzS=$x97Lzu_cf)ao)HEn=AJr+|2B z!5&4!7<{hlZXEe?JNzG=T>hyhyY~Ow>FX;vQ@ZV3a$k>|&j27(p~GG{#q6Aeahah^ z$6@==ULa8g?F-YC{C=+Wxy+{kdqB zTX4Owl8cHKr4jD9SO(Pea(_H+B=VNXfzKB38PU{t@R$vrYGrAbcAOdn(wn{W3+ML`TZ~NpsvgXS}kR2Sj?)x_z~rpMrmsO2UV#op3&I^)H9a( z)gKO@K?;?k8)$avC~A^ zF)ikpE^$Y3)6_e-x!|7g&uAohv*r|l>t~(9gqdl7#q&QnbVDs0D!oj)lFWL0iqOv) z_4-bB$cQIo#fN5wB&8~zdsa$5$r`hnq{@m%LZjn~uO0$js1^*ue0>OPYV|wAQTy5s zRu=A@Jq0hiA=}$*LNQWfl(jlltgs8P{JO`!eEm z$9$ZQf+-Z~x&6hqKl^V$9gh{F@gx%Ww6XG*;IxjVTyx93&Qzh{#GWa%wJkIV<0rzm@9_dxD2noj?r zMmpw^%8{+BD-wUIwk+7QTOalrXmmut7$I(V&Ax&%am$bPqz|l%{VK%#gATz_viA!D zOo<=T0k=v;llwI736ptKVTNLa(y@y)!DL^^Agemg;>w$1OBX83CtcFPiDG}m;t;`> zWQ=rT;B9}h4xKOsKG?B(q@+C*xnXt&o}PD*vEHvD2R8Cz;8K4-V(Jv+_~!kq2QEYD zJ4aP}$7I|HN;7w=F$4K!Z|}%rT3w6Afh$A>?2l0a8!3PNyVVKE9r$4VT|Q2+KkU{{ z4r8ZVFF-xLXTWE9_#hJh{DTQCFJ>UQq4<zxag-7he?k94Y3VS$gnHT=27`-3R z!*YJdvu5kN%rd@Y=zkm~cU>N_EQyAW$HZFm%8}+62Vl69;U*j9whLt6H5}=vC)$uo zLvI4!O%pv*7+qq`AZ}>)NItu~kWqf-`IiGAm`JXbVb1iVyL^dJe_U7%^HN&!Y<+8n zyJ*JxHWRB$PbEfLQxYmiuy z^m>0{bq1-=e?%(~#t-p}-!ugHo_m(n=fYc4`%$WEk@99c*2Lh#P2N$alq-rJIt+;{IuqFTS;NZPNv0AF>*P9?Uo{f z?bGJ+Ta~8GtMXariXH+~k$On%4Ud6wPmg|UBlpvbmxyH{_ttO>`F6fm0ujJgNcLEk z4>a2Z0bWS^qbPp9ugUA1`o?AGj6^1@{exQ2aV5T(J)bjih_h=Hg-O(!QUGH%0RPY4NR`p96a|EaD=1w8e>&?8}vJ zs$PY=;1WDe$d;Fz&cqro2e5M4vGBYGpmLbbvFc?gXF&Hz0+1|OI_xK&}dq2PD>G{3K@&4mDzVrR!JJ)qy z=lMB5pYyz~k?wLpdSrb?<-WIKrNFxf{qFX4eRs*Q%R>)sNT8J_^p5)#%uvqI`n{G7 zA)dz3`}B+BY*EG})vaCeO2YA(H?CPNVBaK(UaIDejpCuzUqk74+G@*$q#MPzqxe%I|(UaMEvd zlcFdb9>saq{^I!h+&f^vmiBWQaJxl79YS2;Mm-BRi!lQ;H@}{1*a5aKA6t?DT2>lvZj^s`N-a8hAeSs4B{Gll0C zAsF>VlULpS{?B)=*&7j~)p?5euV(VNkJkgX1P?;~y>I^8m-vs<-}zCV?X5n-Icw>^ zd$!Z@lqWmcOyWqzm=UM!gSo|EorbhIeID)|XcH{$uW_%n8Q!>#1lHTneN#$`xJWcg%-QH)^4@t%PqI%?DC%mi`h| zs{fQ6|Kc|!&%ZMC-+rdfKF87BQ)S?62XLAnp zrr5Gm8Cg3QQ?h{lmfPbkZ{L-7>Vtv>_P0IwKXp9B2Wn#w+rz&rC6YpPN#=AG#$d*%ry@%T~1k`-1)wRnTKV8F0 z@q0Na`2a>z{h$j9VUETJdIrzJ(o679KpW!2B;#qgH42~p7Wx};DUhVA(?A!QckIV2Ni@0vf@duW(sIpc)f3+nVWBBdVd>q(jB9=5h zss3^Gp6YmsYM*n_DJ!9jcJ6Zz;4qe^wH}+EeH+3+_MR+QLwL#KPTa+=Tex{iB z${5X0sEaTVkZ@B_HoFE=qHuhT!Bt9|nFrU$B`|slFNt`1(sSnk<5m7Qi3lLCs;<*} zYaVyi1OJ_B`)9lSZ*%(h82x{ILt^8E6gfrZXAa>H-!WC+)zoy}n-H ziw^Jap9}I881xNW{&laVYT47?81fs2;I~WqU->p&b{L30HTJJ={nuw~?>Ju-^FSf1 ziZ$<^A3PVXLPtH*(7Qni7Wj{|E;vYWN#XNMcjiaHl3 z8?0fs4}5LS6YvyOOHobr?+x?4JUQu5{A(>%-CaE;6iR7hDt@4-ma32Tc5r0X7whX{ zyc?=R9lH8bn|#Do@GYPXPw=3TtnVGK$u>hNuLy{&-#~UKn>?#rF8+TWqyHL+|K<<) zD*xil@Y!yyzq7zNs?0Et{024Zn9Q&6sLmwSbcr9dMGx52Qh#?*O(8~NJH4-zEnY>t z4X0PmiQv63_1w~6!>-UmdFILhHNs50dRwt}NT1z)N2kN5!h_U9 z^6xWl_cgM04nC1c+qfTika88`Ate>3AmESiZK{%9@|j!rLFV%K->CNiH9olKOhQxg zVHcBAS555!pVWVYkN>mx`TOAWmH#z>tIyr)emj8ZzZ9``Lrxx~wWFzihjnFAg}TVm zgI+2!H#IJMPV(OoP4c^gP4?iz{;Hb7BF%eY+?2eh-7fZHwNRmGRfeZh)+Lo$tK5O; zys5{PiCtx=);N_9E{P|TZ+{l)sSI+PVLQ5lLV$ZuGu@G?{O-WlaEC90GTjrR{>S($ zI#x*47s2?>2?X~3aG(l`YzOr5KFaSbY8P0oXn!=PCrGZ3FY)5I&2eaN3b%^*t%ELA zpfDMgnM5yBjOTviqoyfOdr~3Cs}zuLC2(}tno~6Vc!*^me{Kw0V@@kG^Uj?4{};JC z6WAL8ZY6v!@s#>|O7?f_-8|13)zyQ>hc+ANcbrajak3fSaQX%Q!B{RGYzj9f$&W)Q zjk;U)H2xb7$G*P83EYWkQQ*_!6mP#><5sWVuH+CH<=KL?j)hn_2iAOjZb`Tz)3FOz zfQ20|JplMXIiAQ=6dllWjZTr+;yxGVh#J{NmJovhEBsczgh{KHTZ@?mFFbbW6+R{J zd?{ufo~5s+##_8Iq1iCz7c>QW{QVVV)v^yS=LHG-VA(!?XWzWxk(mE~p6`D;OtXh_ z-|A_Y*h0R zlsRY6?d5M_5xCxOP=Tm^#Os!VQIq#9n-sQW;=5#kc3{~6O`F$i)qVG`)$_*o-#ccH zNcC*-n;n+_aqeM{nsI$7=NYIwCx2gwqm6DBt=qzdtt~E<`w1V9?Rgo~o*LFxxRn$9 z51l^vFX!e>w?KtA0{_DRr6)ZGJCCCE9W%A=^Nzb#B-B`}M*Wbs3Q>S2vwJ0SBGp)%akcmqG0)6`T$kyu?x zTS5P$z{g6;BbmUU7 ziYAz6`$wD6-ngS}f3?-DK%f*B-$)Sfd1taM%YY0<6mD%lxP%A+(?W zQ%O@L1RO@`GsK~W2lr!?N4Ezhw>807k{PZi&98M})&8cIUaVE|=NjY{%l(dk3MAiJ zY;*zATOY4lE}-wT-D6)Z11JdfAn!RBt)fC4WC57B1*qRnYiIXg*-JM($@X`L4@W#Y z#9r_WVEXy`y8x>ft48kukSGZK=&W?TZ2Dil7*onUka_UsoK%>~k`y}}9X}YU@_zhb zaoH`Oa}P?>r0M;tO>wk1Twblf4mb z4MK=(>gYOmdk^p}$8OaFQDQh6>82x~c0U9n9LCL&zy4$bT(1*8!qQi>&l%YkRn^vp z$mB)dMJhD-Swa!^#X=7BuRGWct~7j9Sq;v#Ot%2+mTrn~`*l-1;3G2IFGo}+jQOG_ z9d6ZV*FxT?{*b4R8iV6R_H=b2gyP1QkRR*K`B73Zc%g(^Be^BUf?TKC{DEB3@?|)% z8HhxjXer5QZ>bp z?!pw)!LZm8FCVUrSthH?p52?UyUD?(L=fOz(t^LlMC3~9U3AgZaY(B|I=yV_oDi1cjK0N2mexD%h!jKYJA9dY(-x0as8a1J-$I(r2- z-yaK>p0jI9oxD8ZF#rbw>^q7{YilyGdcz?$Y4VBv+nzb`FZ@lxNY*%yJagT{J6`DTr;02(3TT`;zPL*%lp3q9h>dda{{`{^{VHW zrs8yBt`Xit`(RQbu$@hd>@0K}aE)@=CE(LAU%OU)l=xBY_!^WOOwYej%KG8iKg&Da zp!l!}Q?b%jtg~oz&-#|snimo8-XA#VXs^<)@@VS=u-U76cr2)DP&H+|5H%PUY)mxQ zp9k}o$y>!lir%da&kC3ZtQqt?p>)lbN{!}Ah0>44_H@=ubS%$Kn$8w7iY9j|6?|Be zDEaJZ$of&n2ooW$_Orq!V9!^%v9Z8+vc%pdx@K7w^T5J+wW!A5=O49uY+RLbho;0C zN4v*PWQUuLcZS34Otb(Ky+2*+=;znj^+dmP77u?ZOX6~bjIH=}D;%5rmK(o` z7tt#9gq)d{vx|yF*~Yv)_(Hb$>)VXrB1}@6Pb;Y~b?DdbsY_q5=6JfpFH+nZ&=xt^ za6c=r(#e#ly5uQXAq*0&oV143=vD&Ab7NF^jlg&{@-!OP`(@}87E9`m{Fy@taAhiq zN%-8w5Jv*5ZE7Td{ixTyfR9_umC3!i`rl_{-Le*7k0<}0*8U6YZT`W{Ufsr}Nu*!; z^?p3AAY(Ne6u6fwrde9JsNOp}R_|VLr~Nsj?UlRY&hkQ`$cOF6B7yciRpm0_CWY+6 zn#cqaMe$U)*6glm5;n}Af?9<9V&;4jQQ(=4D33B0?N5ifhk-%m8nlur|Dn9+t1qW2 z{B{L?BQgDz9_UnYj2GQ58_F^@!zbUQ%C=~je$q{xG8bbOE%NwF&nuAIuR2pdX^T0f zwB?6H$>cIVPf4gT%XX)Exc{(zw6Sk|<`;@be(tZzuqcceSqWWCVWi>!I97YCIy73h z{IPS6v|fqxbxy@TaHG9`cljy)-OA3NK2vwPdJNC*M1V1kA)vYS^yj37SxasWprKD7VO=wdE*Wt?cfNBv)nJ%(}dcgmlc&#OLe!`O;qs^Lx4^;?Ri&~df;=D z`?JTYYk|kP8kN`fy{u{<7KK&jxwQk9!~2kba-QqA8c%&b6m%tjIYTic3?R5Bk#rLV4XIrU-b72v~d1QT5L07zlFO&BD(WGUT*f;Y- zte~@#)y~$ukj)R@To3|Zh1>2n+7#AVUh^5bb!D)Dd>ictRBb=Q@5%fW-$^1bc2Lj- zj{B<7k+=16^(a!$!Rhq0>Q(`Q@%|oWcmywVWG4NuhyjN7y&RGx>#Ls{p!7yfQ>!RY zodxO*P6jPb<-W8hfUmVJKYX=r=ULJa6|BgsT@SGVvg!FOpFi<`3rWnt@-8QZC;J#Po9V_O6m6>UkSeqq1;u|Iws&HU1^&g6>9Bjb+z$s|N?S*SI!tK|m8HV4LuI^Awh9S)4X%}n z=*^s-wo&GriP7hXlk>5T*#2|GYOSh1e54PgZoI5*@yZuQ)M4o8nZD}$7GpV zhJ7Z2+U;9>B%NSd+L0!uPrK`Sm0&x})KLbt3x(!tjN`ae;7x22va$K9PnSFSIyVQk z?pnCrD>QFCzNbwgfd-w58ZLC~7XjTO-<}ER7sjNCq29|Rz{yz?r}vC%;Y_k~=7Xcl z)R+5$6^2e@ds>v9u0pKIneEdh(|jf0tFVuGr=Rqu3#jW6efii4WIo1SGO*8uK!pqM zr+FceQNLo?)S|RRILyjyE!cWu%e@K7duO#p10|6J9HU0lpP~grfZ^RP?UvdJdIhVq z(F7)T`CCHd3_ix`LCso=;lD4iVe_2g0&#F-H+@^P-!H4vS!|?GBa+QrSw*6G+CyD2 zB5y#%es|h7W%F5;h~H}vzkEo7Ma@3gU;TEQt!3;Ihhz;P-LSskPC=M*MdnO4Vr~3I zW@xwDRc$~!KXNFWu`*Mhb$r#xV)j(qhtmJVgT(N2Bp5J2H{;>}>w53OA&zk$N(HQ{ zoZ&1vGqe+A&UbOsqRM=2|6}Dcv+A*B>0?XPb=e;E^~}6@dXP0TD|RmS0_#byY{p$z zKt#D{Wzw2b{Yd$OPL#!gFUs8V_cyVasAVrI0DkxIk@WUH*f#I%aavsAycMeMYQQdv zq`ha8H?oiP4kk_;|VTI1$8#bVLGOFOgQTC)qmgHztFobGapW-i{Y)Ih3<+m&$${8QXJ@-el zVU6d;aTVp;@f36QQ@uMen4HGpQj}?j;_IezamJ#vFfD${GMT!J?5Tcy57GTTRxL&+ zw#LH3vrd_JbWYdgM5%TEB!@a$S8oax&%G@<#k$siF*HY56*oo4;(cxa35UF@L%g~qP%MIUo|SPav1!UStS)ma`SH1#XBeCQ_;pR@0 z-MfD8aXD0wq2JY6F47!tM4m~O87JQ^i{kvCW)#DC!oi6%_UmilI805Ym6wHG)(W+; zIPqxYxlbbaT!ZKIbIX^tD8A&VMrC=LA*XSEbmQGzP0yy+6WHy*aZ7d+1qt6`CVlXQ zpS}%YWt`b+_X}|UurM`pG<3@Sqkx+GprDg|kcXM<%{ot<=^*u4i!$@tc|P?M#;>Qb zQZv{Rd}MhgV3`b$tH#IrjOO%Yuk?}i7A!WR>)M!KC=NJkaPcV z++}G^^$+<}HjnJbnTQ@LWDI56j0xm!^p1|PRzXw8>I);-U&fvVQJ)6}jP;BRi+-bQIVf(>ZnTa#HMhP7nBv z^O2oq3%@NEVxJDRyS)rnzueg}9C$6R^P@08_%JzDDi0vC4<9|foda7yWwW!6@{kFt z+fq#P?a-pd%IvA#b#^~lrJjz}oq^TlV-AD+PNRHRTb@HX8`Ya!El2$XphTZmkSJW~ zt-lpL_3u3I-x+xwJC0>l!T*3c4xVGn70j7+=CAY|M(ai?p)d3!258evOj+h_`>QuA zAn>o=tUu(2CFj1LL>2UXm@+RhZ$E2GzsT}fFSUjQg_&<9@Yd@pYm??a+7Y;3i~Cp#I?Av-LMq?>pYkrMM&BFuyU9gg3X_5mp@ygX=_H zlF1&iOmA;r{o($HDYSWBqq^!$2se|Qy=jo~O7TSB=c%slfJPSFy$#+d=|c@~g~cs;eXgWi*{9$@waJCXYk&Jyb}6qiA>i5p7`snsRw#TVEV+LfAx+2w9mz zcBUXPbiyKQEN}sr3GQaBx4W|@Svflw38k!NR^HBSt4*JgySqMT59x_ZP~BPNOo$wV z>R6B1TF0&X<7p?bqXwX$A8hZ8;>epa14*c~|MXny*GkW)W_B+gC2%ow{!w|G7`(^F zCv$@8tPS!8M2_8-`jyO^%kgvec3YNJ^7!IsRHV+1%#IT+QhfWgFe}!}X6p%^(wjFW zX05pY0j_YGP?LE8FMBvNcYkNKulvn@QIa`2UxSf7ZJCC2I~OYDC%C*-brLfg0NqIa zUDpUZM}5k!W~D!^i4YX|jRq^O6E}Tb6;(1AmM?DJUSLD$+urbn8a=GAu zTvl^gc90W~)$`}ppQk*9zhS$4FYwZ$T-5e{+?>o;nHk=Uw;iu2T1)+X%KW$!Ch#r8 zwCnlo2Yg%6F+sm}Q;)FoKvK$gUnTYD$`#0VpM~6Br(F1bIk;z&aCW3&T!P4G^+QLL z@;hDOwyC-B@(4$qP8r^{w8GFDN>tdt4sk>oj%GpRD#Bb>>mHTdZ>w1=nLTnFK3~%s zj4XFFmrJZ4Vi)P9@WM9s>1|FFyR_COe;JL>^@!72Q9!6^*cbT6ze?o1+a|7S`-#hB zdW=qZ2v|9=3n9cuxA%Qk=_$e#6e-bjBA{|1NKNELw=)Bqwae46t4c6-^M2VGZRZk+Z;dYg_otk`zdK7CTC9rsm0c`e8UmZL z30BQY9pGCTF>J()F+H2Q)2C`&)p1ZN`du$}L&zGLnmh}q7tPjnkX}wTDSB(GFlu?f zo|MW=1dIIKwwjPFzv?CdpCM3&%3-8!?gVhveCTjDD*x0o`0m;BoaTT~XK3eelAQ2_t;Q{Y0llp{FbP@8hzo`_B5GWHK%^S*iZu(V%6(to-Z{{NPaZk6mic&aURO_&SR1uISo{Mua$!Vf?2)EoF;y{WO z&W-TX@HNreFpPD&RH0kkeO`C#e1EtvzzjETySM-9VKRzVT-0y{zx!@_Vr;X`FG&^V zq1-?+`ne?&#*WP7)skVUcYIEuHcBp$N+O2u&gvXzJnQ4ikuEX&r7==TB;yj>36bdl zi5*HM0LZGht`wM-n6*%<>QBamWh zen$c_-DQS20c;?YkO&3g(d?(fs4n3xKa^75VYP*tPWl)M&@STzXRwIx%Y2xnASQ&3hQy?z z3S^^L(A8?{Tv#pMU7Nh8pm*Olmf7E(jY($Eso>1y)qjmR=i7PSqC)-?z5KW{V59kD zBZ<@_HERB-UPk>rwPJ$zHe3{%^GM}Jqy=Y^0YXH609>{Ei557XVlKbuf4Cly-8w%P zdtKdVHLNVv^FM~@XPp&3Z33L>jL)zUVzz;{dBdbd)bz-10GcEI>X%yg7NR1N(Byqh@0euw4~D zwCFi~_t(B{;CR6h_cdPj9tPjnS#`>9HqY^U53M$x4Z6CyJ3ezVT2tJ5RJ%V< zQ+f8Tut>HjpK4&t`q}zeQ1t$dqH7kTWIYec*h1{ywLN@e;qkg~1 z>Z>~1Cyco35yOlZw0?!lo3gU=cb+{%o2MsmZULE&uCrRC z?`v3_Np}w5l|Ie4+HxYlGmP`;Pgv=Vx#UsFNE$|+rkqS&l8_H^)S~)3W{QIiQPoJ9 z6I$6s@d?_x{db{y4w(W_+w!QpQ)74vW>>SmIPqOb=*G;%Jx{p^uy3S>B_8Qs3` zJ9$@qk2R zQ~@I^*ND2B49c6J)_(+{%)KEg8M3!%@6kJz?TxTp(B9QQb_W)UcjidjGtKTcWIA4< z!;f`4tzX$^&(2_@Z(`<0-Bk^`(Y5B;(&ARcJ2m%4-P|Z-Cc3+I>J{DCn+i2I>w&3QhF&;z&(9=t3k?}2AsxIeWKYXmR;#>?3gM@f$V;WIo=Qyyfq|50Xs=> zZ=0NE?>?Vk&IiMcYSm>j*{tt)u?yfB3o@qtnWKe0fcjCGLAwL${e(Vs&L`7Nq4fn* z;hl`?*zGx#)3HzXeW>MH!HkuGxt!KBnD-+j9`0SeARM~;#~ai3nmsUiFFeHwweL4j zvm)CUqNB5$&zfaSg9Nider3mY#<5S*6wLTiS%q$rAVGX!C4+*mh<0{W{BKh?x!K8DP~;Y1pV=vROQVOSu5-mxUO z%98&=LjhsGsfiU$j$8mm&*70=&CTIsd_78jI0&;*VgR62i42Fnm>w$i7xM>rBdO6k zK4#69mVE`t!Hslg%QPfPg_uQu0{}ERsyDUo$B-UL!b?|c%+|Q{Rc2@%(be#55ia5! zE@xValjQ@!{O@fauFYz!|0tZ50E3-&XRKqHVf%CfC^jF?ptmxY?>nF(m-9kK%CUMyCbFQNF>pJknmekDzs83tyN~aP^ca%nGv+N(J%w1 z3p<^eUKntU`T~VBWvUP^$BkZ zj#eYLm|ePrjW){6e`TC)zCD?9a%na@-Ab!%j@w#va3>NH4*&Dczv&YX zzr0DLZLMg>UK#x@>3w9zAnqR_(LHul6$81Wp0)y4EL8ZMp4g>WL=`hh@VfA;x528; z8=lPTG9mHo+PKa2>fuyKPrzh;NP?BEN3~NbR9yA%dT=!Y zI3a#dH{prU{@wxaj-Z?Rt*K!k0q)w++2KI%dux|WDgckl@5l-V80p7>JCk7XQVeIM zQ`SNZ(4VVOUKY+Jb67iva1&u5w@;4%v=Fn$YyaMQ-umABhhEuVs8F2hf}=b^lk=;1 z$65N6V*Ad_XT-|^`7%S?4ltAdOpM;!xb$kP!$-sKsW-s#rT_edhc#!eg{Wq9J>{;L z;clA&xkh>@qHSL!%lNZ5WJxJsbkDOgH~&-~$_eZJUTZw6yCU@kYc^WC)q$3k9_;na z>`fO;==n8npEkaFyW&UVBKb{=H-v1}C=FGh_OS^Mx2BJ0g4-MB!UxTk$`86Jk{(UA zn}=raEc2~xGz2!c4~Im`Wssm;oTKG)_g}Pax2@DDF1$Tm5v8NML2la^L?P}|qXl>N zds}qbDg(LQ-gs~0GyUy95v8!epM)z*CmMBZ zi8v!RDem0%>72#*n+kjsI7cL_>*$k*>7$0k-THGsu3fN5#?wQ7bdmj z)&|5A+B4Q1daTVey8H}!CQriPdiTZ}W7^HlOLT2XkXwXkLpF?M8qq)vA5k^WG+y`r zG5GyqgS2DwYR&=eJRp(W-75@u*Qlo=N313{NP5RA{2+NY{<4o?WK1r6 z-`s78?-x2OAPn9Ac1`$7DSM+d*X8ZW8+F>VRZg;K)jHLJDA7hj_J;O~gw!^6nQn?M zFK13re85_u7J_jDK&@R3dz!qyuU9c!t|@8~8F*paFw zP;{-@7>1dMB2;^{!*+A}a51FanP0MpkC*2qPS_7q<}ZO7h{dmJ9SJ$PBip+oXu{a~ zASte?d2Y`+SwvQRGz2~R;Bva;@?PM3o zSjf3{uBliDY94M*JA5vyHG=QJYtN@qkDnVJzW|ViUR3dwjaRSisr5cR+CKHrm0e6cuiqD=&&$J8z8ZHPa=jA!DARZ9b>oWze$OOxP6?lS zM#T;}i-&In17bar6pnHj>K^$~S{i_)?^9`H;!de~0cb3b21{^v6^91)rUdQ+O|(Pq zI({OdfK!zi(V+clH zng+XMvr$4sKP@qk{>VL?%9FMmILn+I+_imX0H=kUgB7jI5N{CZw6y(PNOCXDQgE9f z;SnRZ7tHtd(o)(o2qO{0W6qjjpwybrFURN{u9inyC~0$$M)-2BDB;2>Jfh*G_GOJ2 z90NtMTr#e~oH)@7d7@FU$aC3DIb9UuwEK3ZE~cM322(BY%N!4V6PpJ8B$|1IA}%E_ z?jaU&MpjY{hcnHHz1`_#F1{Gydgl044KbmYBd~ifS`J@#5ovAQMk^-kut2EMFRRz3 zH*@E1J(+z^J!lDYe+>2)kx-%@K?Z+h&dEe*!=HX7&D6F*9yz%+^)_#s<@iz{p|h^K zs)s*twNW=o{hew)`eg8ry^K?uoMrV&1o;2QmiMqlJryc|iLYmKqQ4d-#4i2YD z1Zw9$V(R`Z*cK9sX(mB6$W4sMGl7u>99-W;=im^wu1Kn!#f9M*YV}(34jxTOqPPSv zWh&L2nsgv7T9_E4BOUt{wkzQ-5 zy(oNnUC?UkK9TAVOOAesalIgsrajO{Ij5**cgyxc(|XiHsNt@P%JnNxW4`C6BZ!9b zgM;6F`c7QS1?|c`mbU(6ewxB%WtVK?V6zORrZLXHBJy znf5~im=!rDn43oyIOj@_+ja(gB{no9&p)8Bx-s{|_+4ylf zcxBP!2D3-GbPy2vnsT}SULurns@QJr-bC15#{@nkEK3Ew%|yI|*VBvX@_9PRWL zVGO7loa4@XmMLOB*ov2Wrr<>)QrNabF?z+LZ~dW1}e6sRpHgC)r5nOd=Ky%mT9IB`F+UbNEa zhInc0wvB9q!5b_hVC5rtQ8fN-6DD2!k?2F)!)3_pHPw@Z(m}?bfcNpS9~mwf5%n9} z?`HV{FP|EC?M0n~>H;2pez~wbq6s+wVSOLNjRGEgxm=DIk${w&;ZdxYn#W=P^m`{pB z9kc8eR`DIFsYE@7qt!Ga49O~4hD_Y3E?i)vN%veIJ_voGiUg=XG4 ze(i>b`G(z~h%%0{>MW1wOur^9)3>`#zg-3Xd?nYRt#D*pcyV0v#`^s7;YIfxG@dMS zW9crnmf^2a)0a`+9qQkv0FI|Xm+0Fm7g!G~GjL;CFXm3%N^1F6fnW{t2_QD_P0drkq%VMtN<^R}&%lGFZ z99z*;F3cB_9}Vhe9FP@`l5z zFe?d^(frVE$s=j7H6cf!f?)S^m|H|mb)TUzocm%XX~uY2TzTWWd3^0va`f@E?*;)a zVWbR%C?c7>)B0KgaN*&i?uvoA5~4!#s*w&O2ZKdKB#*IEQ7=>m;XmWjjS3a)JKi^b()8r>9{j?nLFFt5#-T-F%bmc0HrothZGaF7??$M?Wj z8cmN&`%)Lr4}9z3K(%)I4MzDJBIx9Me61AWs-5{cK;lc`kz80g{aRuQsvtqs=|_Bw zfjPCq%qbz1rn@48s{bm#tQEPk4k` za7m)ZnRvhYyevlRRkcicJNlg-i`?ZW#t-qghH}C@ZR#?$N=#LILY+`R?$MpyKZyq= zuG~6%paqD*MqeSG&i;J%W-BaSA<$3h!lQMsKKJjvstc`uq(7Z68~oB}5+u<6>%`NP z2knc35s*5ygn0=hds`%55w)ICPMsy5V2{HyH#yHcslQbdzcxIOmK8np=)mGa%iy^e zQb!834h>)LSHCAX=kOLUs-XQuN;CaLPU}jf#Hhe^5LBJNSYe_0t=sU^W665j>*eaY zMGEdNODEL@Tl9wCJW*Vp>$2*acok#6b;Q?9b#~?uJj1CD+ zYtPDI_`nEokF{2G?Jr*qeY zw1b`C=g63(NN+ty8F~t6iXVr$Bz%vrjD4Ze!6$GhJb$ZQ=e5&)lcJ<+zs_Ja(5|$S zd7D*y8nNx=j+**IVqHUb#BrCsc$d{w$GG8|bHop}w|Mp*taQ5_G)7T)3lb05tM&C4 zUdhoDTfV(BJrF-JUnyZc)54b1ZWut#$R)qfG08?DQFK{tB=KR3L{pD|#4?b5B zL{FS=+D77w6%)>B>O}ETc6I#sXVxP4(D0Xuz9LO-^?)OQeLWM=ONU;G(FfvNUuzKU z&hymDmqytw#(WpDH2=0`|5>x(SmK<L*8;cRe^=Tq-se29iPOZiEw~Nl0Y)aK4VIz*k;O}gBSgXe}sX1{wt-~W4+xs$dr`5$o`|3-z-hqSqKISx^ zz@N`fZPPd2ea6#xBPQ00zV1=p1bEQ3ESDk|ePJ;sdd*7*%_z6hiQx^{s2Fke-YHyQ z$?gVzzh7L5gYU@;*P-ZH@{{1DyQ|oU&Yj%@DJ*e_*h~!iQU1Y_b@rjSjt>vCdkPI) z`OcABZP6!hBDvf#*!tkuZoyMr7U`De5>0JizkX^fci445k=g$g!G%7#;_?MzsYZO% z(Xyhf)V*~W$t*cbEbpq7anYVM%TIqnk`7$5uK}GHI@S;WL0Xe~V4l`x z^39UgW=h+@x5v0J8VxsQ6=yMy5ZQ74@7NZ?)T;nK2Ih5AH|1*!*EaBx-gJilLt98Y z{_K{oP$GQ^v}cl!&wUaz8>Pd?jkn!Bj)#`I4f$&ToQ;pyAuG=f-_~v}$-YW;5a%YY&(J1Kt^b^N%0ikY8~V-L`ie^6`6vEnmrjC&BVTiLzq~?~@!= z9J?GdvCw0zt2h)x?DkTyIej_OH!^Lfm^Y5nee=v|`fAAJ=@WdTJ(HuDR6d)mSV@Rr zzP&&I+@1{zUL*6_F*t)X6)??>tj7B6$<+dNc#<{vn{F&BD*D%j8q-~%(c6CUP_H(( z%*cuE*Duo@l$Iht!&wh8&Rhqv{QH(YuY}}iO6TFnwh{>;lYBbJj?Z*4VI4g7$Ww`A z(lmI5z|PJK1RV9ZnIS62vvbWw;>bTw*_31J5-fE%BGdoQ|r zE3K+@jPFaN^oh)8u9=a1lQXQ`_O?CQw=p#eO6X`EtYq;^5;$FU`twQtj#uJg7Mc*4VpwQ8eTfG=c)@1Z__zzS zWnMnzo4>@qWaNU}m*V7%*_dnd_!!;s%MPq#*W)2#2U>?W8)cqwriZ>fgpFw&(FLs2 zut~RG#hL@85s#f09|$*U*J&4DX!qpORICx)6I1tLsUjRhNtAmh_UKG#3-bKArU%{FcZY5Zj5!k3s^OCHOT3kr6JBoAKq zpJZ%(+yYRKy{qm;ZQ?NItXF%cy?#pL4s2YZz>d+E=3Mo5_?fqRh@TjK>Hbf(H%0U@ z!~U2}>hnDH%-nA&i3-V(=2w&z?*&0RT0|QT6PHi{=CVVt;DL6b6G2taVpirOV%UG8 z?Id7j_C4GTXENfiwiA1chMPQ#<9qZBP)3ixYg&I z6kC1kPlR|##^-;fMs>W!MfnQW&M_A+wc-w8VGx5E@XaNgbz}=-#HE9C;pQ|=HXU-E zxqr8p_NzJ~u;3d@X%D>sVO&OvI6bv_mTt6!`;#C7rhM}=f$Be2dam=bsfFu*QTCou zO$FN4s31rbX(CPOh$y`mDWN0MR8&Nobm>hx1nE_JFF^!B6zRPr^ni4bUP3R@5&|S4 zB>6b!z5B*}=iPhmePiTL#@^Z4V~=FbwdR^@O(E3~$ir#Q6So5nY=}NSL-bhqkP-WG zjR76WR9C(A%yhjuSl9VJknXuI@47?%6TxCbV@~gIwjMYin1DTn9&nFEaLuo)6Ff1^ zzzB`z6%n1p+4$|-(mQzqbMSyuog<5J!mq!z1$CQ?S1&pJii|TX@M8E2d;mo_*)_;h zqmd}I2_Hi3@jT@wyj7MJzx~@T{yk>t97A$+oVS~$)E^jpIU9K;7tNsBz>B{N-Dxqv z40|2KzVH=6yGh)?RD4UeXgJD5EF*TDLKSZ%wfF~4!~|I%d19U%&hF&C3_)FbZo(<( zY$`Yh0L0(21PCGuYI1p_uE2*w8hue1Gi;zTmwIl1&FXRMu9ID)zf}kDRFc}M^a5gY zLV)d)OmE1QLM9JSfE!4WKe~+lN-Pj(0x!&n2fGz9z@dPO!>e+#_tVuzS=irOd)g0m zCtcG`#O(yA0XJG4h}G~~i%n?YxuIRE>@w->;fvm0J!JTj0mLWoK%PScD?D@}Mkd3j z4hp$oK+9tqUfeKb;`7#=!+XypL3Pb%^Rgv@c)CTj8!}8^e`s&ZmevG;q5x^B%HxFV(5|Cg z55iVs$%p((`aT|}4{$70<%xg?aL~pv9Q5pRewo8PsOgAi1$^aTsazqN2n{+i^t1_F zfh9BtvhK&S+?3ygh5ecr+`Mptfh)PwkV%GI?ZoEu$@#b6{XKr zG4h~hXmW)@{iG;82jdmI4!n+z6`p|tJ{r3lWYYY?@Q(7l7bu{ARgn>TD-4aml{yVxDC>C+_o{j-m#ks)XWB~#Tg zOghO8u^6)$E(1FhQ7o7RMuZ4?JRW)F#cfe%#Cz;Ue6fb^h6D4^*PFVhZ<3|%FdmHD z!{YniII{(YqZenVJ~KpQv=EpI@#UvRiiF&vW+@-^lqJ(4lXcf!A<)(G7Z%%wW+|M@ zaKYscrDnJEk-#kr@~{r(?MC_A^djt1z zp?cFr*~CJm5g5OB3imxB%F`xNa}y(RV(6^uVW|7rLoA}t?E+XqE0X3_9{kDM_mC)G z;Ckb&8{WiazT(ONj>7*pyAJEyh*NqTUNn!;a9nA$E#4H29IuEaKN%|)a6lffqy6Ni z%4)_w>c%5~>d6eBSSR%8E;cn+d3+LiBRBHdpW;L7n}1Id_$2{O+qK4~Vf_E!HphQX zHvSXSfUqOY1XeXI)0C8|_TE!MtkrD%j-PNb=Rt(^dayEU94<`1O43xKPjCmGwSd{rV-%&s80xWQ;dgRd1R- z{Pa}OiPXetwqtL&3E!|vTY>^4J)78}!8fSEX0C_X_zc3U0qKz@d$-Pin@2pM5Busd zKRou49A6T;`mQWane_~Tm>k0;7`EfC^q(3=`Kq$+t((8uxtb={n%PvEM|@;my-W+6 zg}G=yMmJ#*~>_M-nY-* z&hJ-B9KpwY8xOC(cj^-Avwh&%oPhkLcgCmFR_5pfg@OzR(Jw6KOxz>y@sSbS_|^R%fz_XTSPj@) zcImmkZOm7FD|;SI*Mo=b1}b{oVVs=4HruICyNulwk?jw*8#F3IShv!(q8vy=*R%&& z+mJ7F`TOq>y!m;jwjqrU(Sq*-oh&a6pw*M`cT>n0 zOM3;D@Xlm=CZFatjprB zmus*NWCuZE%p9om;91IxgBpd$Vo)BBRi?`fQan&vgvrpiKs2k|BGG&CbF|0c>@zNv zfK1r}L6|tCiNBXm(6zbmV}{?OX!d{vWfxX4G|R<)py|f8 zv)!9uh{}8^D-7xM%Sg)+NMs zIeO+oQwTdzU|1{y-)XHnKJ61#x^a|Jm^K{Fa`~m>m!;Z0oGxPmJN2SVlUU(K3ZaET zaNn)Hxv*IYm?ccsUl%6YaGYqrn^^Xoea#}{#V>Cc8E{s&uX#v(%H`JEkimEpdZb%U z6>C;$`IrLVsy1|1r;DkCd5}I-!Gm`H!X|vozw++y%(IC`m!VaTuqq>VUIX1_&#Z^2 zi?$DyS{D*4x6iJpE}EImo?H&`0(-U2S z*A!P#!MI={a=`R5v8T-^1ks4uPxJh1zr^g@gtuIOLZzL!Z~I7aqFl}b^*T{xD8KFb z?)I{K?8g0Rlf5Uyw7O`aM3ysG(DAn9MUr0oGnZQ=7dlHsM0*=;jzJ>bZ3Nvp7xryj zW4by&TSRe7mCskMoMT&)Q>HTJr1H#Q6lRF+nY_3N_hE#lj4;zkoS@%j<;qExAii9< zMWKo=KQlkt`0yZ)97o~oc8^&r+b<43@_?po@Z!xCUsg-?&@4%40o)tJyYK9oV_3it z1IicboeWTLCk9v=jGJk_HEP8@T<|sK^tV=(g^R+cKK<&=cXO;@TW)8nvNQ&EN0zr& zwelJvypWTg?-T|v;Zx_v)xHJ)!0t?Yg@r~4qdl3wba*~$^|UhghkPQ5Hv+Gv z%Wwab#{lo(zOAp`qf>AENwD}fFQD}n%|EObPE1-0A?6aJt~42xGryb8;8SjG?<+go z?hafhA=#GwdjyjE9Oj zE7qin$4Jx}^1l`x{Acj|PiXwF+Jyh+G=zP=vPYZa1jXOWB2%)H)fEl+E;&R5^O2fF=gQPN>Y|C{uSCSzFyy3`)O z;|Tc0_Bhf!BGMusWK1{|>z(hX)31mzP2NAB4ljHw@*leZdN5MUlArnfkJd6>URwO% zdLa`vZpXkiv*#S>LcAT8f!%quafi2_2VV=Yxgl$nRb8M4@UYjAA4-C)l>R|WZu~A8 z7^;I;i|EC+*FrZfw*4*Of%Bu=I2hffeCRcJu?+qjKjHPeN~MwZ?_9cXTl9*3J-qGj zsi!h3Fb-FUxcDnVC~vN!jx3tpfz41ag0M;!JK*tu+m zWZmaSZe?Kv8uRQ!C-&7P{ZLUtY*eXP(wqJ%t9?K1E>mv2lF#>Ib() zj>1(3Ey3eXL?lPbVrJ$(Mvyi@jZqKGmo=5&lB`bnf{4T6nX;=aSIl!m4ZU63vG|d1 zUd?O^(R7ju5NF1usYH>veU(jKe?7>lU{H5h+olFcJoj`^T^@3jSvdNeP-AB<+^k4$4;oDjA*r9_=_IGn&eutgnUX6xiPl?%wuB`&@oaU;dKww3f za=pXbl&X2BwXIG}@9WS-;>S&cP4xCE+rTVAzPD%LN$8gkGSJaMs~?j|V+Hs)tdUks zbU4HOpx;4l-of>H_y+ByOm9PZbD-NZ#>(ScOQ0z;=^eR}h>IV=Mpb$$-_v(G94m8B zb0!kkg(>5?0qi?2jG{+3@pA@I6q`F&$V8j#JKS`dddY|)GUix8EL=@yBIA8^owel) zzjCOrj6O3`e%rr0_WYpEIN5i`G){!vFSiBpj++{tszpPa^)mfV(8?9lBP?tJLU^g& zOW+w3gR|R1a@s4YF7)1P8f-ZRp6|D z8+FUY!K^-7_q~)j&8wR>jG42Z%O<#=b=9&2fffG#_DJSq%ECJs2K)(4h5nCqljx86_}5mJhYO22bPHEBF3HK-ehrMZP>k4* z(H`#%9Pjw8+#SPxZfBRmphqdguy!fuAoTdq8l1K&OaIk|6GnE2(IsO;)49KYPo{tW z5N9~^D;@pVp1*2tDs6aZFhw#7UYJSI(-jVIDZ5(s;``QUBvCntY$i!PD4$QHU?-wo z3W|Ok;TfBRTb@C5N}>zydCM0MNH=vYd8Om@CNfe7pyG9eSvCUWYH%3l$E#%qnq!^Q z=!-M&w3#-G=iE-V9iU)EmpAvy<+x6&3UjoH!zb+%aUEHpWAVK8>!D}n7aN*QJ}7xn z-xCf{%56cSIH3r~Hyp3Sw|(FQi^(g`BanhB4ji)EElkm|e2wd@L&A1SK8mwMAR3fJ>wNH8t-Izln-I}i zZk*!(cSnJ=YOZhaU2A0W>f~meu_U*#6k8AGT0;B2Kc))LJWP#y(mRqt&()Xn?Dx1IW9wmjI9N9KQS-W`Y=CS(D<5s1CM{yH(S~c`+y>T! zbbI0Gx~5%O#f{O0I%R0S6*n#9ai-~Z=eu7T1w2%ANh7zMjeH?*u%_|%!d_l#)L}5y*(6`9yuaR|o1<%q#|r&e z4>HG^&-0n(UdvmeS;FA$Zc}hKaVmlSu>PmZY~u0)@V-bC)-@)4fCew}I=+;wY(kV) znjl4Xe?xg7Kd(qg&-wGyfv^Fu4V}^_DyDC;R5OsyVwFNid{0`jCGtPCA>TMFS;dbt zMIrgW45ai5d|dl^eO-VX2RRluL&)a!qsPCB^woacF}b%AsW`C{b=^bSxH@u2w(HpJ z#k1iiA@#s$`m;av0-3T;^^D>H#5YFWlMc=mFx!Jeb)g&)GZM|O;|)|uOIp@nlcNyL zVOGZ?7ROK!AJ|&%xUaq@-b(S>XIXp!unf3iw!o?+?~rgV*W z+YPxmo+n+i`tjOd{~Mdhl){eR#NDJGtlZ7Mf#ATHc;#UJ2-RQcOcA^;EL~3{UaKWB(Ir9WAtP|t5gNoddU@%cG}|eJv0t$E z>JT#3!XqA#ENt+nM;s3^Q>cJRdANF-JAI~yWzl|RwW#q*s}M<(f?D26EZ*!>54o;d zBx#h$3*WEyQiP0ki!rwDOIq7LCkLVX#NoQW?AS^~tJZk>26X(^Y0 z_`$^z0JcT1SdM17{3$Bj!r>HlQqVIwl2!XAPJ-NI6TLPFVku9ic}Q{j2wx1W42lCq zs2-6F4W~lsYCE@IwjS+@_RxVPlMGRCRkdow(5hcLI5OsM6KE+Wse zc0_QkCbj;MUnS&;##NWUCH7$CQ15$1*2X0&SPn=OiBR+QFQ3h?Jznpu6;{v- zVY3)sn^_O$LAf2r4SOu*a8~Jc$}p;>5XAUjDhT~VEm*l3-oo3+Vx~QPtFt2NODmy@lE2cnui}EVnn_$!p9+Eb`19&2!}5p^Necxw7=QwWSakqo$j9MHHFulwctZvVDReHA6VjB{^vHfaD2E2L6 zKBIkUR}k-SaejVsepW9w!o=RWzujxqN_e#bJMSfEZ@+$TkvyQIP{s0r_vv4EU61N! zmzFf5o+ZIpmg9#vTBONY??=>jsc{XW_^vUuTKx4Xuk6S9w+8_^UoBc7H)Nu>D6Mb7 zVxc!r4rMo(u^~~>*H;?HwlD%uWkOmZqTO3PrSPQZg{Y89sP#>!D|*%izPWCvT)mRQ z=TkMH+Npm+By*l+YIgYdz=hZ1ghrSAuUo7Cg@XLQsnY%dT!ETj*!mjj{=8Fqon-vQ z!|b~lWwfp39LL$@Ie_n8%KciKN{tE=gz$-kyJszAU@A{#lWT9G~y$dleu{NhLjX>yYTtylO8S^7z%pPc7Q_@=5RiI`Vi- zx3|q+=uZ7QjSs@E#qSNT2&%WE|klCwxECQFV$9^7vg0Mpi)r>vBlzx?x-s{vBxFJMQmzjEq|8aE@Nk>hC0xG z&oh4}!%nAtsV9JTs-yq??*u<2_3tel60y zfyZ+@5_O`15!C%NsX#ExhA>(Lrh-Q6OSs(9y@9PB?w2O}ZhY4&(>|1`UAdJ|%g-w>CTUSNptT zoNx8`#EEgF~(bmm&<0YzY5 z(79Cb@)}eGMtI!42PKD;i zEG}=xR{0!@8?WMUuW1h&3nGa0R7QE6K;8eVWY;rqMH#-60KlKfW^4Escl*5>a(#bG zr8gL$#a;q`nVj0nQwrXXW8Sp>vr+5}okTtxTHF zS0#L6puJJ#V$(<}Q4m%MJCh?*m`Yw84(=(tm;~T)4*r}6Aqtd%)cqr-GONGEcVlH# zINu(DPcAN28Alq@H%Q|HUDk_SFnwIQ*aufZN1s7uGi|f)x$n>%Lv*Ka22$x+a73BL zH4gdJfJ4qq?CwdBV7@X&TwC~Pg!Joj?(zCJ>l_$@5BF^2afF4aU5Os}m-@*J<))6-9Te_>(Tih8M`G*wCS-AI2=Z*+HgvTE=hI@4Z^;fW?=2{+ z9seLl_1r*7I{wWAcK><&BC0|{YkU2tV9?Npw{b3a)zi%05cD@mlk`a*ZWI1uOI+G~ zBId9@Uex8Uf57WiNy-_xdpy!{0AKYjPtyiB{LpKRZl>vXHHV%lLYPvu5~TLY&9Ur) z2_-9|H{y-D^T0UT%HrPkC1Q!z>bL?}lM)3sS+r-}flU1x&!&?@4>w?@Z<(s{2*(WY z9bVs?q9zV2|9BtLf-3*i=D9Ka73!nE>D30cDx>oEu^L?Y(lInO?Yg271GM2HELK9J zFb$IR=G-iDbV)u^G>AZge@8WN_vrf33|@s1e55F7rPLIOFdD(aTmx!Et9HwG6q45ST41C<-h0x!3vb{BHE+_T&Dwn`D9V zy=Ka*nJ8=5-YfNWA!kuKf{(#vEMhbDid;pIhhqQKChXK;-SK2TG`JtP@bBoqAH|`@ zAU*xf6;gw((wg#ZjE3er0oLw?Vb)|MyXnWm~}@566Rlk^wDu|cPQ z6fKYG{g;1X3cx1KGe86q*gHG=D!{PV6|*SSVMmT7bKxz4U*TtbtIw<)p-t$gi^vmyety1=JWkYtKoN(ad!*`o}!4ux(W4epn2X?eR z8<*=?hL%2$MP$1%KLj?Z`K3bOshLamH?fFecDHO>gJQ@y1HWL)R}FQ8fZ(LVpYO{8 zosVyC79*S*gNa>Yc5+oTZprMI2f?o@+NZs2VhH6R$)@x z`2C5`Hwg`eN$TzZ$h3icBg=jr;OO^{RoB5R)yG9`&NzJZZDekM%QnPJ^B_?<#4PDp z&-l69=t>(0m(4{Md4hbJo{peS@k0G)zPf9+@r_8>N2|piYXcr3ip0A2g0s^GK9|3F zR8@Ax^3d8UoYULb6$Y?kq9|Bs;p-a4wCk>$6%XkTMhIh3Z@Qd>QmA>9eme2dqfv31 z=Bn&uyAsG|OCj>nF@NL?DPR8C(jp{hZnWwz}|2bn`aPY3fr6E_P9Vj zsBjn=ix9Y4z%MFnIw8kX$%X_Xdpz8BEi3ATTAV4#*KxFboL+ezBKe)kCCeA!xuo z%HeN}8C;JQ-!|ffqetE^sRvPgQ-X$WyZ|Ok2P`ync!YC-xsh29lE%zlzvbwDr+}IE z`><%&tKld=_MQ!h@PpY#(J78#-q3wNAC7*yQn-Fp{70+earW?+)mxY0@d72>{;v{6 zh1v6lhJW}QRmDElQ3wfZ?~|3WmY1YSgUjoz-P@QwX0EcAJC0SW6zEGm6idjuoue13 z5d3v5laG$OK_i3?nl~i`TYZ+8*{xmKq+#Nj;Ct^h4>Az!p)CEdlJf9R=gb|Hbh2+* z799u7GacoIyTcmcc|nZ?S7G&e8B~ijS?`g(viDTr{{ER)pt)N`kjF^$bc*Npp{K%m zl;uI=V9LiN-ogZ#U>DOBZx)4Vrzn2FbDepbN%Jb97RZ3?yA!KU)gQY9S(Tds=iD~; z1DyTuK&h)$>6s3DDr9a5`^=B=&CDBiSnevQ4ngdGyokUc+PAURGMWpN10tI@n?-vrAL{od10i{L z2JVmmBk^Om8##(rjPGTyTQtI5ZYCTV)`x!zaN^iFUbRG6WW#Rm&mGHOdiU<6abxFO z3irt?YuuSvLYr~7+po7P&cdcW-YZfT^nwN@Z6Xz-l%ao`AyWo~mOn1MA1&Z(Iy<8N zXt9&Q;lE6J)fQgfI&GDoyo<2!h*}_wz7KYn`3HeAeblX>D{GdBl|el-odK`=`*nXZJHPI{_S}G$n`E z@sF)pHxq6n_5O(-8I!%aOCr_GZ4n}M-cac4;;Mh!k!c6sJZ%Rqzp2Xjmq7i$oDTiB zr>$y5Di8Up4#h3)3Vw6aqFXxKn&Y6AELNh#Wa@II?;Z@KbTuOd!%8-&jMY1xx&)g| ztc{=Q1u^>kseSgv{>O*FRnM`?7hcDP+}3THTPtO2%(R!AsZsSW*#h^RrP^ERHioomdM6)M4J@3stfB{#8)ZCR@-LF$n3&^N~av%667gDNp8u97#!0w>>y+-mhyp! zfcEB>;75eip>A)$GRp<_qreOgsbdn)_qb$un2B~%Ox2d5cOm&_;_e>}Ty#E^E8a6> zgDI(9ka#W@ai1^Kkg?wMpB;mZCeCvE%`;UI=N)B6tIeH~fiuzL%F&q1;=QpvD3Ggm zI(xiwL68dEtdjJMy*lusc+jcZj9s(44quf(8lfO&`4c^py}Rg>qRx8l4LNh z%^T5cnOiaOZL0;zl?e%HYMXNTh zstl*gt+>Z;-c~xQ`7b{zy)(-M*5p39joiAGx=(jVk`#8G4}tJ;e%^O9-?djTn}k|!(e`LTNXPjZ|ErnB?ogddB@ zGc;V5hWbaSf;q~5yw+R`8>iyDpWXV3N$sFkoiWw-NdMggg4i3?VXEmi} zYnMYF-ogH7k)heEb=Xz+g>#k}xFl;6MGCO+NGHk94+oJ=RR>K3EfG9z*pYz*7>HX^ zNVTf;FwdX|zx2y*{v-OjCDJ&h3j0(1{@@r$yAmF>voC_XzF4u;feT-M5LPDv=mE1N zm^4}+at^N^-GW3MqB|VsdUTY8bBuK63PsHigV|=49=S1qb`Whsy*UC$)~33J9HCAV zsT697*Gn7}ah&BX{`Z7*V+0PivRH1KSzbBC0W-g5ytP@OKG^pT->Gh7y|D+tn#Mtf zWE#0~q1LFii<<{vIo|?|18_c5FdttTnbji21i9AJ)c?VE)~Yp^+5U0l%Lm5;U*J~F ztJL58D2Q~o(Dy$NSa=ntLLHEKW}5LJ5cGGeJMxjgm$i+>J~k}r8tm0WBTF7rHo>GW zf8~e|$P?!OA=wSFyLp#5d~PaV`7dMg|7AD~Z7b+Zcpx`IVQ7cBWOJml>%U`?C0-49OJ#zLhaOZ42G-o4xiS#M6|0^+(lvZXAHniY0IYjmqnoA&ryMLkR9Yi zHR}67BTQ>qQNhi<)F7&V7p`l3QCQq@4;8x6)^XPn&<7bjUdgH5D-MZ#Q1l5^(0qZW z127GxhGz9GG+b<$R%_iRmgF&Av`I7Y|M7AmL?^iKLWr)kQMZ@Ta2E+r;mhQe5E(y9 ze52 zV2=Z5;*IT}0)6H~K~fqfUm+O_HIXi~zoJ}wo6jdEuuH^}8VQ{k3r+wNe2_?)@cmf*O<$TR zqJt5pTlj$bx`*jt<{49bb+r(tNy>F5arSUgADX8&gF0%3*zEVphBY|!*>}AoTW%x$ zDRV{eY-e*A9%j!9of|hAZiTfI_!4n)5VDXu{sibNW0lREv-7?dccioV?Awr*{Il8Z zGjx<$jB#@V9bJAYxXp0!V`SgAF*}k!p7%EWitj)3hlp2=%nT@;7u(stH!qv^UoP0$ zgpGjSHlDPD%i@acZ@9)58V|N85;-MklPKiJH~ue`z4Xb4@_Yi|Gw0IrW}wS`fsOl|DWWob6NWfj>L>GP(Wi< z`mV8bEwgZ)W;rtHuOi6zqQbl*kW^?EiM>uDgP9^;hNj%VIpl$3KC`aBk71_d82|Sx zLH={B1Kqt@Zz?ZMd#CNg&ZJD4zlG#oRX#4!4~wO-hhn^s<>}}fOKDihZu*|}ckyt; zZ)Yw0AN?GY{6;9b?0mN7H^GoZX;t%&ofcs^64yZ`+_lHM;RL1&1T4b^c)VfmN3grF zBU!6LzRRtO%P;@Okolc*ZL`df_bb6pJ^L2PCK6O_`Lsv3soG8@O+O<>Z5X9B5n`Oz z94QXBwMUKafmlrLiS*jga^GIJeYfKMcwE1W>w!bSawjus)D_71D}{liXPdsc)OE6x zHh8e8^k&2cn6CR5JcBja+cZ>|B;KQV2MJYPZb@Up7b-pU1l2M_mAFp$PV|TwY6!Rm zb+G27DeY5>pJ6ZsZI2Hkd}E@oMapdu>q4_-ZcXUAw? zjsb%PXLuKVATtaG640;zArL|qgd{@jUGW17e!aJQe>V?^6ynlZ=SLOhrT+SYxy8l;I)g3ygkEJcP0M+C@L+pn%|t6#M0N|(#sS&@;RdB!HLc`-=xK7$p=>1#_vE+$rjQM|NO>!|H$o4cCX63at7O-mQ&j^j9wvRsg=JG0Fu-!7{t5?Ryvcw+#p{TRO=wPLeb)dbM zlEv*=MI>&wPZXs)3fD8_Q3`qf&2nA@*UhzfLr*-9r^(Wym05Tcld)@VF+}08&GsK01=?-SiAl*hY zUs+v$U%#RW3Buj{OR3`ARR=-7CZ&-hBaU%m#v%w5Fc6IJmnTTYWb7SiR%i<4j*_*0-O*ra~e{OAa#7xKPv zuN*xbVv?XSL|DGvx@PUqVPT*a4WFyxDm+@yy!s33-nH^b4PMHr=Pp+dX&$-*V_Z>%RBrX?Gc)!%fqJNj8b>cFVK?Y|3Q^5VdM+!U5 zo_^VQawYcW=*)J`(Tt>7*OSEG@~P~hsJg@P{TZ(Xb&zN;qv_+g7=gD+FN?Q=pM7z7 zSHyx{{b`2CqT(2ii}z%>vZ^zSr{R45^8e2=gCx$-^Sc&Xzj4Jnh5|loa?WpKDMQgi z&UwC*eioAF&8cecvsAr$tRiIrZ#BEB+uI%}M$`SAk6C>`$gYoW z#CKS$njcO$&9g=r-Ff3gdDFP|y`hrihhKnaB`KUp=4;_ON8lqc=nWj`RC@E)U9x1- zo1ZYX#qw>nKTeQCA{^7x*s5$KX`~s~Jaq(gS9V#7=@B4JiF~bN*Tv~;O3BdkR^41Qo1Kr^Aa8bcYPqrAw`}OF!kPS@;ud<$%OfX03Yb!h zBqa-@ib%s_weT;#H_<;{7FjiXdFC*ev^ViuOVaVpJnRA4j_%7d{;$)u@QOZy@+aC$ zl|`O930ZT=S5iqA1=JrbNqu6Q7mWi(ybpf~L{Ln~(OVsR^G``(JQ&hE^5MVx)1kyd zY3)1})-~Bd>dTeKfUCU&g-HbJ1Niw|T;%hDdo!~P2YO|FpLp&y275L<2=fkq@Z!z+ z-`6IcT~e>7zpy2!WnWx7r$2{lQ4{Tw>*-C6B0AI3JTfF7(VXQ>lR~1B&mA`5eIIYH zaS2XSs*C*PeckD^_d$;V&9g+wz*xP3@x)P+M-r9RE!^z=Jia=@-p1z~df^Q`)K8ZrBhbr&JN`q-qkD5g>l z5N{o*^7;>}&lp%FH@=!afu}LyqWPId;7#297P~)guk5%)l_Eh7xA9Wz@Z_pJEjz9c zd*Y42=nFAgO^tSU;fu{A-w0*C=y$=l4w;4EO}Ktt9mxlO8w@j0%uV9_ya8kvzVS%* zHHVav1ho+Vhg$(Ku4-);qs7mJfOaivYvQMY@$v7+2BdV0^k;lCl%9-SMyAR*0dPfb zBufO-lZUkV5Z1Jq?v+%8+%Z|0lV=$P%XwTjd?Q3v0f{q`f=~{IP<$Xph$`{tZA1SEG+4rYpf%t z2M0C7+((D7b&+cPeG%?2`1E6kYeToH@crUuKiRqV`#Q#Dr9U0Mx`CnJ^_gm}?Odil zV(SajH7Z_z`^pOKDkzf```_N-zubr)>4-6)eGM|FW0-X|PZv^H!5>#gd+w$4O7=FF z&Z654%U7B_*se9Ts$2b|>O8POyE9bbhmf6c(_RPd*CWwb}ttz(EG&hdyk154g9P0^Mzr{zm zUg&|e{EIJ?N)sb~8%j1qg3)So4BW}Ih*xUoiiq$RfOeG^qTu-0Dv_O8A-(ndrrkRd zVkxv&>w>vZV0xtjl{N<&GHSEo3q(}s^&qKQ$?IH$X)9H`*z2p0p0plLW%#4re}9tmSr53B2acNFDw+|C?;FO+TvUQFK>zH29_OdtGir# zWt2oJ6T^vQCs{mC>WH>z)=PDguw;@6rUMrAyu!iA?ZMBvyU-Ni2FSjU$x448^njq| zQ@nU9WIEQoj`7TQdv|Dip9LUnc-<-uowR?83H|xB8B*|JY@Vb}pB8_*hu)9%f&_)v zcYQIXR-Kxp3^ht;awW{n3|-u}j}eX!>u_iEk)To;F#KS&$Z4kFS=^E3rCk?;`mytO zlUxP&>X~Lx?~S_YJHIkId=$I6(#xkdHVZiKW8L<6xGdoVV*yeRWQssD1I08l=AtF`NrbXshx|iugAN(3pLSQ|w z4y`>M5dI1~i}7EVT&M}X*1&sViT{p^#*H5}NqXB-Ow4u1TyzEiSbnn0RJ#;jII0>6m8#I!q6lh%CA;R>)_&jtCD`n3Ff?1(VI zE&MsfmdUQju(CS~FOcGw66O5qwjS9#{YY=Cxyqx%-6hzr6^a4oxC_nJtN?;TqxvN` zx{TV7<~l4dUw^PLu)LHq`h%@w4nbSB2hyn?Lzce7LUY&^Wi?JE3=$X3vNw-z7Oe@EV)m}cXZGU*A+Fg43SL?ae5qfRN!)*srf!&VMot#oYt+|NXw z`HiFxSM-qn%!#TP_)rw##Prp3aW@V4Utqz1eAoXAB|6)ZmHDo(DF7O$VR^3>sYqs! zQ6~4IMQzLMZUu5mI=pPuT2-kMx4p5d_GR3z%hJV1xk83^CT#po;4SoP`+Gk;7`r13 zQXH&8jH)LoPyJOY<-Jv?!UB0{pU6`d^i@qCs9#7)qpW5v5tHVOcT&e;B`WVrJ-Vl5ur407)Nt z`cR+7Z`G&cHoctP0=4>TWJOKZ9{Wse{ry%Cw~z8IIJqVo=}Es#i8179DoE=qfmI4T z)JV_l#64-1$hJ&B5=|P)L-Djef6kCGc}}t=GTXdU$%My%3vi_So`l0hVILmhoN#9~ zTUz_dKK98y(r)qdJs&kpjKMiwDwouStVJXyqaII`jzTN4m2>i;x zQ++nx)|&zJ@`3JOhu(eOMR(n9*xU8kSGJhs#oh*t|SVh#tNH)tY&afjYDF{q1I3skc8CMkD zp91exYWQ_T5gx|-jS4q0wPw&i)%#S{N4W>9^I!ogOO|k@KOyPbKkRUvR{E3IGo()1 zDz0ui0DWZL=2_1*Q0ot2#LpG87=R82qJTq)n35>C2a^VqZI-og4_`rpFO z2jLggUkQ@kQU}_}r}(>Vfohx|cgLvyN;TO~w!Hw#PnNoo;lrZbs?0Ea7+^;rk`Ply{0>QsxbXTQX006p*GW7OKRhETT$JT+0&tZ|yG!7CX_ z`cbVYmYp4mv)HH~k1>l#=oiHSsO~^I604uhe$#^Q8;AW9*f6AE{|MOY)>=f0#2Ks;?O|ddj@=34 zO<*EuB+1Q#Z9w*1tGoJxFJ(hqb0TV-=vWAU!;YfFK!k99qN6W2u0eF##n{!Uv0dSJ zP3f_Z=(c?gzJm1nPfhB*LVYSHj>!AvG1_#q+WWALh-d$Yw6~6m;O^SEOCS&kZUF+p2@Z`zaBsXJxVv}5$M4R(b7$t2x%azk)jzem)~f2N z=Q*;^KKm#h=5{xEk!&rHq?4VyfyeOP(4+?XS8eat#<}XMtlYc2xFDL0z{~fGDHN&J z&uKx z(I5&*M|8)=Mr&(=q!_aX4fBLrc4RxtE$-dfI_8xv5=DY3be zP$g65*W>wsfh(LbP!CL-?sc@kx@L-%8E_*Vyxnyqa6ei%zq9i!_{Q~5!tH;v{HFv8 zB5kre$=v_ys=tNnYhCmcWHt-;M3Y$8#J+@{61`Ty)k{@#x)&rFW(W-UB*@hk|0nVNUzYzw4iVrO8@8B1Qneu? ztKovhEn_Nj77{AY@Ik?GQR=UmENfuq-{ADF>w`+Ru`eO3p zco8GbSWi#kNpk+YIkp14n45IGuH4Ye!ttjxD-(dJ07_Ra<=!ip@D_x4?0{m=B|w-? z%MR@*1937@lw(F-{aCx$v@#fEoYu!1eP1i4qRGwR}j zj!RfT>9TG-a01r-Mdn~8@8yF0Wuj_a4BkfDJ_b6Hn95}<_rMicfapx8PT)lKVrfir z5dZF5Hp>LcZT(9p^d3n)E=;wk^m~(7Aj88TzR!bq0m)hY0rKQ{yjZ?CFJ|C)L~S_i zaXmrv{wWL5w5GH&9WpDgyNmz3gBYz#ib4~x>7jVuohHin-M5BHIP8?V*IHrP@%Co$ z`K|J+{&dOA32|QY&NbwS7Hf7g^554#t%ZB8AWoJVey4U@JC>Rad)nFm3F8j;#g}!N z>@+c!G!cyO&8~#cto814Y;jcN`5}b(pbh*Dd@L^o=gAXIj?dqeGp}1YP6FIfOu9Qk0V$RYlwNDN*CAoFf^9flPl`_&i_7$6wx#$tkb6N`D=n4#^sNk z4h^ZHFn{w|>qI?<&(O)3wnxOtC)Y>l5_I)s2QT)IZHM3W5qu(~RnAWgQm?(U z-I`3AFgsSReOnL0O~PGP@sB8drQkb-G8C%V(JInpPufG?bdHy=oQ8P&&m`g0e&;wsA<4eq(BoNMdjOITGF7yWvV!}1S029ovA{L8`F)?tsZhG7OAdx^}v5a zY&zc}gtAHD(4o#wnnVT5$a}5*@)(d=Vtc@^KXk5#oGC;%DH-^?3@;4}-+lQ9fXXo` z;^$a{j=;huRYP>v#iBhfK+e*v^h6c?Ah*HLJntO`cBDm?=QT`;(y(HeF|bM9 z)wRop_9K}&FdCIn3nJ%h5WBG=j~}GBC0r~K0%XD@^pqkhJxHXy1yB7kL#mRM-vlFF ztR-F&@Vz1=2yxP6-S2Wa7?(`P-l-54D3zxr>vYEMBpP38>L!>nCSFg97yUcPE4LR>|&G{6nquDTcY$LyL^w?zC~JU1LScyF}-8 zt2jgPxLZ>%xr*rXr3^sS*Pla0twXv$SXbu5DpvAs6;qhO?Cj`Uvh-mC+Gc;a*Z2t2 zqRA)syYuw1Kn~Pxt^kuStPrcut!HT%f71fUN!TMA13M1wldEReSq7ji;b2HYj7w=q z7y14~A1CI7=gP(kBzVgjF_DU#6kT-}99XN{SDQTjqAN$-Q^r}uA-L0~+PGL^tv}KZ zg~c>jZ{s^rheTo`rfuYbaqhCE-~@rpT#8?E!T}%nj!>PAPOPV%LH1BgtsqoVgSS-C z_e41B)B0058o|aMpUm=O%$%%~gk9RY*dqPKGT$gtHumF|dc0b!(%7i?dQ#EYs9i?;8a)F^Iq09| zd*zFyFofMWw0q7xY!{d)!Vkti`A&1biGoN97!=v$?LJV=BQ;^iP-n|}D;1bZJUZ=R zBg-U-*V81uNGnoRe^)5FJsAiXKlMb{qnOWpsYRihC(^=9Kx&0^^p7X<_ne$<0gdcqk%@ChA4sn9 z)0SKW-i_TjEws1$rpn#lHLv{Xo8K{+TVPr z(hIo*G7~3_Vv222P09m7}iw{Y4^|5(3ka2^c*2~?~6Ud#U72+0IFjWG7;nNLAJpb~Pz^#{UaW&etlHxl%XWo~>)*2=& zaxXQUB2hQ*8CY`r1tKq$7GhYtov=ja>9AVUyWn{khXekv<~>814;5blKwgi(IQgyR zDG%+2Kd**8aySrh7QW$(2~(sK`GiEcg#92Gb`OodWmh~u6U*b|X)5@3ei7Ajx#7g5 zOB&0fWMj@+dy}I2^Hh~heB2?!1QG=Pgn5K>9j>2?{kHnRJ}!oPO>}bZF_^}B;B{7i zU?f`{`L!COJNbHOvk6z+B|Y7K=se$ig8=n_&x1p2g2PLCqe6i&pOOw;@zA?+>0J5L zZy5&unD8vsgZI>rUp(5qaj#^#2-DK5(y7~rx=oaad28CY6~HEq3}tE*)76be(=)~9 z%$RVrb00Rp-<#95jS+Vfb)g@M0Hd0-zVllKTr7}65h|nySs_IVUByiXPxK2TG+fO! z+TY{T8t-op|K_m%A#~+!jd2UTU-*~F&EL|Ne+VZ1m0#eY2R9gya6S`{((Cj(PiT3V z=z3|>enK4ykwGT9UsIGzQ|Nq0Dl`%|nuz*XEu*Rau4WO0v22B${Nc{`87AO}$3Rbf zi9Y-en1#~Jf`%{>s`4xBsCA3h+jc)>_jw%D0_+VkznfASG94Q;@W6?t^J=@{tKG9JS3*4WR=%_BriD%unBjR9-10!uphC+Kz zbf31`3pXSLEPEN)F6r$J=7LDqcY zK%gj6AOpvw1T6daMA#RBu0I}>&rpqJQXMYZX7+|9t5JweB7iP#OLICm#hU72N0M9Fduv=U! zYwIWlN1xnf41{`wRIZMWsaLFR&a2wZEI`6ZtAuP4mOfc&+ zF3wi+wHGmgEhZ*oTn^ELQy|E7>8B6!0N(KdeveN9)i&DEfVtX2K6NXm7_$ErEi6PY z`4I+QfYsJ1thrXwau&4lq7!hg!xF+f4I_3_qwVguFwh5%LMFIib0p|%_qQ@t2Jsh9 zSQiW=2CjgqpUok3Lix|%NF6XY%<(PUCB?2lg4ExC!{j|>cSi%nJGdnn(YyO;up2Ku zmpVj!)w)WbJH|Q9MXc=;9noIYqfS<%>1~HaeNp)T9ugh|=6vS6A8ALrW+i}zIfe}xaXRX0nlFI+FG!xEWAL!Ypj%lS1T~1ew)~~Fm7aY= z=P#$zcd$U@ial)x( z!g4qMJmc94^NKF!PeCxCj%|=_V1j0JP6lPG$@CtnW!y-BxP@;K;$OK|Npl0YxBh|% z8{=4H8?;lFo?j{u8};i`6PlsnjjIB$hT1G)f!E4-65)+yVCru??ekAv%<`k+s|lW- zmAVyDqGJ0xdjsg#?^tJ%}_S9@ImvFleP6;_*eIbBz@XmzL$58=)5Xw(d^B3k)$$<(ck8|mGjM~Qk zz;T;nYKr14j|G;8zAxeX`& zrI+ubbC3c%LLP0hcI8Rr`VybW`g3~#QSyT<~3;JN^j0!65WBbI1hayy&NNEfv$g0(C`*}0bk`F#aYGjJbR$Z z1Sl^Bp43>gGtPNrhssU-U#eS0kw^NzK;m5i7 zJ4oJMzI~*1D79;%9tc`mR>{x-UU;a5pMRPGb(8|>87BQdg;9HZxq)i(hCi57xHm_R zm4f_Uv>EGo=bx(0(-fO(S(Dm+y8+!@dY)yzYB703d`o(W*xd6NXlOWx;pyMRT8`Bu z=Iky^`fAfj9mW2Ox(}G`;#9l4s={%pBrv$-{tQi zye+N)U@Rp8VgPJlo;et-d*|>CcDOx0QuL zxL6ZEILN0Wy*^r3)9QO^u~b(G^#j!h&Ti#ol95-5bb}Mjg#p3Qis-NB)0I2%KAIs> zVX#LrHq_+l-(5OxRnunr3lT?#56)qE@`Rh3;jGj6DawbiK66hy*-Ow6aL*B`GPhpe zAtglFQ_`H!TS+KApsWvfkL3rwNIjDx)(*YenrWb#?te^=-6Lz*;CthOkWW8r5s6RD z&qe6fK~38h<}j1mnfdoFdX0)1U`+G6AWjJbI2cts2RTSHVnMUJM{y~T zMzYh>NZhIGD%WHRiyX2Z;*QpZR4nhkz8t5Zkr?d!jqH6Uz{CZoF3N$jP&)GbJ?n>MDA z3Zm|66jZCv@I4`*VWw34+f;zxI%#s5)$@FqBi~JWCT7eGt0NgDpM$Fc*MYAZF z<;~^PGbAdsU;lC$H(!CvOx_v&R)|JTo7Y}n1`(_^wHB4poN$5F9Ao@uF!yK|aCLZ) z{JBcl10XZwf@Q8a&8(YQ3U8v$ii2uqJ*^;vTTA(_p+ijQ-TCBq+DN`gxI^hhLu4sX zNj)t(YGMT%5M$WUXOOn0to_CfdsIvz)e%SZaH}IasjjxM4l;*f9}#S+X+q)!`GEG; zxsPQXqY^K=>9IbES;U*%XFA^3zUr6126L5m>k-VhlRBXm`BS%R~H2w1o!SZ4IDB z{yBJO1qerQbv12PO~4i@saAMR0UOMzDx}d^hmjNj%e14y@+gs{A`$%8wbn zieiRFGB4fH81!wjXf!JV&_wpxj^prs(a4JgCu?-=55m4k{5}ks zWSLEQ8gpDYT=g`k%v!voNI7I`>SoE~=;5edX_p$s+#BKqu{+eo$o3qpV%?V?v&gBg z`T-ZoKOpe?(+?Ss>h=GCzQMPSfH=Qk@nx!UNuW>5s0y8q?K0PO^3Ky#7?W<3tt0zS zF!}DdFv*P}^7->@;5Wx&IWz)#z;nniXoG#Z4gy@?anb~ZG%oVBSc30_QmvT_rQC?* zt#oCY4*ucG!sB=FVHK>vz~ni&TF)^ntKSPwPkLvBKYQoB{&F%GFY82}_O%s{b}E>( zHBsVy>%BWerQr_Yfb$w_u?>=vuCsoB)E{D<$DdXg8cw@+Ag+LJ)RMK|5@^P&{ z>qO&?nlqeyfbch?f0(|%Z^=ZrRJTB&3e) z88*-f&#lT^F?*^$uCuF-hp|D$xJ=VBg-W5K9_`j0k?p&2=hukq9}Wg2MNYL!s17wh z~H1(Ke>`##OYU5JL@r3 z%Vby={?3rcz)CQFfBE6*mGCC@ufSlpxMXy2>c!bT%E zG}t{Br?s9G>vQ5|Mh6BuX`Hkk6RodN1;1Ll^?L0!BF_m4L}$3W??MaTjRdP=_FU=! z3WYKG?xXVrT?3<0PRXjlBOq{3CVL=* z^Q^WmPDzzzN4uV2HQaydB57p=P!Luz3Y4t2ufnMW0t>b>P|yoi!Z`^xQKW}90&<(K zKN>dF4xWr;wR?A_l`wAS(%*xw1N$huPEhTxu_t^FpT=j4hsZ&$X=lwW;@Hgq8+Ixn~NoM1#)>!cjY-kQDvF^jj7 z9{piN{=syv1ldB_tO{&nwN-ff1)HiZR|ZB8@eGO2YLOC6(i{r?0FiDP33Hdu(a_%$ zKZ~FccnaG4_1R{fldDP3El~x^*K*Lzdb;LV9h&8Rc=d+^Dg2U$Iy?L*#(uZ<)jju_ z*X0Rg*qwcJTlI>YAy~x}C2>f3G$kpqUtxHzWUy7iOz_?ljfNH9OHt`E-LQ~4O##9w zUd^Tjs3n@`lNns+pt9BQ$zi%=LkWhKXerGQO+v2N&dUkbwYW`g&oAkiI~tIdcGBE~ zqfCTc725?+J4~v9i5G{i!pvDp!&{wcOTr?jN}iqhHfK_z#{5hkIA?Guw<*cf19BMM z&CL&Og&XF`RiOA8&pp->GyFtSZC>R%^i-2m(!}|$hX5Wa=R+0tcJGyylQE53!N*TG z8#m3|z=^a74H~VqScRL4uRFylG%cgahVR4cc5@@1rl`ie%?~Ac5i7x;8V{h)amlp2 z9n&P*mETCD2vy{x;&RJlMr{Ro!fpsBOXS8-G2QUj-PqmrL`C%4m@v7wJd%coKn4+4 z+diw4975}|ueQnr?JU6GJL{y0I#;llmtISBJPE$G&FZ{Vld_Fwrd+$@+LOjIl~tDb(+wvq^R}N%&xM7!zx7ZK9B}QH*Z*tk14hGc(bv3qrShu}-9`CfF?L^PN)XodE zUl?UA7|#JEjC`^``HSKX!D4FR3k@``FGQ1m7T&cE{5){ScJb}OG0=>wP*T*(xFQIR z>Lb^qrD<|Wu``X-cVp<_IlLIN8xj>*r)uUuWwA}zKW;kBgZ|`kfr2OklPabMh=ddZ64kfAyIQP%0!c@nVU0sfg)tJXZI}?NtVJNH8pS`ANl((lY}$ z`E95#tZGYs*2&`O^%678W7*I{skx={PzJ67&xTPRTCa&LLh#@V~6LQ41kHHU@hB9}w#Pd1}^)8H~HB*v3Lc!V+8Cg=jqeRRzbK-dF=- z$*9Nvj3Xi&@{kfYI85J$j{qi8hY|Z7wn*cE-@Y0w#-NM~<5#i>9$RLS=c` zM^3eT6C>^MF5nJ@BfxB_S-p`MnRD!y7S+{c@n-`8>bKfc5aCTCmY{)zzpD&7H)5>$ zYEC<%AE`X+>arR!W1@S~CzTh-q%l=)lv-w@B1A9>-iE2Yyc?#u7H%+U+^7iPh;1<> z8jLg^li#q8ZR@mPmKSOfD>%tsJsSFw;*zb?M6IbbXIi42IA@8n=i%Cv+~Z-us2X$h z9P2xV3cUG4*Bkm}5mzc~T*6zQWY+RFzJg(gZ74Ikrdmc8LYP?uH(aNJI6+}NZMFy<#6 z=3{1#Gx|O!rz#DowQqZ(48L;>24yxfF2q8ST`!EE|i90Vp?em~yMEP-S(1Hq9 zT%&EDaL_j;Hko*dIE$W(6LU=;INo)_e%^8huBw;0c(HHJP6So4eyQ_ADho=9RD~Fp zXsmDaElAX6o^TAzXW&}rNAIVd?@OgdIE}G$bjq7E1`!U+^N^P7b|bQ#FDyHF+pSbA zCu`rcdelchwa~^=xqa$4m>{J6snApT*UILK7cnR9fVm5AfvhI?cNAcr9`6O_*^lJ* zk2Muvrk(=Bggl<5>Td6uw%kyxbYa#T@iYzy>yFV-bFEq9y1}&06CHAqfWYi=ab%mC zfQ7sO+(Od{r50q9SXafA&c;;P0Oe%06BP{7ja|!~&rWE^h*ey@UbI>j*!x~Zhn427 z`AfAq@`1Pv;^QC0*KdTg^tH;DEie(Y=xzM(&V;j~4&_iZOitPI!@d)KlvG)wg%(!^ zfc2;NX9p5w1BkCoa!Q;3U=KOby@-{%krs<#Dv6v0%d8Azs>o za$71pEk@o)@k`vlmBFj^zG`3SeF)rgGLgK9!37>ZF0p?r1PYZ zuhMM1!SS`V>D5_rxkc+26w{gM(aLrTsqBu&Vs(&kjqZB9{|Gf_X>4JsIEtiaSVj2Z z$C*{8duGaW1HZ=X(sp@xYx|@)v61Z9MpJV6j{+%BNJbmBpR$J0_oOO)!_TBHBK;Kj z-Qa21>T+(0^740CqTCBGjn_ey;rOP~=IMgRz+|_&m@_}!P^>SlDISFAJ~8wbu3Pf` z1kGQhgGN?Z?xiz~vq(8fdN;duX%>=61upc>YS*aJ4i03Eee5F|{XWfq?olG*lvM-c zAb-Nk6RXA9+vscSzV-C*WZ=Ay)`|?3t8p7}EaIaK3H09w9-1*kIvPRYx zoA9NklU6aO7@CXM(rR=xVLn*byfV`=8{dtIbk%d5>1Uu^Cg}~>Oks*gL1&%>X~P>Y zsmby-$nk$R4R$b%l_Z?)=vo@5QXLxlgW%Jn7aT($v`*V@{z#IxPB=C)v~!R#Gg0rB z27qGD)SlI3Tqxx4AA=JRV3k-N^4;AScoEJXw;rn_Qg1H2o;&7emgd48z^%&-}<@!>jL6`?>_qPMZ#cW#OLk|V2e|W1v!?NhyF{@3UC&=_sQRgPvZXm_e;_4SiS? zK+Tz8ipN4v!6;7SPh(AW6IqEs0*%m&Q|+`&`OWpPhrqF}Fb&rO{)+8>iAS<^>i(=9 zG9u6Fp$Wr;yMrxDLE0#<-<-EO09_k>W?DJkA3if+SBwfya*C2emEz&fSF}bqrmUR) zfQHrfLmroaBqOu_K;Ap6x^0;@=pW#roP^eDQqK6@>S>?05Brb+2}5I<3#&TPLQ&+0m2HKvpoLQphee4zvL4=(*a*-Mo?Ad>{)GOQe6i0I*L3 z2)+PvdOSF?qQp+7(87MZ6K0K3fq#PADa5Um`wpRMfPh$&S*XmNW+ox0P1i7XrU%OD z5;^~GcI4HMQZ6{W6~k5fK@-4pW0tR5QaIgKJpetzCb33<)<~X+5Bf5Fjx*+? zYKuj_73IrjgZ#bc#LfMh$;TG6t(FTP?M9P%JXtgZ<{Q_ddpVEIPvn;MwISXd-J&6>e~=uWYsmB_fD@s z#YYByXAgbbF$O7vP{m6c1+XtN-f{-QfQvISo-^I}mS@32>dLL?Fn&NF1X?CeQeDT6 zd=Gd6FD1>W*`1~oS*+db7!OF$-?N&6six(8=q6a`78OU~4%08>(d`$VQICcpg|XL$ zz&76!f2e&&%Tevyzu25OiGt0i2>P<=y%FlVL?3fqMnxr*W8)r;zH({1CEz? zHE=E};Y8SCv4Ifz8N@`v&CyQMXqpA0i0)Y+;`B?*k#qd&TWt$pa4!5+PU=H7wt3yod22B2N=cF)_9_<2(b(8;;C3q$yp6K|^s5XR=ClPjSPQ;z$SysNa63&|Z2 z!Q04GrlMa|H?p8vh-m=sHVbaVP`Bp4A`F_El7X-ZYOFeI?A^2?(f zZDU2*I90WvJ*yk`4r)!>m}$ClauLcI`TQsD*!q5g#oa&MT0UGkl%B9}m&-$Y{kMxB zD_*VzzbH*(TA3i8kzSIbrGRTRu0S2dEvZcke&j1-<)EA1;roNkNl;T~ zznmGwN2K$`6+k&3`~ozhuVqEF9T^{Z^ORxD0<_P{+K22RCVY8J zLPK}1)PPl7Q**-wsyo4E^)TOeohX+buNXCT+qX!>5b6V%^^tr>4NTb z8QZUNg~eaD>3RC(brgl)9mPLjcKmPN2_AiLUfmz+-VwK)|EZ|9wn~`JD;uCe2)~fd zoddgu?Y?aQDz7~FyWsvOK8rIOBE`(-KxC|6fhTL?let}(Yxwp~Q;k9yJ^yio;K*Q! zQemMKz*h~W4+w#ZoQfwP6aUc1UWv|hlB2^nlWxK$4W_>>*7`$dn4&(*r6@P64E(1V}_;C!DNkMG9TA5?Dcx5*2E=hm29g zc#Aj;GGLcKR+~@tC`%vIojwEJ6q~F+w~)20x2aFnonr@}F4eWQGGMnqJ2v-uiJ(qL^~*{ZrAnJJ62$4LXdu?9Gm{6#_lGZq zB{L;zQr0p+4g3cS6Lf5&xsPbeEml#FON6<3(3dE9+(mpD6#g5fT}|}=kvJc}4o(R9 z9Nj5!OeBl9Pj*ieN5kZGrekj_51sCZ}D0e-3!Tgq*>wBX}xSn zAj%NmCNYyQRBsRP%wSi#r}{AJ&sFccq&|;GbfLg(Lty)ftD zInW1D(217l3UF_^5)>6L4KS8`<5|pVrX33?2nJI!`Ma(og zO_iYCeKXnD1zU>guDINC{ooacXei2r5Blv#TI?)C4nE0JM((6qQN1;h4|GJ>F~6gm z6xC?`{hnp(*@MLJW3Gw9JhUh8(8M`ZcuHF`ccnbXgzO`igl6P~zWpG&vhEgk@WYw3 z-6ynD1FPymkcEy1g^2^s3Xn0`(k-Xi{WOYI^QzI>CVj?3LuF$2=aXQ4wl4 zi?e=Fs2*}wjfA4LR;i2ZQTMDIs65D}t^UOS0na-_FxXlFmXQDR%T1Q{M1Y!+XD)@qXxvn2Nu89IM{c7?ajnJQY9OqHcCcL0 z<0GTiPa(_)4ikYY3cTjsa4Nh=tP&{*D)^2P*|3XF-P?>X23KF;9MOgGw6nObYNG@| z-)Z-jXPxo7>a?fPt9Rw(t{r-Dlb|&fkfP9NERVQVy~BTrx6nC(eyA^5N^y5gBvh#x z)LvDO^;G?K2r7@_J6Jna5sCI4wQS1lC!<g3&2@|2 zxaDC-6s=AV6>LV!#AGz-dugEz-V!l;q;^STpZ8sQFmFh=vPA8;5{qM6BTlck6Kuf> ztI@j`oB_*oCYViSf*vP}P~+FHHWW~$j$&6+TEW`4=id~#Qzcq{A*_fp^sz~ zbd*Lv-sP(um_zK9z`7`>O29_CZr1P=gEZjHSC`ao7tz-*G4LBLS(b1S`x~rHR`4WOjBzyjd`Nq< z1jNI`dluB|T>+ew<194e|_@U6#t;8RTtZ&rVHdz8I{x%R(l)P=>kC!e2>tup(#KUj6v#!0ipql z%REoCnj5BTRV1MDzTY_ianv+!^>(oYwAf**iUG?tAWeM&T}}59{<*o98W%Rjzxev^ z&3l~=e;HOMq$sa{U{_xdHbo-CoWB1*rMn_L$SvJ{rtVPp0UqQaIy8R`!2hzV_*e;~ zTh9s^LDg%2)!P6Blxhbi>W&1c~04B7XMoe7gpCm{^fO%l_3& z;yxypX}~vL5iB#4EHnQ{u<@T_w7;>3Y3V1DypI@d4cZbO9$alGdIH*M3UEFg*q~## zO15hN9NhKcrM)h--znxz7#^(KyHDI&=qusa$dQTJB~|M;&E#QmX~ny|Y3Wg!z1Y-d zwr6?jVYtT!E(FJTx_dla=T^Q}_vw&iEl zA#<6g=1e~wkN@i#j@us&ir>cYuQGV9;?43ea_D}!VEOaz^4S*r@|E~0PjYWRghS?k zc4BGOVyfd0X8hI`bw-gTjsN4%D1y(<(3Mq}1%-1jqXRv5d zVWN=e4M&uBI~^oADiuW7{)jLTJgRqgxK&!{})cu_k2==iq40N^SrU!<_P1r0;Zl>J2N`@7nDiN2N$y*!F1vLO}*LUR?EF{jiG@_5nFUm zZ;StscOc5&<{MX*K=$Q5QyNb)99x(UPttMkU{IHUpG6Sn_r*|pD*P`ldx9J#k&6KD ze`h=d^DDl9*PL$bPvy6iQgF0_gQjvEb z{kozZ>>}}9Mf_QQ4$obA;3$&}_zwx|e@kn;N%5VVa<`nHq}Rfsvr?Gf!8BT5RNBKn z%xNjzJ}`2TmXdXAI^K262=TM2=#ms_u^%D;38eW0CK zzV7sYVs22YKR34VK(ieFC;$4dz&xjD31eOr6@qNRrx<@nGORCNM3>=6fH$iP?|IQN zii-(fx5w|E!3y`I$&q78BdkN|@Bbn)_le4sE9dHM(Au-pHkI2f{2+ef@HWn0)qZXf z$LFWtjga=dq4J<=Wsho=!7=ubvD8gtlDmdfs_*-EyZ=-oCJFs9$6PMjpMA}b z1ES>sJ*BtO>g(78h}Ru*q9lnYL%N^BNykWYe(Vdfoiue(q5RsjOoF~O{R*9H>LB{K zA?yb_mse}L1@=%}kK+gGa5N9=Y+jX&HUHSrF!`iON7C{baX1AI?r{^UIDfbKv+|ao z*ThJdt>ur*)S z=k(xXai&goOVc+LJjl5!2ABxInaBv!hJ!md{jc39_D@G^6pvLVeUG~Pz8HJ$ldyS~ zfZ8pTq^A+_;#^O9rp&s~Ce>9dcZ8kr&n{7I6G<;HKEJ?dQ$x&#J3v-}wLCQiUtdj_ zBx+s7$Uj}3H*VqK7J^gihs__tVCo<&s!ln`PQysW4O(c(BjJNnJ(x&{fEM8&A5F0s z>}6#mC&YJN8=wsk>4n2qNzA97I(k#V)6yqmbUddS*+%_nk?qC@wQ#*of$y&Kk5l<* zqmb$qLB`^Zk1K*TlRp*q)ul?zYAkg~i)2{BGSkY+^^ywjokmY&=}B`kZn)xqMflV703oebJr6e$KFEBxOdjwupo zKxD5FiG)TQ+iJE3x?zKlcV}gWy^3FrRXAAN(hr5Ex?+1VzBor)02-(`7UK&6sPzH1 z+^TQ$&Ku&KWpgp$0v!h<83E$`Q6vwVVZKg%%~0t!p)w0$%r>dvIWyg&{4^w!w(E;y zN_J$|Q51C6F>IaXrTNOQ6rPsi$YcZMfiCZhL|5k=IHpn}c;q`hj3^%&xxQgXo3{Zf zHTl@qSbSy^Nt^6C^6k*QR!1V;P=T%oI;E|8g929X5C-m2-tAU8S0?^Mw`PU4Z?v5C z=@qdZYZfxeB*a&k*ZbjcSZ&zObGQMDfsoM!xnlI*W7~<}5u@x84 ziBNt$VhX<%<1ZOENUB%7SC-xUgN1cZ*}a7r7QQadkm`)Oz731%MeOG;*@3-u?!mhB z?1;OF8~HX|T`|GOkIUNMYe=_<{B&WAS}kt(9NhvvNHQ2d;X(#FHCXGs$HGZ`}vih1y}( zZ4+;Cj82kGPj`sVx$7N<>9dp;ju6hiAV2Q@+ZSI2BCwOKF*!bccUZ(cI#PwL7h%U}}Zd_PH9(eB6 zQYSD%&%$Hv-zrePiw*zI@XwZB@Uzs9U4eyxUkzaE^nH_2pWEx%uMzRNxg+7+-qbVh z>88>xJ0lUNd0kT9`HnEf0&&B4s4*|>skt3==Cb$GRXg2&PSk7DjIVe|Ev+}lRxQYK zyvG>c#%!=E5cJwc5YffJx)1q@MY_@av2?tXA?KT>@i6co@6dnSxlM%_r=Y=;-9wAb z|9?B7Qa+E_2xjc3^OW5m+e-~3@IxP5MDcpr9i+s~7Pv=-jC|8*>?a=fOCKL6*Q=$S$p&BS8pkjD!m=;Pu@q8wgj+$_Lh5nt%9>IBX0E}e--Ti$M1feF3!*L z5OBQ{AUDw6ne-Ll z<1--nV#<9D{DJ(_g2e5l)>WGn%(QuP_4S7A)ej~w8(8+*RQk_7If*vaUs_n}v^1>G zvCJ={>4xvo@EurIAeQI03%dLt*~`WuQbyWG4k&I#C_U)SeD%{daWAl&?RZ>T;Sp1$(j)em z-=xmSolO!nz*7-EZUIoZw#oF<{ALu_Twx_$pv!Zh!NHFRQm3*c)70- z355A1srflxfQsrb@9??vh-qRGuM2+e3vymH*5I}tf11_YxuUzo3ZMMRRsavYOsP#o zONz(D;yfg{%UIe2_4WOKw7qpyTkEzqUMLc*1a~i`I24Mz7AWox#ob+kgyN(?TWFC$ zfda)TZox`uDN-oz?yeyae(Zbpxp$9q&%WPxzcGGeWMpNnKNjK5yXJi6e4aTc9@^S? z-Zwe?&yK>|&|0miKRwMKxBHh@=e&I0WwwXYD@AVgUOce=c>)EZAOpq?@}wMAw@{ff zGFx4zfbHLL=bl>SD?@{*hVw1xtK|b1(n5Jk(~b_CFKlNUkLT=ArFH^%vz`?rp;&nO zQq{KPg1L7J+)hhvi5*W)MJ1|;BzS|VmoFMzR~0U~l=Kc=>mJLX|Lx0jlO!+VI0qX0 z679czyJ@g(1lU%IEc%;7u`E$9QOuY`Rab^znX`?r(t{>qWukFt+pE7P6 znGbCtqi$8?k!;`M+52|h#|-uDFQ#w~w}!mLO{ha*; z6nNjTo7vD6L}x+E(3QCIxs>L9wKqh-A#ftpo2f?_UzS}jktUW{-7u`pvHg)i+KcJ; z6)fh-zuvnq^}lw%zJ81W8c@5|5#1nDSz)}lwf3J&mxj?Vt#jYlH#H- z)yN#duU!7i!I{yH{>t$%&e+i#u+|(abUt!lhAod@b3q{SP1E&K)@v zex|EgaGN6si_jHTHgF?oSMd8Jo~w;FwgoCkkknO#`B3BGwME5X{|psz7^y6Xsd73S zU@9H0rh>lZx;bSkz>V^sdnNlImcjS$w;TnqQ-GNlencxj^SR=v4KOS=^I{S`x9R7q z=nKK9&4^4*(@}!<%$~OC7dpjH_zn#YrUIAMBpB+BeX4U4p~ByW9X39{FG8O^Q(qKG zSdC?RleD|E{mH4PZ}`oGnbB7)O^rX@-oJ-C_XEP;wCw8iV*CRY{_BJKZ}<6MFLt&9 z>U?RcNE5T)C4`N|W#jqW<1&S^S&j>cgj8UcNX2m%-ars^Jm!{pmhkP*N7)Wj@8^VQ zGjMUp@E-W*Sbh!2|6Wp9nA(BeV;`iDi2pre!Cg^l&|wdRcDHfd;6hJ~08j5o$KN98 zs0=$%9rDKG42+qaz=%H77G@hD+adoRKqa(j|~Ufra*MuzCPp=#r8 z!hG(dwPtEl6(jAx^vT7Ue<|h)rwu3_xu3)7PBn`sPNC1$Z_Yts8%-Q^-M@M3anO0L zdKF4?3Z~`b7#-% z7ORlL>-Ptz48d)u)PH!zLRdCo5#vcS1$_f7PeDipMjdsRF&@24L3hph{e|}5@0+Cs z#t1t;KkQ*2YI>+mV0b-=n%>5dgl&ua!U6%-dVepTQpYOk<5V_Ay|%{H8MdQr%-UW$ z%vRX`43fxMoez<7bR+xsc31{IKokv^a&evN=i2}Mww#;AFd2RSJ|-{M^ce*K##Uj4 z$-#ns_wV%k?b<1+B9ll=U~QaHjl-7q_UYr~{yg5DWL%WgiON*#__CkvtnA88e$g(L zfw0@Yahp}Bi7T5`EIDUL7gNNWhYVRG@kRho<PYm4#;M3^vRS%lih4S5j{5X`acflfmx%qg?EFTx|tE;5@fH>syt4)8wQb&T?v^*pRZ<72XxH zq=~)P9``tleEx$%Fh{E9-s?9pg*7|w*2U8AmFjL6QGu4f>K9p9& zCFT`P+ljmOL9XU&!5>8;M>F?xI{juFYUoP)mGt+ZDZXvek{^G2A?8AzI|;KyEE$_B zS`l^))-;GM0gDAMOw2CT*rOJPNsPlVHxj%cHfVyGFvCTGg+wyNWwFUIsYJ+*(*d$~?Gt^mSzSkMGbe9yPcjy!5}enGbHzslGrDsoqJKWZ55wokQr*&rq1 zr|-tx2hqCC{PmR!De@oEE{r9IwayQOcs~H~M%f--qp_y>Ib{VnF4kWGkbhe9e`ETV zDj9)%G!#d3GRx73uS3>ebcvh1nKdp|Pk;ii%A{KsSprR>J!SIAz5oqf0IMRJB&V$tOc3OV~oOn5Zg{j5Jf zjxb$V?x*q8erK%hBHepJhWE3M-fMcdPkMjKNW=C3(+ z&1V>ut7B>MP2?6V9_$!zD#2ctaOGvrk1sNNF?J?BrARM7g(ttA17fgT9t8iETvvQO z7csxlA~%vhT={LP+&D9|f6M3!F|fmQmpCQGd%A(Y2Q54Nk}**8z)qKUo$=-NvFPg) zW0mc_xBV=-ms#*HB6p=}GeYbqUajMM!R+KuupOd3anbwf*>JByG6q8KMem{CrOG=# zGrCf7Z0x7?$A5Ra{UL}^pzIucY`$#TuxfK)c$Uz5R@_gRQ!@>0WTP@X1G@UBYV^l$ z26ul0Ep@D-l2c+tnSj?3{ksqtdlmcJvecG}98F+tGxIFJ##lSWs6*19f-O_!AHnNYDF!hI5iwlhnk}mZ#EYQ}UwUZWI&qxh9&^BiDy9$22<(e$ zy-H8nEfE^U;M_NCjmI-*pUe5wD-#hQcA_1TT$IRkguOT}of$GMI}0SPud(tn*|Zk_ zTrjIqxbg8bd9|B(!@hQ|U^x*HXGeim$dDf^q^L-YgS^|^`+0ptSdIhG9ixq{D-74) zq0pA?hE37$(Y;HXX|c1`hYLzR>O9mis=q?@H*H~DVF0i+i}dZA2EMNYTf;M+vl8T6 zLium$>1zb$4;hdN<=}qVC8K9Ly}408wxsa#zyAWOq`=X;fG_BK9wiqLG(1;*y5pg} zX|`DS!m_^=4dCWr{-aNBm`dei5^=Lh6Qz`S>@EVlYXQIL!k*L(L%V^-$*l~x$mVsl z*;|WY)nm*K%5%>K63hLl+^4RQcGg#}ibYn3*AqdSZU(2xbYwNdKXmRmcmJd(?8%)kivU@~t1Q{Cf(0RC&A_?#)} z4_hgBJC$}Wxz1yNf>#s2SsN3ZB z%tgt_{rQqAXGsyz{~1qoCKKOBfyrsFME<7)%HJhG@2@vuq5{BMSVO30fzKw?Sr41uyJfv6Ds5s7L)fLRYY8MqGiTgOQex(T z;Ufg*idRDzUj04VfPY%!d*)3NN$J zzQ@^qGhThaQ6f7P+D(MdBTieuYKNrLGwh|1Td8vP?_s!6aG`viYH9VyR2_%YeovT; zlF!Ot^l-zfEgmsO{~{}ioJxj#EBe!K9&n+@ANN0L>wg`l`1Kf2PTHgNFrS;I8BG4y z3~;1)lFWS?+{Z?IpM=GzdP{49Vn3MKxncWD0W-)_YS&^m5%FRBqs5mvGf@c#9(f=M z-m4YJK@al?2~W7~PWY*j{$pNa%g(mxrAoOeU&>PlO+nXe5J*7E4Z@N(kg08YO_jQj zLjlr}Tnm7#hOSas;scu&(l3I>$)?V6kOCT>Ip#pE3Acx`cH<+QX#RCX27H$1VWOOi zifv^A=hacZTuHJ7&Vmk$0X&yQmH=^H%EFZM0caNP8980lQ#BDaZXR8Nn;_kFlb>TzP3`xkL9|RWeZDi zJ3RDk3-<9$l^DUei-qWT$*|TbMFT<9V=7{vb*2%oXD8nsQkN)x2|VhdkAASrpW5Ku zda+PR;D!m}eFQ2C#ov=$VKgWg!;-6SImk%e`0P>kIw~*OqBf(t-PSprXm<0ZVonWE z#?#LjoZ~leeZmQB<9C~kQlA2=Sk3+N2J-R9cV5{6D8&I15)YWn2=g%r@-YBxb#eoZ zZwPa|w7sM{OU0eqh}D&ZJ`$_!7OKPjh3uZKzKBVD%;7h-+OjBoT?7PzM8p);l%4$B%}wt=LZ2mhwvn_H=TD#}iDpNhPv*}0 zjKJ7^(~T7ixqRuPt2}A-Jj1w0iMIE~CstiEA1ViG4JuqD%!vS+6m1E=YTc^MXMnG} znUJBUOr~m5#?MzAXt%JfQ~V{j)LFprgU)M#xJR0Q@r+s z&K*uv=@adCMT4cNrk)2-Fpy4O2QlQuKZPg+QYEg=>mzpftW}(eiR|q zd@SP2LEC&P)O(2_*v}Onut{hx&$}w|{2`hRZ7W}6xjh@7rHF~H+EdL8?^nE7sjmgq z=`LA0S6{?-NsJk>)degreLIM-YC@j;;@ep!-C^3XW3nw0NkFg*ST!7Ug_;=UD2H&G zT}WrknP+w1GIlHC!i^vE#loC!euXh&R2oY24SZP*m2Lm(g|Lv&t3R!Jh1Tql&eTqU zAZMn-O9&8@no>HbTtC{657!GT4&9#X4Mxm(W30Ov-psKTU;n(Wr>QL6MLPz4vVQL> zA^nE$yUG+1ml0{k^DZC4zZ$Fm2EzaGxCIhoJhi%^&pQVGFN}VZF2I#fv2i-y=n|TB zoN*+#m+$Xrot5$*al#TkOCFO$05NZgc&NY3)~AQduO2RoS^lPZ*EVX4v2A2g=#3y&W60pW)w$Dw zS>Kt-J1TH*of@pYbFdJGTY#;4eDsAaU(=cXO4MBvoSfKav(gOk#ak{Aec_QLE3(`i zwJVM`G|Y&7VMDvZXuD^_PYa-3Z4zy?;+R^TnKs}Cu=!rd%TO=d665jA$?}j>t4I*! zqsMhW)nRqrZ4fIIJ-{zg)ISM35;r+S?D1CWa0EkEN0FMW>i=gNmjgPk&|j&T*N0 zp4xAa_u+ag-Iu7;^|4{g7S!CQU&s(=mDuMLd>zvgvxl*S@q6>&FOOj3w-iG!{%R{d@o?^gtHxw^+*v~Tr{fuOLTo1kIZ$C(f)@ih zU;3c+ZIoKa203?MeCxByIL}QrpXIs78)0&+W-`^U>-22yu|ilUhBwx!3fAhSr1;ut zF{9ZYmRvSey13y=S-;J5Dy<`G-=qEH<8AsW5cfUV2YBf3`uhgIr%GeYmNTb$$Q`a9 zu}X-erxaf(8z_GgasrrI@6izpijJ51lt&exTt3}@YpX$7)PzLCTue_FPb7JAF~jC5 zgyLt^N71+|NIN-d${MBb?C*t+c0imlit`TrkV$uRw%AHj_QhPnjZWb2n~xTnYwJU= znvR|YN<8;yJ@@dPFzfVEU-TY4x4QAmx=)FQTcIgLpHwIY(4MFb?)s>%9rl6NP}dk6 zbZ%;faP0+2Dfmio#IQ!Q8;@iX=AM=YJ@w)j|Dn7v5sNf8M;L5bdKnZ3eKAd8D{lmo zAg9G2Fj)hO*+ER}E{ivQPG=~DYXuF29Zp{%0OS#zRsa7wwh@=W zv?a*T759M1X}aYA_xk(CJZQ3K|NP3U=2RocLVId|O#ffww)7WKAAB|i%PqAWn9996 zBo2qG0xGuk|7HBe)t;>TU6~P zW&{6pTHjN!YTx@F;-N`)d8}8&bE|>bGEGzGdpi@#$Pk6Mdsx^kQngFo4|7YGprN9-AZK5QY)Jiyk2~B#(t*E%Kp0Rb}N?Cc#%Qj zwZ8HE{ew36g%{r#;M9!PI%u7b2CcbO!YGhWjew0?wlA6!hW`~Uhx+0?{_H88v~`}m zZu>yE_aPI5m2KyGVPPwt{uUYoo|}+5cduL)`=Y1O5+~{0llaYc>XsC*S2}E=J5ZZ& zCMy*F>cAhgFFN=DTY5_hfS!4HoZ1zoAIm7Q$8Rx7HI6-76@35Z)m${`(9Ni%&z)~a_{;4Ovgbt zJN^2%s-aVBCep0hd2iblM3+wguB@wrogd1t|NV`By$~qo_Evi#W5wHmhyky|pm-

uEgix6AIma*b|Jpc!$eOm@5_g?m=;JGHRJ$rJmL#`{)I5 z!=xUdOKVGqlDpj-7Q5DSg45|VL1J-+MFB&3`6`Ux1y5sb?(F7VeI7s#}Zep)l}zWQCYq zj%fIa9B$OZz}3Y8(!Gx^;P=1l`)RzjKhuHz_2tQ}81S>!iLM+Tvs3W~B=6!-+$o2M z-Mov@;$KS~c21T4AYOWRM3wrZY~YzVZvN|bzpqJp4xwVbax{=E>~#S^<8hIcv>@|I z;z?ZC2>?v0A!~$*iqV;X%W=l9rmFV0WYw!3q!A->C@j71R&Y`i3r?4_NkqkizC%Uh zJn2FI#ji-G{}GC$-{+L3Ij&cy!>Qz?ul?@gsAGWU+j<&5gy=U&&y}#zxS@JZ*)@5i z`GhEQhY2o%zd|xPWkyqttiZ@h_~jlSRGhu`zAcQ0^a5E5LC{q|OkzcU0RO;gz$5gm zQGWF)bClE_L~tX-cEr5z0!Fy#mmY0Y?Oa~EidptYY8;rUf3-*2(h7cnk>JLq75a^P zR*k74Q7jjVw9FMDN5wkS+|GS68}(Mlj&w+f?so91PO;{lUFkNf zkr?sSQ{w&)bw5l~HIcDr6gmArD-%Sc5l1lkka>{HC)4nC|M!+=iyH)$Fo)Ps6e;-= zF~PhBOaRD5+b!mTh8y*);hs&vGr)K?6&W?PB=cA2`fo{8&jB2*&a3w<>p1^!k^(7J z3}!k+{}LwZ%>*VkXJ9G=(aWcybuR?TO1GYZjRmDbn6{oR)Kp~m?;YFuZ3{Er5I^H_ zP^9R|%b$tRxf5-&fcubmpukYjmw-48pTk9F#;ydwr|l2%!INqXPXB5v!p> zj!uxJ`KYM^AZ?4aX8@q^AYcuFl5I}{`TCB7vW_t^I}AeCmTNZB(zH})@R*8U+LLa+ z1FLX=X%gQi#rKz3CH@2AMPMAbq5lF;1%{?&8|{PA#jHv0o0z0H6dIASr`V}43SKX> zuudQR;>`*d@RhL@!JpdquaNc!98O-_@Gj?|rU3tNVgE?#b<$}tGNo!*SriqXR!V@6 zp@ZACqT=l$q_NbdJhE>fc}zFY!230pINyfND@h_738~q2RGPKhvH?Hbz)$) zbL$gVZw{igVH@Q=jnp63U|lp#};6XT6te!BEXKMU-5(E5wwmi$V% zaC_&`dcd>g*7X3=d=G0xvY^Rsd((kJ_hYSLop*(*`${2)KGq`z?Xlde*Xonr>b=D& zlzr!-#bQFd|Mh(Ttqt=;0`528Ma}w$|HsXTj-kVZ=0uRXpYM8T2qZsBRlx#W58C;m zp;K*pa~BQ(>5r~xNsOtg%2)yDp+0+li2Erfbxd~kVPs}i+lEGJ4?$(H>$lRD?KqJ@S#qEl0F%?L1uT)7G9Jr~3pY+a4)VhM z9)bS%)S!~6D6fhSPs6ZYcdB&HO+LMrY0d58w&kWp4xn*FDL#X|oJn!HmvUWSx8G2@DrMJ4MT$k^bN(a0R8E4nSrtax=MD1^dTW=MA-@0ho`-q4ytL;){Yo@qdn&DyXX5LEKK zonk;2`ekH`5t_DMsNOA2r^7>VhnA6^7TKBn{hByM^CP&odnEN8Fo@{ar=!M?8Z5PY zyVf}VD)%ZDic*M>JYB=KX-5si@`Zf&l~ewoD;F6O^#F{jmx+7IpW_+NnD$XsRW%<( z_kH#m0ACe4-K1;V|F+worS@EA`WqgH>vPrs=r?q{mbFGF07YrkY~1bSE+pok=JXy> zX+J;tRsF)BgS)xFJTlBwYishQwvfr0X*zH%7W5@sk3AaMAC2=)A_@62t8UwgR`~se zu`k$;{hB}&V4-R`bynBEaU3pCIO#SF3$Oqn0;tAF4#h`!wID(ZGvq$e#D@)n6=qSdR9c9IY#(?9#zGDo<*~iYXAc{ff@#d53rV~0p&mFUrtt4^21S3*Ou}XEPkSx>vHvKOwaiU}6;|WHPeU_i6I~#=AR!b!u9i zF}O#1BR@VU84>h!9A`h`jPtGh9z%7Ixm2AqHe8$MN2-cMGD(}}Bqz488Pq%epiMWN ztKihe<@|8VX0IC%es^W)O7ez+rgcdp1V(ob5Op)XA;=JaAa`%w7?%gh3P zYMaGz`^=Yee|&HPURn}jIntgI4y$P=fMfr3!1}q!9_s&zmhQmn3DIeMI``xh&9IA* z9szCT)cySBS;Ov69dWmbm7mG+$@xwPwaDHYW@y)RIzxYa3E$J40juRSg@=IUK|jsS z8G_HN4S7S(>kK_S#H1$<#)1(j8;U!iQ1EeJv1CWf&4)G)_BupYghes&B=NZG!41Er`!nocRSPQ@pM^EH8W9Ig`5-}FBV{db zDYsMl$#IqRzH|QJgVmr5Mf0)KYPvC5x_71r!TXN9IUiE%1~j4@xvy%CcOlw$!dc;x z;4;wE`F_EI)SRH^8D9^)v)*A+BmgeEw2-B|Gst;96K~Ppyp5jEXQI>S)uyLXW>z&{ zRc=`vqHlJ2+rmHt+6yIIjj#8zAF`PfjXc(8wfnj{A0+;cqX3m$_}GVZf1Y$k@^`ca zY-~3+c(u+#v~BwAEM+&RIACGH@1Oy-Z;#-U_zN=r7w)k$R+I63SvivbA3?|e`aN=1 z`2nwUNZgL0a?XDbl04S}inhP)btA9{__g-UeALCOzSmmY63p){pgsnR)4oo^c z>3wcV`*1((KAJDXgk33HkmljGh;T8POrCO_aCSiGhyEu7U_HHOh3zl6o+$kjhcgI8 z{`6Iaqgz5=&U?`J+}b)7mS9Eq7hmqZ8HPrUth?$8*Y&FvEPCB-0x&K=JJ(i=KQi=O z&jHfX4o{zC_8W>Z1T4y2p}q65i$U(QB|4u@PU;5O!F8JAPI>lA%P_&nhHQV(Ei>4p z`27u6C9J_^E01P66DxVu5MK%a`nm|>} z=U0=;A1mz@=tI0?k;>K4t+?SVZ;?{_0hzq0`=VG4Rx{$;E5d!n_`^$HSREzLeViDy zBfdds`8sd!;LFd|;7RYvRpYr-oLlD{&F)H`r*)sGgQ<>7pw2rY;SLvr2w}pA;S{nD z=gd_S$d()SCa$DP@YS{2JrD21+%fEtB{VeYV+b+)QJ~mvt*}-q3DvpN$60;D#bCMp=vSryw4c+8nI5x1MPOOb^Mm!^?uN_`oapV0JGQ?_2r_ zOU%i&^i;J^W^-HT`~%AcHZ?~qQld#^eYH~bv0=fJ(bsq{KnOi1*DJbI=wc&x=;*iA zsyZIVYXrrpj!0|}ULqnp3~1l3zJ3^7Sjj`!gZ;xENlM=E2Ca48CiE%r!6Rnf1MZOS z1TzsykD+#4so^#|%~yAwtD^c*IfR@#qEROmr^J(0nqMH(!>hPf7Hpg2QozA-cUqiqvhWulpNR5|Otc5OrdM7raXUb8~wi zl@3kDEJ{z4ZEpT`ooS!~l?^UnNmXZD$Yj7fWctW3!$g-%xTD*%8Xer=XmGZY)F04e zj0}+CDOR&@B}OF8F2ew(p2mv~Oc>&ZZ^QR2&yuwyg7+_8RC*gu#+D(oX6L0W$Z}>o zg4$0Ebua}2Ro7(Ojs5NUVJcGUQtq~_t!}SUB53t?fBd+Vnv2iz zSNMeE}?VUpkSCyDf{WI1CGrxs8kr?>K)m~G5o2L%Jiw0 zAI(ks9kEYz?c}0V5jI_FA|oFN*t!)DrYptNs3XBBiq>_J(EkVI7azrm zbhgYTMch=zo*RxFShsy%McE=X~-juwV3u&3Q4<;5M-GZIyxvKZ2q- ztJSojhD1)9jqxRz;;oASf%!MQ?-XZkAG^FNC}tbtDb9xJpkEz4=W2iVct^lo)W()E z!_r6CId^$vF#6$gGQgA0!-izmNYCt2gktjPu6<|7Z*LqOx=np9z6VTliJq0KCR4Ai z;^CKWK13Ll#8}f>SbooDe{LyvSL3)uNC!JRv{s&>nk(DJNn!EOd}3cNP|i$-&rn>EUVOUQED7$w{a94hHpJo!DI9OTU4|%te>SNRI%MUF}apMH&#(w#b6+N4c zR5=HqVOxfBPRwd4zTxbpLA>@Dbvb0QoWC zyxLJ~*i~(uZY6)F;WLp3Hkv2oRR4OA?*wo1`1`XBOmX0W{|jiM!=A#(2K&#rFVypI zb)H&2S+8C0o2|;)mtHJg6!O3l+^NZ<&pJ4NxzPRk?V8tZ`Oucxqji%V9?3|5Pmr3h z_K-O8n}6DwJ;Cp`eZ|CNNZ$Hna_pEl?!mkk|c5+%L5ToE`mQoA-u1CSs3j#Qf_ui zKROLJ)58=#I>0TZ$GCjf#KO?X*w~no*M3R~SwfdD#xj#YZD-K_keRe}6D%1fZf=rt z(C=C0b1Hf7^t9JB8sAmc`sRW7jqCTh0P5K%1rBsq$@Sf$g{|6(;*u#BHk&)AA2c3G z{z@_%i_GXnAH5f}L6E5jS5Cq!!lr2zSjWNnj>7)oeOEZ#8sODuE!*DJ>SMSBt@Mj+ zJy+k`U2bgC)4usv==jvL_fGno72u+%q3uy$D;i?2#{H!GNVa!QXi-!WVLWdocHYUh zcT?#I5$WKr8%LMPwsGak$23Vhl~Uh~Jy{>C?$La^=YPf~+J*j(jj^P?v2<~WDcp{W z@tN2Db!=V0?EIyKMJ;<)zo;6|&3%s+jxRx*5eemCp< zSYRh{ckBGh-qi$td+PbLZ2u_~kEoBrZjU!WE`)l$Ea_NyNB~Sb)9`RVvgc|vpFT62 zIuLjLBIxaGjXRR%7Y>ocWm=#_Fn5684d~SkDC68?azzI8_fm&Q@mQIip?D4()xY=k z|CR&z=fy*)jMP$$59^8D`I|e%Yp>uYy|wdg;qw5(O4!r8 z7Lcw54IJ+~x-8Ki$nPi?HQRa|6-dP!x7wucKH^ro6m!Cs#`L_Iet3wqF!6ZByTYt- zoTx2Aa{Ljuna6P?>({(v=F_jK37A+y5d7ENKGkS)a)fcAKjs;vAQWY%Y41N}%x=`; zMv;pk3&P82aB8&lx?CFqi?7F>PH}HC;LgroRsHXdRhvTbk0;dpiBQUGymetzyuq-v z`mngmN3dy0@G1!hE)Ff|U^=0V;OtNY!c}+jGtm&MI+v@yV32Mv zBIAj{?@c;TQa7d?*3Tef)9HRcwz?~m7n z3ksE{M?AiXwd-`BtkJSz!e>vt7g2`bqx7Aw?08QYROK&BkEHL24-RW?*)+r8H%teX z6#j;G9n6!yrQgA-hp!*(;IUrv_qt5UIu6F~`N}VoRIiLMn9i{=1euXr*BrfZr%8pB zSxc|*OXulwJZw!ef+GzDF-XZq_fs|4CjBIrS1iM~bq^+U!F(U-M`r8#Db|>fcueFs zYDlBb`U=H*vJI+G7Cmd2!*Hyj}(g z3UtzRpN;H9SAX6ND0;pVbb0FqVBp}&7EHd89;(lFL9K}Gqd@?q zn$+$zQH+BH;u1QH!9({0VN+hJ)fen2wuhk-~d-~-pJQTEW-^{B#u+Yu)#UxwL zt^K7dttHpnbw&X962mLekrby_$ONugwW%R6=_{_2hy@@j|J#)@oBofy4(hiav>?Uz zdy3hIAkaqD+$qtI&HgsAVr`3*oUhV>)a$kZ0>8UXO)CFXWujr>C4%!+QWt0H;kW)c zv&GjpBk7KZDHMZBG1o+592&z}{sy-I|Dmd_>FNo3E0CP>6P)|VPl*98yv=BIpv4eS z-e8#%2K1GT_oNrFZ^@F%(tZlZ>aGCrqE%?R9s((xj&VFwHmy%%N9befxHB`Ow-kV~ zCTD|%o5A}mL%f*D{_x+e`;W-2#`F_!CNjn^!{*!@ipbopkx%bc+TOEsgYRJmTj2Lf zh%v)G2(S#({L}~a57#bk;fs8F-ORS@zYgt_D+>a4-PF!=KseuqSOz3kJA3y_T;czS z9Ei!52TA?GU{el53Sen80VRt}=87O2p;l~d!q^KL5ntMK^Vc_QS`4k|hxE6wyZr0V zvPk4!cJ?sJiV^@!%w|n2}MLTIrWZJ*3zt(v%{rLi>lWzfrwEx z!se0mmw6mt0ycD)h6^=o^j|FYf!lhnkzxDAVSNy~q!}FE@UD z3%-UUTjVzEWz0ivz?e_;=-7t0_2Mv-m>%q%*h_YJh2+%jt`?uNZSFT4r{0}6!$$60 zh5Iyvwc)G9F6SBMxvL`d5)AT9nVUy7&vW6Efj`8CKX#vzn0d@tj8w57oh`-R20>4b zeJbkY5S9?qYMJTyXwPQlx!Tl;J(+x z&E5H$@H`9*3TOkL_!k_oU1N(|HMBoIQH(uixgw|S8x}EE^LvR$zUlybH3=VXT0BZV zI=GU1W16@p&^ixV?Yz^|b?!f0MPZ{ftx3p-Vg7mTK9qMfh4B14@>Ey`)#*I(kLlEg zgQQOu9n__df5ci@6Oev!X@SPUP{+r2^Aj+05{!WVf!Lbk#~==P`I1We?_tA#l4k$z zLlY(j<24a81zxSK9vA+chxeDl6^afue@+WW`WgPEM(b8rJo}M^GrED8@HWS}ll>8J zh15KNlbZLlA^9z4n+T|DaF?o0OHw!Y)PVySM^%;CxO|u5M>ad}?{l#q4WQV#nPu}d z^Rs}Ktw^}@-|OJcYu=YZR>h*-=0B1WVaKzW-TAjZRp7{1!15i+KrbIe)JAp=Q;teT zQ>^MwkSb4F?)$&VnGm z?`B&>BPrU*z()6_*q*w-qeV2QNyo8V+5DA-tpAhJI#5Mdc?VE=m@hGQ_-Z-dT7Pu* zIoM?`!qx96Ak3cS<}Oxl58#kiWR?Wjw~4V3TF&Rxxj4;<&FTOY7EBK7lHf zq`EK0dC0Hcsbp)ixr&wJ^mf_1j@l8dRE_075HCq|C%Ivoa>Sy;*rf$O3geoJ!;Bz3 zINkr$%m_@u$6J`5=u@~qJ9Y4_fTGGmBII}hy}7Xhka6jx8=-Cj zc-lQQz3$#(Bb7mWl^H~{7+|S~chUCEZ$GL7*n(bp&3qw0GRE}^H2>V3>uD3(RC3oHiKPpllu=q*%lFf|E6F0KsjTB&k<51Y~ zCj+=`Iu9tF&R6rsip^J0;iOPZ-;ndLHiuoC&P>`19leGaZ*zT6CMb*^JybsXKpl6T zk1>LrjJ=SvE|l&f!P46c(L(D(>N$Su-}fz>!t5s^q1;=!<43vNHSJKuE%3LW@!lcN z%NVzx0?lqy2LVCSd z`h{J8uWF~Il-kvBC%=UT(MTfK^+FoMOy8A4PJfskK#z3JRK9wv`thy&EuRw&L>kX# zx-#Opb(Mx!#_#Jv@Hu<&Scg?A?DLW^;y@yM7WjtVsr1Q>p{qHs3xN5Wm26WPB7Tx@ zy1-kCDeCbmfBj2oi4k9$yG{N^?cgp!2d7Aq(1Z10OIY#%((0*PFZB(4M2b$nbGNCm z2i<p|>kWIANm zypg{9Vu$rdV!|v;&AxsCrGRvNzsEXG){*fpBGB*AHl{)Ag})^!S#w>GC>(5m5<4v zqEiB^as!5aH3Ovluphnw#$qse4;Fp7_BAw|57{*c+cDI?)L%sM%M&VJumJg57;H)V#7gx@2+xde3d9Aw$|${k|C*R z&63>wCrE&+RS{3RbcbnTv*}F-S?d_>uN+Yi&Dwl2S9A0ep&8)U)R zeFq|Bea-Eo64esSzDBKD{m^Sm;R+|V<%U(Zlhzr_s*MbkyrtJvV?OE@LN9%c4(59q z3M-wFJ-O6awOjBslZW+*yv14Zz<+2zkncLDOY?Ahie9{AiotAy;Jl1t-miPwt1xBt zd(sDHRPE1??A^U;w0EBecY>2Lm{O$u#yDwcZ_Xm-RRiT47d^UpocVLl@x(k%Ap?-6 z05OZ1a-{i7h?nGASlt~N4dkIH{iPutqNWU8-<8XZlS< zIWTcWkr+*U?BNp&HhIcy8{l485=9jLSJ;>rtm;^Kq_KHTjm)KHfBDSnlmckZo3 z_)oasX~8*6NTb(_WuVIRXp-(W_Hc$Q)Oncfu{ga}*29jS08@Z~g&Oa`A7&}wOo*9(|s8VLiG=v%wm6Vly0H4r+zsi-B7Xt;ZF@J zUo||cN*3-O*L_(|Kk#8LZq7TM7&x5jj%l64{s|7$vS;=`R^TT+LcUbI)=ZS}^v$|2 zFU-rQ6P(Q*1ml>IhISekdM*eX8UQ4NQjzyvEh27R4Q{O|K~>l6NV_Manv(oI3WrkS*skUq(-B^Zr``_`7T`Pq?TjrO26$VD4&r$} zQMAbESPPHnHs3`w)G3J^hRgZJo(|kNYW#ncy=PRD3%9nrR9I4^35ZGuDN0pDI*}$8 ziiq?s0wTTlL=dD2p(q`qAkqoFL!^cxReFa20YZRKLP$Nld!N0}K4+}&d%yEHKQhMi zWQ@!?uX*41+yv!fj(2zrRc=Nd1e2JNWd-|x)}TJi9Rm#866S9kTSkF>+H1`YywulV zV(ELZ5Yvr`jk@MBwjeX>ujzd(f!xlR6oF>@Xuiz2%QXv@x(#JU;Tb)W$rE(GnvSSPH#n)JeZl#gDB(#yMra66# z{@(5OE!t-@T0lMEATa_N9LHPLt+s*OWZh4HI0Hx;DN{;2ApJP6i9YB)410HqAM}X` z8%)WA+l(%a*nhl5!^sq<92jPSI{^mHs=~%&iDOnXP^v(xz@*t=<*bfEj{5$_jhxVr z-b+5k`weD$`V54t-0Go~Z%eH={*dkQ@sUOTa=*`6l081R@4@`VhoEg%z)dSfs?x&W z!2Ox*Q^~Kil!;ebK)3!@3ggI39z@PWIpQPJa7iEXjSAl{V%wr`q2lG4$r)Y3a>C)} ztz?*e#~qLj9OdS4VR!(l0c^?Fe-*uFIGwK*0PWe(gM1_L+*WD5*(IcHNO*GGWbq1& zJc!&|QHdid8_S&S=y;AVe*}1>b%|$_>jrNw4_IHUw(6(6mt?)^Gyf`r zm2aEyfhPX0TGW z|GohpD%d8SNY=~=R2Y!=E&!FQzD~P$N?6^`-TEW)hM6M5G*W`n#^fBZs`dO)>+;tX87=$>B~1 zUV>?4qP+U%dyPVK|=7yw-u)}|ifE87hA4SA?u+%uY`C4+Vb zAte_Mz(*17k11MBVg5pO_XKL<4_ZCN94~SrDP03%M_GlGTNNrQ>`ER|fF3{mVojcX`>SI7_rJv!3tQVs?qOW~C=~$^x_T4` zV>l=$-QFE8pDlbGmOZp3OSDlrlO^0i?+xP0!?;7tgETyQ&2oAlDHeWb=!b6?{7!+KS#6+AEapB3%xN z7b$yN`Q!X0Om>G}BMmXMFXC{bHNix(iwDCU=(p~UD_0?06f9{!>ZiKfD?zE|y_8I$f^Qzg{2*+DUbg4zg|Fn%~?ED}|^EJo*a?}2O znY`EmgpgdB0ww$HWd&r27^_w51M%OsTg1b|-N+-+*W!pAgBqTZUS6v7n&Y9off{Iz zqdL}9>+jnJ#XoF3+Vg0~GIYx`<(gl<^oo~jZPQ+ruF5T^6P#3^5@%jE=k+}^AJH%p z6ZZx#6a|M-L|L&CtXOSk#Y4G?KSz$yp#sOyLU9^+ps=-=u(gu#1gg^$yz1}ysSR?% z`9uGlLzu-pD^MdyVl(W>IOrHb!k6aNB7S22mnEsZU!w#MSJ z?AqZqc$pxO4~CoaJukF8U{|*{81*?o9r=30^kH%c6lHLwAQF65-07YpYV*n~KXmzx z$)_c%N{_Z&8PkGx12QwJT~q~UL4163EBMLy=8xjdpJfTBJN!N$%Lb=M<$V}>90{$> zj`-C7?8FZJsk~31&A)Kso6=Pc`D@^x$V5FS*pA45b<8+V))=JVr(>2>A8PJ{vN(iT zIwX(5a8$7B(Wk#$9yhtY8L^p*I$Yh3^WaXKI?nl%6Og#6-e#jzl&%rGU8txYoD*P8 zC$rV%mlmDVbDRrNzk%i_=G4lCRYT zb3*oJaS*7E?9!7w1u5E&>~nl8wdB*<9HbtmOK=3C*vdR%Bp&0=wBl7s|FGsI*6^mr z7&P|VN+4`*LxE|JF=IFfY4lJ%fKl(BQyh-Q2mj(mxU$+`>8FxYEN_+kBxgd z`Wz@~BgNr!N(uW+CBj6pQaAWd@VJ%WijiT1f$dk{FgAV3jJCVXJc0S|U6|k~;TMnS zc#tAK-pNy*sst;f$jpWoV>c#P{nCYq}jk=bE}KQTpxC6$~< zBx0O1Ad42VJ0gDy)SziTdE5EL)Wfi1#bZ-B%znGp;_@a9_X?Kg>hmE<(LnsIkYu8@ zV)QTG^Y#{>5u4?&RyLT-Uw*4k85rA==<4@=GZCL3;7UC=CP$tKTR#0#C~2G<4MpIu zuO&SA_K0=Co2KMC1kfD>YCB{>?YJ$14{0o&Xp@y@F0C4PTf(akU+T)D*VdMQUm>K9 zs1EFE>)C-5+_zsQW@5DbNL1%DDwSaGMqTatvy?o^j2dLir^*(72FQnB57vkU3STLe zn#d^hvKX9RMMuPw`)R$-pRvl{DRG2Ww;C$bNNZ;aFJ+y3>qtlZ|RzsEg5768m6K1yAoepa{xt9QtBgbE)3t1vW2Lln3d7rVbPYU}M z?x+gf!`dr+JwESu$;mNruk@L}48(}<{BrpddkLoC&B=La@w8I^s~>Ct&uKM%Lhsl& z!VExVP4MyLwG5N1O~jL_^G5FuQW#10dbOb3Q}9|!5$H48^ETlYq}nhwQza@W4RQG^ zY}(%g3#Rv1Kso)qn3KB9_8yBuI`v!^B-c5t)Y#cc1v@_3Zfts5FIQMW-&O@K{!V*h z7nZ7cgP==PTzbERer*a68fh>!U=*;^O164QYWEX-pJ%<-hfawr(|`j$%?t2ogkj%l z&ofMvN#MlNukZR<3k{oM)gz)9FNrBpBZVx@Vy{M^5I#heDN zL2~_1poyrBCsZ!=3R(pE_TYX8^$Pb(06GZP!T^mKul-}dv~sJTA7cYLs2Hsd|^F`Eda0uVtbJfJ?DM1xsx=!z~rPu5Wx$mR>sg<0M+HPWN z@;=571N6?H;3r?MV!OUub3h^Ku4?I4dz3)(Z$WXl8&mbshY;&A6QhkKzg&Y@J<} zEAmYe(Rm&f*vqiWG+EZ+|2eeSdhT5lBR6wTy#V0QWJ6$WhE%TOymyf49AL-Q%9%-@ zE>ivHiCA6M7ZbH4Z)h`du5G9`bk6VfF%`;gPC|N|(okSF~zGj2HAU#34h5deK*QXe>*Z5>wS(;SBLFm4FL=I&~D>dd%_F+0ky97*oNj zz2blut(*>_LNK|+WSmd;l01)FLV1S6QOMLVYR2all!3KwFj!$thr7h89|Q3F`ESO ztVSiE!|JBOOnyW9=iY^>?aV%GI)d1fS}|!g78-!c4(n!0u09L zp8Xpf6#9;q4Nxcag8Ie(hA{ol-fY$Cx@mU*teho77$LBVWD7n(Tq0aOJMaW3_4ecx zJ#SHL2IlLS+P=TUN`G6TF))jknL+pj!$*ieJ&69J{Bkr>-pmqoTzBWcD)j&B%de<^ zgMW3MiX)a^1n$Ma@>?8xQK8|B0@LZVaWfwTOg(TM@w=w$E3cW?!pl`(sNzuA3> z-!9a$ALv0mDSZ{gTFr}rye3#Zx@1*hx)pt}871F@#D_KbpNrnqvB1{E{y>Upug$ z?=M>x^Opild|t#=`wb9uR^FiF-XUMduVCt-Abf)N3txW1FmSMx`MLE5xoSZ9TU0Zi za|4lh;_u;izkOu95}mZ1Wx*;rLiN;C>f(o{+~A409Q-ntSQGl3{4=@{br_{#%HD6f z5E+Y|&>>Bm*k9E9kX4tv99`Msuoy_af*N5n9l*cele4fhU2yJ+_UhWYQT<|qC7 zpxzYmbho=F*aAWBYcX9AKL0O-_CL^L8+*9WN82Lyb2+RfPLcdNBklP427BhwiiNtU z+nZ%e5#XkDM7SS|HRHy4`_6QvfW<`_nP#fR&hwnC_gPm_z7T59a>_GtZ*ug}lo(3e zmU7=~D+Y?8V=E=X0TlgyOIGk`;)H3#LW#vP+tir8XQd>Y{)PLKSRw#V9Tu8(l9$sbYE?5N@2YeDYAF!tkUJ6&lOm!(qC{y?7f=&uT(EhZopxw`B@JV4IX&A}o=E zHY%%QCWaWXmjZhlSj(BzL?Q4jl{W%<&bQvpahQVK2o5vTFE-9L`=|pxomK)Kf@gVV z=)0~s0z^L3@Gg{I5856}tP)8gld}LGTEM_9zko#C<`WBpVN^^07O~@Q&62DCnSK>1 zv1Q@sK=hNRNfl|9Lt5c5j!6XyRDxJk&5M&0sS<;qrvC~03i#x?mOvnJ62GlXGN12x zIdt@3Kjs~qH-Mg99EC5a;*Wsz=&K%wonEDQ8Wl^;uN+BB8Q-=Kk4Y=}4H|;{w3&|I zIOfEchb783%2<(wQzW;4{(En=_)s^Z(6JG2Wanp=9qDut zJfv~^%}U_Na+Z0u!Q;aadk*xR-5$SqvGbrD>y1LpYvG6Qqd)iSwT=T99cS!(+xA}u z|Fj*t>b_9}>;^Hl1*!ct8%Ojx*OR{lE)ls+CdwGx#I$7J{%&1l{vI=lNALI(tZ%!N z7S;-^ggFd?u7)g@x+uYh??0NBPjtY$Dmu-+f8dAapcGmTC)7%TD)|mp z#IH5s$X(&#>Op(Qy`BZ9YCwZHy44jKfkbZd&^v&!S+Vcp*8ppvFh<$;+v; zL*wXOpG1_@rAx<2R#KA&H;vd#LLQPsHs~r>a+~DZj0R+`-~S3h?3GK*UOUBdma_K}u$ft*r=*-p zDMm^MTn8lv?%r~e`F^-3h2>c80BOn_+Efd`0Ho;sfNIDPqE?ZP16n_{H$OX@(6iiS zv0OhtVxvkZ1;%>os4NwYrcyj?R@^&EikYI5N?Fb$U1dSb28m<#_r-Q(*_Yrz$CFp@ zJ}=hr-e@m!H@~sucXSN)2kMg7SS_QKKCBkS&tULqW{en<;8Qx-Vb7OP4Imwp9X0NCZpKy*!19|dc^_KcZmJp#lR5t(o%JfU71;#N(P6c(E_leeW2F0Kq zK77a1LEIVEZ3T#+{XE z34L#sHi4t)R;f=M)s1DroiO(`_D|g(ak5J;ayOG9m2LqL;LVV%41XkiV5Q?=$3xE% z&RIj#cxu@z4Xhy*o$V)$!qh2<_udc(%PAp4e&Dotmb28+Zu1b9;Q0h+*)C}bVw{rR z#uc2CZ&qG^UiZ3hXdm9S%sQ*lD0!x$rLr6YVW5$_noL1mP-Cd7?s=jo(SA+k0Sfx7 zPzY_b_GUPFUiHEC8YYnOlDW!nUX3L3%`=mchD~+m^HV2s1!+Y@)T8m|8&HV+-l@&_ zE&ayuO%%pbaoqn!qQ6%f$Negx!WUO2)%Mr@Do>Q8m#XsnA)YW{&DO`o7EK+hlYaMk zFsHcI%GR*Z=EZkU*(NDp1z`>y-YKL&s+Q`HL&)0~Gtx9J&e>pecwh<tyKCxHBM@}xFsPGAu0=&@Pa%`o8%%d-b(yK{)-UieX4cSWzijwXBlsUXx>Xh zGev8WMF_2UUK;e-Evj4y-%{#O@N!p3otp(LkvrkI>&otn+o2-3WzV@l-#32Biq8}` z6_rP0l;uvmal6du?Q5sOk%;D<8NZur@&lbKua^H-U-P@3Y58KOg0z|32moqItA3d~ z;W3fn4Z6`W>gSe7Bn>o&;tDW2>XaxL7g`^tgNHPgVjSZeKT|4&!f z;CY&1Tz4*tCAo(HfMjcKkNs#YxTML3&>o5Ed@hdnhvC?>0 zaoTBwLqyBYY#N{Fx91&jZ8ht046*8Vqeza7!T%{{_F3hY+X|+>CJZAn6c2A zoKbRQ{VFFZXXx3N&wKzoTeooSCbfI7z;?YR$MtWPzx!x3_;t63*jDcsq?S(!BvxlW4V$`i9i#IkF)#j3ZHv3V1)g13YuPWIV`&IDCv6T;h8Rq8EBu+`G zd-~C&_V`o$G5yFB!5<3 zX5~pUl56?;PY!NG@8Qzt#by-G7PZhMhH+`KEPwO3K z-}*M&fo`|*>wo{mz|;3WM5Pa%FYe&pMcQJ|YmPz3UbW;*-C_sgyZegZT^Y+`HOrbYQANX=x=ZT3$E_B#02t25` zK|JlJoCkrzB0__#EnnNU|5^9$w&cwaFL?k2-))ZTl?f{7wma(C?xQ@EC{_KMn}G7Vg;fg0L{5+>*7D7Ey37 z8@Ns=6ltw|eG}PhOi3c%t31dF<4~?bd|#T>-l&5R>9FtaMmyiG%W>GcMI}iauxqsv z8{~3WaooPv!k+g!LjWX5!^rbH^2XGgZ&t+)nNGQM^)|f+KAU3))!H!(Rc&px#X~=A zxYnAl2A0z*RnBo_FMbs~bJr4F#htXZJjc(#Iet$i&6Ooc(V;$%0WmW!`Yr^UT95ez zGxt|{CTYW6_FqQpx+36YuC^;!bhU@}Y}di#Iu}*@>!`8AWJ^JjbCK$FFKb`!L#ETQ zzi0RFH-yBUmTw2PA39PBk;Cj=0gIsI9!@JKrc+Izlb@lZ@Ek-E)xomYFL)Bj-CD!V zvEU};Yt=TA;YEWBK>bcYsY!YWGF28d*K7rk`CJJOjKO*_et&&boi_yDQeRGi3>bYs zQcvf|(A8u`opSacd?;(m;#U!O%Fx8KVf6x+#R;NKs%6ZNr)Yp#W21er*SH%>x1)X0Vg*Sm-^bs<(`Lc3)* zk1F43HPL0)U%^(a$amEFE=T|dnyLbx4U6sqPPT#52SyH4MYP#Ga;s|!Y9Q~FlieRK z(+B$NrzeZ@3oC(`&;!$6to|#e*7y$ZoY1l<;zMFY%X7sUaX9NGCHboL`KxQ=-zc*p zDfQW=0KiYw!zxxd&gbp8+{5#E-R6FM?EsCvq9&m0(I>AV@3wH*)ArvNOYG5-%jccv z@?>Z;7jZdM`Q^)Am5bmUn}^yVHL}Lm#${4t7SgkVc6~->u44x}e07+l{#H`qYC18f$q{xxSZ~k{O=={z3+NqkC-(9 zLn9*V<2?*T)8tjKAz2uhdU9(K6gW|*9@uh>se9R7@Ek4Zl|-u%vkWR(++)~xq=B!7Q9 zkGQ7oKI3*dvcJecg~$@gYG(}McNtOLs~U+d>MxQiz7AZugdb+LRa{iB$-+Z@EHClm zpDo#e&~#EbTcw+s?w@DAq!RBN&!&O9rfb)(+x68Z*(-D{T#p)FOa2N*2ywu<->bD_ zaKfD6n32AMzlnvLbT@cXtrqg$fYL|_aQypuv$R^9Sd!sB72+=Dd|)cLd2U5#tU#y6 za-1n)Vjupz^hAEsH^}0SWmDc+HHbqaf#;1%cD#hC|AQmKSt?Z?(?web$0&Wa-74|C*N?X z#;dQF|4qO0->_v`@FlH~k&yrd4HVx~3HQV>M#e+f&$Swdh`j|mY|O%wk*5v9)_!3* zKazAOy>u*J%HZ>_pJQ=Mi*kC$wyjp&Q9Lg8^=hnZrTa;nb|u zzC|J&Kh(%d1m;Kt&~u9iwg!u86t-Oa58}l+#&v| zJ!@hSdj(iV$#Jusud$|EehWR0&i1dA^tM}%1L!NH_hn^PEeF_KV3QJuu0r?O_|Ps_ z0|1()Oclhma|$pxC2fRs)}3(eluyl|&xXoag_eenqZHsJ%>JrZX* z5{BKuGsUeDGp`A@e(sNFJSjklz!w* z>*Pnk(YJFZKl`CyEK9tR%KP_aLmg(^{>6b?#8YbQl^ zIt+4>k`|Y(w|?j63G%Mca_lwExzA2*SPLE{5uVO|gsI^t9ffKxBt{g`Z^2K*CXP2M z@HVWBX|29umpYAxeApA5{k&*wev+uK7S-lfy?M%(hQZJ0wj>q;%_w*=8efe8smvanyI)}}lc`{hH&)0U#P7|+6i&KR`sh!+E!wo5PMZ0NmlJn{H2 zMUkc0M$Z1{NK7bcJpJ?l-_%y(B+-?`5NUch!2OL;Q`3+0*ERlc-YCrlwv9TF3QCIW z$(RLKkk(e0kZwpLC()R=s|hW81qncvraCOVP<7;SdHxakaj>QM4X8XRp*V0 z{xCbk+2n5P+r2N}f&j%fhoI01_JR=asSqikhX)j0o#rwQmeiLl+oTJjSz<?(0|=PM z7fP}GL&|?D#R}CfqQXZpDIvp@@PR%hRs!55_=!zP>hg9_n1#QE>CO!gw>)y`}wVW)ANA2fQuSV3<@Iy#>rZ~@y@ z#;H!Au!j8n$6i`reU0qk@9RNo+tch4=d|^|t+%ao$n5h=1vIOrvqOB}LvAv{Z%kbb zi0_#=NY{3(g4~U*`tn$sutMKe7pvmnGD_8W07sQeJoCc^n>iIHYYFXCmQk3(3aFtK$RC;iSC9?d&jhHcG5IL*)?+0n<}6{c`p#E~~5 zdlWqs3Y$~+#Q2B9&cUz)X-S0nI>>eIH}Ak+Pouwm`lU68G$?ZUE~TFH91N$dV0qgx zZf49~s_oW0uR{N~1v80;c;~t(`OXc+uL}QAVg9j-HVP#1ItWm){{6`n>e|*%b?I%< zBZB<>ANeTrA2Vrgu;4O@6=tUziuGak_d<>JvCP!K{)Y_ya*jZ&b+ca&$bLS?04cn z{@KLjzPgkyrzDk#?EB|}edn?ZRZ`<0t8Ci-%yY%dwg{R#>j7VjMX$kwek5{nR?qsG&;Zn9#3&cM0bVX?&D}vIFabYyu)hpQ% zjuCrXY+~ie{KvTnRRq=9Ef#5whLLhEM*{15D{e!JcBc}_yjrWU&&r|C?sqpy%FwgW z>*!cqJ)os^6+vN+*G=u1w>x@ih7h(tmLPG^Wq@fa*66M zBCuf+Nn+ls1xdDMMzPS{l#<))yqm$=iKlh5rXUyf)FB3{VJttcB-;+pGR@?`ZnNhr z^(tcl6LO`iEbC-<^QDnNQr(YxUtmkF1kr0TvQ3f;P+El>+0;gNI=0H}w#62&K2rJK z=RZ`+z#2${eKT;@J@o#2@>h*@`baOuY0k^VkK|}gtf~sPZKSfiE%%$e4GTJC&$4xm zB{`@S2~h+b&SL3X$Jt*5FEM{-_5Jx%G@lCA;)}Xydp~(K(_|7l5}n_h-p1DbUf#oW zANTp$@Afr8g(%XVIRyT#WFEJuZpmqpA~}6CiuT1tK>e-ogLebkoulDTjHZg6BI(15 zM(`fK37p|7%5di3lV6BMZ4>S#VHgcfRztjc5w(?LJ$uxL;;292&#`UYIpTBS)fpc0 zd5%#m9f=24imrEuD1+ULa8LvZ44r+noO6$vv5{TDg6VIt#*n32JIfP zT6oe5K1!YR^DTqTt+e9CUAyI=&ZCLm7=TkX{6knDh3*o952ffjvSDg|LT%;k)tWOX zCVw|lTWF{#Zo#JLti`bw``#YlKQP)9uPo(rK7LD1cI5ar(5NYJT&he6`ZJ-0-mp8WHNbP~e+68$We5Vaff|NZdlH`pgNt2-6lH!PXeo)6Zd(zYoeK$TJ z<`$I~yoxEekpo_fg+`%gESEQ2*Vslq&`(U8k$pavpH3FvE4k7}Dbllhs#xy_iL z*>)j)PG427K5R~#2tfplP88@R9Sk^_m9J(C$wKF#RUVl$Y(6?a60m{F<%Y30(Q2Mu8G9cjQq0D%K$bFAzP;R^-D5|neS{k z8Bgbi8P<7+2@x#KW=>udMC8F3CNyuuZF&5N}Xi)H2#irNrs9Ak61o9^yku--&;J}R*hHr8!tf|b{}J^ZF?L4 zJ@P+Pw+D8+UggdOk3FlCYlXCe5pLXQmrmI!;?qZYxUVWFL#^`e0v$53wyMN*eLwVd z%!Xz_L1QB7vv-@k7U9=>Ns9}WjHD4waC8>w>0)2!Xfim1O%=TUGLzHLpvx8&6_@+bHsYjDBpFjWZR#tS}h8wDu;Q*0;5# zH}Q@Woq4{G8|2)BRB)?ZbTk;Dp*jY*-KW16n9P>-36pv__z;?i^9y_^|Hef8FjQ|1 z_F|?Ye&_GN#H5Zl0DCua!FgVIul4d=y9OC>h{&cX)Rp|VRnUSeu95r`^bgD4e}vw| zx2&Sz2P_4WM@UGE3F)_!)+eJS4*vt-Qv9HsMhp*zr3D`3!Mk)fX44*>;k%T zE({)hvqNMTc*gdxg5%?W3}f?z;3j@c;;#+=V?G(iN4&RvyFH1UC`bwnBfy$#ImM{r zA3wS7Q&Dx8(+@-E{eg{^htEKA?;EOZG%~i?0*~*oW?~-->DfO2_fPmgtNt?R^3sP7 zS=u<4woML5%;j8(6)ugxeqV>W??DJ90jPOFZVu{~qX+MbO}HZ*%tPUEd(s-az^KDa z3--P}!}gyL(iwwPbVoPMdmf9|$BO}MWQzRd53ZyJNgK5>|1X3r!S>1y`b&+~%gj-N z^mO0*mS`%T!5b3#shwv{FjAkKL&*G*+Q?)j<-B`|qx)i`TWWm> zt?j#FC$Ag>C@$?7Y2gK7mJbcTgxKbrO#Rd(zuU_Ri#;)i_lS45do=ycY-VUz z&PQ>-eg~3A(C3fnkeh4S z3onBF?)Grp0IUN_uu6k&EW|$sO#wo6d0mX)=i41epQu(gZ8mObkQE7Dg=0kzzN=VB zFCvYp?*`p8k9;bzb}^sbzJU1S_Xqzqo~daj@+a@kAgj&(ew%S>Zr3X%HVr=guGQhY zeTmRts|-4v_0CubU&>BIS-;&eh&%-fRbra@8Bo}s#Uj4|09F? z0g(E*szg`glMSa~MgsL!UMc>De$WNl;y5fK)^&WKTx9~u5tj>2lz^Q!f{U(vW0vXJ zUA@F1%Y9c@wb>=J`KUf7A`V)Yf;uj2eV|+7&EUEu~ETtMKyrTb8;WErHa`2-MQ5B zgMrbkDuOx1lo$Pn^NA+o9_b5S|9xgs`LZTqxdA4;AbUPdqgabvHU}S^&7v_ml1=g* z8yexKEG!K*yo7oh&+Cx6kDc&RLAl8CuyI2k303WzPH)1NOA4&|*X@!$62ewMB)(CL z+_G~wr+(-{1;swTz3F+eQZnV2@;CB&{489IAqdTmPsPk=Jht_HW*+L%JQz6eng={; zftI$hB}q7rF``8IIyUk>52vIruJ#B(RYJ{R_-mtA5=OW0?%L_{WndPELbl(jDAMgW zDnktG(vzu`l!T8wP82AoMeD~7vbDn(gDGfIrM!gq562^f2V{8{pqSA9A1c|tvsf{* z^5#8WjoCo;jZTu%;;3FV2^eVQq@vNxt^82RmPSBI)n_CZn1Kk7zKxf~HopEBV|wPR zNC*Q1=@7F@=d)EXeK(-y+k*XCi))Bvt)#gp;Vx8}SE8S}LkV$3ByRMluUU)jA)m3{ zTp@-E*>Yw8v7lbBh_a`-(wC?F=TdlQisWcFu@%f{LBKFR9FV%cag)q&A(+tph^GKP z0RhTJcCFRG_MoDE8)FD<-*qhM(KK9RSCwQ2CyPt5RS5tBPA&p(_<5uzy34i&w_y-c zW`lXYDtQC%a9nek|M#EC8Axx(W)7iG<|0^W*~TNTO&mJ-0#Oc7hxsS5&v?}$bY)fU z9--`u(3C#^dTo{?RpFx-cA69;p_*r>*%CYHpy6e=NB z%5dfYyPnp{b&&Nbr=a8KX@0xAR);EH<+Szon!PMI1DA`G8vKFO(^~UVJw*MXd9PnZ zL8`KJD1TD1JYdQmfIH>Qufd+SgjK>%SgoNj{`zvj@ZH^;dE8Nx4;L^3R5F~!+VE%x zYVcpJj^P$Th6Ir<-TmCYt9>7t;U8Tbt*vMcp7KK26qQVx$Fm(GW;~vsSW&IhKUO?+ zZgHrMfxUePVc6Xi#i+h`cN&oUaOEzA%Oi^CG@NHehwYmFzb^{1mwW301N#4`>Nt^v z$NL$xi?lp30OLa~9&sr!yG9T%)BKCMlY>Oon?nsN80q#AOuw@4HC8^FMk9Em@)~F5 z%_HS5{a@9e;IOp}ni7O&d{)ILezBVEv=gGCat!6dHweqF*oY#D1UON7GyIglCS&K6 z68k<4Ker$lh7hpO9bPQUl-?-?euRCUj<87!nl78OZoLE=7tf|965m=QO-y9Utns@4 zhfndJe$%t;$8vnkC>FNt{nGt#oyP`#O)JsNR;zk0zR#aLpzH&ccXEW6OqkzlnpXH| zWF!-sF6}(Aq!G0UT|okZ%?+e}<9 z%ZWLu?n8r)o&C&Z@67zWo8v0VBaD&L>-*0S{;P8uU zb!UT5x{Qp{thL)j(r~}eIms4*G}(B8A+gH6(s0st1iJc=_Nj!+Q33Obkfl$%W6Wl} z|D5E_b#3og@`B^dXNHGL3*C^dQ3k>QT03UmK<^4|sOhdLsBVCHVH0*hj^|p+^;s|Y z;KjBdF~G<9Us(X|sa@Wt_YIg&YM$Uu4YK|e#AD}Y@z2ur-|*`H8PPRkYK!?$;JzRf zJywj)xRK2sI>O=RYC~fy77FIO4=f8G6ZY>2Ek&mlMPff}f>*)Xr5>KuypAf7JYkZn z+Aqp$EthcX?T|__8sOEzLS~%N-hkop->vC4UVY1aEb5lAdFj&JchOM2AZ7pipAL7_ zj+CASWtZc4n!93iq>`5Vo<(ZxFg^Or5IOA02`v2Cm^{Zng?vmLx0|`2yN#-R?}F#BI25W?boa;9-e*0~<3`*N-$u%k z+PZjcj*d41N~UXu3l1kX$FLhSCe)!5CnqA|M4tY#F1z^!yFU8eR?kOLQ7R|e1zIaI zx8PAcDouD|+Ck%Fv^gVv7I0c}P9fSV;T2Q*Q;>IWBTqU`;PU7}$btH_A$`05v0U#m3G|Cgy^yJg#i+Dz>GyL*uYrZKR-Q&)w*?PqVry=?psP&M_DQeEqe$6jaS z2|^g<6zW<;gL^*2|E2uK@WX}S1UaivwGgKWuO|;eE{>}C+Sgeg83sB`0qHiXY-hm< zye#wT#IS>$=pq~Ls|6qYEo3TN<@F?=a*3p0x!e`*jry7Gpn%ZN5b03TWV+0h$gaC5 zHN804S!rFu=c@9EL-L@z5>CVWL^MQ7Dxx^K!@OD|ij>L2OPvxDYH%+P{~(GP-SPG) zg`?{`SFnbq9_$HG_?D-ItexSJfoX7)h0lWcT7ecP^(Pw@lVo15NLIufce)UdO1ip$ z(KjL&@eF>#EE8cVz-ftX)YlA{p6M-qkpFznidqJ#-iYn_@~Y~SmXq2J?qVjb5NR_N zTcw^>o|$NUvTGew7x>GS-_l=bN+WP~iu7ng>_BurkE?5@VTQ=eNdNxX*1!s}vru~G zS0dIotgb-T#PfWL+;>_wyK?Qh>?HRNx+2>xdK<*1J`smtSU}3%OyvBrQ5H$RRYBl% zmG_lBEtF5G-y1#bqOqd@%|_Qa)Fs)}>jI8Cj{zNJr$739}@x80P+p#Z&&jeg?Z;-;KWVHwr@dmwva*i=~lDgT$;eiAShAL%F% zF0}*HBFa!(sCwFKVblMArwIH4Yx4mTZ7Z~Cs-}^TZtb6CbySV>v%O=PoTLHMzH*LC zHyRQTA|^MO@eEN->j=+^8j$x$K6@*gm(~hnjo&?igo=AZvI1AM_!#+{rics6RpV8b zjc>iKo`Y!k=M2p{xYj=hpuKe?S)*AxT)wzE2;d#8_<8&HpRwW4!Cu_pm$r*g4cqIW zOE7|HR}sw`|H#jkr|)RhCWNS#$S-qirCufueczJI(;D+S`?!C5fnm3F@@xNSF?e>A zI(f!#*z#MBlrH6QN4*Ryf)PQ~`PI%wv{m)MDCV$68 zCs==f9YqsE&idD!r9@Q2O-NPkA4DC@fxfdme|@}P${uw7OG_^H*V4pO3)z7g!seTx zw7P!k=2Dvio^-wX*T-z3OaYeBo`u$4VTS+r67~|<-D*E14)^kvQIu_-M$`B!Ku5(5 z9V{^-VN@#gwVOAHkr(w~i7#N!`xA$1t-tDqTORs3KlJ%+rMj|FZA~+HKKr>@eRn7e zCBLj>Ca2#7{4e8v0JAxl&7{HDLHGK*?4KdmS^>)w^pJ#zOdMOHsz$de9bX4@KNl~x zafKVw>Q5t?HA|5-vd|`ECTmUoqI9Q1TV#-$mAE<2yZtSaHa6^Bp!44@*lXD4&2hD6 z>Rh-!K4bHWYH5-+WkCCi2IWTK&x}=U}6bgrD{eYv@fx24{F@)`(4-oa$uLC{;Uu zqogDx|A2t5`c64(etGTW?2k&zne*O}tHst@bBVQ&1#eNCopea@`TVg3P0PG$1E>>L z3M*j&$})iReA9TfJn=r_()}^2v6P|>dEnTKkkzH8)sc65nD0T&4^T_?;kc7Adoa@cGxyfue71)wFSTbiijI)G(TbWT&-9I-+sD7ZFdLm|{*kO10eFp~ zY?h+i^*Q`v5ufnKBw!3$tYa^q591G;TL!R1g%6oJa_P%u>nDlZaYGIkzJJ;%=wUj4 z@2`CRf!Ci&@yLPYOCsvovx|VvLMKO}7WV87iLiDej};%P>$kYbR~f(QKIAt|+5NNP z4fDz%>fUfu5II^P>)>?PFPzJ-d*5*Q%@03BNAmn+0u?R4C36u_>2bGDX475k0TubA zljwJVtLUOlk2SflAxYC@kk!I_Sl`i$(GeWI^?&iA)8?YP2FxMDQ$OB++7$queTB%` zC_E>mX0^-3EQZucE*J?{iMtsC2XY#vm;s2atrja7%sHEVDi}YF@dqkG>2D{BTz!j> zM-!`obBcG4&T{<0f2`x;$T7a4S4$V7j#NA$jOrxS{J3QCe@oMTL98wxAXVZ3t*>8= zu>LReU;eu=TojE}k%-5@2SvwU>OlV&W$zi)WVm&UN-xp`DIySxfJ#$(4^l+wNS6|k zsz`^>6A&p1f;3UOp!D9Q1?fHX4naDE-jk5zWZyf!Z=dguea^o7XGWg9<1J6#wbop7 z&Q;1AP5^oynbt{hC5xfnKTt~5WjK#`*3ktJAblzD%%7{Pp@e=_!nU*bL4svR=qILk z-=>RB)Akp4KeQ3(p2}a^cBx3Z=)Z9(sWkqBCpV!O3hYRRSvLrL^P!K~=Sp7xzXhp( z@!i$vtv*jbDb_|1+WAQe^QD9Jm^xtYi4f)K^A$wWmER7-tPkqehaEa*-wiW{(4^cF z|AW)w@7A&kB;W^MOdoQ)mUr%rAxD^)urbLK}|DNj3n+^uR2f1 z$d7V@YSf@O<}y2o7)5{8RQNCrGb(qWXjBeZ(7<_!k~QkD%211<<-~YcXJJpZEO=y{ z=HJd~{FVD4H}}TRX$BmHVtU^C#}^JZ@gx4x{`>>_;nkXUAcQ9DPw1EJnso$E%OFd5 za(@1;N$){XYDQMNbywSa2lRhtJxTYiD&8r6sLVMVAXjU7;>Zm9MQC2$nm3AZO!L|5 zxkdA?-6gj~{(X8Z(B0#!!WDTrc{vNHtdV6W2{XzMOxE|6Bu=R2*gSFyHp=B*`?Yf? z=&#jRAWZh*VY-Xapor#gf%)PHP9LzZ@oiC?8d!^3dmu3v3m5BO+d%Bo=>j(^Jwq=2 zfTN1OchMbRtFpcx-Kz7wZVPgny$7+wc+ZAEyh>F4GL~!&9Q&X~!6Y*>x|t=9y2+$JxZ{s?igy^1Pd1prA=PXT6%WTGY{XM; zt=^r4zr}c**fj!nU^GaI|V83yO339ON~K>{%X)bFIP-?ue|S894pIH;yUX6?ktgA8X+Cn)>ryDz2^ zH`$PbrLKFg@kyL@UIuQzjn?CQ-Y}Qf#BY3#i^qZsp5ljJt}m3c?e#bQ>#d~?Wg*knyunLD=|aL;@-q7)fFId+K_}ix zM+tABVH<o(#AA?4=E zr2e@0VD=@Apncg5Du<#k+pQ1-M8S@kvEjo~LIeywrUc*LAJxAOE!mx~x(YU#n(Enh z59SGi#F#pI3A^{bZ|VWlHm_7Dhgmn4f4)!!<)f~Pe#hBb{eWx=ra4|b51!zw;Tpl1 zosAn!=4pO0`8erg5_!Z*@Eh1GP~_8ikaUEZ>-8!0viRbsA=2XplT*l_Bp-1yLUzl9I%>Z zrtwI5S}IRW&-VLPFay!K^|Nyd^pC&H7PC=G?C3*h&?m6;6S>}?cRpGZT zy6-qN0an zd20l-szJlW%Pz1H`a+%VzTA5bZRf7U*q_rqqj$|#bfuk5S7{%nzocU{BU_%gmaZwH z&Mc;ldOjUiA{`UCf6r%+mg3_^yO%J*CO*=pCsa#)R^T(a#to9y$9~Ix2j0*SCvxs5 zVWgl$XJ15GklW=92)cw8zOmLE-^$O11mAYF9Kdsp3rN33R zAUu?m!m#xK)W4&MQMzPK`H}tIdl5t|>wkc6W`m<3K>M|}2{E;Y7kpbyUt)?k(&7Rd zyf2u;qHW;mCCP|4u%dXW;1D*YmjQ;)$`eg~Ki1=LN{%h@=W&1CEb=C5I$*$VJoC^U ze=cxIF%5Hy9d`(D13xo+v=n*l;9pMgX+9;IiE9(byPJR{I#+8ja}5v4c9c65x8Lvn z4Q#pYbkqaSPk7>+?E;fJidA=|_qr6ATNK6&>uReM(gv!x_$HPn|Kkxa$cvyd+I%%p z8=Mpze|XZG)y}j-=klJxc+PId$i|p-&kzEd<)(Lzi#n(@RX@mF-iE$PL&hfmL_SZ@ zUYoh@?i3;t|VcNo^)rnHr}` zDaY%supvNo6whXvQ_qGCE#GA!#9ok^TPNYa0k# z=?wGwf=&Rf@)mckM0nsJsd}&=#kr%so`V|B;>e6a?;+*RSuM_#;dk)6m#wkZ&2q$# z0bBjE0|4H96W+$AEpK9C!)<-Osx6rgeoT~&eIM^GJ8NOGG(0O@$6rRCpWfd{c%|o+&(^Kgv0Rbcia#N|nO3>bpz^fuRa1F~ zZSUgMDjM)3Sg|;j#^FZXwNd(1C%`F7@oMaIzAMr(x~rQR8gV@lq_+)C4r`o*?+U@r z56)}cn}p8HG?dGtmh^Rg0Gfa_1U*_YW~xAn^keZl1u+u27kEx2nx1~YaW4r9zUIuu zYfhdH2FeG!aA3iAW*l2+mtN4?k8OmEecbbZTLT$=8gh_Qmln{cgED(Mt55pga3rXC z=K|~Uj5e|?>%5}6>6LsLxgjUY8r2liYSy#0bbC!1M{rU)d^*=)Jm+5L(Owe&9k$O+ z>dRm&lmI)K4c{!7MF?D)oOMg^_HxPn!XNTSYee0>=qY(RuH1+7|AIZDByHB@wGH?) z{Fc%hUIXN9HnvIq!rv+HncyKIq@mxOg8VyvkF;$gz&k`|x!L%Qg4|Hx;#i_1750e1 z@c>pwziNFO=&n%4$m-5z0jRGmkNgnQG}N}u&FG+{dJlaU^#yf8X(Y5PcoB z2KoxJ=nOfSRsAN;*p-o~dob<(NsV>bqo(&Z@wxD!psfJ= z)q{%q;>!}u;Co>-8Cs!a)Aycol!{HY&HCOC)=snD)l;)LPJohe2!!^u?(b+Q=W1ZQ z()rF2^qm^iq#+&`24p<&1MZr~2hLlmy6eYhPZW%VA&wHWlA84^kcc>q1{F+=!scYD zlXaZE>h!1UDvasX<^%Lrjl9_{)b-rKqml4GXsWaA#y&)n{sP|QiTxh>OzG)*-lh$n z>aX%IM}Edk0PsQz@17O*MOG5~-pK~OVQuIQ1sqP0tW;%L2dRZtS}Dm&@l2btsP z=lCETj^*l7vvFekMZmv}2uIjx6&%KM^v%$}4lV!U&3uoPm)N3zdyg`VtZ5-d<`d1g zL{Of>hP2D;&olX^+^+^c=?vz6pZ{pr%zr~fZ6&#+=}s|=rZ`xPm3pqi~y_i3%*3~XmVqhn7raZ1`+tD53j@Q)+D{5B0PwcJb3 zh{bilz_n;BXF=9TqjMlGSe5XBQA0EuHMf49`+POlI3o!oMC)S zt_!RFu9}@J11`=#zi|7W6%E@zd3;pN5O|wNV1iUW^H)f!Q~wPFSV5(8)Duls@q%zKt9rM4~|MDhsGHK-ZX!O1qCBkv@+G^CQ2zF=ULn1 zAse$G;(Xz8$9EST*j88ElR;@YWr?anr`xh7-L(R2?nOCTlkmsO{t!>u!)7fZv?Tkl ztGy??NN_aKytl)V^!8Z7*NeNo_Zmt?nB)Zj(-H?y-Uxq>@o0^!l z*%ae?JF|{9R`CJ_@IB6bd-rK&u<1vF=i*;pmX~{0DWWr)&}N?}et4(7EUsq34e!8y zI4`TolJMv|iCP^b=?s;DJtYC3g8ry|%8w7&VcA;Tl?0a&G?a~;!bpoAosoGJ5q8_6%Jp# zY8#ix#1(rPHX?0IG+B{14MR2tab9e5-Lm6@68Tupr zl-ssJQ$A-d@5an75P^?_U1Vfm*ia6NNp3r_a@nt*Qg_TQU7bFQw=6iiInJ*X{qEV| zR1wU64olKSF2+?Dxo3$Zh4Ggi?<3bC_lDZl$7C=thLPA#FirW}X( z`~P*Y5gFw4O_c9pLwpZRxED)BP3#(<7aTxw&|Ug;v6Y0;K+vW z3>(sc_wFjHwUgmcewX&Nz(VYWnfF=-DD29gSgCm0*Y~y+{I5InV5c}wfRk@*Wrg?4 z;Eq1in#2u3xcU#9r@-E0yPHF62l*uuu*u`sYs$63*$2{OQ+C@kd8>KZoH)D5{LCr` ze3exWv~v+i)72|IBBSqUmx&!0*7eA=&7#-Kn@Qnky=>mZ)yIpOJ5yu5c{8W`#NK4N z_c`6Z%FKgpMA{JOLn}>u>$Vo+1Sf)+M1;h+{tS zak?u~t)dQZ)@sY})L(%38ff<3$Zwk{~g&0bB=XnC(etXk{Scf1MdHi&S5H8pFPXt^w1Lnv8?UeA$ z-mQ00>w3UcZ58Fai`a%7HQ}JyONawXANhY7>iF7WlL|_|PUHUdbmL7o$m;T)8AquC*w5wpfWKHGv5@TvffjV@{kJcJxEJa5<8Lly#m3rg^4hoLW&=rw6xrVf4()#K%#M3 zk%bNXt!33>;aX|=8mbfjQu{`Gd_BMb&xyUWNb$Iq<&IZ4q((63&ut%?%55r*1sntjDcRQ4Z*_t z%whGP&9>MVUgj^e{Jt{iZc~R+`Mjthr4I3iJ9zi>gnl8D30XZj4)I+;99%y1JO;_3 z9%Ib_d@CIcmBIN;p?|0GQk(eWjnI@S?}7%AZ$%`$F!5``RTGCjXQDMx5;>`CLO@#v z`~k>>x-E6(q2k%+O3{U`aKrT))M)3G6Wn-;W(y0|hgvUE5}9vpE}cI=+v$Jfo$2XI z>}e|Y)&Ae+r2pIgX>X2ef9UCXXy6wO?kqR>GA_Y;*>rwFVmGGTBP1ilD@FsV-vTdH zUrs3j_T);s>ih`v=ioQB!}|pHDW;rmcNIWhg1WfQqf&r%Fnr9cwy(BWO6A&;1E!>_ zJDY9ERtn2CZz^qh+08m~QS8eeRJIY3-v^|fnFR0%VryHsouN(>lWbxSp4IWe_&_CH z@RGH3iI_mQ7lfu;B32Di6<+L2fpxwL#i(z$j7||OkYlz|g4l@b`;{heyx_Vmcp(~UTS1Qqg_~?@SP0*<>~pi#xqO6%R%`sjBPoW8fi#cqm|)NAfb(p9O;v>|-}R;WD0dJLDS+-EAHiF0 z0r{h(#i7Oa6dfW#ho5^lJ50*)Nd0V6Sl6`(M-d7|y#^rE$BO;ec81F@dJygBgQK@E z93RX->${Y~Ct{T-xZLKg?|~L3JhX#897k_qthMX@M%v6rKukn`*RW&uM*@ELTw~1% z&AYo@qVcT_Vy|E_^o0PR8g#^LedF{>A-0vVqvC09r#$o!G0F25@dqL^0Fn8iq##_l z^L$#vJbA$AN_W=Af?gDm5_C@A{EWM`$IHBJ*QOSvj+mEcO6zN$%9dGxaX)HM$~rIN z$*;A#uX6i2E{K0B@+-(5+XA|v`0e&^mpQ^l5tjptUMwUZauljoDy;#if0goRm*wT8j-~s(rfivaAVRf0iS()M6-ALwu-@(ICh8}5!>FoO> z2j%EHw1z(0;BXE+QL7DPva~dEJBp&@Kge9XmTHVaHWkdaWU8I6}s5y-2Nl+neItthGQ=v=~B3L3Um3h zXQ4nZ6BkH3o{e1Q^dD{Z_RfyI4>E8f34Sb8Lj|0 zW$qOZ=x7{#bAx7;(#=@a4av(@GL(G}mT zibdV*_bV+e`>g}lO(v%!xT4X8rJfhyi|Teh2eE6IFuI&c>|R0yPZnb6Ci)a_PXH6A zj#^fM_7^-efd?}->qclIyq%T%$vyNy3!D_zI3fw9sj74rW3@7q5d(X)~~WiQ^?%?c%5Fn*kq-;}BH zK$E+JG>npuwC@8Mu=`jvoqma@P-%0w=A&ecdeV!_QsCu)Ke!z{$Y+%#a9I52Ti zu;8P96$Xw%K;UAarUDQ0B$CPW#Z4>rIM0&z$ZFC@bNs9%FQhrSJz|3!M89Qu5{taf znSZp#X+3`WOD{CLT!$gF7C>x&QbMHhA^wWyoa*Nn#_C@1bNBD<7Ofnz%}+0{eDfy& z&B`j0oG1B%V`BYeS0`KO>zt2 zX0g^jLo+W@JLW(wZF8ts#G@-oni2a=z-w9MRcwprt3Ng&)WOz&E)!ve&HLJ_Dm2fA zI7zpv(qf3j%f`UY`>XBN0>qDk%O6&cFqk9%%w3>p(?VHx&hPd!ap#}vx#f$dHt-KC zDvj}nJX}pl%5ZACcnlg^V4rZA&eKo#nR9(S6fQJdsJ}$?z)%!@zuD(c%E)-zz;mK& z@vrfW35JH^u{!@z<6uSU3Af*)wOmfm&qyOA4LDot@!7mHP#7sf6qNJ^#d4A60)A;N z7ptTt^8B7v8I6=Zb&$DHo!Y6$nK0j~ICXQvNYpd?X+Dh|jdF!$r^6pgeXJtFpTv!_ z{3iM~pIK_C&R>ukyV5BnGI8#IjG)@nVtH?7CXVGm$jY)w(?4x~4dbMqEi>+Mz*c8A zJb`G56(S!p>WO~1Z&~h|uE0M}^m%mIk1*soF6{WevH}~zd{7!}i(iltGm`?pNHNoZ zd(soxyvh(QSd*1$Bm$n93%f^MkR=S}DgAXAU^N-mByK=^811evkn;}S@?f{APulE} z;2Aj#J(LPxX@=B-Tpzkzz%MzCf@oqeNt3B8(Amr0oa6-!1;=G8J`hcS zrSY~l+h{t;S_8k7vwT-n^(`w)yE6o}d!g&^l8l*IA|k;x_s@A^e909*_n!4^_EfoN z4enesYyl?@Wz^;7#S%h2x9_WWEsVOizSGQ1)cDQS&j0H0dH`EOO-tm0*d2PnY>PjV>n?c2EmPOi=;g9t$oGjGeKDYMyJ*cBW*WGMB zlT}Y%Az)-@rJI3aC^gV_-LOYl^`Z3Gfi=g4k{#98s1{@leptkXUV zW>n&^fjmB4^$-yj&z9IPF5ze|-={8*xplss8;_aJ5kZN2Ve_!IYqAtQqXs83=T6W; zNlE|3H+XiD9m1%B=`o@?(l%sBb{rUOx-vD;C;!q)lf`6&**R*-aM_>C<67aH+v=~c z$1mAH;-^FS&rVy|I@nW~wT%WePTYprWyh>v)wrm?#=F8g9LGi(NUOdh?;@6WNdRJ= z7Pt#sbL!MAzR|Z+u}FMb;tbKW=4Nqx6h>tfbnSWcB#?XR7tKuac9WY&^;m|3-|lC>eK;7R&*`Uw>wM z)(dTmVc*2n2ZtoK*aGdXN*?5OI}Mc`m;XIzKDaXid?`NW9(`e)O~xvud{_S@R{_ld zg?;X_c|A{kErs!TW&K%osFZJPKQYrmiP>to7qvHK{R8n#M;db8l#4Vw1BOOL`cJ|O zwUhOc#c8|<*(u4-nt$vxwO=b< zW8=nymh#`T^uZw<>^w*lP$NbE#E)8Vjh;@tjl@t$PNJa&+W$1*UU|b0%T|Z7I{}e_ zb{5t-Ee(sm0<-P0^~Z?fr|-9jlq8>VxpJ%qYB#yv|JpMAfB`ZT;YwR2B06yfOxL#|0G`dP=&V znGcn>TlKA8Ygq|N+!EY54iB0;j0)PDAJc2j_sE~f8t|}5$>ceZ;VgQsP}(Ud%P=up z9gVQ~49X#^SZaCp8h{)DM_gS$wx^hK?DbW`y?nTA7KnW*WIR+jMCTDL7D-tv^!nv9 zt&p!c`>50z@2dCN?EV+O69H`T$cMq7EbQtm;DO` zOM{}pKK*5$v1;3b`>Re5bbn(eIsPCjh;3_zd=Ka&z8GnA2cGB}X>QV9>P9JVD>oA; zHq$(8)OfukwXiKC(2-K|jL=osd%^krwNtz46Du$shp&w$zV35p_*B`^s=T`tPNxY))YcWS zZPn1v#c;sDUZ&*+xQYVUef?W1o*_P>UF~obU(8#sUMTSs)vs$CV_X1|KhhaH^lGFW z*Ex%8K;Z-iR$@Ed)+rn%5z+2+@GZ8Zv|9Oi7u|SkeI->!V+98D%5j7&mnwr>zS(sw z?47*qht;fm`iAsc zl5lk)kIhp@jxf&(mvhr6g6*^8<+~GVbiu>oZGdxt0kHJ7N_S$q9Cx+JH0dvmZCG=# z`TET~cm&)KYV&oEqjA~wVY2rRg62)RW_gc0hauNtZuQUL#m?tXDm49(!HrY%$=2JX z^N{sx@a5RCUVE&I5x$_KbJMWL`su=qVXHRfw<^z;L3HvMX?_w+lt6gq`QrGY-Rmf8 zf>b=-Q2$3j0lxs>O4^J62qy^&R{@a`TZ)|kb@r*D6cd|0dEt&VEOU_?XUY++`f2rC z>X5^s7_?vEOjSVwesKci4U^{FPd8DJ;PJ~$W8noxSWk&;yKr?#l0D%^!D`&&@fLg9 zH=7(c!~0k%K%+1$dSKlj{L1NUUe-R?B_aC+kPLr~ z*frH)0-4`T$Pj+JXGnw*L5b-=CvfDEBPCIeXZMEQF(eHTgNyW5ul$5WOy36nt?VmO zgAclMb%{Dx%Fx-l)85_J)O!t+4gr&7Vjf^BA4fv8t;I+;?L7J*PhyO@EYD=_1EJf+ zI6IG`c-0S-dJKZaZu9$h_r^)+g7Xg=vIAIJxDFqW(KTC7|EBkX=-RyE`#QL8#JujLJc$E-#F4`7oh%p}WuApL}G z&&eM@$L z*sVzib=2}(5B2t8lub=sFupC3##9}wA7T)4(c6CM++eZ5V)!;Qcr*w8qQQGop+Ioh zn>rZ23V1|&K>TFo)?VR;gTl$k(!!A7$kFRr2?tn2z#(I_O%bdM6_WwooF(&P58B$K`g}D}gQA=!$cgj9G;u*+Tw1EenRaQnK9^w`my zh8Hx_lB2)B%aA_Lv);J{%uyy9K@!YnDoa79e4BthJLse@>mdNjfSdH6FVlHqg};qc z)VGp$0@&K8HlTr4UahQa* zcfbmsm-Q2yFJ4)LUV#)R$C5@M&BZc9`qwS{laaDYjO}ne;o>{?4gHubafr00)07a` zYhC&(ffLO|?5FMycy=P*wUGq>vs=Cb%6-F+VQ0*mz~n*8Zmj>_B|*ON-6PckN<(}{gb*eR&45p zH&l+y^FS77x8>K@cDff&2Ndqc?aTs6(0OUL{n3gQ0{b!?Yo~*kh`ZovYhVY~!)pwl z-H5?dv~>Dla0nja0zl^Z&pYv9&YURLj2GD_iwLDISfuZne`-9kiIHWUe4_-;CpBfP z9VJ(pc#>yf?Vos@Eu3EFdXU=O>>A94ibZ|FQ0;b|&r;}_(8jf`9sXR!de4s_iwY8$ zZkBfhI`2oc<0WUZ-^~m7!yX0BW!-(fq*%p}pG`Ca?wlg$d*TMV?~(u?AbAVe*DWdj zp34Efm-=I=DD&n4`>BLnhw{A@MH<7}Kk&iJ#=0!uzuLB=$1UTy9Q2Ud9(_}98IXi7 zp1x6+V+$oaDT0Z~qG1vk0clwK?Ab9f?-AYK^qh;dC zsf({@y0IsEdB>a z7T=3MT_5+Gb;v~E`a=;qsBF7Ud<#-hCJivTr%<22$-E~2sG=O*i~wPL8`#%d$_Qk> zo0tS)AOY8wzHRLUOKkevZk@j{vk*B(q#!wjDgw@>|}uhTm}3&CIp@-|+!l_F1S)bvQR^FAKDL>F$0MeU6MKPn-ZgF?$?3 zaIN#5EXZ1&D_MlI1%>)Ljyb@wj1C=rjr{gd@c+nJ{4bCn+Hn~2c<{m#4osd}@ZWoM*8*$aRrMc1q_-(QG{}=bowOg}vmVx%3vSv- zkMhj9)Ln|*;G24cx#!iW4SxZ08sN2H$-A4Bduk(kr0`# zMj5?Z_dCyLij}?Tz1sbvq~eY-v4aoL`x*^uG=+S2EnxM!JU`zZnZFSj z7s_fM^qOA<$>EfVv=XzAq~uUcow2qf6;5vcc}W@Og&`jjK({3rd=&{_dB@Ww{dlxQ zn>^v(42nEL8u+%p2$^=_x-cUW_|vlduN=b_H;*%zaLb54^u{5{C_@ushr^V@ILLNx zdHBg$-UHqy-)9;0jL3Sh>FpFRLSaESD^J;GC)MzZZN^!l7HkNK>Nc z?ZQx2JIJYTi%(w3biX;kmfY zx)J*obY>~BJQhb|p%Gw_9O^EJV*alFAMBURpDBKo@dReFPq!LaYJ#!k>9;%x2*JFi} ziKhDtpFieL7Fo_PP$^U0I(LgMWWMk;@y3#4>X1g4=6hR&V)wJs{Pa?81RGo>Ruhtd zvMDuCHcZ`x?8PL_vZhwJSKeFpeapVr!6xq>d-U3ReprDL+s?Y$s@KNpANEcKFLmJ+ zx8>Sdk+M*RufvgVci?jBjr7(SA;m>nuJPBiz2n#WGhh-a5m5B$H7hFMqF;2HA*|;B1DV?sbjF*WhlG_GLt+%&RxQRSM0E`4ArC7?^y~ zQ|v}=^>R%Jt-y2mHn0YTOyQr|QczF&kt&p`YLg-v=+8pDX1ne&<|A}=q|PVFMi>B2 zCOk`Y&793S``dRyvK=!&TMBiEMV+)<%~iS4bj@akjN0uyt#;p)b-xnXHbcT&EX7Gm zJJT^UYH~*0@u0AGbSw86z`G96F!}vj;^h1ec>^h>`1S4yfr{;T_l2){+~r*kbN#^; zAxmw`)SYr*$LX4gX#dJJGhXZUnabtqre`@e4chD41j_PqKTakRLDM*MS&h#ij}I?} zTd!CbrOmaLX8&z@kiwlyzZdV+4mx(40}P+wqCpXHGYi|~SVy&Ha$dhUeNOYrnQySP zuu9IkW2Yw=5jTz^Ir0kqlhA|f=SssYAlh|v5)28Afy zXVFO4hCC2&`R6Pt)d}f#U#XN4R;!OEQsYk352i~*(2a2=S=gE0(<{=S%v0hVqkHwq zu>IQigTv?R$Cr0(fs+g&B*K?s3wGc9GEX(^Q-_g_*^)a?&cwo$=cPs5#N7VqajH6Q zVvQrb;DI-?M_OM2PlE3Kb-L$z_WFs~&a)$VVAcAjz$jkAw@w9+dK+!O+IW2Vq}oR3 zj492Q{9#jgOs1-|sH9r>@v5N1ORW!b{++B825Z*O8xHZ>1mn7)38DC7Ufz=>${6C0)M{e2shgrsrnVC1i6{el*Bu8+G6u8%;s)Y=rvzRx z?NsmYh5w+p@Q^cm#Nd(s33?~M8op4{_p8SDZnhbF+h62af$LGHQ6Hna?#lNHU$!e>Ng_<-kKEmj4Y(`@MG)QcYTC;H$c zVu_2ovB)B_i=-rP(dl0J2y1B{i&6c;{a%FLDmu>J?M3O$6d8?^q~84VX{Fej#UmOZ zW95QdTq>B=_?|ddwL|lixU^BVL+5!OS7Jp;)628HRLE0Z`JdmV45jk}#=7Lt1i2Wo z`0D*h8Cs)?M_gpKP5X*s&$G|~50_+K5apTKamyO{^_L&eWFJFF0hamw>xCLIH2(#X zmJ4e@w$O=^db7*_@lt=(!wPZAp_8>PkMKkJVgl1^7-0H274h(IgP)$3Ud^tu;7q(L zo&bD$HWV@0`{&4alQZR`F&US>N+sU~$^Lk5FH+cl@w(u%Jjo0&;P3UENsN4IqT>5d z9oqpP4sCeT+z6tAA+%O;)5i!5S)@uy2frP9rqwAQX7rnir@AZLYNypb}(&g#8#_vsB-z_$VhX)S! zt>Zp*h>j;pjI?Vvpl`0zVE*5Nf4N!mkuqeJ7JpX>hqY#obu@@C6nG|$tJ$Xe#v@|J(moI^aGl1>tCCTa?$h=7 zENiFOC?bN2GFMyn8bkK`u`nYE_3KyNZ|+VOJs>8#{h=}J;*En+RI}QXbJ=o$bRUU4 z`7;7}c*F5++D3c+UGa+7Ds#Ez6XK^k72mxHXZ3|&?T=O()y*HP-(hw!kU)xF5u$r^ zR=0_ABQJV+7$Gm#!#)NLhnpNNYQDO84t=Qjj!TK1q?OW#lC*mJwbQaf)6aFs;s}Ce zS9wLn?=8+ShH{oo+SC2~YwdMQX`7G7&)v;6+Xx+9zzH9?Mo~wOh>=)P#>mf{t_zn; zV8(nMw=hfD8I^mt4)|ncD6u;ZP7sS#W>wy5I(w4<|3)#Se`Trr z!p$y#0?I^!X6dL?;f{4{YI5MxSrVZnat!3Lir-L3Z#%dj-4AY?F#C^E8owK1_2HDh zG#K4bZnmJA*XA9sS*W_XqrGQ6X-I?ERpn$v5HAc(7rQf)o&28&o-e=MWtj9DKb+kf zhUR9X)}(+0B7EiCYk=|%PmXDr@5^_EY`5_mSg0#Aj+0)nyX0U5Q)6FZ)dXL1rHP0y7;Zp2N)=4kDDxkv887VG6CMs4e>2IthpS<7&|y1Q}cny+D!8o`qwmd1Lvg{M*v3N&!_?NA5+-sUnK z%6lo0f&0|T&}N^f1ev$Fy{QY|c5y&^`;QG}`(sY)(5ovZ7|iE{HzBR}PHy(<4FJbl z3eQzw?=o0W&#{%*^!33e%ZkUmn6q$PLBh7>7JaVbk|LiBQ-@#HI!_4qTiXB9 z13g9%^gxOYs|7cdy%?||^b^QUecAz2z7so~nj=8GZ5CXXj}O0Wir=@z^%N|1KTePc z0*yi+jqQ935+dEolxT};D`vJiqZx4;5Zj)}yCRD9OMeoP-J!0v)T8}=U}tlR+h8Ckilu)dtKI{*No7Qnh*qT(CEsJ634bZ*qgN^ zn*HJ`Xtu4A;228zE+(*4bIBs<`r1aPp`zi}Sn*3$5PtjmC%)&^JvXi|!#>wGFw=vY zJ*VQCGCy9RzjFzSVXbYoV1rRM8|XQQ>xW#pAPnkkr#lyx03oIu%$U4p{gBQ3tka7# zT%Ry}P)r}iMeit2jYF@7V>x9M6Q54hh9p?+0Xp!c^dG%+M{ED3 zIXRhob1HtS{oAtm1^00|c1imbld5{giW$~ybA#wUk+nKVH~~-hKfliKxi`=0q2_Za z*64bX#DX0ooB7;=Qe^b+mg{vFh*FMZer*+=MGa5jXerF^)Q$@L#mjWZsTmhW4b)hwS=0Jl3Gi} z&YKF;(bv`mOSaQM(wP@IxTSw!D^kFH8(S;9R@G8hU zoq1@>LihQRp`ZKJUy>^V?O4CHS@-Y?g@8TAIoGV}zl?-#6&>QR`);1k&;JKm_h05J zm-NJ_OTy08XZk-#N&gF$`QKC_EfS<&ouuq5MK;RMxtG?S&FoK;6Eg%0blv!{z(jZW zL*s8o@%)__wI*wE3ID+M>xqM(hXVsq`YI(v=oFQAWezR$v zlDqOwiqSI>o;9lbQl$30LB9Q$nsQb47!j=JooqP~UQ&^klrPD9JFz2PT6pz_JNJ7- zd$}yatt!xGPkC)9ouw`t&2F)#$9@b;p`G&b1&~OjNs}{JP1T4Ot@(TQY3dO=WOQil za@&$}39bdcXJ(cB0~ps-_D5$3Fbbz)<2Oe%(7ok)>$jGDY-ih{S0?V+o~D|VuC*`a zPgmAP(VcwDGtzaP$^CKJt0MmI^rScTvOH50Zocgw^3Hg~D)jY6d%JH!nM!+Mp4IVX zu{ztw{CpLwJ(k-<{I#rG$IRb7Qwzn4xS()3(2nI6 z|No;>{^!=ZBqeeV)-|$2%qbmK03uX|){Xzz>ED#NsQv`bh%8C0xFY*L9~XigD;_eg z+-h`CcsR}Rb}8i3MGcG7P-chT)1a1|37v^$DJh`}#ZMvqGOl~{V1o2V0c?`QpKa9g zWom%XwY)iKH1*0%f|iNu2FP#%&3KZQby`8Xmr1ue^9HRXedzuwnvejy?K^+>4?$yH zKgL*giXd{8v0f5J3>n|a{5oGDBqVT&y$4RIjl}yYJkvg$LAh^qKlM?SrV4&h$O$m& zYu4FMfrM%mfX)TGr{pft3>Q-9F^+CJ`7k9>vozCAnx(0AI;LrArABH> zW@Tj#;d0d7Wk*6GT9X=nYh z)qSWVsA>KUjRUCH5O0A1(ANHj0^@CL!lOYcPVJ*4^Qfah7H2bsg%|b7^lC>Du8^#S zxmZHRVsZWwet*D9lyO+%tGK!w(v6<1BNvWI+cu-Zaemaj$|B)dK`2ZL@>;m;&0hJ# z-eGtgWy=$er|$pIvUHdjsc}fd>tvF+7NqSYkUl;#vBlqM=N;wPuLFGbPU1AWd8;8q z3*xT7s1bB!uGy3jmi)4#@$jfW{i1;?*A+>h;MXXPs zSEiM+(p-Aw@QGP->%uwGhY=G$#LdvLg#i;id8`EvP>lELnlI%W&_++jf;xL{+frt! zlxS43>x+%m=^RZnCa%6lI-kRuI?C@_wB$IfCl)th;WT(aGOm;|Hk5vl$A}C|GXf>(Y!M0 zGPCr;@(5m?cCoVS^&9_2WorT5XnL$aCb&c-@DvvX!mf{d&G3? z@)E2=X5BxW<Ic0{%H}2HQ=Se?NtK?f+AaH5b?l^u;Onz-=Q2BPyM%wD{|7#5LZi^CymOvg=q@EV77_;11;>X zR!V;`YGBv!r0{l3-WS^ov;3uk+dRAV?&EN$3yL4|cVnZ?L(_;Wsa2qPTA_cvhgF8; zFh2gQb$bQMC2+HFo+%E|FcMi;c54Yg0K91Br2%$eKb&&83}wdU|2iSm=5(t)ydOYcoD%n$diC%JNjcPdzp|4zGtH=P&OxE=yr3El8A>sv>H8_&XWtFbg)imTcB~ zs11GsNH+SRDmIp`B-m=z=KGpyda3tPK=cC(@Hr`n(u*-_*Gp+0I8ik`iDHx#Z5tL% z#UNmp>`V%m3j!OfPlrpm#Aai>VFyp1cX`Ed6CAThq^89Yqr)XtQy=dp_QN~hLHoY* zE$wA?kUC!6$buvyj=X;J!%K3}!2++&SUeM(*rza`MN1nf43DJy1Y+3uRmPZ`8tn4_ zq8)$BUpVs0p8YfI^863~AL?uvToE}P4P}qtCVtdoJ(j=xw9`|rqD!!LE+T7oEz$a} z%B`m7zXY@1c6rXYoWe><3GUU|8okq^qZ9h>y{|ZqM%Zs|d=urpS)plv=-@@ZHQ_nC zb=k1Xf>W~Gcbw-PWe?Dg-INFlcrR8hh?Q8~AbLMy4;?eJzS`p-E%uPpa6U1gL&}CU zz(TIGHic&SqC)t5;yyT}x9qj6H%2E!oY?>60M{MkuEECdw@k_vy?2XXCT1nyIj05| z!zS4uV?rXdU zBspM+?^}n&S39iRup5`4vA)Q6ya-1(nd8w8G?)8zTOYIqyr?&&oq9d?@?Lkxdj^*i zx{j54b-YC0{NDK@`^0JM$_dlCma!x}ZU40OYfN_@ zBN23cH5B;?7!vpCnve%<;n@s^T=UNKRUA+fbuz)KjO6rn{xIJW5xbbr5#*Q92?6S(Zyvtwzm5j|>dY}p;hgC|6JVjgoTCwhgwZaUnC zyLKl_JY*fpi=4lAUh4nMbpE$(@1Slza^$*kUusjX1ue&xy?#2mBW4D?0;$K8oWJ#? z^oT>Tb=^e=X}OUUYwW-mlChlNq1&Oo-_)Z#yxlt#UcU^>-nHJz$SZ|%_WM5=I!axf zfV5?rhV743nrq6=OwjP5xGE)H_*jS#>@XEA0w0d7TvpXEkwWK96DI^;$CIB}u9yf` z6y7;8tjX!4(CVdz>6cV*hNz+;=WlY=;=|^M3&TPI4VU*I(v~jC&NMBnUO99+1W@h}Z-6UQgziL|*_h?sl?E{N@#refDQepR3vM(>=0@-K} z>}xNesa-`oiq-1@10d39>Mz6-G%sB1;WKY+H3&8Y6ReFd(T`RrbU(eQh(#| z4Xt?hNz(2rC4<=`Cv-w)VhP`0USI6kM1Grm^T|-}HDgcEDs<6o^-VFgUv4cr?IwtY zJ8QNzyZEDKHQ44i^kk{`wiokjZ-(55vqxQg(1k4ME%P7I&}Uy_XdaVR=j1l+nWf-+fJ5ZF)3C2X<` z#}pqgZv}d4G!7GM2q_fWHYHXQn6^t98;&jym;wt^o}y z{oT|9b~aRf{h#j>X0`1!Xx{+c7)Xb#LArKlrB8ny@8zrRBMnw^iU=(eeX2rMCf?NG z?R=aNR|GV z;78g&9IQ;@b2G=Z^Q^S-y=EH@Ilcuf+6#T{avAb|^sPOn~BX#L@1DC>*RRKT3wkIb| zy_F(R&W5CJF6SkH&*JP2dqdu0>A{Qg+-|j!SW?5Pq7(A5tI3%KaUHz$@z0UA)Q^z_ z%GTNIL3BZ;*Ut8c6-xtoa2$C`2H)Y^KBXCS=^y2^cNw3*!-3(J z%wIwzVbVUI#tlw;u0F9H6)p(JM3AzD!`J2L7b{D24zH@vy%>fdG_3I3K zxs5LA$p#e@;~5Peu5HC41BaugUmVUp8YE$1L?I8jouIa_)v$M|j>Oz4pFFRFIkXMU zlh@gNiEk9~A>dA#EeNBOh4Mse4u08acHBW9Ew9`vl;dpifzX8wp|^ZZUZ zoCeVb@?IguwUdyLi3BI+a$Zr?S%$^O1MO`VnfbRz(A3Qvf}ei&W z9Y&CxnuuJCekE&2rNr@Tj87eeQ{>7ArAZu7*gPp?l6tL1wQVtY?~7?cG^7WkwmUcv)AYUpKEgx08_`tTf99Eq-2N{p z@EcyaLiD)!0qL9InQY0+K#g0EqUFa%SowoTD6`*fjr_vFxtE_b59}g;)gNNMQa|d9 zH?g)hU{9~4FcsO?j!;_S$}amX?%_%c(vu}hG~SNerM!n-=8;^aJN{s@S0?!0Set?I z+Yn&B(}5_LXL~N~G5?kwAQdH7dUc@8{$BDo-7!n80M!h=)}tQz-7T@u8xMtjPvrmd zT{tx+SeW@n)lbSn#xynMZpSTjg?5+ERFZ>)Wun99D%B4wHY1j?Jl2t?kWL3aI-xfk z;$67*-#W^txlYe4TgGmOuPsh4@AZT+h`&CnIcUi0`^@xH0p=`6Rb-BO>+Qp@lRnp3 zj|s%#Ho8|xnj01ACl$C}r;wFm{Im`Gn(dUR84?U0-Qp-#pO3BnDE!s5a>#Xneh~MG zuI;H}0h+erc`txF<(O8lXEB~QumMaCmp9UZ_>YqoEFtFl`R_bGHY}!)*%koXj5~2_ z9{iAo;C^Xw_|Q{zIj&@$+@nPAt7#JehRsHt7BL)oa;-lMqRE=xd5%n{d5xEGZu1v_ zyXr?~Y@-DD?%BnbNQiC=dwm}6P&WxbJ{xOi{^PlTOm55Zdx}f9qg#^92g3sOL3+mo zJ~Fq&j95;7`v%KK{6ec%0>r%4GZwlO4`>VY!gAdQp2pokA2X8zQPs#@?ZqrHLo5Mddg6&}+gaf^P|#ddo!;Z`R^(S_9U=4aitT9H z>?VbGXJ`vba~{dX$=U)=OEr#MxOLr6&Zx-`d1mqPb$B4+Lw^?B8OIK-fE02CTYua-zs0BZ$qUM?0U2zrJVhe!)LI)XwkU zxwe|D{&_`^tEQwW3C89R*m4DuPTDwslc!%JBwiykaj=8+EQvJQq*FKQ6bS)L-=Z12 zHc-sNSai&U9ZCmgH_yk!zz@I#0z`R@yA^-mGeBr0)ZFg1nre=rLuk#`KEY31qd8o0 z0+X6B9h=~=_2BIfJLb05G@84|L%ScvWRP>waj_V>mR}j5;bc>=SSCc0Z&M!mj<7(h zaB|fdWmIa~flL(+1oc)|sPNY;s4=&T5qx}wlFvLv_KAWXzccV3zIQkA6K_HHmUF?- zMgd_vP{;QgJ{OPQ{7kP2;{M<%kw|ry208H>L#_RF-3Zc8q2NagJd{M5ao~dN73yP> z*@P+u^L-Fx|F{n}a*aL81FU6ZOx!om_B`y7D@+@}IC!S7hJ0qz!oVq`6s#TXJq|yf z&$@3haeH9WE*9^{zDZH1Z#P>_u87#O>e)O};?gx~@&`VRXK_hVS%HlZyygntfHzD( zw@{ZP0HZP}@hleQF*pjliKTA`yNn`*NkkR=k1A-~Pc1#av2hL&EGr|N`gdxXjm1e(WFQ;s6YbL40 z;Ml8>7PbeRjlb3~l?Z%H6~m#o(K%$-s=`OJPlv5Nx5%?;fv>rbUf&ZTa5M|D7_;Zn z$v;_11X0Eil`!UrJ$U-r9rOxP+OV(+$X8*00FoBp znS=aChIorD@kzM{Gd=cmA8rW835ZnHZMCH0%tbre{XX?hwaK<#Z0~<7mjY&cO_-6h z?;qVLY=%MWSK4w* zQYc4|5SmsytC_zmKaG#|^df^m#(N>!yTO;30lPe@IJQW_3%dt*_NKua{LSHCU~Vr^;O&3HS2anA%m%gpu(_cn!f+d@kh7 zu$I?`<@k3~Ctw(;0b8$SwH76I0-vgOEJ0E^RI2eUyVx3__S}AXIBYtftV>DC&Ggg! z4H1g27&FlHtY+6uSa`FB7nNB_a*M3q7&An2gP{MuRCQ6--CDnKp2g-Vk)5n8q@ueugg*@0wW&pae6Uf~PdE9*LUW+^CGK8ZY6B0{;fW zWUfKZP^XY5GjyUbOrAwtPdyCa+Avt0i-$W1UPsnLdWJ*^iwLhybT0a=nM9(}`?$5O zeFV^@x@35v#07vkCcYjP6~N#7sX18XD&_z~b%YerLYYKQJ8C2ppgW^5<6@8}-!FtN zOzuj@PCY5kKMJZ&zB1$LNv&d_9TW@M{c_s{;PMmrdvc10scH1v!aHBK(L^TW%8t6m zPJ_mdy5>%U=1$|uT?u|L`~cbsR>_zOcUlis+i4Wvm9WF1493VUy9W~X4M&h4)g_LB z1g(*cIKM#Up0#S50L*I~WQcKQd!!Zz6J?(vg*rB*jm@qFEyq2$7t@6b+ffJg7$O$L zdRJI6+pUseCX`Q%nSHzp5*3ywhITwx=EXtPQ>H5`OcA2ed*(*A5(Nq(bxQrdBs-~> zU;q75t3h3-4B>B41^;t8{{z`Q%_1t2!c>*UipFf(1d703SCwIxilZy!G=DokpM39u z;uT%RqOKYxql<2+oDeDZ=MJFi4MTMgr29}N@muncJ&!zr7M=?j)SWnln9qxhaOzRG zUq;Jy;Xd15M%<6Ey*wN@y5{)EM>YAODnM+*f9&1BV@>{fd(kqCDWcx%TQiNfh_3=}k}ZY?6E?v+w@%N_vz=?DHm30sEP`UTkS3K zPjvp4F$8C#ZF5(2O+zdbXojcsTD?U(tGk7o`;*ME!NzxU%{Ls?c$u3hvb5(@k;vYd zn4y*z`F@%-in}Vd#1=S;5s+&<*`+r|GB*RZ^80$!yj{K>Ga0K+j_DT7&J>85*(EsG z49Z$~hwnYk&wx(+Rq<8Uh}KY2?jb z#U3ivu0Lvz?u`pB)wI24P!_Cx;pN|(#D5|3df`EiKgBnQF+XUMg7H+?(BcRB_+41i ziy3mowots;26NG%Fr4XO(=HvRX|c;$#j7wI24ifidI%n6bEYcV(8SeKD`5yWMowwxC z*I4^@TO#rEtWxnI1Oek!Ud!?xwZ<&eidEBpY|Ft}=XkE9L&^h~*#^$+SeA+dbS%Cj zFbh@(z9k!>rTF0oDAv(OWBHJ5i=0W|pHhro}@Z!e4AZNXYGzkR05SxUhr2k|dn=wC}E zk}8R{Lm4c{rC~lB_{qf!6x%*VvRv!tUP?pk7C;>tATw|6*}dE!+e>|KDH$#<*?+nIQ=nTTOoqGUV|!^VcpiQPAABBeZ=S zDCY-JL%^~UJ;KOzMS9J^&)MOlg7-~tS4@v>dZ-4Q zex+(wWtD^}iefPr8bt9u{<9+nsilgQ{g(af?uy3&3I0a{DypfAQIR?DY7I$$l&fty zT`PAtf%F=GHf4g*HaiKI*~93F9jw@fGe2blNp`cL?e6AdaD$KGvzdXr;|Mj|>R$ifQ5;xMep7ZO^q_f#X5 zr7Kd?t;BV3JeEt!=z001Q*@r|(ABK%l)~GS8J8KmD2=r^4elfD(?13hNTFd3?6S|> z$Iwrl8gXVM+U+aE?&J9!ZX9pt*TpJvTxqi%(#SbISFneAa?n@BZi~1({=R`3PLQr$ zoqjO3@fxSS7P@N?L}^#nGiy9`Ws|SSpe=VNL5VRm;0@UVBaD=EU0A{tfX0tQ@`JLI z%FxLF_~-w_F~?=O2CW=)Mg;!J`maYcr54(UEPLTZn(GFu?wR&+=aRmsMjLGNebm@wEPAa{t4!3BAqc}q3&OY73$JtxYEIjHn2L}?~ zE}sD`C^O6k_-*`$-5OJ)5w^0C&sA!Yj0-0UNAz1|%R~qC#k|KBx=l0j>vDt>K%fy7 zRBT!aa^$-eUS6OMmTAmdolh#sdoZ|sufVl#v)I8d*qF#KGTflrAZ)d&%8kp@N7)Vp ztCvV~_o7Dbt_GKeXQv0orp9@Q%iD%I-FfxnaG(pAqOLclj0$3l-g8_Sfc+pcyA-||rERLFgjeKz!pa(e8rx;Xbws2L~JE~*)qDA)dnG4dMYJscUQBOQ%h+KX5PUzpf< ziQ9&arK1YOo(8-q^-eU4*);5lv4))|0zsN4_NsDfC8UmY+JtD0e8PgdF=;#nSLQS@ z&Fmbnd-UFsLSLhC1ZgRmc{qD|1j{K`6L({I9sA_hR!%Fn9ntIGim6|Zi7MFK z$v;QAMdA~izTwy^@?6BOQ%{RSz9*%BsE%}u>NUc;GZWecgqd5( z9l|`MOwv4qUy4#}4Cx9mX7^N1J#-8hA~Iz^GC$d)U1%DjlX<6S?HzUB7lR-7#J(G2 zfqRbqWE8w~c?BPZ=}MRe@czU=IU2y2QC4N%k-1~Mn^2=H5?_&##+7%GR^dJI1+z3m z+aA$6VJRZeZo{}!XjhCL0e}1(px9j16iGm4nA~qJv5hDdMaA~Riqp()$fuduOATd2 z+G}^D_+p0!=QWD1OnCa1uL*px!KFl57+v}{ro=ti7XRg4B~vlQWpJ0|Jj-73qs zlp|Xr4|q2m!&OX>wT-rAO=I`PH{wR!!V@hf8OA!TB8)KGdd zNyBG2xX>xTy(&eubXvF+q_wwMid@Z(Wr9oMl|MpnHZS>#ySa?g-Mb1g1<(v@AJS7% zyZRGX!yY!bksq*0UaQC?IdcuOFXapH1qZw5ZXfP5Z#LRq)ySbYq;f2EoL>Wx#cqG< zhI`irXH?6v*gjv6uX-3w)h{#Ume~Lr?IL^|{vu2@Q=@=A+`Vn>w9d+<$@~P^no4D_ zKien`d5Tl~xhwb7j&L=-tKxqLJx1yVD!E-Lho_Qy1~#r0&s7z#7v%YvVs}GJPp%~p zKCXq_O7X+4R-g{PHmTbghXe~7=zCW@7z?z7o3#hFwkKy0x}N~=3{6_m$F@ho{ZtjZ zTN86~cOyFEv~k}Nj#UdGMJoRGpaE_1$wBW)kyRs|-O4NZqgA^EEOVoLyWpJl1KDh$ zSPCbet2~R{EuSBPR+FEcH_aUG#@3(t=+nccRu=4SuYGo4^KHTG@gmxKF>jfsW7$@Y zX*zM&!th^^@MopBo<3@m|9)w*}W$!k!@^z)&F2o`t8*aUu zv)&vsI4nE*R=11%J38!~ju?v2cW!(_ZF?K|m9)fM9Pv|St$n~jzJOvtOKfpUXi?$u zo`AWrP4z(#JOIstfMuT5{OA zyH#A*d)_-#=#K>^@s|_uzaOTl>SG0y0ioST&i<7;{9$EH@^Xf@G7b*@LXznxsk6=Q z#82^IyWZU255!|2i4(p4EpZD(natYS2W=ebxzY3WAr0bf{>5ZrEWB=qC0gQP<0dTE z0oWIBuS(q)AH@~ll6!p?+~obRJ-GP!nL&QD9#LDZTKM@UbB4+_i|rPD@#(}$qlO3L zQ^m(g!|TSzO+je$q;YxL700Kgc)05QW$r3Yy4V3FUL$ z?(-xB@f*m>j22EJ`wB(iWd6H#mg|+HDTU#_>HZg}+TKHTge+Lj7JnOkZJKN)10Az2L|6Jidmc=W z4RwTCSbb72BQkoGeAo=pOZid)c4;uPKSugb{_~HQVL}m}W$;H((C1GPgf_qOrHv7WPF{b|H+)yW{e>W6Nnc>E za~xD#4fuw$`v+8e91#tF@fbvH<=MswG(NuaHgU{GOS~76rWpCmWRpc+z@Dz%DUol$ zJ`l$lS=IEXLAy-tFO5HV?d{|{nfR$lcBDFwLeiVv@C-a(5Oj42@iyzoMr!LjLi2ji zm6@7Q1SSy=g>0Nb&~UB0JFjuYJgB5_J@MJ$(xlSDSthN{q~`OHO{nC}U=;CXugwE5oL7|A{HD^~~ zn!i|I4kJx{6C<&N&k~Y-z}%KjVW$2@LW&RhPBcA@+wd3^LGb$lJDf zXlqTQ@yFl}Yt?R4@t>Xb9xln4>xx)y7$3p+J8LnXUT+SM@hI`wiT88iV=Af*28D+V z3CNzhunh$_6LM8H|DZ}`DNR#xojlBN_j_!vA84LQd7S}{;uTX#d$ACOW|Q<6xj8Ih z{m>!5{D#6$+n*3he9NyVWA34Z?v0uj205EEX~;t0RD(lyN;)0uPYo=^{$M1t&=14< zc-eNrW-mqleyw?>^9gNVHTrvy{I}>Ek^V62gAH;z*ROV^D@J&(-q3rHr@PJmtVdiC z)@x{s_g%b{-Gd25Z-nU}|3uv0Dx6P%nv&IEX{B5mShnHK0@PwGFnnyR-IP%FPCyD# z3YK|YEK!{%w!tf?uQKfAC@fcZZ%E*>ey;i96nm4|cJfj5s#KLC{$Q6D13M6Qt9>Wy zyQLn>ou+z)slyNd0&-o$;x^$ zb09`QmZXk0l9KBsl_m=0dti%f&Vn>AD7|kW!lfuM0IZ(#LvyZZw-3ZE%q9jVNg6+0))`A5__H{CTT zqbC9A--%95uS)R0;Wk~ttvS;rAADAb`wr;&$V0 z_vABXJuzGK(Al-H%c&D@Z}0X#qISCJFuO$28Kq7lmH5(v_M_bF1vk&&{*^$K&*d;9 ztYU3^?T7U6bE}o1N~-3qguY4nmU0Ol<*gRQRSbCL0fH8GM%?V;nj(f(&1elS1(wpt zq+aHL@K+V%T_%}xk}qMlH-sWw!dNUn5Wyy*9;tQJ~u>gjEmUqO!c-L3b|+L#_=eqM0yk=ql3#?|EE59vq`lvU0gpRf2} z>M@-P-s6AbZjrr)SRZ(xkt=&v3dHT4zv>vUJyW)0qlS*o6TPxki5o-Y&u(b*W@Hl0 zb+Nz#>tHY`=<$U$V|9sZ+Y@WLz)2u_Hq+eQPHSYD>E_}jeoG{s=?Ru)F|6CSajjmv zm!OL8p(Xx(D!8*GyM#-B4=z8aR)2W-{}JQ<>sizFXM1KN_N)9uNHp%pm8%jb#a(}- zXRu@=l7I`D{B8oY^^cckL^Pr#Rv&tKd-g>}dWS3eW#FPgi(+YE)NH=xfh!1XfM%xo zMRkN%Gjxb9bTPf^h--9WAxDlamAgvKu)WW5Ya|9`EnoAf+iz3In zBOe)8#l8a4cY5t{%Dt{i+tJNPtXi#j_97}1iivGniZ?%%m~HIaN|(zP;+@tq-0~`* zJ?6*11#PGcKN_b_ln4urUkle%PjPE37ao$HyEx4EqM^q^wi>uz+M8tW-{a0$Ne+t{ z_0<`FxB7vxBi4co;Fd|OiS6c=^zvQZen_f?{t?nd|@M zWB=b<+xla!{U;zF1+kp^gP#HBRJ3q`W0J8^6LA9U#5&2{rN82~5UQlasp~`Q6!SE< zI(gur36A-@!9Y^?WXO^+HIM6sLGJ|zvW~D!=)VBHx%pQVbyiO7{i-{2F9M{1grbwr zJMXX@)HUp>v&*(@ueUedv`IMg2@@fj8#T2OyVlcP{XAs6DC8TUqE8i(>#iYxU)Bpi z@c!oR@7N;m#zbFZ>M`=Szqh1$!iOMmm=_*WCV4s|_WFd@Nqvg@w^U{U!+rPNZQGYb z@AFtX>{RS0QB7a`i`@^S6hd74irco__mL`QS~d11rt}(2603s#Jd&;=$ zIYMN^FKOnLFJ@YmV=dR%6I9SFoBW{~*q8=QH(pI<;v9kISBbU@>gUiK&eU803ZSw3 zCGs^)EM6Uxx~e^1VvfJT3g|@!5?>RMOhrHIw1(o;Y&ozY;&C zGO0Jx&i}u+ss97jns_)e*lvXK{hwRho(M6Utd&kw$?2hu1+UTLCSza50$>&pB$u7Z zLv}E^P$bksQDzC?HZRxf{(JfyetkG*)MeIzd$HI52{Fr&^)V{0stvqMwA+P-;(_r>FCyO%2ZSqQo;xVy5q} zYWC}|Mh_ip$d*fNEllz=C98zVs~E%ZHKHP!7n0%i*#%iPX1Z3$>h~!R&%2mg$#BJW z>9-UGz9@Zc@FPH5WxxajM1P#1yx{_;uh!-*^C}!^(WgYInC(Al@Z7Ohm#jkONa0w{ z0*W{8x~*LDi@ea@#!&eKf<1mbg(Z)o!aH^_-JE$U5)@ zgrG+aGhoym6>chKl7{(4Nk}m@Tpo-NVRv4x)#uIo!5e)E0ir(g{G`qrx`wDk2NCC- zw`aEUvD|24Qe~#RLArP-;X`P6(ZT4o+V}#Bnupo!*bv1-9Ew$`7&uAYRjJcmJMm?0yf9?GkCctv|VvwxXON^EZg71-DnGWrTavKRPtJX(dv zPVRUH7f#o>veZdquA#Q?K=n&ji6(ZKD%9txCwh|mMQSRl@jup=gU)0ahRbFoN-N_# z%PC>O4_E!$Zmuwbti-oqH#)7!!bN$^@j zi=@$>bx+`=K)-meEA6EjLWwCvadbJa8Q7BEmBzr5gW&q)O zg#!_a<52K*MrixWlTj59Dj@>oV3%$rNQ#JeU#+0P61!N)AvPwHRzpqnW;y7iU032{9m0hwHx(_Y-9-K~P4 z=1miw)p;6%x3iAF3ULlHv?N2nl;c;du%zdoj``@yd3sN}pD!K#s+6wPx~u_ao?ePr zd;_OPb2xSQ2IeNWY=iCO;Fl-4HU?d=%|%2oH#Zs;)SrMVXqrL3uUQcKfUKSdDC0-7 z=f}@CsD#5+S|%Q7wFRpVMB)N~zXV+67Gz9+ z(NJPwrv>WKS<5y=$B7*9m&FEwbety5HE7BzVKdBFtE>FD4wUPy5_iC23fDXTup8~^ z&?<*OHCtW9Js9OU>wVROA=zCWJ&jxz-V)V~4GD+%HpIrP?nkuN zruC{JUW7>ji)r3$iv$?=E4rIBi9L#dR$)?Wa`IFpf6 zyc&%o-_=mU^Mr<>j!KAab8DewWjd6XcW9#eLr<}W6DsTsG%ZPI>05H7e}k58_ZTBG zP9@JSB;IxiyG7|pE_H#Jo1tNbi%}*w2GdvX=PDmnIi-?8*$1i8**xq} z{2StuSnRCmnn;a>lWUD-MOkw_{9ApS*=8)fcPUK$w5oXinxEqF2y9pNg5s(EFg{^1 z*EFbC+_Fax{Pa`2uA^1O8MF%4+s|b9VlX}J{(O3h^|X2>;OiBBk@g%2${|EQBs}<) z=ywIlY>E!|DIV_gjAW}<;Z9@gybAifw!MBCv%vt^Tzc{iJOKSD|D0dOVrZG~x7Zm5 z=GsrI48rQU)@By&6+R6x9)`Y`z}By&FMD6dK4fn!SHCL#>DNwsHF9T!A#q-pd&YvwdqKmsTMPOa@pA5P7E%$-u)=$S;T#Nx*iHh#!3y%>EVc3SJ z)qsTjhH&7QAx=F8sl#&gWpN#Dc#WOhxP`?1Uds0%;!9zYscjH@7q<1W%7yzd4+39l zKRryRq_fOS;4!AQuhA7Uf&j_>@1&l9#rK5;+s_%8^LGL(MB_HhlB;UpmiDGG>&5vM zds4$Gt*YBIKtQNwxIB~8-p#Vz(c2D0;?iljosda^69M_3xIn+hDB`Api@LchTgRkr@JhH;73B`0>-< zvxO<<_x$KRLUb#rasaPMm@45+jL2uE~En#z_5 z$)9s5>rB8emHtv5K}CVOenrxaZnbP3&<*j!`{Q|wn^yo|%eRV)*e`$tuoi{A@lAIcf(?MIy-I1pIJ5Du zoLV;Wg)6V23CW2C6CAuXn-uyPXhaat{t&Qz=~z{gIVgIoG=`vcx`pB*Y<26;R`B1m zKSk#~T=rg|EM1`NlR#Oq9e$|X|1VdswayBm?ScP846r96{ce^zmICc|pRSwtTaZHB zlUddYow|_PX631s7}$lYJZ0eGJdJa>g-nA6x;ek5HQ=o=9DGX) z$>?o=@2Z14FJmVEF)@y2)#v^jd@R|k@RC?I6z)d%u}1Kr4%(Vt_kMVN)f(e(w}eTl z#E_CbClPCvxY$ysF43{OHbiICFFa8KmR~>FeMnE;EhN_+qw_zR8s5N<)LCzUsSBy)W&2aYl zhuRv*@k*?j1N;_BWLTRNYWuFO!QFNh7YI~>5%*|Df5`T|9XV1xo4KMKS~jr)0s>jJ zoCvy(zcl}sPFs zJou1#zDTv`$Z?8qxwt5rVD}_h>NHOYblcN(2n>Kth?GD zyxP!vzcex6CM8Cw2kI}X=E+c~HA)@#yKNfgoiSQ&b9iyy{1DYs^_ap_Y5VEH0I^^+ z6r~RD(D5@B8XJQowVNOw{=@-BSXnj^LtK9N52bXOLRah{l%%NoUJZ}3BoEsdR4lQ! zrt+wI%+GWTudzcP^8A@$mcu=ZvZ&2if}^Tp*(W#mibYTLBLOG=+kF3R*AZftSs~gr z32i?INKVj^a%k&F0J+R_$xid%sW?@H=UwsR?0dWII0zZ3c0tpme&q2+g@XbFx6$~c z@8yfSBtNQ?aCgzOVe0EhGlBCX+t1D|Rf#u-y)vLu2;Cv(LjmmhEszts;8A2J!aLF-yA-WmwL$$i3|2ikbj#6|eFNa;hE7>9Wxm6P`Njed76G%|?^n*& zBmZ4Fhmy^@Vw%@&J4OxJrSEgBa#R_rM2XX?cYC?{@$e>m9`0WS9+9u5g`e*J$W01# zR4?pL;f7t(+&5^&Z~qNg@g zqDWhVk2IW|j`yFW$w%jgY1smakPas07&B`InUiEnI^R&l1(qx7;yo_me-<1!sw&fE zP+H3;iced8PCdJsVd=kkxeB7S_+oTKwIFLQZ$Y!*^b|h7d#=}X{N1@~Cw0_(+|+84``uM{ z5SG@E_h`0*-|B&S1DUsCC@c#9zL;NO=vQXNo8|49y$G~0yN+!)hXqRJ&tEm-O@j4r zm?3X3|9IqCMas?uVa_+HT6JJ9I0xCT_Q1m#DMQ_Ie*v_Ahn7=AzsN|3M`Q=M=xSzE zpF@yJ{-r+o}`M0MW1xHrfTWpkgSHPQ?7cj`U z`;C^+mYyFzqkmWb?4`t;afDM4*0%x)UlL(LYV?9zTNmB1Mftt8HBn_e0QJJs<)1pV zz56|-BZ^Eais=3ZpT)r#K1TvRRfMU|-t^^kbx~5f19s%WW&!H2zQF%yod5l7yq1fp zC|2*CuG96`x%=M$qA4G-<_GW}*t@mz^@bYaQ9wV;U%GOmCQW)(k9!yVd)u4;LGb~Q zV#X$@@k#Z++9Fc8iH?mW`IK?z+`upCfdXm#TyZ>ZXVRyfcFIF$Gkz~i)J2;21*^|_nDQ>m`f0rJ)*#YUo#EyoGD(fFTy=k&8C zonr-#4rbQUc;R+LqpxEiN;z}&flY^ktr^?d&B^62Rqm3~l4I*e9#;Fi5?1*jWHw$@C3VbqzC?nN(rPZji zDlWmkcNK4nyVrRc_`pmw7-jWD$waXMPXFgmOQa*Vc|RZ?$}T#dEnB;-gqU_BUPzNLuSiTAQ&C7CS!p>l}ULK6sJ!QOiR7&$s?(3;&Dw|KC4+QBWrTT@n;$3itqu zceJ-Sn;?zYbjQi^Ip%(Df6%i^7ii4-`M14@d>fjcGAv`bJs9TvaJYxLwzChHOI(T~5{7FnkN;(wBMg4ekQnSq zGWqrY5F-D3H2?a!7uPu|S_MFilZ5SCFDP#4dlD2PBMCLpurO#zT^O^wmwUeF`p?CJ zspCR2rOR=<=ena8T!(_1OZrOk-{zIQ&#y0o+SMm$)|P?!e)*#N=lLG5v%tKH_kQot@5Fl9QAw*>eA%q|hB7{K* z5JE`uk8M4tt=OJld(Qjey)Hh$L$aT}*Sgoe)?RBp`$>wQ0H zqxvC>j;_jwqhqshe>Qd4mUkJxuc{O~8YqG^ z)oJ3IqO6{5PJgJdxZ5Cd7WvT)R@qtCuljr6hDBo2+uid8wQf$s4IAFxtmysAY*K<1ghaN>XF;-j3-<^Gs@^6PY8v=q82eYR#{Mx!4bI$8Bv zQnmdx{}vG=_Lv*BW56C$y^>x3QM1KFZWU%lfTI9e!HbNtXrQppduMWu)WUOi`-Ro< zkyi(;{wM$%i*j27^` zM$X)Wp#MdU**3$gS0Jgk=hNha3}rp4PwfU9df5UTd%E_4JJocyov`@$?Jx>kqM3cs z%z1A2MP7sZw9G2;qC|mZNi{}xr(r&lM{m}0t*E*&j){JNO_S$KQv ztFqjiV^{ZSQ||c%gm`#RUv!0Es0yaE5A41=3~&qM=1v+85^$#S>O=S3KK&DysEE4R z@Pnq#w%wB7A&bQhJJ@V)rTCny$$P*Yv~n8D7WW7N7^FZ|8&?xx-MdNHU@E15IG;JH z2u9j}NZv5VEp&75Q$Aw9i ztumwzU<_5KD`BMX$nsTJAO+vWdEYtQ0PQP*JayZl*zRTzQpFq=bt0*a5jFc@# zdLTy17b86pBbAE%OpIbAtQe`jJb$}d^uM6<9%6d8Pb{}y6D|F}sp9ub#$3wH=yXum zp?DMgLyl6?eLD`;krA9Tdjt`l&{x?Z^J!!vxr;-T(>Bxz0AxGrIQ^2YS}tMYG7|qJ zvmW}Iq5C%w&H3QbU3omn+*Eh(ZydS-hz9pZR zZ=Inn>(vJuFLY41aa-6HVVLRER0awL?16q=^x@+4c^pxANKnAA}!&y1@6a5KgPn_e+b8a}R#(uHoLRXi7hJrOB_Wdq+OX z-~62G^U~W@`}m!9lTT4J59nfLz7Kq8rhk$-l`K;x(RJi!g-q&$?|3MJw*t)7}zcYqzBH zg@N&y>0cCm++z8ZhPOn<3C1hzayZJ(xLDl!ho=5HN4^L z4C5>sLva4F>sa3kvk1Sm${23?EW;ia{B=&S2RNJK5pK!KCTI>`zaV&Ae;t49N)3Sg zwAw80k8}FBl#|}Ia(bsLtSRAMchqk8Mm6ZoiVItXYJfUkhI_i<6VHhgh?y+%fRDaU z?sArYm^~DF3kUt1k|MR7{Y&-j8 zB6ibVVUg7-$-zu&XZCQ3cS`L(1>432e~V2md4$kZyG^&shhE(OF0R+@c-IQ#W)=;Ki6Pm*_L z)5)kEh!?zDh5N_)7JU6`-q=13BBqztZg+yW&Y;2J2f2C~a6l=?lpw&dQ3(PQlfA`{ zrv$(V_CB?au#r2w^zv|Na4JWAlfEndV&@G|C0|NQr|!mmFM097l;meS3x3L3rU|NDO!-d_OlDMCYF6fjzkD zEWu7mswHf-GDf83WN>b*y{g@ivIDU{&#SD*bsXAYKc&41D{L;PBjZ&)K~GQq@!n~l zeWC^Za)U{IIL$v^fmlZ!?kv<9R1%$4AqH4WxLLcOFjZ?&H!!~bFztqng%oS~Z1(1s zekeMJg(@G&^c<3S_9msMUz?Finaw}oR^PK}95(K%bx5hpwzAhZJ5JwT{U{^oqUc^d zLz%QnDx{hs6PmTqBE??vKD?pe_P@2=s%@b^wh+S!ysX)%fBOhY5aCk=Qk>RqT%7?` z{vc3@SRZMkXM5^2uHKc6WDnMCI`okvP3lv__FwOqUy zUHJ#b3Mdb`WDPgDr0^_ONG%SRXlLMjJ~m(gcR_S_s*DBbVo}Ex1Hrv-%QEvjXy%ja zcMdE+>Lxk!;kt;A!O44zX&Jv*=IHQ_MLn<`hx<+Q+q))5x>F7CGIjUCAhd1?V<3k)E$7NTYbq*d^PTl~{SKqTl{9AV5_T*ecu;cY4`TTh zJ>_3o%n%fBM8~wT1nmQKVsx*-0-H6A>Z+Y0de@PCejTqd_;Zzqg1hU$X>_z%!Fci% zCLcu-C~`Mijb8PMbipOtiz2GEfKAF*wA}9R?>eHWYTA&NtO2&Jx?94W&zP3B=Aow6 zp=+Irf1L3zb{1;5wG&u#Z>;kMCl*mKOS;ZN_s|>;mDOG2BDTRf%QMLte=x}XZy#@4 z)3my@k+HrL1Y2Ee`xYPN$*x<0@F(T0gG`4LqwM<2eqa3xfVvA?sscKEvb1H<-K|Ib zdLcfy|9FQ#hsy8yVZVQq@L=hN*BO1EO8pK|zkY1=xVW{Ysr-@H%f~_j%N3|en}r8v zt&5ejDhK7?f5c|1$M}zyanqJS7XzabZos(&+sET+c40_|zXRpp%$Z>WLDP+J8^t`Rbxn-0KLq`Puv^^o zDZtQ9&BHjxkwzw(x2e+IQpb}urr~mV|7dbsKdGw~ zMyqxqM^ZON$jGC{!hI=0zRe3AujhJT#D%Jem}+z%O;kfb0anV z266wMH+<9P&8@&qIp{AoGK-rhnn8Nglgt=)bz3LfP71iboY#^VdEAZP2|M%aAWo&vCW+fE^Ww|b*kI; z6l0;4F{?ZK;S~;ZJK$frHFTr$CA1+d#>)`;A$^r!#uycqwlAE_ zXh|}-_yppID5^USNsqq*dD|NjzTq4;)Yt|#5H;^44CC1s81Wkq^Fmyr)5NeuDdkFo zeaDnA2nxtW!Tl=@{Est}#HoSlOsdWsQOSwVK6}rE`@|)57m+(Jo>t3APt4aeRg-sl zW4nWadF0ey+1Ve^PcU@0Jct)6;Ev3t{VE~B$0@%#5N8)kBgcp?KcZrv=_Q-@ybh>wvh zquLB-j^C?>ra(eLh(54$#+|4BiJBzXy_#!-O$cU_Ns78Yi#64cWlI zH$Cnx)m0GGuxUKRyUIZ0XAJwF`n2SRI5jHqG;FL_Q3b%UXl^T(ye~Z9^bJE%&9BfZ zSbJj({)dx~@;+Eo!fRcoN3|@T*j>3Yl|0>E zpu8iwYgRqDSxdAzOiAone?i6}6OHt@?~Ti^@`Gd!DE)fhx|~Ke%xXcb;&p_Fa+`eO`n83E zp7U*A_D3wn{~Sv#hEtx#{a&sAR|_32Y8>uQb@_xwborT7NmaN4Lh$1ew_HU{1!c+Ah1&`zjg;Jy|8+$DT9FyN5L zCkKy|wPJJL(@m&)l!O05)Xpwyl$@Cy!oL&{aD2=vDWXg8Hc7^HST2^5852!ESwBR# zU85;|Y%}s3V%dlZ{{^Bb^jBK2bKXwr8?WS(I@74jdTO^#o4v4oWx-N+D9LNz$Oe>v z)Dsv>r3H4#E9azGc%!08#l*b;fX{6MgvA*dnQ#837?1Jq$oiLcA!+f-2`R+^>plrO zwe;z4QpXeADjm+%nCPV?ocd(rDB|A}igIz)YprxLGa`WsbLNzCAU*xGjwuJ@OrVn{ z?csY2Y{avescoW3s`SUHn?7P@q%*nk8bdMP%F-Vt3?2^2Ae5l4U#>HVL1xA356P)PRCOvaIro#Aq%viK>(WhH4HM5)vC={FI^!P0 zB;VFAJu51IU5&6E&H$pK933krDOvow$pDT)SogR`o|98c)SzQtM@7&2dMZOAu2tiV zMdJKQC2e{7ZhM`>F&4UX;j?`y#kuiwTnigyn6Z(OQWi`g%1;~q;Qh) zIC%Z_C*^&IHw>wM1&7{~#TI#0bF-%ptrcCQbIdNK({<52yK45a9L+YNz@&3FgpI%?To8H zygP?k#aN%g0%e8AM{KJK_{nEjOV+Hrb$5V!R;9o+>z{=;qtq|8*mL?4W+of0WAhfh z;zp338lx-5aNM6aqB~|ER$*Xix?W&@e->eR+Q0}ngrbEp92{K}H~!wg{*Ij*2}&D8XdZh7t6U0ghUs~6HIM2;S1lszI%*wC6GJ%b zs1jQ=FeR#$;1y8Uvy21*NwUe&&|P+C4I>`>ng;kQ^VfDp--N-T+jU-KtHQJFrc=qC&n; zCUj8azN&+!ZG&7c781>QaCS0??-q0< zM^hONY>>xC9Cl+(Kz-I>D!<&Mk)om{u92h3I*8YIk*(Z^q&g1ZWWq2`XX2D=15%^z z_MfZ*dF~%8kVMZv(f+(L1KA>`-HtIN8KXA0%6itsE{o}`V#rT)i4)w57i$-Kr6?_s z%Ix{ftejorpoXCE;kn_YUiSH-Z$*z>1ZZCmQaoa?`@#hDfIEK}rBgd)-tbGL(g@h2 zvKZzx!Kxvk%&Op8MeU5&qu$YhX$8kZVJ{?fl_nMT?g>g{+&K2;HpeInsB?IdDIo`8 zakA!tpkX9>g*J2TlbE)Y4tV7FByo?-_x9=} zv(6YnE+35)JRa=_% zHK@LN-7V@rsw2tnYEohc(G79}I^J*aH+G_biR4C{g)l*atFV;&Vq=-tZTq>nwCRYj zxJ1)EEPA9!TkA;5SV~sTQOonS66fPM;rTr`$GmV(L=Mr8Nzm~XRfC@E_ey7V&8}S9 zS?S_=GoT?rD{a?3_u|2+nu}-TO7>*13=WFKWoAqG4+}LhD`C{LIu;YLcI=nXL+G#n zP)h;|GU#g-she9p8L_uue0e0BKwSoDCRfo}VDF%NjkUwX<`5)ey_9r8dkC^t_C+{jtN00n>D@zrq zZLvnHU|}^9`U9R*+etH1x@|5Id%2;TLm16pe|WR{vN36L9r|K>W(*eEM<5wcw|8Fd z0hb8VfF)w|TzT8bdbZqq*SWE;+F1L)bq22BcloGP!es787JotfXI`_ISv%1h=N@O- z5N04$L%Vd~9k_g*m1*^2jFkw7P#b`i|^rKATjidsy}z7*hI3u_U+Ft&g|JC5+o z$1FaaMb&EJbLubc{JXRL#U5s?qFw`xA$L9!=l?@A{O0SRQ^E{5>2uQKjb-yUt@A@L zHo|v*?pgIwLVlKHJ>H=13Pw~BC|v2SeX=wBmaqwoL6-x@4`mooJ3GJyP}ebI-a z`r{SdGDn*~mM_yZ1Lh{42fw$9nnAGF|cS zEWccxf%#vf`Eq?DlH|K_M0;AnK85Zw*8 zF}nY2b6qJGnk#Q8Fd_4g)U?5@{t2i4|Iry~g=|Or{uhWY)b0}rq{*=or2z#ai;+ML zw<>ac{M__|3k=30sC&K8baI{r{bOq%o%~{Ni`HaO45jE4;qC!9RcJ=(TG8{9 z8qV#UJgEIL^TN4^eA|zdYJMh9%(p-1)DIXVK9)}X&*jxf*l%&#xPvu34MomsgYQT5 zYNEnrm-ips6KknQn?yqV*64JXKVx3Zr$XAGeIGw}|9|bPWIvUlUE9|6KfaCd5q;qk zqzeSnWY4cP#@{&Re?k%;3bF28IHC8|(=GpNpU4qr&1f*+xw!wa>>6d?WnWJzseZWD z|LT>0t|DRk%P(~&`Ibj4Dg$Gr?0erR0fZYigJ2-d-qIy;bQU<^4xz|^ia z47c7e#D4STTb?*Z0gu3CzRpI>tflQrf()C^)Fio~YaNM`#I*^V3GewEMUV z0|b32(yq^LvMqV}U#%^luR=DDKbc>_yexpM5GD1(xyONjaP6aycMEy%ex_~X-M<~i z2z%qYw*WNTZ0kqdT?33EHLSfZhe^eZwJ8t3@ETa(_Dt;Iu^wn?gr8L9=XqY0@%9O~ z!oMyM3%(JZW%~&XxTUOZ-fVU-p1XrclDF zi)L#$8%7e7Nh}7mhuW^OP)- zYMz%x;*bO;-b6=5+rCmhCCI(GLg7Z!0XM)I>dDM5WIa7vdq|=wUL~&`O!xhwy{7np zZwkSNPwW7O^rw{B{?0D6YGIGsrVOVdc=Ng-B4)_4zT}5#6Eu`(hg(;HKoY1 z%Gy*dg+;$46;LrWWgApqC}yMRTGv1GjJF~tMaYe@FHNmIzI5L>syWgN~o zDQ~mXiQ@w=f_!ezx(&!!JC*i@MIH-U&UT)7T2IHm=|8vo0u4X2YaEKJe}(8ba8AHw zXZ4H}yh$ZW+pQG@zSvP@RDOV4rIBifeb%#9eKylBl;Wq?DM9QEzm$*}L-3gAXYPvN zO=(5mwwb?AAujKk#(Gp@0tNRMCcBbn-34+KP6L_Wy8MW&9;kD{n#aT1&-x;Cjmw_m zd+0bD(J`nLqpOQfK1@SV&PCZnq-(G5_fL(&xL*trHw9+54QNsXVFVGHLq!CPH zeCy+m^gR}d6TVB?z!)4~bW39%@AU+iKPwW)D){VHWASI_x%mgUd0sdy$TW^3r`T6s zJAEuYJ<^QKHmeF~DG_8cZ_{DvIG@FY9(w0?r59Jd2O<&G?7H+wm%%wGvOy7b|K&v5 zC?QqJPCaPY(j^QIjSl~zYLR7nB$Xv*3eRa@y8tX_)prt<{Y$xcy=j`qcolNiHn_5z zkCsa{q%H*wE@1)OI#`8+nxsuwHo6IFJ%M@rmUC$2_TugFCwq6Zrr;IMg|nohg=yu{M>^k*0yvGXjq-zF_13^NV?m+m+lrA%dQH&&1)t}$#3*=+- z^)2K|AF~~BFD4oJX^Hu@istk4M9KF>jDLp)5Q`|R>{4CU$NE|R!tF)Lo_$wnCoFO% z*_km&x<|l+_*D-hJHE+4DsI-RK2}1n-n!v!awt}AZih8`ay{RzY+A%`UPaOlcz^k< z0ZraVSe8$)VIRfToZJ06{tkqtGJTn59Kl$QC4#TGZs(N#?n&`Qv+F=k&mBv0gxQ00-5_apcB zsq7iDSh@Rd7RUwJe%jpP8mF%%bOqF0=(;5b0cezT;h|@#-$M&>6!P@*3sB z3OHEQi9T&Uz=-v;BMbT>HZwy~%_tFp{J?H$Ro~`&(#B$!@j0!2G+bch?eDpB$b?g=?gY5mJTyEP6=B z!+DgZH01&UpgF)?W>Jrh)=Wj42u=q_a9%4#pF&z5Q|#R|x`Ne>?qZ&!2VJ;2y;?3U z;Au`SWDj50Rg7DGLjqbL+|(&mF6wJ5>*TSyxt-XNvm?*N#@3R%=(cE=)9c`c@-fsi znK~C2m7HlMJ}QytvTP1ao?XCR*6AGQha6DU5b$OaA>NY7Xgw()br01nsNM(vCY$Yz zO$+d5uvP`|1t)@XST>MdDc;hn*vVX0CAKN{hdJj6OAC`7JTx7An7_iP!V3?qJ$+Gi ztILIVFw7*NnF3ro+|p!;OLPFQylecI-ctTS>|#+CysD+d6jYlR(49n69b=94r4 zu#3-X&Wv=q6KM4*h{>OiUqg5Kind8h33AuZEPMMV6fot?^`sE1{RPvAg;GAN7lb_; zvueHkdIeY%v~D98M>&f^jrkt-JDTHYSS^Q!eL0re38WbN(cg}8bqH%ZQOHwTN! z+%>N2w!-<6QVu&%Kr0<*U^>ph1I}Z~bVm7N#~8XQJ4c<^)@#!YTpRX73s`O1_V{*9 z|Be-YFF`C5n8c*7V&4FP!-|SC0Gq2n1go7NgsMHaMg8u!SU=UeBdzJ)98d?+b;D5$*G^P&ybg(&iJ4kARZD#TM7mgLkOLC>4eCsh*^^-v?aM_H z$9twMC0KT0xUJeJ%7zH>_4Z(|oUS$U%1I-t2k!xkkW}zAo7qL@wCUKdKEGU@)+NT# z8IIYTv#+m-%WZsIcn}NYzQvIF$ywmpzD#mXnEWn=-`znqXlK0kSh`{4aX~fgpaPBi=BS<(Ksw1h zbMyD~ij&KtAQ{l`3U8=o zFpg!wJ0IK-pAN;f6t;Y#l^!-_v=S#5q&d>jGf` zRBFcDvMGMV5c6YU`1_P)dPyqt*5Zi)F^WX{VJ>e5N^w?vYiy@Bx%93z*X;P2d-!sP z*8b#`>l!x1-4TplHjyYTP4O(MKhc)|m|d%0Q(K3~tSb-Vd*GaW&(QFmF9I{$LMCCn z2{ORdKm@ABx zjQ(^NS(0(cH<$xD#0uN#RO!N4tuh1yZLT7y5E9d-Zc6)_=&TkEJuJ*7I0H0smi6|_ z#H4TaIyvY1Vc0J?phE4zhPp)~Ulzw|Lb|}37pi22aaJLHv)>GO83j;>N|p_qendEhUhL~F}eX5kzoVPF;%_R158cBxzKhr>cO za=M8QVZ1$E1`X7bkm-1H2Bx$p;Buy_t>yVP9Rf2xCD522ylv!~QMJ_^)DYaopDxRW zdaI+%k3gWA!&iF~-B{s0D_z9>_ntGClldic+$yy9`tbazFz(jJsJ5Xg#&_Y$dN>z9 z8|k36Tjee#DBel<+;L+FG-DmKFnETHDARwTvAY;Wg!TkKMukkzJovD=Gb$vzaTqrj zBlr2=+v-MTTI`Q@)OPdQr)FCoBJ+cNDViuPg(zQ*Uz>*=j-KmrzQ)aM_d`WI=8zcL z7>2aY;6a988w9;9CbP7d99OvZjVLdxCwEw9AyCF9+T%V;N25exI4R0)wj!-79P2Q% z!$^LicY(i_=ia<9W)aqQkSoy|K>=S=w!KnG7~U`331EhOcBgj6Al8t0+In81``aaH zVhzn;cR*RKbq--FUyM;pZ&T*4p9A*uBJleHFrY(;>u}MUGWlx>e7X<1T(TGo6Ra!C z=&#tFHm~|JMPL@&RcTSS zOU7bQ*gE^PCl^gpH>6{z*OhZhdURdDnar1ADQlgUF9U8JKo;MMv7LFQ!Loe^voEB%P%Cec^=E&w9e7m zrqs+TfnQFWx_ISkOUxDgGe^`asM(mUP!3jcV3ZA%c^Mi2g6ovJ!kBUHl*X$>3=n$Uh!tD15Iuf#kkDNh|BRcpD^5N(= zeprQw5lUNUN6VNiKoj7Is8|i{sV#LVo_nJ-=apa$%<2{ISBbEvpOG3YW#`ChCZ|#u zlqptC*i+={9q_s*HMNHx`p{Vu+|3xs)BxXALYdqnwm?_G?o>Jh32Pu^cM+xMy8;@q zEsL%IJYXNtg@@HGFNaj)>hG?eh6($52E^PRIBlmpekzP}1Oe;_s@=4l-O&h>av(@S zeFQuyt-A|J^%@8XX&V!9V1$0PX9xqKJF*deeRz5`E~JJqa>z3mVhrCOJwYt7lkSr9 ztQMz!C9OUXM7Wea-so2OrVSl^xGl;+_;~IXjzLWpKjK?#f0>=1V3m_?Y#6b@qgNF` zVX!fu2o1dd?>)$$=6?UM0nx)WLRypNQr@+o`f1h>Ck%kRmLO_KY>ad#a=A*T;>Lra z!X8HWxROX}Aip#Hmi`YWH=4XG;-BUiCYzwKE}}1>3F?(hFg}mWM^cW2g z{m#SHO0TCMiVMI-9B1yeGrZ7qO?yvaPwg~V7;V*j5{C@XfmHEgm&ZV&E!n`N%|%my z>j(QM&XFN^%w~r*JzqFQ7S`9#M4L*szI_qP8s>CV%{t+(m9 zasx77ttZpR+6xu|5NPadQsj$?3dh6R`_WE^AOw04N>P_3>5j0F%(%Rh+!L)tsnet; zx7SQH3tOMbiA$vMQ+I}T3dWO}3-@An24Eu1leoTS{ciYtkNLA1qKgAq8pJ-a=*>A} z9@i031Ot~H@wz=**v@<^XWgVNG66up%o2b^{ZT`Q^fIqkxUqjqmsp+KGff{B=(o;d zkoA|GpMdi_`ISr(?(@uktoA(mu<(bu78o`s;?PE)8}1E58DXg1^z~a+GK1+{vOPsZ z!)ydxDZPrm&zlLn=(!2TuY33`A}0x|`He4{JiB&cp$c5rS08$AfSx~h>o~E1T0+zd zTlbvoqMNaJrVZua6zomOJItneSlmc83F`;-i_zt|(_TSis$qO8w5sx+34wkI2i4_r zyuREqxo8v%dC|&FQJVg?hx#tb9k}m%T8Xqw+>kKf3#UCp%tP_XEaa?5{j3OQGBX*Z z8IgOxvq*Mnr?An7Wa7GSb;upxD|F1gk%;4Vnvs*$Az8d&y&nGbD{|@dPtjyaTLXww zC!>)#KR^L@!Cxy!5SODpQ^zb;DCBb8ycytRk3`p0XoZY*v{^X>$eo8S}y zsz^6$xodOwa{qGu5M#>)0I$k8D2p~X`NT)Kg@z^(+sYyL8Tbrh6S#wMxd$b9RhT3A z27t@s>iD?q#vC>K%b$;r$%Du!5}_g=+zCVKrm0 z%du>;gNMRw%eAdcQ}=rWNaX zV_=V)y{pf^O??1fIMuT7^qO}2(!|*y@7)Uv2LXfpTjh+U)YM|-Hsv`V;SLlj^XvvG zSDqgtr3r`D!!*zloV&A7W04bh2cWcY&)G^nqo}gd1P0pj?1kAvP+Wgj^l(dd#jFf*b~=z~!z z+L&U6qj?&Xs?Hcv7D_$Uii2)%e5E@kLcKe7u=x7^V8fm%u{j)?f2$fKV9C6_PilFt zA+kM)XIU?8Ut>W$hBWPYql~#9sqBw&zMe4glD}-uCr|sq4Mapxd!=!{HC*MSy^M9s zV`^pwkr;5$AIWrg$_RXC>t0G*L5wH+F_X~1U`O9$bZ1vQ=L z!i1**HcHR7eJ7UyT z>l`x!(#rE3%JRkfpyS*&h|T~dW*)ZU!!Ct2L6S{wI*W=)qpQUN;fgP^sMB3v&(}Yl zPy8igZV^!J09Mhy)?jF7B*60d4TB9!)jo;g)fhU1wLVlmXI~cbwyY(5IZ3A5PILF2 z@#z%=#%PFVuOT>*bq%pt6_&-OuL$ot?skajL)>c<39Pp$pIqugx38T|-zJTyf;Dh> z2Z(3`5+Hqf9{&37B05kYbDX>~&#_|jzF~P5$4prdm=#A87M{}JNBLKJZ&-c;5{s&a z<{Q0oM~n=E1q7n!=$oB}vy;U7l?2W6y2v15K4ASPy$sFmPf^!3TUqW<5xUi~fZZkY z1DpsexynlgaPQ3lduAu3_up?Dl9Oz>fq~C|6&;J(Tf-_J?N~_H@RK-&I?Myu3wEI3R01m9OG0R-TzW|jK-U(Zy_>R)1%7b)M=~U zP3wWiK+lO~M~E$_ZhZ;6LgCaM=aQGFTR;L7>~%|mU@q}lozu9$lSB0+IS zc@0|A6s82Q0K9Ep3UkzaJR67$so%aBE<3?Zo;PGO*X8aiIKK$6DWj*G-G-?WMN-f+O5a)1A1PiF&Df;5o(Mgd!2>)e_@Dw-Og9<&P9mFzSbat%%OF76~_lb%oYM|WRERBI$ z!(s{7BJD=ZRP;}KYFkS5VoS>;hw7{u@TWQVE#taiVB8mxqf>!;;Id~jX_Os8Pcjv8 zR@V6ps6`DE1akNHx<^qD!a2-Cg*CME(Ydt%*Q02#XFKHTOdy#^{QiN`sZKZR?bCeB z?IUWp-4$JRY4Y8*sA;yLmuRr!psdZAH~kLyGwEy9cD&ZGt2}s3t%R-WeJ98aO@mM21rYwa(hDd&qMEK0Rs951-jpDU|tM+|v& zJ{Hai$2z-AYkyLjbz{7p?R{ssu zG8oYi;groFKr`|J{c_~U5vTm@J_qojFrcs=1R_Xx5&H5Js>2Zd5m7J57cbxi-ZpEq z>>T6;(IMTi^&=22GZLNt4Ck(3ZlDrDD=D^2n(fOsMg2J_(sYFEH+&mr=Y2u z+0SuWgZt&p&f_iPie5KiQB8Rs{L?Pxi4Z*=Cyp4G86e7VR@0-11NBO~SXlm}tY?ux zUE^{Mrs~(_{8|+1`E!B?SWg&|rvkv_S!hnr>~5Lup~Po+6&*dTl%iYV23+Rr0-bM+ zNT_ASFz^`~L?)GV+OVEBoexszUphEBB=J3D5rZ^2;#@uzu@b}g;d1@|RN|++Eyr77g`{TnwWi&dgl)%j;&#gh{ zxI})aC%j3UqDpe|PQf_^)?dzMUm2*yDxaX@wi=9(X>&-n74(1|y z6el=jpX;!^s!{^lyCs{`zzOVAYwrJ%WR}?)h9Cy3Vqy2~xS)%SFw^;z@z^pvSfj?N z{}#NKkW+zu1-y@?9hgr90mL5?mos-wQ_wRMwBKw%hhF@csp~(TuyZ{wM1;YUafH_jzQG^9Xg zA=q@j^c+=%s7G$-cMIB20#ZutG$)oksw^PZ@XOhS$p{+ zBXVCP{+`{rd+KscUTLJW^FK0Zrzg16Mz28pwjn(C3JR4mbA(w;M4D8F@aW5zmRSX) zbDSX}3v($D?<>gafMfTjgdv2r;L@O4IorGg<>QltNSA~$9Jl=2N)lcmn5mEW!PyK> zW8>xx=M6(eK#ZSm71JsbnMvu4IG%oNM>j^v}!2wk_m4{lf!(Z=H`1m24k*8Xw3 z00ggWCl3kz(JGV0zsS38SXM^~ZDXN3#o=@3;NLt*X#J6jqm}zGE6beV@!<{(7-^Ur zX2fWjRI%I9?4&sE)>di-2sZ_3UOM~PSKEHv@@>?k6PNZM`eD~MzyEX9U&UhGUqU%v z>BIm1;iG^5&$rJnxypXE`eXfL{3FxJzK6AsPyf^#v}Uu@B+2`=?up8x(!y!wn_27E z2E|@XHCLhT2_`|Jdsy5Ku?r5mn~!B~dhFI-{Kc|wbP6=h1cwagLK?TU+;hHcztYN- z8f^-AIT3ts{FC$DWC{POF#Hd&^`Y~W6WPI=V`Mf_Zh46Qv?juhU9XXLcqQBL;B*<& zlubyw>6-xc@!sc8I87-<<-$+#JYO$mnAGpgB^U0qICgN+fPGV7uxM$R+v>Y@emmKD zpH|WY%w#Tm4N~qvs$&#&N`A zU>?4-*SY@@p7I2wS@>DFYPBKk^Dd zBm%GUQxZ=6bm8p)qQdScX|-`X=Hu6=8!khpQw=mSzboFmWP>0JvWQE;nQM?CkHJppzhlCQGj zf1^pw5)#pHM>CiBtetpAk#!y)hbdAVU#s1=f1i>?&7rOdgezZdU6+CG^`su02$H+f zR=fAK%Q4opyIGiI#l0)7(hUtU5O&B+D=&l+Q5@MX=L+c*ln5TdzvqhOt4Xa_e{RdG z6PuW<00*HX8>_>oj-Ej0c?UApTrs`IRNwaOqoHLbcY0!At&t#Jb(hk3xW#;+63|Do zJ<-CvWlw&1!BT|aiuxx0qk7tB;O(C33(p~MuFc1pwefe{IlI^3t3^F(A{M{%h3wJM zG@K#cZc#qi#_J{%MP7p> zIer&Rcg8tlqSiZzuldB8FV>eL*muu7J$mJ!K1z~f(YJc1VXC2ZK^GIcwsh;QW>9m| zlVq)OZTu0{IMwpI_$5ZjtQ`UW{Qr^mo>GN2@297ASLu5EkI}?gp&Ga?=ySm?El&Och1ayz1H)*So6%Y zuKC>8ecisSh>Bj*L?8-Q+I z(0-($*Ozm-$5(}G?q-NzIE+<$HnJt$K-o9p!?ge|l?YZ?`A2F&Jp3NKGouh@(7W3S zO8GE!9XD20nfX^oGf>y5K`gTAbs1k%PJnT>{%3TTk)$wdM^&MA8*fI2(SQ_$5(*uq zNDiqN0^H8y@1%ZHU2w90$2m-Yt5y)%wFt@&DSLt#6osZcA6_9TqZ_D_v#Eboe1oYG zxCnqNu|bfwRM7|v{y-D(o}M7@&cJ-bu5{e8_0Y+fTkI5$1!`T3oLl19vI)v+!4ov5 z(T|maYrIV`ved5td>uQyQ`;FasNmBgv_xs;=Ki&s_I)p%1rJRqjxb`2 zZt#AI_ie81r!P<`j_O$LmV`$6q4<}_XbCtKrE|G9Whcprx zj7}__XZ}WDWT|znfo3_RhgV|l`v3f(rU(gC)kE^#R$^BR>W_4vxP< zb^}4E1|Kf7IdbHGWB~{+c=zYn^+I`Q2lL%6fBm;$-+N6q*oIJfA`2`_4dF-RkEf@w zi?iPH-Dt$v_&0R6A$kldF7*e#Lq<^GS$kbPw)699Z^2mUBnB&)YD7!*pPWTf?u?tOh{7r7Y8HE4xuE)nPqA?x$QFJe&Cp*EKNU zpUuhfR#wF_z_RvWt1;1T_kElp99>Au-^o%<8Mf@X=QzHt;I&q)kLXJQuWByZYuzR5 zz%F23TVktfkgA`gY zsFYy7Kklo7_4+6z<+bJo(OZhBx72?IoAfklP>-esUg}Pp);uBd`gxoX`IaFAo|B)7 z7&{Cj6#zBF18Zf9uo}8^>mgt;mf@P$!8lx5nlvnjl&=g9j16P;6jiY7ao~{NEaSPB zfooPiYH;2WF8KCUB5c68$)rwPd-v&PbN;qD#=Cya$7XHzJ1J-RfPPSuR|G4n@bpYP zKszE+nz#Vdbu@=*=hf!}R@dl3o6-kHTO8E=dA9~sdsKu0kfOd4!Tgf(8pryJe$SEn zNZFjyB3k$Rwt9{{{=AW5Xh(Wd{9J&7Mrmog;H3Z+HGTWn;AT}>=~=7tj^kZl@{{&$ zK(uu{g2-8aTF+q%dD!$P;9-WF2aJyn1+?^f&m6ripK?mHZ*EUn{wHfI99LFp_T(?y zA4>xUa`jZn7m6?>j}Xf73k% zx9mT3*YNF9p@gDX`_bC`pyv~qnk2du9A*t_OZMh&g~zUJ<`EO(uJrE9gM z-*v_Dzi_O$W?ZWzQXfha7Mg*#HnSMWM~ti?TNh(jq;Rf8H{ zVN?3;cO2raU%ZEM1zvLZpu;M-zb_f-I>gYJR^ zAwMB73bS?)PWSM~`#Zcj#7;M=oLVR$sjZ3Iq2p2lAByY)CY=zf zt~Up(2ZML(aNYTwKQpuYbkcUXvboq^E#cz$Wpop} z6Rp?xt7v#$%S>^J4J-K|(T^*Sn};UNyy zw}HzW%3l#Y0>@m*P~H^`5r?T#G77Ep)(4N&~lF%+K8f zUfk*wSNT2=lK5j>EF&mA&xQc>ScOqt_E7*6J0S01R9-TL|A zWMW^?gLDC2R{9;ds-S0;zxL|_Zl9H)(Wj{px%4p+Cx~-MSHLoqJKvr@nzWw#a>$79 zZ7{5h;=){b+FF-L zCY?F|57ypoPMCJBMXYv8csO*!9Z)Gy+x|wap?-mnRHTfEt-&T&LCveioI?gwf8n zPDL$?q6isIuxo%rpdRpiTsol(I$Q2W6K$Jb2TQkIMxn{YQ9@s?Xu27tfmcHN7RaHx zA0kYykVBJA9{m-7;I20H<-C3u{QmCa5P}Bnf^U-Ve24ZBXUPgQEK+@dR{X9!bu-&l z$o?S*-vQd22Z0NTG#{vgc|j&HI`oM#qbq0v(PrTLP+TuF=Q}?=`>HQb7Vx>w)s_AR zYnv9+VP&@2#K+bXnLWN=zU~WP4~pqE65`sym+K#z{ME0v2llj8@H3DP21q2mO;~ma zS?+{t!~;(1AegMbWs-Z0SCijllZADuKRlKi-RJdF+tCCK(e|=8)LCt%OZqR8 z#C8Mdc4weG)TW|v36hJ&jFawPl`y0Eh<6Zyg);_Ye!GfMT0@K0?4wY`Nk%g6A-cw5 zVz4K~*zZ-~&V>SciAN9d?rdSvMpijBt5qJ_6M~)Gmd-1OMW*npxT?z>28UCZLxocw zBv`Om4pqan;S&i`%KsfAMSMwhpm2T{IW6YD0%Of=Qr$5lCRWe`S^DRcwE;=oRwXCfJ zLwEJ=J7DzoYLoT+x0wMq>%XqK37aOOq5vNUtN2@(U-olHFu;vmYTV0Kv?dw^`&(~A z?Aw2&IB4B{E0B zt-VSfQ@#=;5qNlN0%hag9{3z@!JxP1t^MRaHF8a|qu9u&x`yYIh9c)+jGB`d9NjgZ zceD3!iW`E`T_->PW#BX-29(I`4}Ig87{Tl(>Ya{C4%M1Ve`)r-GKs`=)H#PoR3p2# znTkKN*7ugVE;uaFY{Mo{8t*DWnqKX9k=zHKje6v5N%(s%n~gY~)hWU*OXO5LN{jJY zWqYabJKyn{jsaEJbMp-6rMkqE=`yv)aCPZLF^rj4F5820VZgSe8`z(x67cdIAXlhh z&TL1M_3efepmqvd7B&fHd@>#YSj^n5k7eK-x{bI3s8OUc6^$3o?=Z)y_{hqx7>V9{ zYbDQQhB6QvUI~rQLIyLk{eL>c0y~mT66}VgGbLqBF-|(=YBSKV-%*NGlX88;OHnu|wA6)-(&Wj|j7t5S}BG*QGUc6@JNtJ1FM|)%X zI?_4p7D`~5%g@Bu&9{ztTlW-c+%_En@jMFte=jfFWIvfWZ^s((y(op(Zs4u2s7|qZ z%sWsZdMl|=3%ysVAX_e(gB`e{2mWacGu>^7txlyjuk8>x1s-4E>OaDJO4&>r<;1?>{-k^S8NjW}i@X%QP`iV~R^7sQr%cCpmZ& zF^mK}TA{>SZ|^260M&u#Vjx<2k?!ZxJm${2Ad1(SB&)s%5ka}#5sAalX`h+HR zmb{*+Wy%veCk3t$^J<0ZLec|^9sV#SIe+=_H{*1AIzqdWrpF~HaNT_E2Jn%#303RH z!f(p8Lzu&}+jpD7zvRzvBJ9r-Sod=5YtRDtLz?8~FQ+ZTW^Kl;)d$6`m-6gW4jt5a zE$vXs#*6_As8&>*2mKuNE5o%_%E$qn&jX-MbWwW2n*n$Y{SdbB{;}?utk*jff_jBo zIeh=6!XhoBTHm&YQ!#cyeY34ad-G@_9+7gA(?59wIeg+86#^3RyA?6k{>CS1MsIIU zrFd;lv=i!Nxm$uv1raU&!ZaUf)^vJuY$wnDtcoIQ{856;w?sgOq0|f8CXA)}4V7Bd z=Jp2~;lnQ~N)TE^{GQqlu+U9pt|8Cn)p5x($$tzwqz7aAtWR4lk;Tbszs}Qa_4E~- zm65)^|57PQTWp`R-U36{KTcf)affdAQ04XJssP(V^ZS6JPW2wTOzY*y3>sdTIXF3z zMa2yaje-8MR7&!Cx9oYB`iqm&1z4(mnyaF=L#`5q|0!ObMz)5`N3QA}D!5If46Eo_ zPfh}i z+qYjzDhI3l#;Y*V+$uL@A=DVKIa)1pXC2rN(#Y8ck8gJ#FF%CXw@oAVlX|IR3vlhLy5*r-rSz#9Nm|SIHr5S_qhdA{(z8+$UD%3o-Hg1bz(Au{89z})@YUj z68{DSXltzX)e&brmVW<3h+eo?Gy=Px_=tManiG zL2!-aa!Y&u5bK&(LxK&?Q=Df_gE)0YLS(6Hhx>UI

9KbfEI9mbO5ONLKDqA52Hxbj5NkMKRA0WGNovvuTclz5VG4w~A zKwk9e*Hc|(D>S~PpoxkX-tVC)QCWaJeTmM75epsQ4OIVNvwdOv@E0F<>syUCWGaY> z_>&mYG@|kHwn3g%KDj@iny_{(gyOfuf1d(ocM;M&XODJIJU;#K^iiMe!K;OTi^)R_ z*8W=JVKCjH3V@#@Nx~>+i__U>OyPO|tlgu6oHoowDojFt&Gk5{KX z;~wq(tRyB?>#^Z92kJR(bD7qxH3pGx3XTv|)41-O#0CuVljyEB^Y54=pX9yASZ#(c zB}0$M*c!I3%9`Wn&-ABEVr7tgZjU>+)3)gR{6S6<4kwe}Fo4!X?X41GvmOXjFWA|< z%gE!Gk+w7vFnw<}X1gimmLEzwGqSbUJTWRH8xDjpX4ZVUv{@)bwTD$`)|&@otG3^6!{c$5&wtMLrh=Lkv(xvMpc|18y7@M?Lx zj$Nj`R>=JdD6COamo^NhVMEzy4-(#7XO+n7{h51F$4kVYF@-Z*o{ zGy6v}JfCaKazJQrG)q*2{F3>e%zz!!b<{tLLL}SV-j=2F2mXH7?-khTW!z;(TWyM} zbU;vya3y%8rLFqdxFkGRk!UDY$`8-7sZUubpfxQU?AQS1Qr3X0vp?Ks?rL#+2WZM_ z^T7CZ+GB9dV%{HLy)sM;5-#x1BdG{6Jb2XBuw9zXLsGFg^Tipyd2`_AYp8*_oD0WG zwmn?FI+4#aFX4KAuB4){dnwm5SUNEQHgAU9e3KqewSVk?7usBqD8TgW$9%`xwiAXl zsq0W?xV`vWj@X2xITUqF5OZ!2F_3k}Z$QlqpFgJnpVVCS3bmKxecPJ~(goT7<`^!( zHZe@gGn_H9qF!_S8qxc$HDUYEJGJ#oOEb&0Z&tfg>^Tgtw(jToX^XK`1g9Ll$RXG> z>|yV97))Q_b|c-no6FPjBp+AmwnTYe(2wa7;+JmeCbBem`k0u3r7QOjm|k+OEBBim z+A(XUo+;?n|1q3R;~f;;t9(PFE{?#HZ0%|%{RMe>d4Ak=2Q}9rLW=rEv4?z zrN9t`a|f?R+)>~tzB0oBnd>$9D^F6>l4@y0{-bAAXy?LcdT@31ruvVG#mHN4P7Kyp z!fL7+rZ(dPk;jay`QoHa|GMC>yy;if8@YRBhGXBC`q^DN$T*TAa&=ghdgbkut|>O* zrd;z*l#j)z-p`JP9v*yb-vAlksdoV%wpI6>J7+aGk53Z%-VB-fEu>3h$L^+wxFG?j zSpp3gT1o}S)=%86q!FKKlDYb@`(Fy%Dl^j^E<*BieER$yq8_Yh0tJ_UHv7aX-8k}Y z=@0C9UYrPnUs3!6ND5|^PqL!K71~?li|kOhXe^xaA&6oj zetjKkh3{?p>^@tELl$rutxXEV;VZm8vANXZ@6%I=03ijJ)Ooe7(M7Q_fia&^tha~x zz5EYv!{I^f9kwKvYsyJ)tpgwGYY0A`81xx1H~+}joKu?g%w4znd#u3G)3pr0F7|lR zf+P`V8)m3NeDngw=P0tuR?L7h`MunFOZzq5_~K?>N*D|MOI!GfuPwvD#4&Io_hk2( z1JBJ&4z!Xte1v*^(+KyfplE0fQ+{i$(`R_VsP=^~bH{rpQKqV(Vuq)a8>q=JrG;x3 zG&b~IN>?P3r7{@$gK^)zUgr&c?>$GXX5E-n#EQ8i`~W-9jN?}~C1!x?IcMTpt@{hV zuWAeXWZVT@HOg7OSv1$7{j_0_m7sWzVGo#VAGR$LjQl_9I2B7cz6P?PDxf>VvA@Kdsm4Q(f>>a)MvcSBY%m z-bhuV&hKBfT>}qEqJnM4R9teg{qnIACqEC6}v4JtIW&2 z?G5c=2|NY5@6oz4uv>^DaI zzuq}{>+Z>xiRI}~TJHR6*`&s9dJ#;NDY(tGCYE=6OYF%Re%S+v1w`Evl9GGtS9qC9= z-&NbKQtkFZ z*(*Z*k9dfP%1~qRHGQV8Re8z?*EV3ato>_QHtw8hcn5M6Y0}P~;&6U_fT-3J(H3Vc zb_zCufxgopdE#XG0NzTB3i`i%3@A04z9S36GjC@NG@8EUCX-JnpV!Y!u7v6;yW+jt zo>dIXX*-zyfeO#ezHd@CQu`a)=>jpRXQIXfjkIhul^${f1&&$*kvfsH<)yZ)EvE2~ zseV$DYd5#6Q!mO_aEYB$*5;^gU$_4tY4Y*Kbh{H2Vt*yj-rB2XXC1uwn=yfUxRTwj zw{Ui=^2p_|bg7Y$4qG|G<&nrt)C4X6^-}*&?$0!T4Xc7fvX6t)bN{f+WMKFH^oYY8 z0xIt0PKYXXKwRDv5z8|N@M(En`i1M^!Mj*?Pg4HP{3}w*oYXr?N@@f_LPMT_&~g!Q z&8kn1b}9IFFgC5J9x@+^$wv$mC@WRx>o5B}OVt~QJTo5;^E`fdh!Aqz`iF#LK-LZi z+P~CG#u$FEKgf|<2;1^{c4IE&9}-whF{{MZX<`ucN~^K8&p&eYDmfP$U;ATIUzEf} z*t|`C%h(hAe%6LADl7Us!s`(EiW=n#3yUV1iR>73n>bY-lzk5wW!=W#Wf40l2~0R1 zJh|_q=c5$`G;SF5WHPM)KORMpu5=}0t1u#(NC>~|{g)FuZTW=sEBit{l{&5abzYcx zTGm$)d}O{Xv~Lsx=$Lh+XCoVO`zX>Yyy&*evW;i$6J?YR-5`|u_5|{;V&UQOQP^wf zH3GZ1W}?Bz_`+neH)V3IPtW^zOV!DD3+qC*|f%IF^IZnQEt9t<2;QtZridp3Vw|QA6Qcadh{$5 zMRheHNxJ91E&etit{Rr;79DIz!9%>Xl)v}rS2rlMPW8UjdMT(e=b^95+)ar1T8f`y z&(caux&mE3CC3rNG9gP@e_0e2rs@~$c+}IjVECx5U52}NIi&vi@?YE8{(~%XWHSEd zcmlHsPWx}2Z~w9NU%%*Itpd-n07|Cw8O{VihUOVnC*E3xw_Mb5%_bzD(PTV61HiTq zD4mFlEMUDzA`-9N_M5+|;k8Rn>+k=|rL|aJRs1y>^VI?DlVnyT_W|+al*HV}y_D@VB&go2BKrw%h*P6J(J6)-@wa&uG zAX4x_2N*$>n8evn=5~;1p7aFkKPANam+I9i^Pxw3hwFA=k+_? zMx2Lb`>iVI9Ao}}k;VBrwe}jpXHD1JU&#d|(T0+~QL%cF_-`UR$P!q~R@{s}Y`?_s zCJGAZlZv~+tIVZP3SgRMpM85ITYnfB!MqYVguDsPXG~Ih`uG&ff&O^}ET-nM#SZ27 z+>5jks_T)2X8_Ba<-65hmaedJIF*zxJ~}`3ir-R09Kj&nM__%M$;n{-PeJw0X9vNz zm(}O;J>S^Mn!=o)1o;zrfK*=U0M8O7xe>}||0`}G{7snf^>{)VN@e~LaD?aU=chB| zo-x@**y4zF`j9}FOmATeRe*YXRjxNgn>x<%Rm2YCTovo4m!d_FS_2hn>o|lRjN6CX zGfOt;Q0XP4qrV7aXO1ROB?B^;=`SyF>MPSuSv;lM4gx#Y7bbsk-KpJc-#R5IEMEuH zU3z;Fw!ehzqa$104!_>tS{Mk9Whzj)dXZt=4=|vG-JbW_UE|R)h~@3$AW?mU<>*c$ zTR()cvJSW3uz3sx7}iScf7C^HMt8#Jp0hWW_eMD(zVMsZu-NVcTILE{yH9XIW^KbK z#uux24lU(!@CO}D@<&kTsVI?@H)r11n)wed{~F~A4>w=QA;mQ9n=-#5ZeQM>Z@qAQ zXtwnpZxrX^Kh4drCShAa}@*Hk?B{6X=aFgNqtH#}Mg;1-{?c|iyK7A#;ZE|$# z@j4H{bf_3qw>n?qWD(Tqu+pe;YF;d+yG~#f;R7W29@n9I+w)2jy+v`I-7sYbkm`+n zgp7bWi0-jP@BNBFQ4t{#4PkHbAGP30`gB7F9-czPW#6m#`x)LZ#F+F4+ANUg9{6y> zZP_o0kdh4_cP@zO(H6cHk*vSMGWaisr&@r&e&y8FQg?fmK0gZ+i|a(mr4nrqC5S;@ z-m}X;R{i-sZ(UMhy6(BZO$01fd+@%qo^M62WO7hwfkVxgA0PZey0vBd7+|Mn!Id*T z3>!A@Br|-Qd`&Tw+O7<&9&P$;B_b^ISfgbp-2u>Xc+H*Ab8qQMyI@CV8AiEYXeyy0 z!(mLm{nR?iTb@7}kJcr*omMJRaIY?(j2B5nq(^jo7+|Ha8%Vq)3KCS=P6j6`S~kQD~k;(OH_~4QUdrQ`f4R@7>d~iJ>VW08s2S50p0?dmKzAe08vXh->_Pr#AdWJB9 z1i6X02Rat>l^(cRdk=0yUz5FmrjO!LoBn@IN;c?!hj@4?h9M)1?>}Gj-YL$%X&geK zcD>KhFbHk9>?5e#5YK5ftKSwhe!q%PabCp9w*Y+mYmmo*AN)k^{w_!0Cf||`JM4nW zwpHT%#FW}l+*Y8*!KhhricsuBP5hmFqFWr zG?>G-*n7ei4Vt|$=U$Q63zUldO&xaHDrmo4D9FXg=^qv38fQHbzMC4S{fVbax8W~O zA65`o-_inXlrB?dbVZuNp3>9Bgn&ZCBcoc_D96mhpO~sxv;FP5H5*sG#MYOG1BYPQ z%O;zxPnPwT9;}z037Y%T^PJ=GFcC#lB6huN1o76BFHkK-XaJh|-tiS0@2hF8gGT7f z36wt-J)D~cUZtI!?btfN4k%;{Av9wg5_NBAitMX}jtG`$R?G0CeozT_nZc(&Kq7w* zz??EtVN{hep5qiP;8==44mKL0x&ys6yh9wWI_kB5t<02F?RL)Sw7YbYR$KWML^4`x z_9*>`-Rq1uXWcKKhzX4N`%~=VPBjO~P&OFe`aI-kv=g-9`|ce5-!0k-;UnlbMEc&q z+EJ=G=J{Cnv7cjD21z?$MkyYs{IW$CB!j$1@7^w0fShYNz=VN7z{hiQEK3=!>ook8 zWRUt9bU8PkyZX(egn!wW{ zw-c`AYf3m$tbdwkW3$2qRj@@(@1C3lk3>Cl1ocvnqUGskziIc+{kXg{ToQL`A+nuW z;Q6jyTk#kXPo8$F*NCIcFVE2TT@GLomWSbf!YEqQAW996&fR6BjL0KU6*!g(Oen1p z_7G*9V3$oQ4vi1B`&L0?A~Q+U zJ+Gb+q4z(&Yu(tNAXnyOmBa_vxMERp5s$TtBR8K;hPyf*8+*fOpxgAxsaQTV&_#ee zmr0JhtoAi{GgWQLcikZMq|y2p=HM<+yOC5##vZRG$BV|(!u_B9oNMeN)U2K`BB}g6 zAP-pkU8=t4>E|O@vnrQFufL0~zeO)SwIZ*@i3#b*oxoI20w;CW(8|Pp?RUtPqnzE! z%O)~=bBRFu_MQhZ7*#D>4e!~uhi!-H5S$Nm(>sa!ecLt3ILskN_Hl8J>$jWx;a4)o zkxjkoqRyM`oliB*5O#6o@*$q)D&x|e{NumeLrVMMy7RPH4x`NN-H8&U%hj<F2ENJrv@RfD&dzUWK@aP)HQTp=H{@%62c!zB_K$P~??MfaA3qS(*{c(qxY25uG znj3>cv{^V}p1Cd=5~tL!! zYcdHS5sTL*HvX-ebtSeu0XbS}m97{w=ByhCFwrh7uXvd>Z1Y)HGo^{`qT)8Sex2ys z2CYK2&<*3IzkRMQD_%YJH=ZgAuiVC`AX_0X4wKn-X~Dysct*maq?2V@i{F#mQ=NJT zYnnPQH;nG*<#>j^)~q|Yy;^0CNkmIGpU3Mq4Bl2--AY&@orO@@@GWNnk?A3|rl(z_ z)%^CKlBbM+C!d@#ebK^=UOgv76@WKvf>hvkfA3H)A3sglhfrUaJON2UdA{8$o1>j~z zl(VAtf+f&tW_4__KOguiMN|?Lk)Rs#29n93A{3`^`}@&L!4B}(5YDB^AiwF(MApM9&(^n#Z(gb8d^5U!HTT$u{*3RXMRoqC0lG88DkQ2wOJvYZeye zBAey*lYcP@<7DeT8|iFYYW%sFMA*Oi;7UO$PSxjSfq|7W{YMEyW(<4nB>-S1aJFhL zxSC&GLHM2r&$2Y_`%+`@BEBUvL#kcsrS^s1#!qvPH>dLBaYhOOmJ0c`U0%9KzpiMo zn-H(pxKelTnTijrh~1k*1-+r0;TJW!BTX$v~CzxvaM7?Gm&}yzK{HF1g$gp`fDBwo7vu71NKOP*2GwSAQy*L6G72d-o^(P$XxnH}aG}Q@Q z{9>v7RiM(<;wnT|x=l{8Hk;|h$nX=BK$N_353Sn?*vvDt0^l=BYn^ul1!emsSL`rv zK}tWAW0`(zv3@H#7QgOb((-F zdB3ZqRPYG`Wzj6p;;`-hmFXs_jCHZ7gztR9YAA0mC>ag=uK#$dFgPX*`SG(=Yx<8D zhdh0vbgS{67V&l8jdk7v(F);FT04D7_zf0WtgpIiid*LCG7-EG7K{d4Grrv=V;EM%0RiAz#JRy}DW zpXS6*`W2V0qr&W5nr41dbcUEV`bfC%4_ z%KH|TX1g=1>0rEB>f<=vBMkf06cE0N?pnK${_7>|m?kUs^_)7A@%ySAjBxg)aH}qAE&lS0qs%2H(5pVnc4Qo-}*3 zD4Bq?aJP;a&eUrqYGo=lLEpcGxz5kIw&s1S@KzXJx^Uf<)U-TOg&~SVYymd@7@xnt z`CmoGCh*_D7zgLaM%;J~xp#%Gg}*=Mz^;*2jM^>IYIEgQq-KgYF+|ht*GnhgxtA0= z!(!~FlV1W+k~f7oG7}PM-6TiWb+?^=gyea*xkbfQ0zPdOL6<;2QujcsdNKkWn>9jy zekxC|E>n)A+B(+3jsgihi~`QN34tqpXF?qM9sa5PJL5XvPF=7RAj|aczGXm4wv>Ng z4k<15Wm|&8adX02O*S|+Ckx0TYS!+TWKleKPi}1eyLqz29;G+U>pTW|9{iC0%87T?xKgHw5J(Q-BDMP3Lmc4Cf%sd*#}J89~?FM zZr%zQ*F=T*)xY|pfY|bS3{1iC;24QjJJAeVuItmKK*)M!+3hgR@P(kFITJrKbVU{Y zXw;$ENpl1Vc$vL?Eh9nS12qa;a~rMr7Hx3+bK3k`zya(#wt3J5Ty0TXhf`Nxh(&%= zDenpL((-vx+4E6uyd!0MlBS)sNgZ#XMmU^NyJgDJ*IijSfGczn;2_+MI<@#a>lPZT zCFh04_dUmKNdC)y)J3K*I(Vju+41Rr1?c`a)%34=VE;RL))9M;0bu(B#}KG>ptRfoml5n-%!8x=pE+BlR0yUW9)qDCI9Br;IbR$W`y%IO&QCl z#Esv8(m#<8I6`$EDX@dIZ|p0D8nxRo6%^SjGe-DK*UMD`+Be?cVgsn2le@VZ?T?YM zx;tulOHMv$o%U zv*O&2#cvxzQxwQ`xgoLN_6&dWj1oImDqdpJ;OZ`h7;C2ERY0V?FYmQ@^#<%&vN>n6 z;^IKq+X!*MXR9f*Yl_Zk@Pgu5*J#?0;Rd@zvINIf`)C~KU<-PvAMqGTeh?SLQk6jX zClBfi<c+T(JJwdy<$j znD~0$FxZgUfcDKUO_mdeoiEK}=Uq2>MtQ2tANerRPAg0yB5l7x%z8dTFg&j!8fr0x z9?uk5B=tsnUbB*yc~@RzB>2#?dN`lu33+FCPJWfZKZ+ZiOjZLv!xQg0M0G7 zML#%PfY}o_mG;$I#L>Oz zZWYQVGc|u*Uin>ATFZEkGy&4OwiBL9e(^K?<2|AtBZ7`7cCwNe86=~?$MXJ5yG5xB z2S@XsPj+jM6R!r2Zy2|RCmP$c%S{y_!5`4#Aj!l{iBPOC_9-~A=LxJjF*Rm>$9Zhf z3pTZV3MqYY)_J`~ZG1kx{O?)nyffX{I>u@$)7ggtmfJ*}N>cD5Zs8VN&N#xM#A^1K zbS<7a=zvn1Og3=HaU|q|RR9}Icx|byr%v%|&0Bo%t$J#lg)`CtcTqCT!nNuJ6`AX1uHN7vF;~Y7Evw1S9w=BrP zK^gGS+u*TygXDz)hy62CQvKwNnH~T>pQnlPE0FA#y68r1rFVbsMX%=kEz^IR=pV}U zs(JPs%ykTt^J7~%G7W#4ui6H9@Z`P=R(FMXqah7X9kQUulQd$l^%QkVyw*J0G=p_G z1KZstUXkmLb6qHZh|<#g>>8D_X9>^wH#g4?qnmGZf4Ww}b{J1tZ%U0pQ6vu6ybeWp z01&@+(p45p&hnA%vi-t?UfU;xP3_>gR&D^hGZgP6nF(A3ZKVPQwjkhL&S^~>1Pq|z@Pzyomd}pM5^-{)H?Aj_92-R$J)nVLeN86+= ztsd@5`}Kw9T;K@o+(A6GE<-K)j`0Tx!j5@%^r&7vRmic>KIHLXi+$Ri7ACShTRly5 zvPg?>M5%$J)Gv;#vL!m)M^0bB6Ouyxt=q>4`o5*RE&0S|=?qNr79(zDJ&yiL_cH4hWzg>9z^g zs9v*?t(6%+2|s(33>3J~lK)Tp1HEL2o7ye5`)=|(oHtlkd^R=kP*lX!&UoPUVZ=;)zC_<}oEw#VH<%x=6AY(`ye68;&MGs4Kek|63G>F@vEs!h@O*( zUh`pw#qbn7(scaGC5C)G>%;Yvh>2uD;fw_SwDPMp5rlBuxWh()kP7vcuT?-YmQ8h;9eB>L~1h z)A-x61pewQtp^SdD3Q*E!&~h&02w9Tj`0uD#KDz-9gj!Djtto9s1iT`q#e6=zF$wy z2AtMo^2pcr)ivsp=BI}8t~u^6o`9IigiitKC%NLszeJaQKA%-m3KcZX);+4u-^@>h zFql@eTnMW3NXMfm;)|tBoH`N%vDy@1~CUHbB03?7_@4%I(B z83}W##D;vJlBLMS-X!KbZUFD*BZU=K0OD`!Y}a1(O?Tm%@8lmgwU9RVSfYB6*_E;I zltX*t-^aHDs&dOMI$7!1Lk--=zdHD7)xbv|RIU9^6H8V;tv~9@C}dSNq&_Jh zx)tB&g4x|q6c-KcR#UaYj}EiSTF%Q6Ic91EyCX|0K8t+KTfy*^)ztb@{c={DU9Y(F zpvNkHf($LBZ*6G+*0CYe3`-YzRZ(@S?c0;vMt&9KA1OH5#k+~Huj%%90fe_(BwAUJ z=M@y{B$VlUA84CI=$yL;`$zkI+FeS&fic%rT+B1Ai^pOLims}_Ybu04IqR`IQq&Em zN0WnTn32Q}zGW4j8l>fx(&a2n*g$38XJGx0nXh^;7pk@jfmYysrgRdIL}XnGEGEV4 z9ML$~$i#nc{mmisQF7p20n~j!)mPyMZ-W}!CE&?wJCotficen}@|T4T!*Yr+vKQk2{U}Wdk%oDE7s2*M|rnH0j+s?Y`jSdh4Tu&`; zJQPBF?|m%ra^u`-^&iT9N zHSf84_EYpq9$W}IM4Dp1$6A#T`hUCt8j?H%CsWEQ646Rv=LTrbAo2%QTGr~s7LL(* z&|M5 z=I+DV1%2x$1{V1se~(oK6~lexzn~!g99YpxUy>2A8){?2L#iTMTO+$Tj;6XM9j`N9=)h9U^#c7}4=12J*GDL)KW&xQR8j>!H)*uC?*f? z>6~F_NAt?*!5ziyVj+!DlC?wAFO1$rFPg67cK)Erd-B+e-bIjotF+kn3;HTP_&4q0 zGFBmDh8kiy_sfO6FMEp>e=h+a&i&dyR?wu)pHA}KPG*=MTl(sy>|)Z3+w#h8pCYOzP! zJlB>;$$n(giW%ew?G0t@@Q00bW-a=c+} zCKtzzM$WQa*(sV)XyH!<^Oh;7*8c$nS9t`%%Ub`x&Besgm^j~Nah~lKzAL;|>?G(c z1fY$BE#$cZLbxZb?w(l9co|m){V+*=wsZfwI2HQBA{rH>yyoSJy&zDu5KPxeAf*J; zED9PzJS4X_CRQIPouINkjvZHnn;Vti&A(#t8mA5@cI$7Ut{nJr<*OrOD;^hWTA#9P za6qj2+^koIMCu<7h30u=AEVT31B+=nU^%MGg3tSj-_M8-PEJFlhgHJa2{r-!4*vbr z4o(?;sdA|sDyzY;bKadsf=o$nmz+@tU5ni|!ed)ytg3QKUiM7!hGtc2J~h zagn&@AhuU3_;cC}&*h1B7hNz17wc=f=uXG>4Tk{vsMj2p2C~Hf83hplv2y1C+~dm| zeRZdOSI}Z*BX+^4&XV3OO$3kEFf7{?+;%<*EZ~kmyw+{5#D-{0S1ooj$duyyw|m2~ z-y-Ioest?$roXj%Jtex!C|tp7#@bjCF#ZE2$F~WM2wB+7YsQ8RGD#K+0#fKhPK#wj z+1z&I&7d6?YA4S#O1PTir9Vc~eP0%CwzgtBtSPp`#dMFslmGT5?0GXNVGxVDJG@~x zIz>;_@J9XR@rO4huQx{b`sHunit@GtX;(Hp?$G7DYpEP3`O22pNn&0AbG6(R1vPRy zYE8N`P&A^(qkP|oK^~27_K zLmu4@V*$b!MvV}i&~RI%U9g*7v|E9h&c^f1PowV-d||bSKRP>#{4mX%&J%@!Quk30 zd#K8EG(x?TraK_bM$=TT)%G&4qgWoT0WoLj4~CzkahhEL2M76-JqPv%G~HgBa~0N1 zO1DsDlW18?P=)vcEBP=h03OTuGt;c0R(;^AnRG$PxQMYXj;t_mY};1P9k^M?Y_4Oy zJ*2eiu6q?lipalz?1!S&`CzY^Vq#DbUdqcdJibb(;aRO$>cySe{pnCTxR7OR{7ZZQ z^|f=I;~%M8;x zPjtn-5)7O)pJ4{g?A)(1Kh&6OP|CbkrPec-4=mmZ`V)g{TlvHwgZSC9?HzE4_ln{D zdpQ{eY|yb0X zugJ71#&rJjffSLce2DcXg6P}epR?J+o9j*xu@xlh;9YG+XeT!+(6F+!&#oGh)&Gny zZ&mWCG<-qbJo3IG7CBV-DY|LY1s^*)^_srB1LZdypC&4KtT?J>dI`?!xDc%e=bBck zcW|u}k9C9tOC_!*uUs}S)ueKK81{dLxi-iKpjxC({Xs)oDd!67>Wu#+lD(=!?`x>5 zTgO*JpO(YcE+cpPQE6({bff@Xt7WkO&)29;#%%5Vf4r1(W)t{Js71qB{bx(&F)bAd=pbSxJq6+AI$7F2kH$z>bVH{+utKEy`Qo2*(6YabpLD3 zKvSzAhIXCI4JOK+HtZkVaa5k~NP?Js!oz;`)eNY>SaLH^>FN%xukX2Z!#%sks#MK$ zjd3I^rdpIBEZ9J0mBmpK#%Y-9Y}MgkwFb58#!>G!<5ocdvG^he2{tM;Z)KfT_A zI|14whq+$Sr7fN%ZFDBHy`~3Z_WOi0bz8R--f`l>51=f=VLktM`d-*JABYN*d<3o> zZcpxg)T|_y8=2#UVOr+X|1`Vg`bpnzOZz?6$JdN2^vYf)tIy?~^_i0B51MAu){3rl z>o2?Sg1gpQ)MHIsAz`jnVrBB^RSDJ}h%W${5>3&KD51J>f1MHG>J~J31Yk~*2c8r^E?@+(rZd7B{@dyNslW&+5==j0!60G$Upb-b zSQvv?EppOqCud_{%OC0H;jRhM7Bd&X&msi59jj8MOvO>>rkjen8OF}- zj2L-V6F(!RD6u{Ki79 zp9mZWP#sk%5puW>HYy29o>=GDe`W{h$zzNw=JD$7nVI#iMAK$YA&HgTCaY?!IfwgGvnfU*cnKl9T!<=+GnGwC# zDBb;hUOg7}KOtdHmVN)|xS~J*@BjUoR}%& zP9Gxo<1(Wk>YP-5x4hxrJN}Z+@FnI=IuBNKyyaSL6O_H#cXdj7j%3#E?EL@(R88eI zuls1&;>&cHZUM%G3r3J&%*@@pUH*l%-s_(Vk4u_xj)q>!oBTmNfms;~3E?Dbj)TDC z{!cK5+1Sz`L^8P)C4ZaS2JYYJl`&$*ogt$L&%IhmdCf0nd>3V1M|p}bj5e2^1N!JA zT(gaJ(li!7m*2_v${%v5o{(*avPaa!->9=RQVwvO3{mV1JVL(^k}#-JfFPhoGU1x3 zqTda#HRabW!tA?IIh5#Pp3H{v-^gOb`NhX zb&{m(6ju}<4pkj_@*cGmaz(4>@vKW>(o3_cD!-)^-U%T=W*zWTSKcRf+gS6B|4mc0*fKW%|x{a+kKt}~4E z1_eY=A0r9Pu=A4s1i85TU+*)UD!w7p%&J7!YUtl-Mk5 z`%1f=7~t^?JOF0 zVErI5k|ndRG5TdKAg4$ynNc45;P%a`t%=t)jk!B5ZVWn!mSG|v zx4WnX6tLczc+Cy29@W>6jISQ$XCbb@2>d2zj2sDG3F8UBjXWE=u0Bo7VoZ`};IqnO zu(h3;G*0PM6bv+CM1j*%x$OaWFC{8>mJAEPnSLVCSI6!(_B>znUENd!yIOVBoz1b1 zrb{;IwtXbPDq(JJj6#u!b?rszxU}f>TXCufy;K3soM1;d>G5gxLOrtR*&KV;wqGGDMprWnaNw%o0_kF;05V{dsQ?}ucgE$1fAD-?g>XZ=P0gDAQ^72M zIQim6FvjQ=F1xM2S-izNd&FarfHN-yQwqWUujiNz6CqYw@AT%sWt9J#X8uo?f$sqY z)ZGF^E&90|jcsox2+C^O7`k~={9J)!#{dd!HLU2aCYi=I0>>~5LY zteOV9YJz|_FJk8Y)PVO`0Jj3kb(iPZ5gvI0RM>%x00(VijBJjGG6L*!Rmfc2d5VZ< z2}LMS9aWh6wfIMM?}aay4%GY11B$R`-T{Te@RKW9a2h24!n ze8@Z7WY7;`aAiQbwCh1AR{n7pU+8Pwf5(zZP3(TA_`*C^wI^4VQ$-y34$fllKKf+E zhW#KB^-66VP6)<2^R=~FG4BmBmuTxl0k`}obWQQ3b@w8s^_iMjfil5no53%h1|-|w zT(mlWuZ(9)%P>>VNa^Hy%}e>+t0x}ia&C9LnjPVKhBoxllkRkN@6V=7#w@|n?Lyu9 zUr7t0X@GHugnM*)k24&}CFX*_U~y9b`EVv1YX-CF7^i;+>v_>NdBA0@<`XwHXbZ}Xn5o%iRbp+0>z7p=kP^8{Qr>kK{9v~Q-pE0PbMNgBjT z&JQ*hY}KqN2Bx(EHt{|&gg!xavET;VKdac_Q+s!ES4FHgDrJ97b$%efjE6S=G3Ute zyGNa#_VlIjLozBIL0%BlVZmwsa7s7_p;kdy0hlB@?zl}B@im8#ltsfLIQ~&_@ z9Zfy=HFA09tj#rWnrA)FCX%w1vCktSx%-bV_37=(l!jV9QCGah$N6A@s z5{*F%PGf4H97@dW4wUu-oE?O9i4!??_r-`wk^;Sj!CT)AE0T8fDRG>UURmnXb{sAT z*eF#Jx(jfS3DT8riV#9li+M`1rvbR&**$34agm zmppv3@h>-QKQjV4!xWNqhjji!)W&vxpa>bi=P&0m0C&d>1mhu7+o__h1`(fI(LwJx zHEF|nuRKmw%>STjkHjXlGQaiTs#gxMM#3hsU0rWm2`dIvm{iIBM)kdrfB8R@)=fiz z&665*P3tQu%>SL^Y77j?(u$E$AlE0*EG{{B*Sx!tU9;yn+q+<1KFdB3Cp7KEOS`lI z7=5FQs29LSnG96q;n5BDd%BvANS_Kb_DER_F}Ev!_mzIe^tG0!C=MUfg&S;zugS() z^j4Z?wM^Q6s6MDRLZ^PYMlo1w(OTqr=FsOG^gg>1$;MPEIP)8OfwnXG?kpZ$TIF*h*{K3QxkqKKldw*a1KLb>dvs*tQ?YBAzf& zEoB@oT=xKV#H#Fh4qF!xZyvBW@{~W&V>*ZD9!7bakf*C+MQqgpHnv*d$k(aRZk&>` ztb*b_+w3{0WfH&CqEP}7I1;abSP@*wLd#BJ!dpyr!MJ-*H6^k}KNNhvu-{SrLqH9v zbEq@UZ>PU^J^y3u1XBzMkeG~oVl;cDBeZ6~WYwzP;m6R7qo%sSWZ?T&P&57A>R<+n z>~;VJ&VhcR;z^i{HmiKI$-;$lDa{w9x=9Lu_>ePAxCx4{iyC$QILAO0<2q#1Xu+NI zlJMF3QOG?O_N|fdaVCea-}5k-I$_3m5o4!asdr;!PVVp0Wg=vv#u$01;V@aEHT!K` zTv#d2svSI-(GDNkb(65mhKhZwKsNDD6<)63mxws19vv?k#i{Ed(%9i3ypVIlp`7=ZMfvbP4mtJ>?3De_TYR| zZIQHSh*N+qcPYUCj;|L!_#uXmEYtKqHwM?_05)Mm4LTuMM#m zUj6?NLqr#ILep7_OCoK%JhV7=Se8bcvw_fo%Wql#ls6%LS?NtgTM`?M3Py^7843^9 zXtMVotbU0`?nLDKqWPL&`%UCu2SgA3>31rvfq-|_OK}b_2wqM!m})lBBbGzlh#U_* zAKefBl5Vu*`>9nLfoKen^)SPnVL6h=+UNZ%PCaW7z2~)Z|$&RP%9_ zWgn4#9YU`UMES{)Ff0@i-DjMkr-0+nWX1HfBZTsqKa@nkLe%|$OjU>&K0%9uY zbG5^Tuvw9Sx=&ASJM2QEL554?mYXQ9W)Hnjtd}ygOj++I-=(};a&K~~T1ga|MyX^# ze~{lg{xW-uby~LX5#%B))nroYGW#-pwlpt)%ooaKdm!1S?UM!A+~N`^K`+1Mq<|NY zd^?s4K7794uFZuO#I$OwAv1F53e9vZRp>-N%(eL~hCs~((mKn;4GDrsfgIW8=?lU$ zF9q!th@~uqrF_l8qYJo;Uj6vfA%ysgda{GhZ5M}&POOU%cpm7as%b@bV8*7j1ksUE zz7sqyiXK+`b~IpugJ77c>S)T6rtJr8ds0AD7yGUmkKw{#j|Rr7Agj-m&x@!T3xH{b zz}eTSNnT6)>sL+Dr~^X^2-Zf$+KD{RyKetVnj9+(J^FGFuH>IQFKn_aB> zk;sIT%6ivvpWArB?n@~KKYHnsu`OBMIg?TUeHt;~y8N#u>`!DK#S871Xnsk2WpWcT z?lxgQQf^h*&SKoIny5kIt#Z_r@gT9vopTn$*}XsBL>t+!oR8X$$fP>gYu0G)x!HdC zk)NN^g(U8_#By&je|(+`-^wr7H(e%lPWEzH z&3ZJ8`(!3QS;pvk1ie!pKaznFk4N&>@9B-3B6kI(xtiQ z@ypV=UCJ?Sg@y3C?}}koT)psFR|e#$ah2hm-W&VOsKbLxqC0n$hga|A=^{(Y65khh zK~MY&ZFOQUoIlJ_$P~P@<6Fu7l{v`pqB3e6w*vZC#YJl~EL$5q&F2DN9?PH*0nLwr z^V+7E{s|`uuSeZWDEUN`uITni+P2UiXf78@4ML9U0vhl`bwZ`~#YDg2{TAQv5j{GQ z|B(=i^>^#F_Lam`xG?F$>XQd5$Qpyh^F_k+fjct>cnx;B1@+$RnYVPy?#xA7c_^w` z=psMOig1{l0Nr#Am5`~~MiwGNRlSzvScDy8?>z3c?Rt zP}*6}%Z5rJb!HpgP_GNDAm>B&X<_P-yTpq@pbAcW?Dt!xmdn$cO}>VDM_NxRtE{#K zHpX>&It&%FK8qkJ?tcC-QGzN+6qc`oA=Oq3H3|OquYgbMrhk}2^(awgYMZ}hYp?$W zoj$H6(TD=6S;HLVBz^pgN8c3#_UN^N9r>z7t*|EFqJ=2eGoc>N^>iE_!Gje*dUS3sJh(ER(!z5bRw;h&ccoj7 zmEZp3Fc|*~GqVFpW|qQi6IsPXbMVx+t+NV%aKFbHchG`QM6>3 zALMRK{sC^=U_KjfwyA%0f9FU6|9Iy~HvBMVyV8!%m5?+}{-Ap-`^z9+)&zE*TqxQB zu$}k0-(c_kcNW$59NdD((5u;N!*CPH`y~i`j$`Rl8|G1YTf1&k0REXJ2wwBwY$d-W z?jA*B{Z7kVik|g-zUhk?y8_3? zWB>StW~t`&F`G8hZ`SzZhw<4i{j2m;+NfbVL6@3e$xV#8w+b-bWX zZon#$Du=Wp4OmzK#d#|n*h`i=WF3zt>2<o( zurIZ!+SG zed<>l%18|qi&`o!WEv`ziP0E;^|BTHTMa^X5OW>bdlDga3FaRPCI>;03L9B%5!TUO zOJT`*ieS}SoS*;oE>z&hxc_YIR<6uldMJ zQ>|{?0To62aSrowu1W)Au5L~^qq|r){Hv%bIzq2iD_dB?{j|&lKV(5gs*1UDB_8Pv zc|4F-i4$c32Ab^Dx`);_ZfHAWuT&Vu3x2Z^8&>r)sjH{|7RU0vkQ1=+4R)YgU@Ntr zWtuF!fdin7H~eyuhzlnh`M%s+K+D5lxTBv;B-}mFv$K`sHSH zea7Ga-`(t31Cq)%b>wQERvLzZ_Y6d2nEjy;sLoo2P7FVQm-(-Yh^vg9+X+!C%f@2;xQgc##}(c zro4j4+(xn6@BK}>-DamLJ0)8fSZ1~J{KEMfn%SfwCqUk6tC@ud8DiC2F6Pd6_DO{r5%c6 zJS7oaO_F#oa!jP6D}p8*L|Voe!PdBUdD{N&4dH`8_}sghMKZK?N}76Lt4P# zy67^vktP+i08Il$NG+mzYkoLObvoBP=WYjBR_?X2=b(~exoqv;@W}e(B{6wYosa(c z@z}|>RywB$v&BD~(7A6{`oagW&>LUKD=PUm$*@u)?b>wl9CgD^~c3He5{=_*9&yw)8ZdeWm}y7JpSrplRex< zYr8*9FiIWmwEy+qmQ-fCUecIGp`Wlqzt-E(cFnw4@!ziRPi$$4#xm(7qKCDjmf~l~ z>J?auk4PQFy2B)}X@`f+vj;VIzelj0co0p+u4SxgOc$|(-5n{t$*>s~Og>QixHQRP zrJZ`E4kXvyXQcfvzr(vZe^D>TDVi8{sBq*DufIGkH4apMwcB{OD)B70!-(nYXe=sg zsZ7$Y=00>;A~JX{i?eOu1C#5)d+E*4{8PO6`>)+-o8-a9L*j0RJvM_mfs0~TZ6oK; zw-G3_U4Gd?$XaJ{fGa_FzE*8(vK?k~3)!n5|2hy}+5nT*he%$hxv(E6nak@CTMFdA z1t($S@RUto*`MK1!NTq3gy#qlJtF>8jOxa6@}$u}b#%{^DG986-cY_7SN~yF&hk%f zp{2Rvg12exz}YYAaohr`sD#1U`<*E`QP|hQUA$E2Q2^J>vsIo&R}}eu$iv;xDMN-J zI6L$~74_jZKg9cwlQ4+=942|m(DSf4o^5?^c_5u?o`%;05(6IaAep9WE$N;L~G*J!3l z&`eBVz`o+XI{3@b3)b>^9pj^)gE8&&ylCs)-gK`qf=Rfqv@%qh9)q} z2MeC!`rG<)YV{b@TJGdAl8ty>t6el{r{a%gJ>8yn!VEXp`TRc7y`)R8vmNi?Jy?-jN$#dWZwkyrme@?5GAnK&*Kf!cvT?N=2agO?;c6o8eE1NUz0L9FI++z2^3HeRJ%}>L2q# zRQEGL7mDC3P`sWsrgAjj!HjFPh;G11RxoRqs{B zLyE4K1QvwQh8)hY>Fi}Su4W7%Pd?+dzSgHbroq?h`n2#$jYJNXqe!GB?D^uP05Sl%x~dz?c$+9 z{U4dgXs>_%M??`e$3`@k{ipZQnLQ0T+6Yu=li5#3X|%@(^ZB^X3%(J)jf=gou)y!$ zPY2yw+X%(LRZq?014kd^?jiUCpKk>Q3uks_B0^#I#~$YIVthEjDj1_QwrO|riNde2 z{8=X`k8;qkq&_dOWL8fb$i}P@6i6^xqc>J5@rIA+Qy0Q=5!^^mj*ti02KO6bu$R==g>|4~4*d%m{nd0c*G<@moPp-FOKhZ*b|D{H!IT>=xd{ZIT+U8mO1%`c+ zY%0x!YZjAYz6G|-SLy9GO+R7!@zNvXRPWFBuT7=`?*@_+%~+Tcwk?NVa^PU#Hp`N4?1L8YC2lv&!a~N>^~{#s4R`zYviM5b(`ZMvA5Py%gJ@9C?vh4?31i_nwT! z?z|imlgg;61^@bTz3$Ig$@7wep4gZ!+CbhQf`d6Z6(LO*OXk#ON+I(~qYAh_&Ve&s zx8v!{ayv^Vi}tW8Hq|$$KXUCY@$HnQ7dEKm*;O-4oTIF0(MG zH?`^V$}?$EA#k3Q(`5bhIsclqacS&1-65u^63+q-@`R@+Obk zbO$(8g`R8G$eu1vSubg#{&p~;qim3r$>$wpxG8#XwoBw;wyiDUgnEy|shsd@s=q>V ztWBd9ov2XvJqtF3Fod_#sdTGoUy)M23V4jx@ zXmWodv?$-nNYCnz=mnP-13kogO8`_uIb%q?6;0HAh4ZIju%P3J6}r)Mw8729RYYH$ z5aen)S>2?5Y0ZiW*5;0r)VboHtuXUYj@$@-Hng*Fz1&TPVKn|A>QD(3?tS#?i{Ql zhbQ{aZS=;5^8Tr4TGHXmGelnEIUDM7WeauZ914fu75Wzj;KTRqQ1efMNy~yi8ErZX z*{za@6aO@*kB^}VqL_uFX}pgaBZg98yo&-J7+2W0)56Cm+R!rDCNKX^u#o+Y15n*`J}yhm@*s)Edup_5j_No8nb@v2t}$&J)yrB zzhR7MN@gU=DBK%p>VW$V3X(6t>_*xm&*L5XxKz79jw0Ijd0F8Wr$VQ+mrE&h_k?xo zxPfFkBg**hAm@^v3!}~;%!p>e+r7`jFS*!z9j9iqx&ur4yedm}tOK~j363Nl7`O2% zjDdibmwg`j|3q%VQYMdJdeJMh-A-~ zM1u1!t^3B=vHHQ3{BffF#|3c8>jS@|t9T^hjCbSDRGb+$v}Ug-8xKi0`OI_}+6Vto zdn%mtT(JcM`Dtn#nBIeLwUK=D?oj{L2t0E#?ik8`ji`|49J+|AK&es`DSHIJFWvTH;pltmDNtIkvMWOisG-nIfes zSsbEv^DA=lr7);@V~17F>7&VRK@fbFE(_ZU)pKj+a+F+UuIR{nU9W-NH= zarc|?ytQ`q`wm%z$7_n|U*H&8C@S>cdP(tGx|>Zph?R-!MdYXK5Gle4kCv<6hEZuM z`xXmi-5?L>#t=zf=OKqXy_+xy^4q3FeF45Ji;^ty10d~}gx2nEHE+irA5`)Rn}kcU znvYwW>iH+KsrWOyk8RWn&&@?AH$-D-?9_k%5TaLTn*d&mvBZ4SZ4aRCh76SXQ%+=s zo$hHG@|(aim{#UZny60}Dvt8jkZV&RbfOsRZ6Q({paW zvA6_DgKq)Z@n-@jc_~!GwyO-2`hUosUihH$sQJwm{8xteY85sYwLw~tbCMZieuf2} zn5+z8u$g0?W@2_Ca~ovVcNvz)81fDy*LU+|h2QFg4j0xVYr8|AYVLUx2|Q8;14{YBT!&txP zXEyiU=0{s5ASKkdf}XZ{w{n?%u*LMT9FJ{7&8;4Qp#6ysw@V7R7-On~=R$`(i>vsj z(O4eqZ??O}qdQI@C%J5Gjfd3K_n=#>n}OZrSLtBf3l?QnqWckISwOBS?*oVUvUTPboiUy>Msb+m!V&1G)w6AK>#C9Bz*#l0(M`d{w%chF@B^-IhZ1U2ibwfgNZRD9;@&C z;P9YSv&GrXo0s&%?`e66Q#Uzr*EQHTBySd<&j$$4BqI*Ti5joNVmWaT@b5q>0buzw z^TRL1=X-D|@J^!5p2vz74Hk5UFd))UZ9z0X!OrL9S?;It{)_e5lp-ScKalhry6(WR zxd2Uzo(-y#uBMatY#fj>zUbYkUH04_LuZLgh{oyD@|X0Ozo}o$-V#T6ddbHI$_Mp7 zP^*pX7iL$d-{jg*j8{DKU&)5ZY(`(r-ropZ!$}`$UA@f*@ypM5tK${JjU5r5Jtm`; zNy>J_5zd0BAPUUS!j1oC4hMy2UT8Py!ZdG3RFLG@594S^DMT8y2Lz+aAs6ha3?JH# z)g2OcHuG8yC=esPWp|luLhkmA306xTu9x%=EWKZj-hT99hRo@8Qxu3jx@i28L)+ZO zq4lX{MinV97nL5?*32VUf5yrDe3U9bYz`a~-r#GsX)t>7b+AHxAJ?rzO{%{~X^5O( zyk&DUnDA|}bDdY}oW_xBr1mSj8k z_0>S*9Ea~P2_7=_R?K9RYUa1`ugE-E`1W;hr+PoAD+gM*e_YSJD&byi}WYR9@m1+NfBQ`*xWEPHP z%Gs?pwF4@M@i|sHk2z7m(QHyrG97mO`UxaxI|1nulH>CG*Y|bBJx>lzDsleJ)ry(W z9PlC>Ax(Yl#d5CqI3F}3V__g`Pk&J_Hct4H)q2SxLWRewRXlq?1GkATLlffqnDS#_ zjZ}6la^rDF&;s)>Ap#Ihc8p>SZ z)EFLYCuKrVGWznth(^O#S`LWVS!eKT3T<=VnKF)+58jEDzX!h_qc`NG?A-e5w~RjJ zBeTD(D=s?|Iyr9$xdIPVbNSna-RB!Gf+P{=mFcTt4{MQn!Q`~TFtqc{3Fgd&a+?MA z^nW7qe?7-<9wFbdW+$%yJ;+z|sT5G@bIMcsNNG>LA`&P+Fhp~@YDmUjVat<#V39TY zID!h}1FLZMHOMy7Uq>Yfhz=PQ9XP z4AwovqDuSi&FEB_FG;*^AGv>t)XylDD`L~G52}dr?5i($G4>EWgZec}u4A)*f0sO7 zb#OG`wf2&wVDa99s?YbEY}eN!z7=@5fAmM%r3U4?#k?S()LrLx7ab+})q?OxIEgFl zE@jb=BrLCx{QH~Z3nkcc6slAjmfdx)YLy2y9d)_(UGI>rUbE|Zz8CU!3OGT?RI2vd zapCoam{=g$js)t|rf!y%L%w-<%HN;#bLKKE^C(#;H~yqT#(KuFmynC8|4|EW4vPeF z0Dkrm2MhprFgJ#DI4@s!2EDy$hqL zEczgM8R|$PXGwq^?7YgevTd?|{v{nRnor$-jg%KmR#BU-SWIjkY4on~0CA&{f9Plr zb|dH>AGL8C+9KHJKP4j9K70CE*hL=N*RC;61(G1k1KK)hWy+#=vrAX+txSr3*rMl~ zg2M)ceFgl1g7VF7Qx~2lQ2dExFNbISUYowvD78s*~{Tn5zIl80=F-BVd0RMke-HgjQQ<#nDs9pJWxcc)5vB?=kh^) zLGsT3q02ucC}y<8$vkhP;}vO4B$PmP^Fsn;uCj?v7?uHpRJG>Px4r{KlbfYK=dIwF z7J2q?u3H~~i@qg8As8b_8Gd+C(#)NxR^Hh<&03J63{w4m`N&I&=nk!Ozct^m3Vb3kKZ-*|b9@Oin@x0e>Q#M<(ML24#V43{w!&h5(#^hd#8bx_meC>2Q(g#?$TR*Kk8WlNMX;7>&_93HXLpU}$H4{Dq@R2q+)>I>R>e z4+_z9R5=5#{j>o-_V+jnsyUmOBW|vtBLWtCa@B@e_ddQZTrVYyT{S)=tgBJyaN#Z% zK{H{OVkzH8&O9!By+$g5Id3euk(LPm+R{{!l(de6(-T8;mBq6WXsqYVS~%%U8adJ$ zeB_5^m~oXz`AD<%8FhVs?G{9bw9cA;_l{AlFy%-6y))Nk2AB6TF**KRz4ylK4-s1A zT*VYwiuUKW#Dh)m$Q`D%#7t%QSq2jWj#xaYpLzdTYj(61at0c$b;U%OBo^XxFtw2F&8Nibq6ghqa8cs}dTwYFl^@Udbw z1HR)Zn1ri*fd6aqk#FUW{AT8$bM4N-!O4yPJGZq8(9*@nyedii%f}7c7GogeODv3w zEx>ks{AfOlE*<&v@X;TLM22~6ZQ&aIM^_Upq-EL>>*ZarLB8#`f0ZG0<%}zPVXf3B z`0v2+!Xq0$rBSr9ZL&+P0*e63eS?SBdROk9z8_?Zsm`#%5F8yTuaJj0H*QOKsIwb- zhS~P6kbCz163NIQ(thGFL`B>N72Y=^R8xNy@^8P7!JVv0ax4D9i@ynK)(>-10sFpY zoo8)*{?W*f5QzIA)d1c=e{|}e0UjUbFyV;Q%iJ#_e3h1W! z>4+`qlnA**0G+!@aba?l|H7Jc@l2+EfY=0@K$o%;;+Ghh{2X|(oPhZ`cdCj1 zi@o=bYI0lN#}yG!P(UdnRZyuC1*J$+q^O99R4D}=r1?h7yv=kUowhu-fI4)AX1|k_QcrB^2a>ARDY;R=J%eVAV<(oe z6@2-T1I+Wv{Ez$u&Yl46c`p>lh#69O4$AU6Max^(l6T8c`m#02Ih?IFniTyYAv{CjC-OI+qQ zMc%DmRdnS=3J+&Z;!FHmEewxXKxoS}tDPjL zXm0MM6zZlI0Mss?W8k+X#dDuKQ65s9`zpia=z1gX@Iji(LASaE;hYl~IY~bT9ic|j zaeINYcLeUgaZ`z#V{1+x>g0o_g4cXqFpyVU^lCY4AEPtu4DLw{}7_$W09_aQwd%W zb2Cm;OOuC|i(T&Oc-)7+%_w6BYsIm%<4I+{H{DNAyGE&HkB4Jg1(pOJ-?=j1{g zCfPXstfPz67e7y^jXUCJ&8(~gJ`6e*T^=~#sfTCk-%~apPt&AhO;Q`y&o7LSavu4V zD>pvzsYj{9Eh3FAfCpaFc^;mL ziN+6T)Ny0EZzVccjni&)YrIMTqM`fIxtw>YZ4g6ESk;=wGfjIbQg!E7co}TDK5SN` zHv5{EF6&KYxWwP7bQoBr@S-E1pbzxxa1L}IXs_&5SEhhu`kAAzUddw-_EomcB&|A0&vXyBNR?Xv_w{YwTMXhMoM5RwYEh74 z0SfUArf$tizFJ^Ce^v3u8NM3o4wK16l&Ylw8OLr$?);9SvI_IKFfI+d0CEdgM7U|Y zrlB1-K`*bWAfpI*K-~K}#Aj}Bqej{_NqK}aT;Pfd6Yu8U;B^*CZLrV=YJR~fKT%Bu zm2e>G53I$D#5*u}597V|iy9t&)IH-JmsMjF;GA6G7}A**awz^C!Xl9GlD}C1pIGvP z`I1`!IO@B}t00E>y7nqQY^O~Ci=OoR8-4qIfzs_#;noNvPSheDRKE~z$a1ed*p9x9 z{mdct=virtB2(G`vq_K3t}oOn=)vT5#np==_!v}nZ5J-~J^4c52I)>W7%|Hn`w(G1 z#%u>*qrree@cf0t1sT>g!yWtu`0fYIjA2Z~GZ!X~iW+(bD-~E$tm7|v^Y?hRSjZw2 zV)L_>YSTDXR)V?RQT+o-UuNBRqkcn(W@`Fh z5cwapsr=-s=M>m5U03uzMWKG(Y@j^4nIEuwtD(7_kTFi}RAAp5;XgBP z?t_b82l7(ONz#nH{-`_2n?7e) zqE^tXCTJ|A8a-ol!bDLm6v}Xjx#H##eL+(%@ZeHGCikY%!|(y<-}iW^KXuHl7C&hS zWrn@cS%?!F&9+h+8=BsF{Uc;HGgF6^X;|R zKakf?h4|n2abk=1Gn(`EzW<{=E&kx`y??!72BbQ2*WL(BIjcSR{}3WS2jj2hI6=oi zwRJjyB8LC7e9q5d@ULF=9(AS_u?&Dk$`Q2wfR_F|+x)dNWiQ;PX_DRbMEyUJ=dY#x zZylX*5xTG&Rqc!zviScPuNAv#*iP5&zAW)a9^AgAor&Ljq{LO>9@CB}={8vW0 zbclxgLnAz+E}z_aB_=UgYko4rNI^x>P8P72`qb9CZD|MR#|C?d%hGE;?(C0W ziJk1URu=mH!X39dolip(k>xdoPyWe6cAWc*+g!L`&$f?g{^A)CK_Cd(xB^h-btg~t z&A%N@ecoAup0m+v2wc`IF|GiAW%hY5dw(hgbt^ibv{OMUfN zidF8IL-}=0r_@m~*%4WEE4dYyc}X3xZ@VU-MVz{NnOId#GN2Kf~$N zw%Y@D|MFaaEsw&I`@2vnfjlREslUIde(L3VqExwwg_vjkw*}Wlg{;q-`}4m(1a{~v~M zC3-`Se?20#G-8a%(TxZTH662a&v^1}DS1OP&zrk3U&g98B23o>KDJ`wnSUNR4O+=F zwJ(R~gi%*=t>gfpKUo&G-mj|@MV_cK!dC&6!9@v}7j2=5uaTYltXhp`Ff+~7B;ab* zjbE)w7DOTAbCJbaCiz7>oYHm${u#9|I6{)AHQZ|>H_BFYs%Pgz2a?buyAg20BiDWk zMpmk&!UW*L?wV$K=mv3Xh`Y}*OR8m~?KB-MI0B|4Rq{DHv4@p8)x;$#t#j981b1rZ zBFvN{`H@R@1K!yZof9 z{}EAsx8SIM&JZ!I%jt|bt#Kw#P$u_c*^pWdxsH1**9(ESA82z-WK#6A8)Qmrt?IM~ z%X^C%+yiY~B`e_iv$SaY1}eAT=ZGOOH+lnsIJ(c zfV~pzoNv;JYG?tQ2UY02r3641X3GwynC2aXs__(XB*%&0lBG|I6WjA*WOL~TPQ%*6 z^jE_wbn>gk z#tm$mB43ey=RmtTUj?=C%eKz^JTLZ3xAG@)!=uoZ5}mV@(<8Bqi!X8rqetR@l}&Ps zrlmcC6f(~G%ejULz_A+|thQ>8kNDKeSd}lxdYU7G7d^0UyzVu|1^iu$j}ia}Bcjt@ ziq58X&Z=;GVZz-9+NWw_(GmzV9$)3)IP1!zFx30=dtQWxCKe2IJoh23T)+GaYn(7= zO$an9n1B5%EBF=Iey0OpdKw(wspN(l5x-Tm!EJ!ZnEtY+w25yV3dvmu3tAP)f8@O* z2vqhj3jC_aYC20-l-P_hOaysnrqmw74rW`A`70mBF1HFzTdO0GVnJuynC;U&;@-D` ziXPb&0P|qb;ig4D{|5SBt(W|DFWkohdCoci)%3+_TbkO?Oe4DsZc5zr#hCCj7QA^v zhLe`=tJe@FPKLP#h)2a1@Mj~Y_H?#36U$>_(%SHpTj6phr<$=clkY8zUHID25=M-D zuWDK#E(K;)foI+~`Y?`xej&_pF9^AMoaVrP7%zQi8TATm#tt)8!JE`~R~0{znk~Aw z6m$^a)f6TfWoaaDNBWm)^B3VvVnN3yRR~==Wobuj$7}=T_e6w0+H&)OL1zMfg$M5t zYK~~^%t4cjzd+WXI#jQ~GG|2c%Z!vWkuYHHzhy)pj;ah??oh1^5SXlQ-E=96m`j=S zs@20rX}RVPtnocDmXqbAuSI6A@ZpPhB)3*$d5F?=JP+B+{d9fNEN{ zu+u9Wv6b-T{MmLU$ta+LH2Jdw@#3%OyijHD7NNw{PyJW3{sqzh^HBZSeG;~%%N|@< z<}l%~Xm(cqMdc$|LDG|#E6o(CE??1X#+t`wbOzP#8kb1R$sb@-q>ym2soBVIIAmTC z>7#6%w&jNCHq?2pGN2~mg&P?Fp}7`*Idlq@_c8D@eL{a#8G6DWF{>AQ%Ar>^+*-pOZ^!UsD1Q@8kA#zOr9Y6b~PZk+FJf z>=4Dl8iH=zf}Drfwagm4`kj}5WRrybyLUI~o#{A#TcE{ffVbw99rB25@ zK%YxL5(>s}2IXxec54!QV=(|qa4aih)~pqF2xh`FHxt&lhm}H}+cOq|1A);v6+=>O zvk)ITN+0|-Lhh(mW04}}T2HQh6)dP$=~p;j%cx%nT6nI^`s4Key!tB4|RdA_Z;dEu9) z8w?NuvOTB1DGi^KC?l9d%=)G14}BB8)W@p7Ecztc7h#nym0=rq2=6DU9QbJ71bdYg zOF(XT6W8=a-Pio&x4z~fMVbu{He&TyZE>i+9&^Mc{HvuRsxM9kyeRJa>|7~WBKNcDMi+Z>j|s@Mhw3Vbg=ixR`TBwdDa~lfc_5#~otgQ@ z^RV_i{Yp0qcZ>#6U|7WzB3=F}c>k3aEyMQG9?`*0pwI7= z*mr~Zzc^G8OO3k}S_gIhkMFxv4VlJN1+g*L75vu~MCF&d*a*_UlJH-g@Bb9^$4322 z(Lxmdr=b6cH#3bby~79v=pTWNJoQn7n%8<4>7gHu)|Gb>>`%^js0}~Dk>QenH+cC?j8*N3bxvkW3J}IEL63(OIQQZ#S{~eiB>!nwWbZy583nCw>KF2%YMevU| zCIAI4g@?O;Ty}8kg;nK+cUHvJl4ED$mK-YsmHOKp)e&$}3rBKZ7phZZG{6G!DA%Yx z{i!0!UvsXhdayM>)o5U(^~dylgjn<_}vJsD#A?OqKmgB zeKIacDH)FBcZeTu7#iM8IK^2N8j_}XQ~3pa7SN9ydoRSQV!{icIPj^kF?PntOhOH! z%fK03s53?q)8yZBNK8@%8R%*EpLu=An6PDS{Sx=#Q-VM7QI@XzjiW1No3(dl5h484 zo|_GNZV=sf`ut5^mSBdnpEOe5f9QM1$2J1_Fjm+uFew%s=IJj^hd1Pd508og&aui? zGl_ItmdUoxR_(0C$E>v8n3n>c+5;h8V<2X<&f6m9_Lh8 zLbiSKD6-3|-Bt}g7f%v{_N>k)N($zPG~?KRDolTYkH!EuX8n|BKV>af)112cFABg+5p{vSsV0S4s7T6&(k7 zrE!f}a8H;HG+tImeN?X2WW42m@oo8ti*)hMsXX_Rz32|fW_b9X4~`zW4fFEgxxv#X z5*>a0VDcBa!i{TZ-A|&W_;qIYRZ~~U-{;5+(X?SlR9+8I*PXZ0x-Neq2Eu&`EbzE> zB9K!X0Papx>I2wWv@Gh?7No&3-6_dmXNs57(Cj4Q)}}-GE#oJ0H>lC(Eec|mACRiZ z>s|_6in55>7+O*zd3qtf_!WT!&>8N93Wia8V*MAdvHz~k??APFq23STe}De@kJd>2 zWh02D-#SQzovC+Wd8nd5pJG1cEoQ}2G&RuBT z^|@)E20Qku&)bdgQE&)q=yMG8N5HbMXzin?{Mts7m!e0eXbt?h-#WLITf@Incz_@b3pX{2wd z@e_Vg>5YnH=NWY9TbBa!uEn4MND>-C<_*ZKW1J(t=?L zIe?BMt-XGd=?M3?1dPr{XO)%1+ssCRakbyi856^FQd#9&k}2Wt*5WlfEq=XT6jN!cKIAPq44&2+Izf@gsCC?vji_o)I{z$$@$HTAS@y>t438C4}+>~u52mdT# zs5ufE(%#T$ZGdo+@9FSD2}}W%V!iZrqh>E{yVu_)0Lf;%lgF9R=Kcr0iviK~>jljL zb0u7sX6i4+(j+MD&{@BZwKczvhDNLEn;NSlK?-`t(VI#UGCS%?5ZE!QCvX-3{qR^z z+5Jpb`UjIjwcJZ81~qDc<8zX|tdv<#xB(fH)>1#|Ie=1S#SX`bPe0PJt;c3xECDH7 zEwMTY6pJ>2HoE08p`v9$$0Vw3f4X6_SL>DbazvS;|7$ki2pRwO1eomB>j z@GS|FlcPyvYiYLW*uR$_&K~q`ZZnhPul3H{zYTtWLkqR3#u#uquA!jkXXs(^4X-!t zw+1F=&w`aFzvwadM)S1b6Q*A+z4BzG*sMxpyHh*x33%!f*CcwA)_|uh z<3mHLF5xpkM67S2KUgNHE+v09nMrwRYubz}rsS>IaNf^|hM-F|9g-TB|W`t2;TAo(|3YkG%lG-7{)$Xb{_k zgJ2ueK$o;CU|kZJl@Pafll0kMP)0@ij*O04L@Jj|gMG1!beDK=#I^x1$UuOJ;DYI| zq2nc_9EuZSG|Mihl2efHRCGUPQy)=O5;7ceU4v+pMj06c%eE~VOY*x2jrZjDV)Ci= z<|SFr>U_Q7OFKeAs_&SP+(-53@d7E2f9lZ*X7zp@fy(t&n%gfOSErUke4XQeEaePd zNpG$Ha^8w1!{eix({oe22HwsMn>$vv5+^g+x8xW2D%7{OiWQn)%VnmhcqZ?0rG=aO z_r$i~0cowVm5NRzUVPE2XfK6H>k~&>?(#} z#Hq?$w=Ig@G0zG{Y7;7k=C$4rj&$i!efm*q3T5)Za1MFl@9kkJy50sToj7}KMkyBb(FS-n zQCNFMI~LSSy8AZwhX*sTRLIiAu2-JK_-l{TC)WUEKxs}Zbwg8urL6>q^-P1VKPck+ zYg?|=VW$G8S_y5j>xse`1)cGb)Ea;iD9sOwH}c;}ZT`Yk+Z`V|Fa7;kzZv*M%D&Q1 z>dCtiUThgsR=K?T$?6F7bmWpMFV?}mHs}NlkV*xxpXB69CHG<@UwzeVolYFMHX|Pk>bBuKo5-m>b0rqkW5ahY(P)~-(Lc3Jlk4n{?f#Y~ zv{X)i5!0`;!~XsT#ZjZ(=rb5`Son4jC0lcDis9KcNU_#sMrIMpwh=UXWAVz2sV2Yr=hO-`eZNLZ?HBk{I$$1YUsgJ((~4YZGc zw}hxypjNSUn|fGl?Fj~yq0ma5PJK^+nxY9`J`$H58j>W0x3(7y!j^zl$g|BtQH|76 zF?Z1s9R6mEg^}h!yYtVe+J&tUXek>NCbNA`e^-wsWgm65LTS>E-cG{xq(gH^C}ZWp zooc*K?F($M8az-PiXJlom4#N^9M1v7aoGec`I)sW4&-uUhli8jH#Qt@a7ZBR<@{c0 z^~#(H9sVbA>8Qz*W&B*2PIre{~nxGlN}e+3@x^N z5spR$&pDOZ-El+*cU(J{F|nhNOIg}n#!u_JJ3ufT2_4}lac^GA8c;v@+m$i7AnXA& zsJ#(AYXA%D^ib@+xm}pQ4SKA1Ezzyw1oE8h8y10{jAK(iK5?^?}#pnSKON2&o_9up=zbGv6g6ZxY`s@15xXfDN) z^z#7mD@P%pXH~NWW;;35D^Qycgmu=;ey}}Aweab88u;|k3O3pBaA(A$B?qhrCzig} z)qt{6N$quVoZj?gbu^N(c0K`3PTMvMfn`I;OIa@zsAs^a&OjM_e$v;gB5=wE(d{jq z6Rng8X30Fl-astQ=zG6q%ys5)t@liRR#C`yDSzY3`asq~;6&Z&YKEUGh@s{Zl^l@A z60)|ZNg<+#=5%x|yyAA=u`rkR@mL|R4C}yr-@FH}`&%<-$v9S6SAmyo+7n}E*|0tt zt9vf`5nYeJUkL4{@nK2mNcP~1^UQu}j~=pYyV(CRu8Hf^b>H}vrl1|-zi_{3;2-Dw6Xg@;hm23jhI2b3T-gA< zaO&6criGAsX#^WO=af+iS7nOixi;JHpHs+8YpCPglz*5N&WoI{``li&;l0kSPJWdj zwQisP6My6@yEl*1R~B#nBTN4_itz%fLAV;V;kE<6p3KQ&Swm?yX8!)^R2qPc3H~kB z7GD&427{ z8r(|_3|{4N4(<(pweQDCe*0y)oH~<$5&hI1y+v!aRDumuL7d<5JHrA8BQsX68&-mC-GwN-{u=(2f- z{)Sj8b6hmpP938sAd*edN7y&zVsHg|4M%udK*rUEz)meQbiZqNa}%z#`rehSpY%nz z2~+*q(s65*ALjF$WELE#Z0UnvzQeQqctzT`*f^`)ac4N9cdF3fU|8q*N#t2*8Mt39 zVAhkf8ccc=+8GO5*Etu}^*!Dv`1U(-$Yai@;EJ*&y}|wMo5qQ_;+pY(U$7T5V4-)1 zG`@}KX1(8Tz@D8}_ctvLGE=E>DMYt-N7;F~VP6N?&0;2ZI|qHcXgs^Vkc+)R%&KfS zG?`g#bW62g9WiIKMA=j{TDAkq+0Cs`D9!H(`lf2E66w&SLByb0Xk=89ATxX zqxa+88Ai3fN%w7m=l8SzCp+J#hG$ef1YN1#5uXhP(vZdmj{lgLUeJMDly-u(b%>BZ z#7(|kn0zD+L+4}3hY2O!+nRA8V*-VJ2dl9)XjM>I;8z<&E`Q~4-AjCWt&+~j0q0)2 zA0!ANiBr?zWL{IHAGzh5TRlsSFy*x~@}b+6GJ#}gu_R*r27gGRk4i&y<#RMZYmtNV zGEyRrW>9;j^DzYG(USJ_XTC>MCeTtJu~y?~ZChg6Er5!Q%lEEr*)(Rw`=)08#N$-N z)ATcrYMIaeVC}!13?ZDLF6T(kym_}zv5-J(=VK9D8u~Y^{7&c8UZ%&5@3`y+T=a9@ z^Fu4fM;!{3o0q~pHY7Rh7CcP7)I}?%b z2}8gC%5+-!u=AAn3&HD71IpXvRd3GL0x~*m--Ii?s3i9kA9q_RHGXnO#X+|hm#SL#y<`Z32SP}sef>KL@gFRMkDoBlpt5BP6UAD9bra+s=OO49l0C*?)7+u`kKx$_1;YjK`SA;PK`t_d69m2 z^%5Q4kB?s_!_Igb41JezgtEJ-CfDbmT(tD)f)C+M?E2f27(MNASQTgdz3bb-^AB(d zxD8M}ehvD~&Tithu=)ky-FM!Hem8@EUi0H0h5od3-)dT{@soD$MVO;k}DAog&GvkVmIURVje@`A{I2IrP9!mclz#wsX8r z)K`?(RR6@p77QR_Ng_h!VYgvJ8WC-}N^Nx!9+-DsI#mHvWPih?cTKZt&V)v@I7o;& zbjfSveTXxZ4<=kbQljf>fUX4JU<#*}r%Fs+q46L^jXsg}ZuXMSfPQIncycSLy-yWX z5jw|NTWs;DSZnVJo}ax`c8>|JKPkLmx=;{ei|BJGt9XeocGweWbc@JWRsv^>6~i=ah~ zg5{8A;=qCu3op7ivuj`Mip*M3-&(UfNYOJoar{qYub$hq**}lj3_42B0gY#cz8DzB zd2Jaa_vO!Phdi>AIXFem;JOvy~@N7F<)M;=XH2X_?Plm}Yorb9lxgAsLIdEjJHUh^M}LGK4;{d@0m`^x#2x3hofNh zXPlZLHL+3_U52<$-+*WXAL{_&_l>zR>+LQ9q>Cj$wVK{(QfY?(>PTra)^5moAni$z zlAiiCqGX&bdZ4%xzA}m_gA*(7)%fLB=-a@rI~zJ?3G&Sye8K#Jl@hqQK2OQ+#Ke17 z2FSsL*U?N;OMaDL*mKiHY6)`$$Gynd2sPx27zd((l}EAARCEp$END8^zJZ<87 zMzsQ_NYkwi(;3?17C9N6(Ht;1#it5B#kFPt!V$h2`V_Sj+ zEZ4Kpwef|Ot2R%)&KpL@Ppgmuw&FsUrwLOCR9fI{EtkhV_`?=yz(i%HiuaI#s-E<*ODc3b)!U(XKk?SJy=p_Wcw;Ha*r3{Q$)RDd0@<@R9ont#&^Ju#oO{>w__GXWx^bt z5q*ATHP4y>h`#x0ip+?=U5Rnv$>2NIMRNC)_r!xm_r!PGx!tAK(+|V6NE-RWUNop( zgSTT*#xv-G7IzofdG56KiQaiTtY6Ce>{+S$t!oGm_d+w}l#AJYAG{0kh1^~Z7~;ed zQ`POFxLMHOHh{4em`!wSYzL+0&bl_KGeqg00cgzkJNUAWYGqa~uGwFAcYBP=2OMo4hm)^=u z22OukX|8U`T@MSYQ~)8ocm_qZ1; z(vn9=qoEgJz&a3o$yU$};4PwE%EiSKoBmNm122-MO#J|0dW#OV(E@eaqT`;Yvx|=| z#oy?EYZE8`rQj?iG0A#e7Cu%V=A3`$}4n^5m-(H|!mtOLhY0 zVEM>J#F*UuwdsnR6tFr%ys>ZQZC2BJ4|L~zB~wk{?b=FeN*3%l*|-%Qq#P^?FZx_V z&So0!xX_3fYkE6Qo@>zG|81+GgBpR;ft>B|jeCgA$*Z`}@i;Hi>N_swG$`~i*QZ2i zyz4or0pR&&6+kuzeM{w&(#?Q(Z4>n^_ZM$?=U$*&omuxoz>)`sIg^;iouOV(8*56M zEAb+s5gWL`=-7y-oC$u=zUd)Jzp^oOsj*>`*bGqlNSq7ttUj-=Vq#}$qhJxWM@U+r z7+r=fZ|`);sM4LmhpC9w4Nj9v+6ngKvXqS;WHx*)hRHi$)_O75HB}OdbheA#`9~NQBjg2yxo-srDgBR+|3d&K7iJ8cb zv)`PPfzA{eyGeCU-y-Yoz5P-_{yYd0VKFTp-V=q%GO9KzCa2KX-3mB?nT09W*74pU zHpskLf5g<*ja0Gg!iNvl@OQslG?E6`xNY?XyNf_Q=TP)XSblvG6@nTrx-FC*J-zfQ zk79@SCHW*Vg<)o_M4#7+P0S*Jyz+~GUy72!YvX%c3Q#pTLRV#XC9Y}@)BW8S86!{B z(%5Ppxm>>A#MG__I5c?Nk?Exqm%DecM&-?LMD}vAm}&U&xOCk(dYE^vTjHtsFK^85 z*u)-SvkwpUO{v#8D>3pQ{@IyyKAzUsAJb3Q?~<+`Rq#Ycd*U#jvsRarE^f{o^C$no$nNGi9Rz>k;r}Nu`0lig-K?QJ z56uqfay_dTXQ2fa8I&)97C#!{BHl=C7uJumzrC*t8kA?28q4GrU$Ysoi6_g>UWdHOYw#Y6mU?~TLw zEWuA>;b^)CZZxWI8y~h^j=&vyG9kkHg|9qX5^{l7=EgE-;vrxgZb0ukpAyY8+A9blE;%?*=~7NeDe+q8hOeQF zm-!)JeZ||F`|iaoVZ9Qx{>>xhYN6a%<{;2z^!#Oi$O0iJ=f%Op zr!0VaKKon3!;Cdlv>Eoux&>NZ*>CP~RP}v)Qn6JHi~or4mx(;>R*9853L<^w(wmsY z#Db{VE9t|Pb4ovSI$Lg~(veF-TqZewbw=X62(x!wcKeK<7{@L(e0jVut^s>4D zXAFn`q4$wh&DF)heh?;gw_U1)^2Nv98G+Jon${*6Ij;?kk4E~5J>!k^7*j>41@aEw z*qohs)5SR;3f3_^Aan>t<>==NB05eScRkD^hHJ!dg+n0l7N%8ZLEM;-TJyt$)JDk8kGq<|jf5zM)W6M$Y z#cHnfvbfPrMh==GocTc4B#qS+I^Xtu&Mm>M;kP3zIgclbauTaAt2jO))LbHFur;YN zJM;FjJ71bwlXwF6J4ix`v?uRfwV1ofxOn^=?c{8za%Op=u-%hP@7YetCmxBXMOF99 zcd)HgBOVeH)XiY>vadpeu&X-rLIBm4AfI5vbGj%e)Bfv+4}?eXUL?m_#S@s0xs2o; z)g+Z(P~q5n5DF^_b4)V0xH__uyW*5Mw^U}}?yu61>V4+dX-Uy$Lbp1q=`4=iR>tS4 zFxR7;hf!MJ)Cu8dgFxKeuTIiqm83&vL!{Mox)yu=p%?CZOWy904vpU|&(TH&6e*3I z5>y$x>Ge`&F)_+fN#~xU_mJevdVIh@Y4oM^jcexmpRNa19YepEv#{9MAIOSlVIDI? zG`zghQ+RUNrFqKwvPw38hK~3uH1_$4a%M(|Sed^1Vba0C&J-l`mq|xkAO8n)243wQ znB#5no_1))0CJ#le{6H>zeU*p0O&tRzQ%_}!jd>XgiYCbG*=1$JE66?^FX6Evnz17O=&vGyV5?l}p8hhGH*!W17)o>hwwJq=;x zeJCx8(m0_zabWmZ8k5jY^6^Tx?FK^HcmA$4MyognuYzrNCYcy)$Xxg4O2?^Ele1p&s| zuHv`y-Ppa(3rabMZ)8-zo))-KndMyj)bH?zxJaQpt}!+kL69Ca`ogEPlkvf)3mxAT z--lP`9gR7{srWe_ZW=Dplz%J$^y-AeiHJ*UJ-~g_39cU=vt2(NIaT6)@1Uq{$KYLt z?vV=*>!ek<(I~lx5iy-%Z#s`6e3WLq9eRy!DTM`?muYJwUcQa)VKI3DyuUbj6tpKn!sTlvOqKCHWs0f1K( zEOX`VDtBV)*Zuk*m8*)CifP9K$om)!x$|bT!+=%yaXRbWaKhXDr!o{p*7DZHl_`8f z?9-6nT*yDL_^%PSgTyh1zeOKu7d)i@1Mv1T*mNB?@P09;7vi1VEvfphGjb@!=n1*& z6TfswOjIb-n}8~Kt4p~ISe*1;tvz^ig){8=aX?{qt>qj?Tur`HBxA zwj+jaMW|FaiyIq_`S7QT5$aMNyo|>X*10oLoN5wreY~q9W85*EA3CO`?QFv44##^Z zk-Gg}t=EjdJ*Ft}OfZ(@k)0}YE73#n zkvzYKzI=IdYdS+E8;obE6S){Q$9u%JJ7z9lp!VU0LqMHyAaS9kU>WOoB|p0{kfpd5 zXyBuAeH9=XkQjtg>=M;;*P@r{%H4vL=XM_=RT9MsnuI5r)cXJMrByE6nRVFmBVLwg zS+`4@*X|th#cjgG(E2iR6lUZhWK*zkmx>RXAyw<3w-;gmjN9Yh4Ee)+?EijzunqF# z7BsEvFnO2Ae?R`dHlcfrCA6MST5YIDRQ@de#cL^NfTx`q5A?`rp3RZ=HmlXiQ1?I0 z3n$2i#|w;I`fL!hAja@<{<6;rS~%Oo3%n1%Fwx$P!OXRIyD7b*;Wc6CV0{?RODl`w zAMO9r%>vZHZf<42ygJuFX zU>66v@hn;5y$NQozRaXhkO(}@B-1*npRmW_$eUt-nHKu7$o;g0kOQ>3S1;6m!VjpF z7VRqKjyaOXVEe9)nex`>?z4yMIvdG2)Fn(m0rm7MBjC=%CZ8Ecc_m(lu)p z*9fgI@)jOV6gte8^^8*pgcsxQ3&%e&ZW(5)vxoPVM(9)n)XM#7MkOC`f9{AWklQ9a1AK-qbADIhKMR z?&4{>-MSWazu8IP0|*h1X7T20Rz7!mZ`!+=d}ucBV096;!$Szf}MEngmc@+OpZe{uO>IL2T)mlmx!aQU9dWqX2v|d@bd+g z%v>xM3Ex@gP7V z&&3K}w!00P3n^PB4cNB#f4s~o&ySQI^Wys2-mhufqdIvR9gUwrw5wi3Ji0{_5G_9p~`H$=IS zf?)QQfiKM!QRboidBIK84ZABkuTUE4_w6@V-Ne5?FTf1tNH}(Y$d5Y-XXY-R-omoZ zDipxjhN;_~#O&sW;8HB&P`si`4H_q<)ClOYAOFZ`{B)dOqC)7?U}0 zh1Np42)=J4xv55ClD|z;`^8F5H{fh(wANmgi9rSBMbC#tj_eswp^)mX zq5MAJ;c}C&x`kALPXYmgJ>_>StVmA_p3ueVM#N-Ejym66?wn|1T?%-=f*N6FXdB1=`~NK8VZE$u((vWeza5rPgAwA0 z>MqrUUPCo#*omZg7MkF^bk1_3ke@oSYcE55?MIJ3YnITL!4rdgub+&`m-Vso8l*{6 zDj}y|az7YcnW4Hz@@v9=(u@0U33;vlcc81+B9~r~KJn2eo%#gMQ_ccA^QhVt03wLb zYHm|{Z!2aVjh+Qa*32(>vOEw!r~fu|RbN|wZT-=VU&vR;3EP_|+ym`FpOvG~rX7XJ zrE1{rpvNCiX@4wS-aO@CtaFv&ovvl=$FYW^zE8?&0hLa`Gc0u(kHr{YyS_8EIyjwM zep~Cs+(?#7B@}u8X_9mH`OlqA+&#I;MMt{m; zpUI7V9ym5ZPu(vd|bC;DVNi{JaMOUTYuB^%tT_1RSCafPLh?2x< z$XB>fk4$AtARm!|57JCFf}QVRn87(fFYx{3rE0NL3a_E@78&q>-DI~)^>e+BX%1h# z_ptY$I?*GA=ka}hQ!3mG>|vYb+jd*=C^;vz&T?(o;;fpr-{os_>r3#}K$EK%=kyOP zJ~mRmd(1}irrqVkr#KBqKl414&eqD8Rx7AD4qp^F0?Ihy7@}KHRS=luwj1zh;ADSh z!5z^BfQbxJN-ey=#zoLMUf?Ooe4l$K`iQwpS6LrC3g;ag)mlyY z;H;$bC@^c@W}-XCF5aC4K5WqsKPdTD&&vnQtW;Pu zb}JSj1guOeY`ziZJAE?60`oGJ4QMQN)4Y-uyfl(i8A9YAc1>c8|Ki%Mzu<9S?reC) zLoBQDr`%$zkh=)YNcKf#TG5g{VEgOMYI|S@w0b#| zYK(XfZQ`Q(!#1M5utN@R$}6Rzb(N6Q;bPDs5qRz0^woCTNp+@|qYI%z?9+8j#9>Sr z5)D^_O&N_xSTsYucq&sNtt=+p-eLpI^Ep=wXY1xx>DH5RB?pJAIdI?0SR`EkZHUwT zEad+CEtngLiaL{>daN?Wr23K=rHV{Lx~SCY#3vjbnT-_$I-dj?e6M=;OHtbbj!Grf zop#EG8qR4Ilh+CJ_-lk^Ov`t$z~9~r3uWglGJwBqMR$pSg=m3RM0b!)XbOpZj!+QH z7HbPP;^B1|272uC>;p0XJl{)%Y^Jj{! z!sxsE+4CA?N4Bhgi#qw0Q*OtDVi?7`PVGAro+KLT0K+y=8As<5wdQu0*#XyE3&PUz z@!3OVyn$!PZO1FogB&N1- z5xMa?C3nTDW&^7>QyNTS!4L?0!OIC)#-~YqY@(1OdRBJaSz-P`Els9Q<)CP0j+W-* zpgu2aoh7`44t4$)klu9wdNKoTG?wv;?`CVXh zL#Vs`|JCZfHLlG^}%Qve?eUQ> z275o4HmI)rC6*Hh3_dKpc)(~_8WCpv8)hQ#n`7;z`(vbk6dNZNp9>~*bT+(KWS)TR zr;Isjlv!KTRMK#uzVhSLnZqm(uhWD~0I+tx|ECA6B!>d`mHsIpg=*n4@Iv5LBZ42h z`#{OAIW(ou_gOFR^>a)w1){w)P@a;Ze8)|QO1|+7^9X2utR$HR8lX-RNPkTvvE&U8 zG!Z{P63dTVYZ-Xkx5j@=r1e{6icPPvi1srPDVfh&H&QG(I}!Z@WifHCEPbt&mfp}x6u!j zupE9O5;Ks0dh30hd5&%=9Wh5MEb4YP(avk2P_9?EWlbo~A%{Y7D&!_qpWCpf)n2s{ zcW{e0|AVIUQokh-!zxgv` z=`WQsbW3q3+!W(B;45AF6PcM7H>+M6S`7f)SiAphWoMr@6t_qn482MmNa z2(mze9Q0njdN^JqkFkkgIVZe-+$JRzwI1Y{PqSX&?eBKnq1kHUQ4rxPlnXq#j7!`j z=eaL#X$YY3QDu}Gn_YBbM8F*D;Li#?$@)_jgOc%nJRS`luL)`&|~ z7S&2cwRAx3+CetVKU8s%?5#|Xbjf`mnYWZH`v!k9pMK!<%FU1|N`)y1Kdq$;Cb^2j zAFC(HB3~PLHb(o+`jiFnRCc`v$4PR3E;}@5JI+?DqPAbOpv$0gegS|!;MnCJq744j zgxkSx=Czd5)jU=?)G}FRr|TJYT+B~9klQkz;iV zkAG9BnM)GKXBNq!C4SmS=qgJHHy2(aSIyRG|9(J8fG>SMY+?cbil002Mig5 z4N8W^{*u%7ZsEqXG*ZGKJn@=P77aSGB)oQo6!W)n#35*+*oDxfl@Bg-O1=71)t1SM z{VJX7XJIP%_gN8=yMSPm8Ls^7gAB#(J1qHmU-`cLN8@is_FN=$Aw@!yjk z^7NAd3^T~)zn{rMo*Yp5tk!2vsa*EcK}2TM%W>#C*}|8si2)WApOQeD!3kgYpgbf+ z^nnef9#1gYTrTPMVu29f)%WrVaK%GZC~q4 zRk#$+Ikf?57>EymzGl!aY4{+B}$u}ZMqjmufx z&A_%5bkq6;>UjUlj4(x1zxN9&Xq45eB1KRm;ogptBFbz5HVHr4t=z@~emK~VVuQs`ADDlKR%Yl@O&)`4B7Gvgt;|5O2$%Cxq9o_73fwKAi zFT$NNe^6GV2Zm%Cf7-HLqJk{1W6%;AyhVPhl#lJKbj4?>A}Cd`>n zw%TsSE3KYIW@S_I@QXDg6khYUh|flXO$djAVx~2sw@eN@fgbPQx2kV*)tZ~|8<%{q zpcJ@U6$OHh&bxE+-sE0>_BXa43GR57x}c&|71vBlxS34qLc@#l*vrV?Uqg$v<`$XD zerV(vhneXI5M4n^1zYqAao*<8#)kT|gf}z(wFDbR!2>^jwaMKtzYRn2$6nXsK+7>E zf?8OO#Y17QRCT_DgAYRKtvpf2*Q=fRFURC-K_9cqHFh4|m4h-s62i64aqdl&dyPb& zmXT}kd~2JXbm&I%q{;C~r%*P(I`nkEissuD8-GpZ4l2Kjwor0VYbXK<6JVNYz?D82 z3B|)aHYT6m)3+G~E^S>qU1g$$1^kIQGL~F8uqw-SzM0`$qX$fe8d4<=l=$ zf~!5^(d_+3y3-J%|Y&zc9 zYrYoSqcvZ+=g-k+NOEIG^S_@26rpMrGs^kA%R);h|wQ-v{ z^dfV#e1OO|Z#Jip<@!@Md+6!N6Xef}b=`F1BoRfywc>6G`OqP+>UhH*ovrFOH!h7H zcw-D->z)po)1^+DZ-D*=-fUpb$X;S)@5nhmhC6LHl-gW3?v#k#iO&a%1m7g}5cY|6 z=u!hI;RG6M5Q0kr20E2|2p!rDX>i;!X|J;=jd7T7IZIf8U z$1S~a_XGRHZDOIt1y;W$-t3ySo$2Saof_ZS;Q(d+uzKVsytDbm8~x%*`8Uc)Sg4d0 znqlosi1(HFe$POQ7gA#CyLUTxC%8%`;vTObE;TMojMk!=lzU2PO_k$h$?)3Vzg4!k z^V*5>a3@q@8nSw2lYeB?V&_OtD=t{re`VU9dK`)|Ik4yQLyHs@{6#*Ws5Sx*v|YfIA}}wx%nNI^%dZ^5Ly?O$3zFh9H!~N?@`5mibXAQ~jYDKI-ej6Z zUn-0`$cny4vIV}^;xBBKG5Z94g$tyA2h4p1#2A%LxE5X1Ih~AaU#fVPE!XzrK@}`V zJkzvLkcI)r^?`imcXESXMGV@ztup3v!WzqU4hxTRen0ov41Lo=67*#S!0@W}TEg3q z(2_CUr!>xy!;saPk4-qBOS>ZMeD5Z>#_Js-PMHew@tGv;pFu`J$vabbiX)OzID6|1 zmv$Z@*Ub9MH*cWFRgd8({&X|GQ}2DZiC`*RxKhl(v7m)rLnGg8koIq*wuyI2E7;j` zBv2p1y$12ku4yJl^|wtny)sYDPk);kcV$6AP4G8(%{n+YNiw4H3Lehj3 zftnc|Jn)2e045!DGhDe(b44Ro$CeY;#HfkIpk1MM zYR&d(CLSlKvRz>lVOq4MvYCyVfVhnR=Y#EfF5+FAXy>I&6Bq z0#DK#zNy5FcJM5ptW{@z>|nBz`yvtVlU{ckRR7(SyZ?u$#7=91)ZME_jjD>h4_KQZ zn$$0xmBVqId*1$hftN=|m1UcI?O)KaX#4oJ00@GNmf*ujBsMggYj?0H1XQX=+L%Ha z!JTPf*-I3D#z=%QP0FP!mm!uj&hD&|rBudri}*y#Ymf*v)%NQcEx}nY&IaGV?yIC& zgK4LZ8<(1?Oi6)7;iC$QzH5Oi=RVrrRYk=5g7Ybo3&ctug<{8uOE;q_$LoNQYYz|# z>=;qg3u9EmE~sJ-8b5j6`ldPZB4U<&R%;4$-4{?GWH-QrcvMbnx_GSm=Y{#Qr@UIW zY@2cSR~PC#1PdALq^kXoOgEM0v&>Wt~5wZAqwn}7$j5x)5_eECl$0~W-Nk=`>E>_F~MR={``nm>Zwf%%iDOVFQ zkO-iiy2|tf5#~=-2SU`v{B&oE2yCb^HiwZU!l35sgJ9MX{9P6b&f4pTt*le4TA+P? zfoJ*gP71bXnL!M@X5TjU2I4uu-26_9W3*E`=pXe(3<-OkQ}yyXUGS>aAH+04ob57? z{HL^(zns|Mj-@C)R=hM5S-E+Ad$yTfCX+?&(o<2oK!q-z`DL^*OEqWZw>ltYY#0dF z>Sl_TLdOk$+s5(9?1sLVfA^ti-J5mI`@}!!E%_Z2SOe!^T3$sr(bH<&gdIlLscXH` zyt6w>ww7$*(U@BjS4?q$@@ZVk&mr5MWs%3bsIC+mmuFg?9VFVP&9RE|9(7(3TAK8T z^^B0`kxQ0N;y3s^(XL!FP23y)hnT9zzx$cLnIbWaWB#Oln;z}XyylTtrW=z(G%9>t zGAg(+udojZMhWf>5Sg8|g01N9uD@5k*9ykJV2ehQ6y5trFHuzuKX*eD-^Kpllkk|B z9%R_HWfeXaNO^K|`ADjR{Vsqa=l+ve@=tdE>@Pd_S2-VuO|Cs8(5;GS{Ej;~^A0U0 zJ>~sMYWwOD=mhm=r;auwQrc<$(ZR|Q&pbS?cdPFjJww($KH8Y1ARZmuB5L{HzMrm` z0hz!>B(rA!?I-^0I0g#=4uV02tx$K=ngdE#k^Z$<((i&nIC`9QgYuYYt+7qS){}+qT+PMq+JZoy-@7 z-7N=b-6mPbzoiF-pDSJn`Qq8!+D}?Cg)CLd(SuThQ)Dn%6SMoI?-YHe+(RfmQ8O0` z$a)vxie%fX=%yoh4w?iN7JR%An8C3MzC~mhHQ=+-KhphJN8Q9(Dp=n{bTA*HlDovk zQOw%c{E_Jt{B|Lq{@gC2?uJ>%pExLhmEkz@u7?U!sh*M^6=&FRhMh(K&~iR~c1ODI z^Z9jbYr=BpOUw}dtw{9p?;Q03H1Azk?1IsYpT<}4BW-nC@9fH>RWtE>=@Qvc2CFZG) zUdPmNbU<2hu*_r47_}uh1$qyig|<5PnyugvkQ2u9nl2|e=dWFJ6wQZZ`zhbgaQ3(O zWqGQCP*yK9NY|}%=Ot1mR1)T9QGmd>DI1pGS`es+_SdBZmfP>k@q=oqox^7LO8FfjrfaE*PGjy0cG>?)IrV#M zFFeR4c420zuMca^rP&{ve z`1joj%~-@z`Fh0B&4rBo{N|Gn7l4hU;-6kMP!3q*omlg$umSm~^LcrhPD#+O@{}V8 zWR(|-Pv)n^6zRv~(2kU!&%0eJX5FdGS04;czeOwO*%`TlIuzyvWUjdP$>q-6p9(6< z@41`=RWjA`vesl5sa3lBB$W`AeJj;-YCm)u8u#uo^nnKPA-wx$wonNpmUxBGfJb;_ z^7;7sOV1dnrK{z&Rj7WV%%Gi8t5O^MNMiZ@-=j{{pYIe_hKk#Ow%j_<74Y z<3kvfJ4TAzqIJhMsZ5o!5M8x^;InG{$cpKLaJ{=y)#1j?zn3%OwHlSP_GzGs@0bKy z6Rd}pUZWoS+8OVs{Uy(LilDwNe=7av`4*P>aUUQ*)aQLP`|8cz#!lPe*-DcoqI$vi z^ET_gU%nZ%gfHcI4D^tT~_#L>w4FUh(y%AubSRF1s3ht%P{4XRKw0$Iao8O}Mu{Sbwc zqccg%B`J~C9v!5)gewS_O4Od*se7rG<)OQ4nZ4FI);>WOU!t<+9K$u@yo>ni%tYd~ zN&h&_8xa29xvZ~gjtq!&ow7HDHA4(r`~HR^Qkjn3dhs_>M*^-DRfYFkB6D2efD;wO zC%1v|9O)dwf)4y`qO)tW0m!f8$MwQTRuZg#6wbZt_j^-Ou*>*1ket>6FijH}NK6&;d7HSrkIpr#$`hDfEgG(pqs(K11HR)J;%fQ2I5%htp6Z z)G{Fc#9U|Q0B`;#_=oNWR-GGBP`8Rz#NTK{K^1vxj`q2vA>8F&_n@Qm&huC7&KDsH zp0{udtP|zfZFa)}xAJo&-dNUyH6PeEb@saDBLowp*w96ZXoQh&_K0KB4V*mHp>-D4BSuO79u`kRTq{FPYSF_{j2PD$>N5t3(z+^wf^IzaZ zyuATG!>fh_|DE%$)N4$7FAm@9@Hvm)B!W*`%cv6!gU2(B-Mj>b7_#)VnvSbklznk~ zLxAp3DE%1JnPjKwnJeiG{$DIH`P;!c!?6i+pw4JeuR@HPj3zPEb>U6?ZfU@E_;E62 zi$KVqjkE>kW1bN*<>K}0t?h7)x1gG}KxmWNu#qa-9UW%yPreUzf%_@3D?yn5B69pL+9gLyt3SnfPaN& znWe`(OAGu_MY~adH8!w9a0$4*e~N_nVo9Cl)nkSxkL$q&ZHusLWnfxo0xoU%jz$=H z8h_%hCJ0*Aj6L*-@M26L84S;86w9ejEL-mG{TUl4{@O{5;Dm-VaKe8nXO{4#OXV$Sp%o-cNZaDiq9M^!|aSb|aP4xbnu+MKr|<{Q9!Sw~GDFeu6XtYF>-=9+Fjx&0!0 zKURPi!2Ia)W4*b#U+Xx>$Iax-%OSZXN7&y#l|DN;i@1F`=p%I1p( z7ZJ;7PE5wllBJt4Dr%2)1kJL}-NMSZ9O`6!GL=@L+Ozk5*n8eZ#m&bCC7R8TZX8}% zxZ?exwS9dc5iN4mf6g82k*v=jcgpZ;FRN3mOT0CQiM@1E3Dy22fzV_)ig-VMUf|A_ z5DovnE~b|{c!7H0PV$DE;CjDDl!!NxjO6;enTBeK=QNC!!HD!YN4;L6;Oo3`$7g%S zP_YF{!^mf3ceiqU?HDjydDVRMWeTr&D3TX;me$*@D_X1LB!y0X{i?&5^uwHE+aqZR z^dtDWc=k;{A$8^%wjKbR_Pp654eCk{0n z!WLe79e^UR0GMUzQgu%&wSD|9JvKxt$YB4wP#fm1TC@S0JZ;DR#@36G$=gGC zqPaOuQ5eC`_Z6IX7C-mDjlBPO0VV)2px+SROHMy2PFHcqbC7CTVeY3c9u@5SdC7OmtWJ5sco z6OzmEd}2Eq@w#ykXvEeD^}ldaB~qrpNw{dD`ZrMb&hQwS+PR`zm;W5qc(OHJ(&w<9 zP~D5vA<%vXfzjG@j~Yi7u67d`U^2G3-zx|#jwJpb5VQ?0%gKW?Szzd#0?Oi}2tt&> znd$B=*;mji5P+KmRdLgV@+zcMqIMCdK{K@M;ZvC}4m#*f%8tJ#ImmBCr-eRZko~Bh zOIz~u0DzN0NGm&cFypVXB=KmqAsXZ;haxYFv`n_rnYWxUnLUqzgzsDjBsI!hhMI*x zSPT!CjIS@y!;SI4+{_X`&oB~h4I$ySbm>~X5DN3%*ppmsn9w2#a$`{_pn`oo6~J6J zUuel@+@at>vjdF}E1Q|aZ=#ZaT03h#{}6r-aD6ZJ>b`bDCgSKHTY9Kz-aCG;1T;d} znDN1<3j3f6`OL5_jF0hiSPzogAUEgqkLBf5BILr?ryd`G-y)w4>or3(F|3BRlVSr_ z20MPBnCpuuuqH;VK5y7>-^mtpB!n5TE)!88&&h7%kuEm1-?Z8ep(QhUoPk9x!mlTJI2Sv8P<=Skg35 zN zqb%FH?aU2~*M!$RBD-#3LyHaUV#EIs&lz&Vt&sy&aLVxf2z1ah{DklXm9=5WUiW~S zwT)(_VyV?%;#GM>Gxgi8Dh|9I`GT*cV(Ed?+T!? z0Kf(+`pt0qSh`2b9d|F3-_4g~GmnXuBVR3Y>9966lEP}pGf&?AV#RACb=B(IL;P>` z_7lf~0R_5XFifEW5uLc#uC%O9QhZ|I70^a$pKd&59Y6H_-lMXMs8!CV$Ct=nBuA*g z`shfiMUAHG`g_O4I_vs%bS=J1<|naO_u7-K*F&33hhE5iVkkVE2OS{4MQHN5V>yIw z*j*8!c!Oh^5Sk)c@fZ{4fMi@-wSP;boZo?3V;zCe_1$KLjW@I0wjwpoLZ|eEQyQeQ z-y6Le0F=aO)6?_V0a;mmGN>R_Sv_odvuCkqRer;1$#j$QIXW#DYR?b!_hq6{1=a8b zY(5@X0M6aEs!+u6WB5nY`u$fiern76A=2lkfst?Qv#us+{`z6NtoSa>e0L=HQ}Yn) z>F4(IZ3EX5Llh1BWAob__}3lFFgwzpuXh}q9^Z|>3vuRJ>lD6R^3*-?cZs*H3%PxW zFU4A(yL@!M3G{fKIzQOvX`$R97JMOO>4U$HTO=n7II$HgSEQCl>UvIXJ?XC}0!*=) zG`u)H6qt!@&iDAwFqDO)ZJ7gy*rD3>_08<99Ez|KK{mXGJ=)giue``fziinunM$N) z^@~li`J}v&lH?ZvDH08_{GK5Hrc*7+ zwK~$;4gckwpw*dd4c=PRsxSsX^efL{!JALng z%zbIhCbBi@E1ypqnA&Hz^dL=4rW!X)ULDt4)|$3Gy2<$Ag&i~z?P1Us;UPiy4DwWR zf711Q&@Y~HJN$~w~=5MDB~`v%KaFUDHun^fn3_?3=IbX+T0IxZYRwu2DJb9bX|5`@5KuJ zPPm`^ebglV#NWT~Cd%jT6V2BSHIb{;lc(7KY@*zK#4S`&PSR((?fv=1_Lfabdcox) ztt;o(A|3O|RaBWnvtW$PF`_oZjdm)nYwP@_N$|J7zwCmw zJ#d$i>Oc9%S57{;E4N%~4RN;tqnW4WH96 zlwAE-0uxiUpHLi<1`KRt3_(2!!8{>aVPFcc@vdvSrT9Rf{(&J^ zDeu*)>kx}Ol}%CFpLl2~;9pFvNTHY8^V*Ot1YIt;h8S7o(6 zU0G@Vr{48A7DXwpeJ;Za3p7dK8s~-r;2#3lt6Ip9bKNiuAp`sr(`?H1En?L;ymM-o z(uWjAXs(7LshS<^(7r#484Zg8FFmn#I-kstt{-KGI3uQ%*!hg2qp_i%q;$M*&Yzou zs_U|+%1Rf=3t!+t!|-;{WyYUDcO$dCQ9WWKU1J|siF|-D`OB9oAdV2YL$OAqR&O_q zQBF@W$h52*g2vhtt;p?%3D7Q8>w#^{n}e!1>=o-CV!U<>N;}>;zVr;oHY@Q~r1SVk zEcR?9gR>4QI?RV!Mh8c74)@C@FDUORI_haK`LOy`nB;asG2~Lz2TkN2`lPb~JIlo9 z;I%;6^CgBt4nEpolNHP593_iorDfqHr}O&+kkbPkRrOWp&2vFe1UG%0 z>T}l-)7Bcr31gss(`Q4w>$=hxB%9bsz*S(?8S>!{Si_kx52M1}PesUybAYPii9}Np zpO>UMgFFXrncr{UwFe)w#p?GGCApMSU46lmzowkq!ak`7qWL4L=7j5aib_PBcOOh# zeM2uvYGTdbT1FUV1hc;#77wzu6!$juhS>4|FJ=siKM1Vi>dX92)a%lC?P{LBw$@S;LP-=Z3XM8)J{{ds_f^hjgbzuh+s8HXxJV$ZO*MX=J<^+Pp!bb} zfMX4d(;X~KrW73Ai+lFcO~hr{`ZD%U<4|C{Y)oOyD`iMl%r@1TqQ8!6ck@zDP3@iE#8^TB3`lN;Nmktf7{fyBGOxiQ7W8k zh^Z3!4sfMhK|MsmQHT4ma61-mggQRNRw-sr`ao!3`3S4Afo=(N2Vcp`pWcf?t{WrX z@PmlKIo1%TCBQ>t6w9wh;ECS=a`s*CMGC@*eyJ~!%u z{p=n$2i&dJiU}0puL|u#R@ftV7o8)7)hF)Dcglfzu zhRZaMmVS#Mw!k(qUD+eOesOCT=Jr!zG)GJIJ4ZrB7`NT|84YGWLvl>9(82mkYebHB z;9GgN?_irjRnQvg+uB`_TJQsH;7<>d2E9Hk>w_Y&wxV*_>><6vRmnB1U zE}>09O_JI%IaBNgoezJ)v@ma6fplleS8(PM)OmIhrqB~ZuTXmGlJS4LXPuZZ5zOPA zQOxVb&o0WDeW2qj#;to}0b73C*Q;lx_kKY8V}-2ia_9RFtAjohZcJ{G*1sq38pjjx zPi~yv3%5rcrOw_p9nI+Rwd}qR`E`zS(`WMPWTB!j)y|mKz`2N-U zoCk)*-y0~iqIF65kUwABV(jN)z$&8eov~(zNZ|1Hprz0ItB5RcX`9va{|Xp`=!WMD zscJxXZjwt&;e0{w5zpT%C*_{IF!HvKphw!|#l7Mej3Ch5gZDw2r%OZv$$|aSLB%fV zNd^otZ^s@eWE*p_>NmNPSlxpiCNnxK91(|FBV6J@^0LpTfHVZ}u;+4rP+CzDeTiM! zEnTG-+b4%)IUcQEmkcRwna2ZSyu8y`*m9dOO(**Gd+K6qb+M1#}*=ofKIbRmG zCgxG7=7tT(n#X_gX-`Ed_xN#jAztWx&O(vAv1EIY2@f3yae&$qu^zVVruYVyxC#3b z-|Tx%P68L@d=qE2Qn_^yOI-rb%eJaa1K&3vtJwc!&f%n0ou8?WwgvbrrH81jx3m5d zx^UUU3f1zJmo??h;o0GvIr7%^IF)bwkb2OKyP@JhJ7NkqvW?KekyT05){jNmJ*>UR zqbRnljg};G(tT8gI!$tWWm2^oA9ad{!1+$=Ck)qgZ0jF3&$z z-_y-hcYH%28cPaIv_k43d!eW~1RqJe1ZN0e;KlN%vFL9~tRqc}#!z36=>umr#f`M& zwD>Ong!ozT&kvv71El|Kp59sjuJX*;R;9UxW zekPwI$+5VFb*CR6IUs;(Qym|c(7lhm=^d|S^0RJy!)4^Aq?6fddjBv0kvbdY4GKE- zF2>M7Jx@%@>dG)vuFBNcI?FAOR<&jY$U~;F>KRQk6^w;Tqb?!|FJHS`q8jdV+PsKr zIDQ`8!M3uHl?FPExn=BhOH5OeQ++WXZX1f2c?)nN>G&(STFQlI=r~`zCRwi5Kbkj0 z^ARsQv!d~lL@wVgX6-9xvz zesm$MrZeGQo*tMElfAE5TW(EfRg;ps8J1ur9lfII@VkviCA#7!dCD)SISD8bn5~kE ziu;1j{;X2>Gjx15N)In)wL2H;a_F%lyfimey#6!sqPtIbsiMuCC#O`@?>Fn8dQ)4x z*>GDe;VzRVmy0J&RaJx;tV2ykq-sMsip>rC+n-r(dxCLq1Ax`S+D4=K=t_STbZpN} zs)6ebb8^8$^pNbr1ymy}?=l2BVgf(YuriQz=RL^BCF` zQiMF*;Mc;?Sa71sJE-ine~hC;wowcCP(ZAqHfOtj%@Spc+pR#jez$z93QeHAYt}h$ z?7|4-xh)mPSlxOuuk%KeYJxPBb%e6ZLYq)*%sUAm^FXC(`>X znd}NY<}mS?9{zxsE-VOHiJH9H7rH66V6C!G?$56ApN`=($1J!a+#h;H7nnV$FGkLj_<~P1L;tpruukHL zQup1QQ2ra|tpAGk)2RR=2WoT{+5W}awEtii@%TVwoKPNTK6but{NhltpcTW0Ph>x+ zFc;iSdrpIc@jOhSz(9hCEb5P-Idwt1mkH9C&n@dnZ$$h#rE);wGj=82n!DD8npE9U zVtHC52Mrj#yAkxl6-u3O8OjnFMnzzKC?C~{#N$0Iwx0vR!*b&I<`ht8PX%vcK-4^b zDOXxprkuZur@fXek1p5shw&PlJ?4W@y{%shgn-z}&DPwL3jNQGW3ozd%?-ips#Aio zy7a$1o2r^I^SYBjJnb>(3mKk&pdZy_OHP1<*OLRQwb8gTcO)dCD@+D6_!ry}VOf;& z{I0Ug61WWWMk;F*adLX^+|_Q-M4@1{J?-V#?7)v^7~KU)Anj0l2aImmW1+9uiBg_+ zXxnkWfQi|FYc32~qfJz$V}Np>LM1&y#V z%XEurA2Ol+F{!$Bo3rygVSY^DHyhCi-*BmRJin^I6}q~D@#N?g!Y+*;nBWT!)Hhy} z*&d(hZAIy9iZ@WbYo55&P7D-9id{Skq#JcsrlydJ0nUb;1WZB^gpt6$6yepF}^h1Cn$`D~QTcK_+OlX#Pr<@w&3ie@)UF^|a(rloPn5o3yHNqEm|u0e5f_}MI8AYRi)T}@M1PMC=b z+gRe054Oj_Qzuu!ut=Ge3>gt>@LV9C;r76kYz#gDqJ{s(aTvwLSM)Tco$^t1O|ur_F4fdg?qZjuVh$Q_ z$PWVB3dr#g;OwN_M(RaFYiRIo^te3pqEoJi=xg_9Uy^^MOdc3zODi}mi<@}atJPus zwfRwKm2mXQc3vT*>IJaNHbyaKRN>lgR>crU^@?Vgn zIeZZ(oBBn^Qq~p-aX-}L_Qcr>&B0`jRLu5Pw0W+yux6t5_%%nndT}G zC#>>neH6 z;xNF;OED{JanCJCENa>5pqZz^ z0~49u1GWF3A>D_PA07buzWLw!9PcN%h5Ro7#?mjczl#rn-bp4D^QxQ=i{}V+NU0>Z zBflYP3lN0^vjQ-i)~sX)YmFUl;%pGTm- zURR=7LBOm(jVq2ZptiPy&uyo8A+rr0@^;{mSwhcPO4DFdnhWAXqr>6K5cSLub!yBl zSBRyhBb6C#l&SP2IsL?k)<@>L?k=rvMJfllK_5A!_76$)NV(B*{&H{wk|lMw(+rkd z^rrCijSEn;tSDU?E3kvHuzJi?Lc=&7FaLhOS9eJ|WN3x-gSvy*BeNm=XZWaY@Sg8B z9P)kv^8Rt9F9 zL^%0n^*5Qu{URVU<`UxwBe6x80Q5BG4b0g;WB`%#_B;cI?P2^F?UGL5-&1Ll3QUW?Z!(%aSJj1rbh*SK zJkowo&iwkudIDxcm#~?YKD}kA6HPDt<#^3!Q$uw^`8GrZ+<><8tocx-|EerY29}gC z2dDd?^K(%=N5UR0%^kqA$^6#EgeQfE9T&muK_!K$Y~;K$@C9`|fDktsi@@@cBmJ^) z)hy;lvVQ2?^NVsNb=Q?R%g-%=XUSvi!j=2s+#u>KVs*M5?+j)tzbb$~!3^ZO17OCv zENAJf3(_3DIhPj>zHx((ohJ}-YRm_V|9UYx_Cjr{1U8dzn5gX&dQ$|7)F!<-I^r-v z)ZY{u*zGMdh0KmYy_fQql@`M99|str$YF>Cw_U34ZybNWV4s%0OrDm{5#{}mv$V5S zYxYAQ32DJfR=i49eD5c66nZTbNWKXLd>S{ua@ zf$mIQtEQuIhUY;u4)35h(dHUloo}2GrU58taQN%HDfsG1=W{XsFjCE=xJy}!y_GiQDsfZ4pcl1YBwjfh?kO-Hhb<;MM!SkfK$Fl9_ zOxU9`B_p}48s9@~a^hnks zozepHkdKVmUxXTtI2wl5fY^Pp0lp;AkIj%)qC5@7ft8MdKEQ7zZ?=Qx#%Mtn)cQH_ zM6x=moPE=_tqcebk|f^W3E)4w(>YDHn_Bwisj?V_Kt_LXoKF#k8v9Ssb=1l z9r~;`<_zTXU9Vns+P@><*nmtqszcc(vC}37#aGXWm_(E16J>lKulCTZ`UJvwY{b=} zq8#cNLr3gNs*ErVq0KvH=(E6M{xyWZOF_X2aow{!gg0Xb9Bm)5ghPxml=H2)0v15D0e zl%&MN4_QmT_&2s;0{~-G5>ZS5>71wjoqKX_q-=1&rm7jH=r!i5`8kfcuGBG%D*TV; zWjz?-U=-eAopIvttTmFpM*?U`*lG*AxqWH2Y$*5R!c~h)M^{~FZMq; zd&{V(19e|mdH{i;ySr7oTS|}=kQhK|N$D7B2x$}rq(eYJN|0s%Dd`5Op}RXK?(Flv z=dOG9K6l-{&RTq##muLf^?#mUKH(b|zrv|h9BDYV)t}@IU+GjwZ*VRpOKk>;ZsFn| zO*)ChUgFbda;*O&>Va+yIZ?`B@#v85T z-Hy634?Mg3e12~zX%(d>*|h1Y@C=*zhI8~`Z73X&dcr-b`4PM7%%^L$MbxCJwau^FreV*|HsF?gjogvUc zfw>jy?7k-42fS<@Qg}c8yXB{OFS4e)#duxz_V$K>uJfK;c%N*o7?h4H{k5;9EsT2K z+EV0XzwT9UK+vh}@5kq6A!`P0(lRQ3jMt-SFci_yeD(8SQzE zRj`qzN4B>IL0huAkbWfSal_6hG2WdA_LWA3WCX>GMS#uhUGDL^|A}65%j&f78w^Kg#2ysXnGyiY)lFH&@lO-$BH{t*92mAlY4*aXD=fAw| zM1_T?O7=AOZ)Uw2DdEl^_>+mir>nVo{vIpEL=g(jhT&Hvo9ehE<1%lHPHk>FvA-~2 z>u^pm$C~u=s*4KlY#Ial5jDX&P^;cZ7-o0HfMBJnbPv`RySV$DS)u#8WmY8e6<{Zq zhJt=lb!=W=>P$y=7c6QsNu9ESwokK4a353Jw|?7Rz8q3TwIiULp&{s$n{#eS>fzLW zi?dqOEwSJST0$l-D@(k`tp{SB+brE%I01}^@%co&d(yncRB@{s-<^r0OF#P$eakgV zk3&T$9V@zS3+rjpm{jS zAN)vvHICtohsv;;-?M2WUAimJB&N4`0TT1MF6^j-K;4e0`)|EiK|a)k20uYuQ?H7{w>j!`frLiF0QXp}p9%=r${5kT2>vx~{ja zgX;s*@i+pm@U+93I^BsXcy9Y3O{b-vEzn9%M<9CQ4P*!Jqfrp$j-l4}SvumVuTP!}Ap}DTC`5K;nzc^Nqlt zG^sDm<}teQBkvC1zTUZ3;n5JcFz6H#K#p3=XCB(@++DsHIJs#JtS&OU9yl&}=O# z3&d|ZTYaq5Y`pn1Yc~-~WZUO7ytDSjMjJEk)ILh(!9iHKd2tneZ}K&_@wMdb@ltt* z7si$)&-{qP(-ZwkJ5Q$UfD;C~e((zra8^8ArM09}sSwdnf2us0C-%lyru*f1%97(= zl}l@tGdtK@{6t)GJ}dYA9L2|eUWcm;_EqE^2=!$sKm+E9LJp9;BQU=$LF4kvWR9 zTK9qdqgD4Lt4ft}RPyD9SzrA6gz3hIi0>BChMhL~|KMC>JbSG(DF%G;F#~V9t~G@C zI`G}!QKKh$1~8v7b|~3B^U~xe&B4QH;ZIx@q@ftWo=h_T%rchts%QRZ7eGcQp4y{| z1k)x--m~qZLo@7?RuR4(_rUrhi4lfLLv{a$9 zsJ6Qi?RhAW)(|+42liA<2w@Z!o%FGsQbpMw%Xm{9{9OE|=I4TUE@efn-H(v2Ee+Iw zZliy}bCd+Oa_7vIZ|g%bCX#-R#e$ZBb1xIEVQWrel_H zy59V?<5>b?zP;>3;F{dm(u7(RlGa<7DWh^JZCPM4WNJdSI6Z$cdY8OVEw;9018kady3L zxUWr=X2JkuPuh*jG2g4$MUB2Q@wtplM?ZMrCpjTX$abtVs7Z#>bmN)rkRY=f%GI?j zicvN6)t$?k>!k@a!AD{CkFe}bJ-m0L=I0LXAaoYK#GU6;eP~f8-^2!1v8cdN%+*+iU&GPPH_;TqkY^Jd0g=?Pns>K;&JBeXUIm{ zAb86p!h5u`Kp5XIy9){?e}yT-WlU_UA=(@fe>8998R@`M-{@!Rj(tJoJP;7NL^Vxy z%Nu7jNS4aA^}u)@P6c(+DWg`dF0`}3Tg0SAh%j(7peR~%5C2p}jz?N}ODL^>c^wv8 zPip5`TY;t(HscEB}C*Hj)&+6i>WkPF>u2|N-YCkL*`PKh%T z$p~M1mxdz^eVzv80DgiF7j~rUt|$vv0$>|JtNi*A7E9-6PLnjCy>xQvH|t($Cl2R% zH=YIfJoPj&Y)80jJ8Fa5!ug=C98a)Yzv^!U=*V{H6o1@xU!ab) zrt^KGRuu~HwQVVh+)X;>J-NXtwigIiLvLTWlgaNGQfeIWQD9x0zVre0%NL8?5|+!p z0}jlz!m8(Gtt))#IEyLo$uN0Kgq#VwdAJXpj~TXI{*Du_HggSs;(IRS!*Fr+jkSSv z!!?p=lHL<-N+miFq>GRv!|V(DIK!JozFOJ!m(6x&OGo3dX*wQbaEhloI&j9ipv*)g{4uwu z+($FRu&|Mo!Fkf`WPir>wwKviipe@*{S^LE(^G3|BxP^4ICv602A>PL?p4L}q~S*% z2oN=;l_u)ZSn=xDJjF*&}Y zEfhJhy*&Ey;(ERjNH#kV6IkUkKI+xqpq>If`g#p!fRW(8NsFwtL9~5t0qWn!Ry!zv zvwGgfdK7?b`we+^wa|BD?4+XS-FJoyryFeTzltA_hCWDD{?P8Tf zC8xH9DyM|_l}|T9NE=A+NOZO@0dOMI33qSPx%f(kt}~x!FOg~insN0nlSA3uIY^yh&!QEpf6dqpj5dmQK{mf)~^l3VEBpdPOVjyZTq|0718+}WjQ8F z>ggI~W;}^_>Q$q0tDKT11&-@<)!|-SL7mJ$#l!jf+IDTH$C9(zbfK7}oMhM?B>Oc% z8cMVbysqzM#$kBRd`x7) zZ4iMW%W42hnR@k)*AKEUhu3>`)2$ucIup?+_OQAa&0n*~!4vj-5KB~+i^@$En!c$* zJJ!|2D0v?bQ`hFhBX&*)BCBb${gwlVnz8XtB*((s*WG!p!}`3gj$6@xdy@3vb1;zy=pixAgqwcc4{1n%y))pE z2YJ-=--ktJ- zt%Fx)?1(IoYNrm{enN%JR^=Zm{PU5%uDNc;ERXafSyVqe7M>R0*^+h><3%5F$&RDq zFB6c)F?a|c-DFI52)ECx4Ll`ckKSY~g=2mjmDCi~tm!9mQ9T7*)ZH%+3G8eoz&w|Z zM9A`kFR$*8M!#`-4i&(3l!G4ppC?X0E^Ppa*Y~U05pN5^P9gZ-n<+oKci6qdEl2~0 z|FM_>)TIG<+5qqi;#N2KYCnu?8+A#W`?d)4ns<#(~J`D$j3lrh(kz z?=Do+M-l?DncG$gxQFv9ujHwOC*1};d*Dy2M0Kg! zPZjb($qX3t)%X#F}q1rj3b%QGt$$2-ykOEx-I4hV2+nJgq;5bx=rE51yq_Zms8S5hKp2~nFo zngQ9&gm9L}=wgM~+gQtwWL#TMkjZWoi)$olKW%|mAwRs$pm711M?O~h*9-dfjmd!o z!bAzaLuNh=n)PK_ffze>c71j!ZvM|+;tX?}6H}xq%3^12P&05aV4HJpOT|23XG0VF zrhgLbWERtfp~{1%LfmDr?Nm)}@Ah;=-k`RDw~oT!31te+u6(h4&0I2i*)#mO1E)u< zbNLj*XpvKNb9v-odBze!sxy0Iy*wt@M&D)gQjZ+!Rc_2UiV5M&v8ihMOO@{>)l?rk z{vn{?D=W^FSk5b5hE9RLyE~sM#6C29Y6|sti@Ybhm9@cSYWV)l6|kh z*lQS{3fn9iK7~*a0ydH^s(uIC$xs$n7>SsGF?>1ozNobJko$J7gQM9#m*Dxi+)PRM z{#bcQ{pzHYpZ{j645~|$KrY8JCv}VGWgmj?s~i59bS&v#2Y?c3SXd1{!>pL0>5X<} zva?gFgz7)QS1ZXu0z=OkZF8BMTkq>#I{=)RJj6`i4(f&ZFw9m^XX+QGdNR}Gzf1w)OId-bC1Tfj7Su8Z=(trP$RV2VNouF`9Pw8jz{AyRt%8nq%`?g# zVH*<{(z64f6}j-h4Vc7mLp=Y1U8}>E+6(Q=-6oB7wU@Z4V}n66D43!33C)R0Xi{zs zNKpiRB&|gW+o(2h~t4K0Zp8+*S`(BX~Hbis%~KTG}POOlRy_ z$l5ilOop=5xbsL)o>0p>2FzD`eixaq)-Q5iryoei-3~Oq2MyBFMpsc9Q9?pIs#yV>BA^S8#J%B0q zrp_f^O-0m!u5g=$=4>#cx0Xz`&>vDg z@mBc3d_caXNF@K;OKZ{yR`sb`=2%6D!<+#O788sW&=F9}R-Em}D^aFb?NwG};=!~} zxJTlQZnj`n4{qQudVKrkzEA<93vbTYa=K9gV-oX9iekPdE^uCyNNcm=)p?Y$UTmE{sAN`W)R$P|l{Y4iV_#JkT~UCA0Q_z$6ld`MP!$H=dy_}zNRExSf++Qo zn9leMM1}~j#OkUHAdt_4K?$x_-?vWUi(zJv@D4B=mwT?>-JLj{~`K=e%{;nJrDkI8GAtnRR=2c)!LW)Xxduf7;XbcxHJJ^-8+>(r7VR z29=3D_cf2#y83e`q(&Q1wu?^#un{W$a$LrhBvB@K zAUXSs5w09SwMAE4aVciQq;#^E7wzEqq{>1zZ?`Ka124($Qjhd%4mkKHpCR$?@mkcB z&Q{a}E6YX%>2$JmNdx`HkTMP9UR`h6P=WNG!DJvtW?G!;KG}l1@@LiHLxFRjRm@P0 zk`W-Bb715#e~$?%lyK{hd_yX%(6#IiKkbGL4JuA-7ez}akjm6-hq3A50AH3+(sBSp zUHV5`#rp#rt<4nXl1ziKl83PglfP`oR+Fi5Ov;a3Baj`<)T#Ltyb};F_kcf zLP2_5#J7X0SJyXAnxCW~XYG#MJ!81cn->4e zUxtJr{M1*9#ZWX~Kesy=ml@%zf)83B{PyaobFJw`3kFuu5^h%&=HWMnKOFn8W!Pt{ zjMhe|a0_SQ*YYeGNdQn^@917mv1zo$e@P!%xzifhZhYy+tzXyU8SZ;<8@$s` z0z!3$G5)j2sql|jl`y%f`U{(!&6+BY`PyDu-qd{2ZnM;JvprDFM;~^A1NOuaQ%J3w zNh*m9icb^@{i*u%bg_#2HSPiP%$Ff5%-X;|D^#(tXlhc*+GG9s8%XknkK~6dBg%v7 zv(Jb_B1*t|94lR3RA&tXut>;CVNe!MZ*K+qG%)vT`B}G!eb>_XJf4T;3X2obBw1gV`w!vbsE_#V#?e~bgGiZpefuYQ!K%@)cl{@G{ zg5g1cS(iN1(wc6;-iJ)_$x|__*vP?>31mV~%d5+>qVZ$Q>$NrZ2IACQg58^E!6)zF z2x|~eGI2q6Q9;6xNUA1aK0c~lMFDH1$|pXzgl{7I)Oe?}Na zai~|y6SGmkMY$?@oux{?mefgjy9yI0Jmy+oY^iuHu6qJU8uqa%;0GB<$wYg6`6wQ< zfs-?Ju(pBoI*pq^fMM&TRT*zv)xuXO5RGPQAdRw@vV&wmB`uR=CaP$t&`{l$GZAbPi=Ht--PB0 z-CO6D_~~SOvI7=Lm%YRSHYfq~>0b+pk~S+du-<6}vMLTRH$A#r8B?k>RK`x(N3Y?; z5!jd!`GBz&&Y+?7;99oBMp`t^1mi1*>}|Z~O@HE~UXQqZZa58mE}8lhZCPHC4*uPA zu?u}MBtZFLg~w{nP-eHv<)xpGivl(w?+@J4Sou(=qQGO!3CV>9oI6DpixS3w(v6dc z;BVO2Gy)S-ZVA7%H%kqD0bpIb%}4ikwbNejac;Nl8ueHU3C?ARt3Hc2IPZ>$$j$Vh zi7D-KoNIrM&8;o+TF)v=7AzASB>bw_xv(A_GuFSWtVzX2g9^I5&>rnUGnX1JQd%ruof9JIs0I*~zc4)gEUuX|p{gMKs~i*&y8Jl4 zk!XUM3C@2P1dBLz#KHVMRYMXF6#eWLrQ*h@A0ZkL|rlO*RvE z%t84;K@K#6_CbPTLPt!vioWnT%3t~K1ZI8b^r2d#_I3MKZPo4nv`k@AMNiv~BEVt&WTsm0{OZJt37+*& z;3S+RDGVk&=zK{1{l|U!D$H|e{}-FI6UqW59K*^H?BBIqM)v=E_GZIdrK_TRbYbhg z+Wu>ne#JX20Aaq$jT@GZ&AG#yzhm-=2;0g<2@TW<2ICyZq2F#mi+wEejvtl^eNU_0 zutRk;5^w4t59M(Nbx9Kl|Jt+3nU#4_=f`j$habKk3ACu%a%xJrdhObIAJPGnKQq1o zU6Fplavml_d<~j~bHTq_l*m93e=Q}3UBuE%GRfzX+I}(}8nteMUi2Opu>wyN7H1F+ zAHbCU7cbaXDEmi5<;HRmUojp{W}&*rr+zAT8Uj>8bb2fdhD-4&9c zjQF>rNg;Rd17sq65cAEfdpGIG0=O{(#tMxX`g`?pSK$fh8BFmOZCaRf_+Vw?o@p}n zJ2zf#YVzbT#RpL_-X7w!5Vhp=Q{&ulIHPvT8a!uum1<>E_(hlN>7@rqCa zzGp&4SHq8@UguL?s|2qafdaZZ0~^$?a3R=@;zwkYV_!M_=(WD2Je`$`!5g5&#u8L= zA`Ly2X>pJNC=V!((8|W@5^k4t2h?*o=&pwm3#^5om7zDZE-@uzzV$;gHYVy)77gw$ zmCJXF$^+z>VOHa`-H|}yXpghCfTtmkNrtIg$}MrmHvCyolKu;Nfi?qW6mh_vtLUJ@ z(iCE;hE>?akaM){F$EpGDen_U@Es8ISAjBkmpc!Z|3?pFZ5(?rW)2cQm8M6lE?S5; zjmE&*^GQxD%kX10IlQ3Vuerx;7C(osM{{pwQw56TN_Vb&=2fVV4%gvr8m+AH=c;AF z2uutaL&rSJ+T`3LdRT65D1XM`OWLv-csbWXwjXRRAQKx18_v140^h z@nXQKs>P>w`lB|RtNwAXu<0j2n^7bpT%01fXVSdwK*xCLUr`>_ONP1c9qRa7cNLz6 zC>dX(#Uiwtp^cvNGeOji(id$%q1EDt-ss8y*Xy1*u_gFeF7rTDMJK% zn>?a~GTTw_cix?)8}bgKn{#tYl(wRr4SgT^e&sDTdev#=_uGmj9OiEl&~=`99?@=g zE&IehyGNFj%8@Q2O9xLWa1(2dCbdSjh8(5NI7Ml7Yd1RMM0Mu3Nj7q*Y&v};upUGS zxGisjzI%ey4P8qa+eq~cXW2O76#V!s{&i`d_U^D!{lT*j)|f}qs&PqSZ+;xKv_2&^ zj(I(LVLIJ7%=dCHYW*n~r%On4RmEj)DB7hTbKIr7SK=z7&CO%U*Y1It1%+8fLemHg z_gz_eGiQ1gib--oe0Tl$Pd#m2Q%6<;-K#POu_vteBo{FUM~bpyy%EA=Yglt?!PLHF z#wwYTSgqxD(=3NLm`C=zJfn@_fDq*^=!$0w`>%osgucNJFvpnp(^SSzquR3onw^~f zrqRyP>v~J9qrx3T)Ougf9EgFRfM~UEwlx7*TL3aPdlm)_J!JAI`nGj6JoN+ zx)u9iCvRUc?z~y~oXW)(u5dRBZ?*Q!@$(Gam>N5Log%TL=iVKHy`TJ`Mex!lm#?I< zdPk9WwS@=bzbmDzIO;QC!c+#yn&`8_dd{ znL71UD1uAo@C(Pws3mAmPlKr4k1e0f+4M77@Jf>%QS;x3WW3a$mAUF~(nEIGy&moD z?rq$Z)hWuJt^MV6=iS?}Z`}2_M3w3~i~n11SoG@bhsxIuYeSVuC%@n2v#If;wfoa? zzKzAJT1yl~pmq`4zc45MaDYbT7{x3j!GTcxRpb6Am_l2FixLco2A6Gmf2>1{`Z}%x zDwE4Cm*tfq#+XUn#cF4punW{q;TK=F3oA2_%GRC|33mgHDj> zIAU?5`n$r9RSeXJFP1{2?QYfM6?VJ0X@=V|r9hC|hi@XlwD)MgJW~X=kotiK7^cWK zO=_uNTGYs@YNGJhXs9)|YTAAYn$;P(_POdR0%7ScXAmXbMP5e>hE`mN&pq(;`~elm&q0B-cx{j8t&mjIi~*(x@0bSa!s zz=-+^&M|?qK$0UAjP#QCzN=dpdm`AZ&Yjuo#R<%kPQ!67)1*|R+cXWz3YB!@ty7Bpm6=7M7ikxrHRou|a7s^fZg~(4uZX$ha{@<+| z(^zjM8JYn*zyHIJj$QGBjs! zPd}WQDo=eLhb*F+uA4!e^ZhBIsP!Cvp)m9|0Xe8SJhj83fhA8(;NEg^N)NH6Y5c(GJN*7)UmG+5F+{GL2GpwiINQ|t5 z0mlq6tHf0m#1}E0@XC{BtK;q~FXpPB{cZyi zoVR}|*VfZC;wjF})p={dBvt8KU*oIO#R{3lP#e3+-cFxu(A~Ns&Yy1UIOvR}T9tac ztEDYfQC|WJRnuGcJkD(Cr~!;{dX7;n-ht_sa`DYeTqI+2$qPeNS< zGe*cRsuL0#EBcq)(_v+Q7Cm(?{YD4_h3OPrT}DCGD7!nE{=79Y!p z`p|I&SG-Y`vd&AR#%R0;Zs}iU-H{tn9j6gk5@-20KC-JhXAxgw-OGNJpZq@41T;~x z4x3wgNNlge-xA(&RitXnuBNM?OG%9czfIz7g7z{;MX?E8!oR9Xf9-L=%)*qhh3(;@ zN~!Nml@|C$P0x6*Nw2^{-oST13Ke`7wo^LH5A|=@;8SvceJUIVjG3+8DwB7CN^x0g zHu~-dK$*@k}b8()Z7NvI{QJ(VR2|daa>snV#IlX3JA~E)7P|kWlV=|>s3$!&C zUr314Yw#wBMe(qJv9B7y2nkVpO>(T-j@BFU&k(A71NlsxrYwWWc1$Tks!;5m)T%IV zGWl;h9SQ!C!2>=wY|p^ceY%Bs z%$7SY!V_+qLNzrC^ncPi{e4w@8P-;YXp#XtV|JU?QSdf41jAB>73niK9UoP~HTtN4 z5FMqIpI?h#@aE<{o+LZM%$>OnL(Xr1={=lmnU;dC6AkSd!K%=bqSurb z!ZQ&~R;SmC#o5^X%9C$hcGKTyyd;jS&i!eUS|x>#k;6C2udD&ME0iT?S*{uRgBhIQ zuvT3yCR6Q_%RHEWaSMkK{|qOh+*i}gQDHL6sl%e$us2aICbqTWS2Q)Ywm3W?5H_8L zy=+NFetRZwJWTH!)z4x#3_PaC<#mk~Ti16V+jDQenSaBha&V$hM{tqfCn>?Zal-Av zT!6SL*a@7LiLgNXn|rpt*I+#Gy**?Z94l%oDDrFrgxCy*%Jm(~!O0*86_?%U%56wj z6Pe`%(|eX2aw02i#|Gd0svHOzBnrXbRqs?udTEcwV5QYbg0)L=usZ^*`&-_ew(-$-Bc zeukWJ+V8o*Kvs|*>NWbRA*|tnHlfdN25KigJ-Dhy{JAAlCdzxO@D3p$kA85%oI=!!anC=y2EzMO6x;In zYji0DYprXmp6Z|%fAe}B!#4<{u6yD&W^RiFidys&=&_$QRMo);xoI!*KKYsNDMe#pJ%zan~>|GOis3rQLLZ_fxW^o%fbtrGj6&4_yZw}KEX z#);~2k!uMGCYre+Timt9`ZBj9;Bxus&>rT*fp?TuFV^OdWyWO)OV>A%xhoRZCy%7` zs5?mnAu0U8Hg-S`FeXx5>y~pXgnBMBXRV9X_BtC+WrgqX`#L*9vOAm3VFM zhi8NM_D3U{Y|0C!45TX?tI~B2GGBJTmS^&R+-=F6axb#U8S>XdJqG*Z<+@av>^C2~ z$##OOninORcr>=xStJctr>I%DW5E7;)L&Tjq>}J1w!-Lp0^}AO+MR?M!oBP_EGRfw zj$0svb_QgwB@y7kz_s-@CiPq99Hb8-c?~wJz0P%ic5@x_5_K#jOwr2Y##`tV(r+Py zvlhQGgiaTMGE6C~9UXx;HBz%kgZhk~BZ2E{>Lq#K>LNiZj$H4y4+L#3m zW!|E8eHZc2$lxL+gpL&D*_sy14d7u4FMvjD z0R2_(!_O+|AEkF`SrHc~JlC;GkOHV3WS@4&rQ+99p9h=PcB18@GOmT^Z}!b_Y*arP zVV#0}+*?juV-)e~ig{5D>jpCrojmRZunoCfDeL3Ar6;aZ1U7hR-G{PN>5#i0=VK-H zB%0A`@7xPaFMWCok~!o2O2Mz3IY*Q#*j9xCAZ?oqcDnqUjpnX20mh>Dn^C_{7T9eV z>^jXOmq>@rd*wMj+8P_GS?l(4;-Jh^)oogtZJdDmrw%fGumWd6vYS zw(5U?6Fb2Em)BJt54m?5ow+wb7}GNA_LLiSz)X(rH_knB;TP&JtdiN_%$9*lCy|ym z^)edW<0nV=+83>hDKBj%mdb79v;X0WTfN1WPfiIsxn(8~*xBjNStq=A$*3+N8EdY< z`wt(LFG(Nh`yM>l-%s8z{9@`@FeJt;w+n7O= zRT2w~`(*;)jBR^vhc3{QdqVTQI{Z@!HP!wfs`CfU<)Hq#{6F)o;diL@GJmqn=QG7; z-SYpR7-7*^Zs`m&G$q6A=dItM6)FFf*B5L{;QX`8$4ZUu+p(s9UY^E|0U2hC?Xdit z_9w2BZ^aHPL=W7$I;1%Pqq>up>3r6?=u|%ZZ{qeHmMXomlKb;}({U>Kr9nUV#ThEF zT8_B2(mcjqL9DS0Y)>4a^NCgqHWeCQwYNP+o>LVJLRGL;RddG-_r0kNtGyq7Cjemp zoy={U1C9)ISCM+MZ=lh^)UH#b+VguuHHHxP2~3@hw)c3TQiYYs4dY>`%&`J$-C5W} zSW#|H!g7wX65dv@}BbdGtXm54ePJnBjbjrGQo7KFn; zlWV5W)vu$OV)+%k5QU4C`;9HqNkS_%N)6U7-S?jpMv9QoU?=6!ACQODb`@thy(+Yz zaVj+So~ZmW5%ln+-(Z1|^RAgRU}dh|FBq-8bd=rx%brW3ncw;gq$3uhW&>Rq*{c|P z!zgrSOZ||N$r|uhC9^Zoed@2x#paW1ythj3sq+$(1-d+k4lEAPm+-y;pNkg70HgON z{k7FkXJ&pN&?m$A{Ymyu3pw{d_1=Ea!s$B8N_F?|IARC}uhj4>8SF*J_S?#{hz3nD z$68Q$NF~MWQ0;H&q-Av#7Amq?q?)xq#>dF&ul5tx%r=W3U#HY0pS74uM}{mR{GWbp z#EVyeFi(r!_`SeF-0kNMZ3~ywf@BR+%%8_vO^*FVQ9KY}5eUiPe~bqjumnM(AIgGIFDVjW+$Y=!^Ef`o)- zM;pJvG(7C9PMknpbj?>LsYL%QFBN|enutcWY01@`Sg1l;wVslPzRDv*?kMWcVZ+yt zyF$Akf7jtArE-!o?Ts8}bGYyyr#7^i?>)(eiJ<(0pbdRcVh}tJnsYhhG(M)=V3nXc&G) zi({tCxQ&ja>0341?Mto*Duuaa$Cjs9%Mi2n5uk4YVl+Xt)@}kNSo-3C^-G!5MO1gB z{_Ft;s(ga1JS<-hiMDad+K&7wbG=Vp2FM8ioCG*On9`WzZIW!ev~=}keSK@QKJ|Kh%2v}I#gF@=NtGpskM~zjJb09g zC-6O)+aXbmC&!!iUwSF7v_Z4aqU!~f>g*_ZNNL(6moE6^bOT2lVSR? zB6%!U>|#9bz^x};xf7MN*_b4W*UM3iS&)$h2^WJxKTNo8XZ1qOV%M0eQOD7IMGYW# zolZILE6PSHv`F=jMwcL!db zvj@q-r^&*y)fj2u3US)?F)p401V>Z3{l|?V;DBvKJn33CTAELTC7;R1{HM<}^?5P+ zFo|vO1UQ)1VAV8Xw2}8#`>~X5+-}MB^Yv?$7nNSTyY)iSfP}2d^Nbj7!a(k(Z3+mP zw#(L59ME)nm!wdgxG41ILpGfv-9}`5rmpISm_Dg=i((6t7#DnRd69HT$fUB6ASj87_i*AmydaUr1J~DU#`v?yZUK&NgM6Ev7 z@LRESZzb3b10=5Buu$N`AcZ0422QJa;g#$tb2#uEu>L_0^04M^h@YMf$|8Arn3UY!AWbaY`Kyeok{@`8JOG#qTN> zU(?g2$Or6eQ1DY>UlyyUVm}{)N6x;uyin2TQT|ACXG;!TVp0iG)DxEqzxHVNQVrY5 zWfI|-Ko+(8J}}%_BNl5qZ9X+%3b3GkPEFFM_p3M5AUfubd!=5zxAV8}a zk8rO(qmS6-Nyd>{Gw+*sBX%&c&FsrZLy4Vr-^fBx1=W($bay|mZiYPgjMj`C;90#P zZ=VSUhcedUG+xMJCvajXL@`SQF8fA3;BY!BZQSk^&fl@!2i4kC@LVS;fPNf+Qm(}D z(-b()yFtlTkG)sNk3SLZ9l6a%J9Qqr(RjD}(oZ%|qzyB6r5t;Nl9%Om2E>wjUv_kv z?>^8cUA1P@DKE*6Q|Lt9Ur{>lQ0S}8ToSCi4W!qVTc<)3$0Sy>C7h;8i#$7{%d-xa z<6+0hhnBBDZq&7CP*Q%2LiI3h#~969_FJDtl4pwLW~!m&x4~jbp4AXff4Xn?Ue_$w z$N)n?3UR_sE5}xi0tJl{kmR84I_>1Ua4Pk&2KM$H^PtY(CT;%1 zQzf+%ces7Z(7Lp@L!QGv9(|QORbuF`+Ex){PS>r&Q)JgM(2AOkF$5fr*oF4pz>XYP zD-)4V%7Tt!dv=5dn=mkvFd1xKs?zT1L>Bv9A@Lp#OT@i!|2e(+izECO+tim^q`|L3 zJW4Td!#g~xhP*!Hhcd0nP-s9aYev`2quWpbiN<^6Lr3w4@5RaiIR~ORV0A^CnKxqQ zylhlHhJTYcsstBrQG5jRp{)fWDcvFLOMyl#h zv9Py}i@zLygG}D)2y843_Bb!eE7iGi}eq-HQ(axy@kq-pK z{}%0KjcFdQ80?ZcH2Xhs7I@=d{>{GZwm^M`7d|i(2Vk`Pa-^s!4qa3R43*}88VWC{c2;DaBo{eDL}$r>DF;5XaGhW)HbdL=(Brn1*Bh}Lf30Gh zhe6_u59?Sy-_u|CJeS@nUQUe9qUFC-XnKzm8RkT83nm#l{(~9oS zJOJw4^4NgQio7sI$kMz*#6)K_NEIUo7=+Q?hyp~+aeLVhbcMbf=Cl#UCRfufXus5v z_3{3=Tscx`aWZZW{nMu| zxb>m%eC1*PXO>_ATQbl7G4W3%W*`tCzpSL!AK8sJvO@&X62N|)>(SX@o}7JPhELrgX$nL8^mLb^*{V80 zjXH$=%;7y}MKMoC55uiV{8cm%Rlyzqi?gqcigVevO$bha1_C4mx8M>qI0SbM?hq_k zfZ&Y>w?Kg4Gz16)4Q`D?a19pR-D#lh^}hG)chA}Po%{BC{QCwqMt|e0s#SB%HEYd- z6>?j=Abb1pUCqkec-|C9Tg{xCxHJK92s_x^Ft3HY$Q*#VmK zVoBbAxrxS5EO;w`pZXBNpaosXm~Vm$J`Z{xN$Uwj>t5b1uVX13e*|(7yg{O`OFy8H z0o(a6SNFh?imJ>L9nU^{n(dJja`EuC_#ZE|kN-Z|{gT;#YbQvJ{1j=$jMLhhXZ{Pa zn$ZK-%aHM{ie;p{s8po1)(_^ZNf%Pwo^~r0slk(5(bRdI%Q$fYJh- zNcw}g&1St!Cjn`s0_|JVDFS8ix!a)04W_doaPJ|`1(Ne_jw*6b+K=HD>EZd)RPGg^ zY?d|pw7fJ@J}H4Z+x853f)4!R69)^seyql@bCv+G#||*Jh^qYg(lpJdnrU?UdmltC z2dh}RAp>PAd%{yUusDRrI5!2T6^uG}mYwYe%P!TKcS2}IGO20CS^|-%uKr$fw8^> zU}*9peqZ(@9n?3d1-jgEQEwApGNo&;3+r@&5TlINnZNqAI?y;Ndi~7uZW}}SCw?F~ z^@RVCeGqMX8IiTh@7Y^lx3_9oZvGNqW@zkxuV+D;ZDPUjQ1l|j_acdcg&zOTd_BUT zX2RS*WK#qk^H4aK7$>XyJdJtbjqu4GJ=I(}T0T6f^aiindPR~^Fu-lH_54(cv@ms5 zbM0N>p_VR9bRb#~LQ%-zU6aekucsIDPu2_)KAp(>FJ=w(eAqP!shG_tx&tp^XEjtw z(_IvYnhf~KRLm?Q)Znh1hf6=cTE@41wf9$XEDV=a@drzZ(rc&=RO5Fk4^gakBnJs| zYvxR~M=>CIo9YJjUOv&gN^znn~KO$PEkKZHM8A<_Y0*8q5s?%SpK zMnt>6)o*#Py;fdNAit5jziv#W$)k-cXm@+7Q*TS+?i~;cUdWI!8aOTs=0lI?>}QBM zObtuIk&o>pE~p1R=+ecl@tW&jnza%NSoIVm5!Tx{<+{^ZLnFe)#?~3y$stcLq&n4k zBJ`}tX@*}9C*fuA40ZxLHiF^Adk={jTFAwvO}2mHI&b*)kdzA8=|8bbE9&uREG$Q=Vu3 zlaThLy!^_om^Fxs;8bwY$lt>$tFaYBn*4acu8v${nhqQJ(c*mfY*+krC*MWgv*9># zp|Pv-8qt`>`J;h#PSABhyRm4C^P4wo%?b@Y-;r9L0{V?2Z22o9_LB=v<0OzxWc_+h zNNae=IL6=9>c@HGAreshX}Dz*$zuB&IVTiohI%D%CyoRQ%mG$`xv=b`QiB#42+gx| zEc;eIh{W8?Q(nL2%rk$oylBojwY);&ymGhn7Iu0AKON)T=KE`+?*k^n?mx#5?S(jc zgy3;nHQon`Bd|y&k=|shY{CImjA!lB8HxHBc7^Tp$h0tNC53b35>WtQ6IM;l*x*q<(kG6cO~_?8{N=MEf5M%PWl=wm5t;1c;MCVCG?f=L65&= z-^hTMGvM1RH;LXYAKX!ncZ`esG508w(Q^l>o!^2aIPk$k31ND_O(@-(bSDwvV zaz?(EcagnGKE1^7qQ$q895`0X?N*VS=hXHtIEQ!V@C!1r?4|*ncV0+ySLB=L$XkSW zqBl<^^}iDB^D^i%N`ktR5SJljZZH;uygQGypvC$c=gcSXftd`P!qw>eyxtZ&jMB7mg2A4ay zYl+*-%F&R&$d&)wEr|b|owZ{IKoB%$=hI(TlEpta7WAnCVCzY(Khg3NbKoP%U{N>7 z;0eW9pLSkOjZ({6G$_@4?l8}`@u7utNk~n1fF4sW62~^2{sVCh_bH23w*}h$dA-rE z7ZkN00NdiL#biScR4!VVIH^K%AB%rooRj_M2Wk^XZ`t(VUr~vhO9?sO{Gi;g=7_%O zUQ+=>*^7M7^p%?tThRt)0~`CDuu~PgufsMAaNQ+w+=6i2z=~9fadP;Uv{vrcY`G9`gq zr>nbt9@xHxj$q7LdRWmCbd~0NQ`(lY|$B*wGoXt%uXPp-X_czKuaEL_FvDF<9} z$simt2$#j5SrC>Gp;H>!6EZSEx)x|LnJ%QaF&#s-}ua8RX z1po=C(4JrIGWM}-|6qarRFA{%l0Rkh+ik?ZJ%@iX-3*krD2F03Z(P5eC!PkK#=7)> zw)y7?u|PYOL(70$E^4enoR*934M8o=-&(p)v196x;&e|!qF6^xv*HeW`EFNS*ouj7 zbD-)$s|1W4Io;PSm!ekF845lGm!j%@?;Hs$8LR~@+o{yFrZXb3hs%h;g^4K+NK9vV zK9Bi>>rkHR==Qyc;MdQ4#2yChaxsMLJ$t9|8z|te?rHWt{ypQ6M@Te7KctKq5cQe+ z*?A5oo@8gU63HBEtU<5p)ZJ=2kK}G%KGh2}qI@`ylf0i~_bjR>{G%}eX^ic(4f=@p z#9y0KL#5rKWZlrW9Y+*M&#+KAAbt=}hFwTTzx&p!-f7q|4~yHstjB-%(3!^2iPmpi z`E%aluUYOt1*5Ya9M6bY$ycw6Aqm#&op<4v-APO}9Fb zadWl*dqu0Ew{-Ub+tSBLu5-qlL(nD_2#(w&ZFxElTh8#p5Z5)XDPL$aMH_7@$21O5U9aPZmPuM_*Xz-!FuZjQkciP+NGfmMWxB4gr^yE#X!|hkEtk zkIqUH=5oMDPAYREmFh?DVP#AwE7#3M5W$d97%xXSo8U(;e;xg82-V~ey2L3ZQ;Trm zXoufZyw`TsJXh_eat(j2pZ=Rj@ei@i$wRdG^E8KSIzO*EMl)WY2UUzqQ?i9+8e%N8 zQS9gMWtWD-ZaM}~7N%S7tKFwdhd~`BV>qs+a~05#-;^Y0u> zvAAdr1GFaW4#Savi@pLnw!!a|8NC4^R;E?73GrCJaAu~Z{Cw_j%A>J9u_L7}I(`_6 zx;>~FnR+l3{cZLzpOI7?aB>sd#`GdQt=<(09Ey>Ch^$tdlNAw2soOWiCeZ0-oHBEx z;GUl(^NF8yjudWV*P?4N$Nz$*b(%a0T41G1<+NrF(dLmH5aig=(NqG1qPUuCfuz9s zB+hk+$G=-^e>ud13a6)|LemY-ZVu`VU&-&C z%hFsz3ExKV2_E$aP~z5r6-rFTSwX)&l$M~6cl2)Ija|G+8A0dh7c_sUhT3FD`k8qW zJ-7;L(Q4ENIfe)s(c=V&-fkx4jk^y>6DfClspbc^_Ijz_`MwhOp9YcN?5OHNR6#k# z6lIS^Gj*ID6HrFN(w!6!p+^U>Pq#LzeUG)=nGf#;&@&)5%bj#??+Z{W1KTA~gin|5 zl^79cX3Vv_O1C7@|HFQOx&B`;APOtl$W2{KS)AeR5DDK?ENTjI2q)UOX^S~F6_<{$cU&KZwr)l3^wzd@MD8I2{XQb9>}Yk%$@=tW zE@3}a?yEGb7EeBwk4}k`wBQXB6IXf8bi54A-V5Vfx}JY_JK$Nmkya|!p;}b{F9)5l zrO1+(R4wQehOMfm96%o9a}+K0(vS$g)n0o@^Ac#evOVd0D0vE-FnL3c>Q(-hLiZ8* z-(^ex1nw*9XtUbOs8)gNN3rC4C=`0rT-)Xvvv?5xi^s6D39dgQ+xwtp_Oh-hr zt7POyG)^W}CdK-^r=XXnbL_$dH8yZFAgvq8r8z7tXV^;V?vCh-wv27(k9sV$5ol7H zQdYgJWW`Bi-c;#oNa#J$1=s}fJZ8sOeXe)(lGDL-50`vb{v{U#Jv?Z@Uyf$SR*b(< zEpX71I$>;@AOuT2>nRgw1?Ft@sZ453HO+Rw{Y(Z7_Hf=+`D7NQ5zRn&oYxzInDn*q zT-|c6FI8~qckdZ@3KM{XYDH^=8Tu_f-KQqn5Q`us?uA3l0J8u&1XRN0wC@vwXh%mk z&$V<2ohYa4QDIm5qkqi{{)|9>xj~T8`HTJ!P*dJMZ}dNa8aD-Wnb%ysvX{A&sV8t; ztt!Q=(5`TIz@WM+abY%=LItLrA6+4L5NENS7k$J;BYd+)PPEjGssrM_%h1 zlV)!OqERzR;fjwi?jsXOD1_CtyrW%~P{#b!^*l0Kig*ZLB_vvH10l^z6-gyd&vb!V zqq5k>Z1llv{n$msgm9lUGQyl}`#ClvL%U^C(wEOHtKk$7neJJW;E|>TRRip+%!yvN zHuIgCq#H<8h8i|DD-GM=G437r8Y1$F@R-yeNY*_<5ZX>Q_t{5WT9(Vt(mED1$Xi}q z21^DL0@41>G|{o7e${f^A)e5yhsNtLm3#TVhAmBbP?BWg>nz*S>>jo6YA;QSNToJ0 z9*=G4R45CpHCwdj8NbA_K{xK}vuv4>znO*oDTMA^Qp^`vX{f-Zwh`BIzf7#Tvp_%Yh@QetynpQ6eZ=x2GtsfDZ?^DG zOr=a2Pmx>vk)=)i9dj95x+e9`ou>b%sQ$ATX9It8YAjTUqFh;>77YG}z4uQ$HUuAM zq?OdLTc!Y60aNoM!wae%FJkfTs=8ZXrs+nb^(CVzDbL41Z4(vx8?lo={p(=90W zyn&<9fgj-FrL@plZZP|1@BK%Xfz#c`R@HDyci((T^UFL9_|Qn_4#U1`U(S0LV9I-W zLrlhDDyFX^xfmZ|KhwLK6ItnY4o+Tm=XL~@zm*;p0lDTNDiN4uZ53iVq{F4-@^k@g zbzRd2iZ5!*cAueo0fehO13{0IfNm6c-&B9$8-eoDY4pHb)e~bkr9{$Kr1u%n&ySjN zGrfPr4DJu_ROMa4$VP0>%8c98;hjp&8P*Aicfs&*X*ODBGVUcI2)Q7V;y2A>mFBHBg`LCuq>+^khL zs0e94V!+<*F&Ihxw%!ytn3g48@1@N#2(K5`GwybFexGvN^b9(}0m zm407a2B~Zi;>!2hZXl|10mB31l3g$}ajJR5pV?^q2d^QY+6Y#28QBrX&d=~9G6Dgg zriXCA2GLMfPJ+EmpiI!L-}(-zP-H;5ry;_P8$JGoQL*nwmi8Bxd_OW8K`Hd!F?%Ej z58+>4XC$7>4BgNNQ739};mQO{)n4+3My;$)Jr55>3BVooQ-%q?LNBy7B9}k#Rl4Jd zN)bN04O1MVJTes4t+AE%MC_MeK&u;>GeNlEgOA_U4ycQ0TqPMLz<8I=xuazdZyyf1 z(}=Cp1g{i-WWKkCJc8g$^T$q^eLf4rvkk0&OtnKW&eHOy+!slt+-UAPT3wpkryvvY*s*Soh_KVq;QkK$l+M zT`Ut1i?Hh}GofH8ixJVgQP^IlH~HNzqZ!&+(b@gOZgYxTOeL#m%<7?D*IPP7EQSgJ zT0ggh^<7o`ImW=t`FM2X{7%jQJ)#kVvmaT~Rf!t7d8Ef0;?ijDkLT%Z{y zo#fb*=j1fGcxq9b&B>X=mJfByQuFzzaFX5j9k7XL>@)m`wlzQR&`o6JYcet(yqGH1 z@GscFoW;=E=}R553UVx_pI)0S<$w2R+cG5Gahi<4+TaFLGB~LQpHi#sX^img6Ls5n zG(J}usiW3GX`d>wW=96Y2kkjVMB`zB^Oj0lIDhvG|I;p@VwjLnY&qWL9^wC%Q2xew z^bMQO*;RqBhmsX_FjJ(YQSy@gvjH9Yf+{304fc6>*Gq51O6iC<;zB zI_npVOYS)VY4)vL^H6@RD%DoB1SZqp%$$OhW|(O8R$At75FvAT8^lw?(s~@y)eXvC z5cx|j&2E3TwuBd@XfI5?d?o~#KlZ9B0wq-66zh&z0weHjO*W+$m|f+c?C6vh4O5IT zOom)tnw&McF7^7d#^~Te`2^Q%CGym9^SJ4(M4~-0erUf5Cx0Lh>~)r|jo3_%s(Bqy z(v@_L)~~iag`Yb4(s^0io<`3@MRAUQ5o-Xds!l+Q-)bV?X^t!K!^RCJr8DDl5&2z3 z+l72mFnw+*89Y~{OMQ2~=3)AIW&FV9*{*5-NNy~}@2$4XK-^201OeR~H+W5&lcnU& zmufd&p1(;ey@_SlX@9=`>sO(|&hr+2k_s zV>mfk;~VG1sUvE-`wnB4Yk$t2=MxatFp_H`SKiBSj{~kHmlzswK$giRRGl@Qh*}IPTXj6r4akySw@Hh?Jh!rzF>2=x%Z!!d;jK%_9xi*gO@m^2>A-vYutURT~+~(`=B%*u*u_^bZ z{0mkxlxQoXG4&WHhcEQ*oO|co>WAl%ts0|ytNo9XRQwi3sCr>U6@z z@#kXmMv-jAd%rB&rTE79lHra&iQpY51+zjI%~ohr96YERVhgE9`FRh#ITE8=)xxHi z42ciB-Tdz%?*EA9tG98&jXN++{%be?^JM%HIzu2#A^F7f7U3)cC_~-LKM11lowAOf z3m>ZKW{({Jj}pnP=_{kGTCJHsDoreWd9po~kuRD1%QqHhwPDWLAFXDOv`3LV#&9xn zvpvP(Gq)A}%@?Vav2^>ag=r0O7l2IUYn^sS1Nw$`zgwQla{psN6W30QP|-?#H^T$b zO$_3iU<;x(z8AAL1LAYk)ciy{x!L>XbN^*6R6VU+KXPZFPdU0=Vv* z8`c?ru?b%IFDGcrp;kX>?tqu)o9jYY0Bd0ksvR<}F3bM4bW)Jk+L;Je5Svw~#A1m* zaPG7Pn8C(u(-I!QH>hvuG+>rha|ch(Q#!RX1-I_PEXBE>wP+R~)k;hVj(@-2Gp7J@ z``ho`8cFWG-@8e10sB&|s)J8&TIYo3vwr{h(k>X!BzC5Ohm>voaD1@1P~Wu)htPh2*Ss+=L5{qOw_A*r)6uP)o$=6dV=AQGBa))%PtZ-a2*0n1%q$+5aMzdn@A=LY z(kBcx6XNqt^BzEy?csqaGp`8vA$)l2_k*z>A7?*;^?)pZVI=I+_tUw8*RAVqDAbYx>Ya_Tu2M?)?8N<~fD1zu04HRm*XURn8)G7;X_7`@gw&jpU9 zx#}dB6+P9Ta(I=GPnw?mD2QJdi#tt~6A{nx%r&QVmz07F;vd4T;XX|Zx3!f)H)`u1 zWBiM+zuF{*n35_sH>YLdnSd~}uNf_$cJU=hvk+5E)w7a8dhl}5(QtGKXD-Y>!lev|{3UneJd_$_QF;@$FOhwTiAx*BsL|7RZzOs3zmoR_|C9 z((W?5GWTT2`|^T*%GAX)p@Kkvf^ zGQYFCU_?tYqxRDizgN?MK%B93eXTrHJ~1|yZ^E{upR=o(Ae=f|o13y$$^KzQHni_; zpOslm9*X!m$k<7AD|b>r!g7c>2APT zDz{J&q`PJwc%FtbK8u{Kudtxs z=uuZ5zZI7`+(tOWh*b0mU_Er&3e&9b;L;=rDM!cBD~^=_=5ui0-1!QfrO=~isgzdr zUlYm<`U?GB8n{UTyZ1EN&rRUpS3Z zRsAJO80&v6wa|eUGI+6vJGy?mUjkME$Kvebk+6@M2kqa+7>Fc9@71+Tgf!R(=d%~V zqa>Dqx-gg}Hr+|6#rZ=JRoUK&cj<0OnVIZ8@+q?T&Z|h}?H3qYs3`tnRk}BT!%W&g zd;D97V5N5{h+JUOl}3~SNOCi>X|Z1%@g!-up-TyyM7gb+=ONngj6U7{(4NbAc_BcV zQZ1v1>0YPBqT`x!QKh2v;>jdCiT*Vqvs(Z&*C(v#8%kf5$9gq6n^ox71E0oMclJ85B;n{t2VB!H1fY5&$A+_J*bmLv)<(sZivG-~VO3}^;Jfu95 zY^Kx~=GY43AqqoUoVUJVLo~ z@1I7mW*M=co$C;`a;t(Qa|b8as6mNCIX5K}+;lU_KUJLI?tK3G@6|s}FNNEk3V0W4;|)P7Uu&V0 z=qFV#d7Ryx%F^sRgEjA zvnc~Y_9U*hwBn4#3t5vDejiR%T4-qyiI^h^%jhUbWJSN(pDI`a-U%(?HmxjV8ky0x z_>^v$-6?y5$$)Lp{;lB?C(KRCbsz%s__=xnJ*H^urqbzE8Q|_jhvrEh6{h!Ry}-Tn zWhfJDv{=(ch+p2gY^8s<#FPn+dlZdc3IPPFAU?yx20+kePO6B&>A9ow>T=#`Mlee3 z9+43OpRPuJL&J{?CXc9d9t!I4m4%5Nu^bHz0_W>JDoalzb81LJ;+Oe5zJtw2KBx6w zd&t_wO1dElGk1W3ro}L6%LRdW*iJ zbyN}EC&7J%N4NY8#wDhc!hXB_3U@H5QKqjl4a(`Oo+ndKgC#@WBNpZ=26-76D7w=u z7KW9@(0=(<`ut&#NxvuMT%<*%QAqpf3(LG-7-2KVj(Z#LvaVM|ok7|qG?`1t_7T{X zJ8@=Y>N`2+$KaP2(p>rtS{m;s@t#Xca2!{ONapp9kHa`a4#{~XH(5bQe^;5j36@>{ zaM$GAlwoFK`P>L`OsHr!-I#xD()snioR?RqqDC7nA<>Rq$J4!eZfitu4f8DHfsW%B z%mV?*M-LrB9`gyCGpx{hR!!%u*1t5JWapCwJE#wvzlLuFu3ghpvs6w^NotDS=$6X# zDy6%z;)vP}*5{#*f64p?qK?mJdfxQr?x&m(gy}5vUHLCzm<+mzTeY_pwFPsS-&!@)fYFCuSvP5QKbIuBKVju(D7dS$Ooi+h4(_{y7 zMH~>V4?Zk4DWQh$^DQZtuC8RnYE+r#-{LOOk;PuCqcU zml7m5jWTq4{^rE5QU4*AfEa|m_xg9o-5HP$P#PS{ip{D$^w#^e{i){S4%MV!inr)v zX4%8y3OwwAtQ10sNfTCghx2b7xo_DfY^Luz24)@7PY|@2f2=M7XpE^|LC!Exy{4R4!I`!sA~g z!+WA`H6Z$AZJa1?O_(m&tMjHnYXPt9J+>iLH@kJ}6p~zP0gac2^W~F34e5E0_mieH12RcgdR(gD=$pf{ zc2i_e=+kwm{*u&Fvg^SoB;AQG;I&v1iSCm&-^l|`8v*YXD1|w~>CVz|l6%kNR9n8w z1aXkg+}KqIy<{fgt6t)YWr~gKlhUL>2rsaIgoGLMzQ9xw`b;Pih`Hd|f2~r@`;sq5<1LKcwIED>oD^hR_BKtg&SIc`P4YPgcD~W7 z>${2r!RU3rs#`@No!PInmPp%q&`=*3H1g#kY2O%RxF||%s4b*j zVFF38ew)I27!lL+rPCKYzLd>1vT;A%MDy8AGV>Am(ImY8@meiL1Qg|9N=r<9%OYK% zX7syCclcLbV`DKndO|C@*kLiEQvdi{T3NA37@~5iIN{!k;?rVq73a>Em zLmY1DPF}b~q6O)AvqzCgtG?js1U?+6IP9&KG>ePw1)jcmMOt6j10Tun!0nz8=62Ym zKb}zks2b(DCEo23xmMBd9(~h`2#-_ZewRIiqf7*I?VVHTb(e&iE_aw9D)1aKQ zw*x(+{p9a`3{5mJS}I^Z+CqkrH+4@5Co7+&r#911l74O^_wGsbl;g-{Yf02L)mcjS9Ce1zR;(_$#qsMbw0- zTyT?yC5-1OM7P^E+&tf)-ZnI7BSn=8cp4Gi!#B^n&srIgANqkN#QYXZE7-X9X-UyJ z1lhKDa-2DMAko{So3uoAL<~q8aF+z$A#(CFZtj*EIE|yUBpq2eZb{U%NVSkP2#J>$ zx?0D*@RxjH=a28mMzk4i5+c$X&{{zl`DDkAXNuVK?n}~P!8ec+sXnSBUiX~3y(;M{ z%G|gk9h{K!y@09}X7RbWn;XaiwNO-mJ5f_pXnRWm+kBpm*DSkb7296Ue4YqE=o`*f z5CNeGOM$owZ?iB4-3>i;k^7SyD;rnCjlW4L{bSfEFWT~*(JiS_eK<0ZyvhOTj}RNJ zTr9H>8n8b~4BhKRu@_wOlc(z}kTk65^fTxy>O#@Hgq_I2-lsrhuF_LU!k0T%A|GM1 z4zS9E)k!*ocN9_N{rbHDed7a;@}a{%*|p!CU@qKe!{TF!-Hsd}XUXv{Ib+w`UyJx% z)~T)4&%u#-hcy}+e4S1H83!vvaD!wfWCLwpoV&b|Kf#wcBZw^2{5_^jXB6CoFtZ<4?JlNi zB8$jxH=j}Q(#yNJl#+6z^bLT&1doJm*O_~zjyb3|<6OITLCqiluy zNF$)ynlg08zVWb5QQuv-Sms%e07akXY^>pGGPJ(EjyFD8O3{)*7mIktA(pD_lMN4o>*h?swt#MUOlaW*(f9jy8OZ|3e^(ATC z3MZtipSghD1orbMFDEar|E-kt@x0s>-hJUlI)T)nR*|lm#YS^DfZYmvrx|zSbZ_{C zDK>hgLCH%_H`P!epYDPEW5Qfo#<4NFypk z3GuSxV~u(M*5v&mzA`pGE;hjswdi*@@tPv|^#-{N6(I<3ey{zKEITZ?FczI$OrjMy)a{K)kRy4=vcIM81^!u1lL{pIky-Nom`Qz%j|e% zDTY8S+*zqb?aXc{1{ezyp?eu6sa|;CP8r!&EJy7ZF5g>-i)Vav^qbT1e(8-{8 zrk0;SQj!D(VvF5y?5WJV79%HMd`AlYLx)UtVSR@-GswPp48HI~Zer^vT^0=+(2Vs6yKfkxoY;`KYs+km^~1LYE|$%$ElxpDHuv zEC|sJOi9k2>b_TXRTjlAr84%|w(iRT(+$@LaGLIaWt8hGUZ-s7=^Pp`<+`P#1FJkUgj!?!4H#1)_>mfk-Sl9j@4%h~96|iiA98wyx$V6sNiV#5vZx5@A`j8p&u`I!0Gt?f zCZRk{vdCnm>98w_n&ALa_v(Y6{H=$tPZaz?5s6l0=T(x|SUY?B3E-kR7*mo>+uDbI zMw^?{ZlsA!k-z~C_f7Z4(;Q2peu39z@$iB^pE%*dji=GcA41OZG?IotEb86@JzM_> zI)Bh!g=*QBC(H@O+19; zAClSs3e^9Xqt^!yJrgUdR;w45yYFs*>$@w=X8u#PjH#7wt*Mt8Jg7XM}6kYqK52Rr@x_KEMQ0I=d` zniI&>Jd5p>Bn>GdKlD87fH(dwe)@>eN!I7T8zlap-t<%h?HpoP-~8*}m*S0cgG142 zn8yZk@oiNZ1bIow0hD#_%0CsWQ;6pYr42;w>1bap)~?eAU`aPqBnX+LP@r{ZV}|}f zrxVlXQ&CLstIc}t*QI;Z7M8S?!nq_PQfeV{gFPfkp8ky$+qvb*_J=AQa#tPSW>YJ$ z;t)0dL(v#5ZRsRUZe?zEJ_Fd~bDu~X7|~U1EH+y6JX)W_y~{6zhz1x3iPt46FD3-P=prD^4DUphCvCz_ zv2hQ|oGc%|jIplX{au!CwidLZ=y|xX;(#`bn^io57hhFy<{^-$NKCMxF*DLX$4&vbUB2J z$QMMh&#dx$Elb-!ovNElHq-J#wQvJalg;r9mv@F^21vi!rma@Ox#9#-r+g9@*>KVR zg~zZv8zl{-%6#B{8WA@liScmIDvWKgk!Lpl;xajyu|9D+{*OwY*k**(bg>-;TH99+ zMisguCEvvkLbzrXuJOP-dn@5`oJ_N`Mw_%E8k#icQBFf{**1%}REy)%_a@6Td93^I z=fOQ&*I3mwXkE$eEc$mhcmepwS@vL|{UH3XbBsBBIokGBX&z&!d$A2q2hLeZaVg!$ zbf-3*q0U6oMWwg1sQXn1nRUUPEq%9P!n%N~&wvl47|lN@{uftY4DI}h6b&?@|?pb`uhoa zQ$i?MeO2K+vt>8D#K&k#`IT#{|JZMWG`@1mwmWHrenW^=Mg42Gl4kut)C!zPD)p=6$V zV@`FVvqzsamSVmPoZIRZ%0gr;#>iyT^j- zkEco=J%29Eu~zW5FeP~vlIPw_nk0>|KtuaQaePQDV%ptA$EVBEO_R7)hiuc-bkNZS z)e9gtNA?e~?LWn69Q>D`UvRXEgbS<+{A(fD}v6mJ#`f3c^me%kzw-(^kN z%pyQ(#Nq6{fKfN%`DW~e%EAO!F>8S27|t!;#j@+Y4K3(~UkNX$$c#ez=#S<)r zrgW*cguOa~a1&4wWX#enmbcM!9rN$>{8lX)RJ+W2OhNHx4oM->V%5V*(S+miq*?l>pj+hT6QcpF|4kZ_a=VQE$h?pI`}JW z=<#uVj|LIE3|4m^nK8Md;-D|)}*^=4X>>}6lks59huZk7eR* zv8lseH#}b7pr72lvb=tUM@=TPlCbv!g8^gx&t3pm)px!)bOtzGTGKS#PyC`b(m|dk0j3@4Mt9F~=`HzzXP7r*lv7?h>rA<1B>aYaA z=y+?1Dr|2s`^S>D8^}R(KDuqEV-Ka2u79aVJYIK9@z33}GxIT!0Cp{9c`s>=anC1C zaI@Cs$w1fZT4#ZW@Y5EfDSh|$%>ngkBszh9EWijzRO2&h3M^u1@}NwGL^42xbpJ0eL`f|JM!2wN%$B8$;@E}I~PKl)7 ze(MRUt?Jz?>{v*}o%yY4vcVM?|MjJwYN@l|De+&w#w!e*Jxc_M?x~-5jrm?MxYF)tRD-CX=3GJLg$1g#9p$y{dJ&oGo<`Jvbqe|QsBr^g}V2Fl=MHPW>k2;dIvAN7a#BUf51T= zy<|$Hq8$5?RVSZXcB2=oC?#Azd<^R+(TYhVJps~rlhSgN{%HO;__4xm_{ZaF%RDc| zY$`#YPu9<0*WZz=iqo77KlXr( zt4SW_AB3q}E$nJwkGwy3MBbQr<7*9r)y{4vj7hEsm&OkWH#haywmY^F5pscbcrGWx zH{LM+9d?Wv{pDZ7NS|wjE$nglqOok=s(Cfm7)b1B2=B?qYg=XY(vldlf>(y1H z+*PCi2oKu94K|X4R@B+AvrOhuNpd6Zh|a*-JW9PZV6igPp(vD_HIWtDw4#+Yf`{40 z^wVA8%J~(0hb0}yJMvyV4&?Ct+#dgszoov;Op@8D8>64O)ZH6~xqdF~2rlmZmwx1(~A$XzHY+-Or} zjt((Z0o|~!R!QA@w?ZIu;P0OS_l>gPeF;Y(RtNKQ&*#uP#ER37=-T@VZSo(3r|-6l z+tH{2!9WF+nPkOMTBQ{tG{TFlG2>$1x!W(GCiL_n-`vOWP_ zCd+ss&E25(jz==_9%?m@yIM-IA1d@FItu}Zld8k2mnXVq?7JPX^~n^jTjS9yVC}Dpj;0{e*`dw#jSn+4sg|AM?6U5is}Z)Yi#d-6)|!LXsB@%6 znZvMci?!S>G0w~@*Z;-YTSv9=s9VD=R-{0H0>#~m1lr;b!HQGC2~ynM0%;%=w?fgP zr3DJb-GW1*NN{(GL-61)=ezgZd(M5&{k>;>e@@oQ%&eJtd_Q~7+`Y6_aPf3HhyWbO zm^TM4<;w;rMir}Xkq|5^iQ>D?)n&e>T>ga#$c1Z}Gh$Ny&Zbv}oRP#wN~2fj1;WB# z$u+cvYlRdb3SY^6I|5*2z_Yjd%Nc)8bFTRP2ng5@%e3RJdQ|%WPpgWUc5+vtO5VU@ zQqTt%*9*V6U`ZsjroHQ;E8dNR;x=>EM#<$Pq5a*MtDdf*SE(< zl{m}EBqr=blYW750@ZCVSH|Vi=N>W*Om+`^r(B+|n}yq`eCFpuXYNOqg!T9TZu?5x zNuGE9E-=!OY=hF(R=6dM>`HvE{_Vbwym_NrhLx(`MnCbzre5Nr&~DF1zHf`~0x7Ou z^m@lVDZHb?NN$v;6rP;U9$fnZ#rg zbpn(hegc793ah%_O!Py zrj;bg6c!i~Ca<*mx`Ha6l@qTAd5wG)X~FL!Td(^;HKrB0#|BR&glns7!Z9uqY+{Ml z{d{G?;+Rt36aq5hz#*5qZ4BPqU=gyB*<5(xA6iu0=Db z5*Al08-V0Keg24#h5AcOe#XWVz`aB<^v$7U>_JDG@iG-M?8A`uf~q))tzuK{X$mejMj6zr7ZyJp|gQ0$Z>nU%R~E*WFk zbE>!GoJWxGlG0yQy6y*6Q zF8!3xaVc5eck%SVZ6EbL97|{h@OQh;^#SFY zD0?i#yBWX^Qw(^JX2dAM!x-$LwJ^D!+u}DpY<+1FugoYE{woM_2ZuzvKUImpdx(>Y$F|Kz0* zi;-rbWpQbSeV8FzqIY?Y-3vYKE^mCWoM=`naN+{Op$f?D2~_IWe-TJ8_v_+I`WJa9 zvzt{$d&S@s9&A-0(rqv&qrtKv1Vytlc$(Jci?PKwwB)x3IKmDjnJAsOhwu12R6sh% z9`A*SWIFpN){53sNIik!3f3(*@Rj38WohA&9P9sbXJXeVq87P2`FP_vmt_kE4=?7@ zmSz+c6%n0w^QG;G4A#guAM)U%nQ3n#ae3QSBaA5lBM!NOHXpzf!Vo_o+ za9Z-%tos=jqoa}#_mfDj?v)tyasD*_0=S=wFhJM9Fw|5CP9be4yai6=go?_hV z)LwcC3(X*bEnlzbG48tVP6NdVBJQq50*sM0^3<`w=cX@z&gsdMK23)S?|x@FYflpy z)7LSDg1un-ADV00-q^k;F4(|zjx>$r8F#cB{Vr|)DRcyORqlmnlk-l+(z#AOd|ypU3&!w7ubT_?|?&Q(&7@CaF*1>0*0fH5V~33`WS<x`o>p-l5hZ4PtCx*2M_Yr7y;`*y;zTfvm#XTv-l`8(367L{{yL{|4e$+}uL4a9(jgIqEx@6iYvD(} zGk!sv?km2!FIzH7aOX;qEE5DTY769f(Pd9;fK!nt>O9{gr5QpkjbE){4H5@i&u5O> zNc*$zy}n|i4e)yNGXcPwgh?ryd#8Ehf3txC{P5Ntj@du=+grH(rfQ7LV7?qR1`Ff# zh-(l0`h|}KCd46}%B0210-=JFfZF~#lOJA|1c!$+j|8&CPqB=2EB&u#?fu#Y>`Vi; z9-UPC%}J*j>I0`1D))50MC8>s7S5-Gdo9x+p51-xJKqJH`x_l_L7QvUe+ojCWF8pE zKA2%PS{r|TtehWoX(WH6J=tl=)2=oLEV&*){5`k*-_T|Ms^RnR{%1*&DGs8kvkv-; zPE+fZ8e?v+f)E8ojUZ4Jt=Vw6wfrQRRD;bGkA zg$B0cSmNT-D?lPpA*hUPZ6z7NB+m{Fph~qUPepu9iAfhHC`ss{iV`j)B8o1wea}X; zhyx$MIR?0eyU=6t((Qe;_UFOE@ndAhZhM1tRmEtpY*3HXGm%<&rwW#-v+G}H>BVnf zP${6aw}^a0c~QCTz=UX*_+;1xy35|#o#2s zAJENCwO`F6Y1By6$-cfzrrMGgu!t)@^XN)5wOFymVJ1fB3&V2J@+X@{1voIn^bEW z!#&jZd`Hj8Q>g~tVZo}1(R?wJo+{gxHyP2hk>WH)aqmL1`M(z zg21_W8yg1>y$(`x*VN?^zo!n#1iCSyRM&9sv0|!^47?7Rn;eU<*SxhleQj`d1f>p4 zMXW-e6c}$(15Ic7PO8p>C*zLT95!POf`bXUn9Q9?tpR}|Wgb|W%H5VUcNY(@ks?wd zs}nh@B4d~@;$X7kidQO;bpf2gux1@n_!73#3uAKeP6H2-<0LLxvnw9{-J{sUBYmnG#AMv z_tYDb*?QLWqewVhsQJ@l|#^dt@%$_NbRks6gw-D0{kyBn#NoX5`h4W-1- z4)8cq2FpLypV;F$dr_4XGThV}h&ve)s+Cy{qZw;0+_vxArr_Geo8^s+(W~OL9@R1V z(CnGLN}WF($n6a;kld=zQrlR#K8xhWIEwt1RG|7L`Hf->f|{W=#w1)+1$^K-pFfJ< zk~v1zDQ_F`z^I&3_BG1k-*r!aU+ilQO_F)fFZFnp&CZ(UY=S*XS|I1~xG}9@hzpOR zzwU||Pt4be`O|C4e>Z)sW5D=z72fIk7e2Lhhz8a|Wdr0iY@Fh+WjxXQY8gNindatvMd@?-Ss$W**9Ux%fRx7YeZc~Q|p`7no zZf_VCdMh_dgbuBG_szaZ>tJ&0`OPU;?f~%5z`N)pve#$WaCw`t?{R0NrH;cxZy0|Y zz)YWA=jta#e$z8e5Yt1XDI~qmiw8e6Gv30E68EF(4_?JpLcm%yNJsqjB6-57vjR1R z5)Z%)KVY4V7^OHIC?)bO>*a&dxXhDTL7=B&Wt4|yj}YTncz`kxM4+!h$%)(BlBgqE zJd~vKoFLYPJX^vn!l3-FP&!r|5g;5F@F-^=lTZ*!A~!ycGyZC+l31>m`{J9pT!*wE zf)+i9B}RS2fDTk0>O%-F6&v`Oe3gD#`5k}J%LdVsS!xbA%U|N(j#nP-wYLEa6^>Hx zX=zO5FZURAM|0;=?!LRi3l01olGu54{F2S&1Hy^Yb{_+I_iE#}v}n++w;gg`=EhJ8 z`J}&~M}FDJpet8r?edE8w_!=W;ixwYVMj0-fKLh@=zpKSlK>?vnI9uuac+u0cN%z~ zD|(@V-xRTC6dnehV&__)IXn>`hW?ZkvYS|KXXO}i0_9{VSL8&M5~vNDixa@SLQwr^ zdRAw#+W<9bz(SJBns@)S%5l6(E?4TLrpk#wb^97VZ6QZ90ChfTBv?xD1z7N>L@j4A zeQSrPF8e^C_^Os^lIg%e^vQ8!xKo3#FWtpc1H%&s?ntkQqr=INjy)~vwU8X$%9bdH zA<_XI^*gPL;{apuG`5*H6;s!Eje%qn*tp*0XQZX4c&uB|&l7)SCM@FY>KJo6Pq8it z)vVx4T^vfRAv-k_FB~G368-P7dH&t$JRm~@$n;#)^*hio=|X6DjM<#Rk-5&d1)=H!8Wr+w&Knm7woe&LGsdlU%sZUjchl67?U-%45b_ z!naKodbKM)2uKP=V(Uj!#_XkiL>$MQCxaVe?7`DFDJwPYd;fWq8@2R+;ST ztYVBz;wE!?Q-;aNqe)MhUWb(aL}yd?W{1$JLKYMVj$njHsfy2uy-f4J?YE}Bo^9O= zo*0aQ!@ZcqtD;T^lEtdv5Lp~yDWbJ*MsyDEGudpPTFMrO9R)Oc^Kny$QmZ{gm))Si zXBwLwWdzbGM!{q_lbY3>9>A2>R28P2epRpM26LeMT}3W#wD1;{`13TiA71c!u9-_M z#G1@R2DYna$<+x{s3n*4f9o|vP^FVjQ@7uw9Zw0|#vqE;+lY!w&EjEz@1T}b86RS8 zRi&O~hH;*ea%J#WDSu5)rEpMl+3_9b0paO#3*iOzQXNiDT+G=8`!e>%jTEF=HWlwq z*sheI6%WD3!z2-ldfp^Vb9Z}^)sq3vqPZt>dF*iVLpoFWlz3TBV^so+VX`kZEAuVU z%`_JCVj$K`>}D7?0nBC|-YH^2t5rI>>va;E-_WqU)ANjimbiB^%ZN+89)EC^J?D9- zc4?|2YIQbPh>&eX37i3RA8Z2)TNLqsccn?{fREfMc1DF>Zo= z9*TD>%su0+r)d;uXVw@ldTj7O^!%2!e_c>3UBdf&aU&Y_7y;yac1iqnW5c_OR^Aq9hn)+zW z)bWr7;{$Eo^^k9d)EM0}1XSm5+>=X*S#biHKgb7&pixv*ZRG3F`ReZe5{W?`6%>+PeTP#0b=#mp1Nd4J1y*qm*&&z6>OKS>ExTlRT!Y02Yl$q;}_u#hDQIycR1j2mI;g-(1|8cd9C0Z(azK!;3GUq$b8k*8U53Q@_2t9&1Y)YHBT(64GpRG>{$|MIH;1+BR^ z6$xC}S}^EO-CtRayu9fnJm7=JOcpdEK0z)5ScD|h&_{lz{CVk@Pqw6jmcCKyvBHUB zI=CTrsDsbHWPC`bwB%F9yW67%{rv<1SPx}Vg8Eo!$b6h}3uOFAhEZL^tXOa%ZGvWE z9)pl}KJun+c&IyT?h6zEm!1)_WXT!OSg>N)dG4yu1ZZ!X4%7LXwpk z7B;wF_9n|Bg0GQ~D{ z|AoF4vQLvmXHTO@2SweE2#HalV{Uj?+&KNU`Kavjz3?{q683xkj0nbzFU>6zR;twYK;RSEsggNYZ+&ft&`~H2!4$4hsQTMs&)zv-Q`B3O{_HQ?l{VvkuI1y9-qPANS zAPehBN4wfSDO5JyAX=n?gw|kweThZEBNf*3SApT5&PD%G=EzKF#qpnh{GSIt&Ui8+ z(^xT_k_j(u@eXvvFo~C?DVwer_S0WOT`*GO9IxTK#Tuz3k>Rsqwr-S+%Dz-`DFD=I z`$V}5@D}ov03T5GRvDc4)(L-0b$8?GcJN15VEZGJBkfU(N?A`vre$?r376d^$p`iU zu0iM}(j&`wFu6N9OX-K>!^B>*fZxp_4q|Fct!KpcvQlNsQhA1IvtPPFx1{Vx8}U-F z_!F0`RQzBg-xY439C_1T94}`cJ2CGDtP}k0>9sbhWnCpE9jCL zXEyOdP4BL)A$&cL?2pLIMfuRy95judBdfIO3AU3@8N$#EDs zk+A&3DRKc8v(y18aEZww%gE#uX{OLMN6{j&GoH` zI3h2|xYvW+`ZvDBU(cRmGah8V4*SS7G_eDWiApW_E0HI@VZMi)Z>-xJ)5~5Q-{m@^5x$%e>aE$l zzSh^|%kHRH8`pZ4jFVsRzQni|l^<0NuNmUbT0eYIlzbb%JK4n0nF;ZsB3ZBuE-s;0 zlMSmIncTx~+Dng7kb>07wBTaQp{UXmr&UpJtH`{CztAItNLd5gn2`5citRb!g<2eE zvcr|Qvesz5%`3-KOD#|fey?>)Y2!la78MY8dp&9O`W5bDZnfgc6g_9A0$(0B#b?Tz zpAMH}?aW{fE`Tl7Jj0+xJlK1*3^VN(alPjNevcFO-t+!MBp?*8enY5ah-2rmJI zsA`kZ(<5e6#)J5|^^uras5tAd``Hyz_{ z#ytyTC+WS!N#p6bh}^P^I}_7uk(MQ_i7Z9@RaL4_NN|^$M3_ zIj>)!y5O(WEpFmvLN1-^yS{PKyI9j^{6*0WX~kV~%0vyNr*+k!fN-O^$xj62bIFOG zg8qPWfq}k&zM}6Xi*NKOJiW0WJL%0GfUbSVwS>#(#sg+ueM}U5Oe_JWs5e?2mH)sO zw6yU>M%ibO^Uyq$+GO{`MvQ&LS0_h2pqGnri$2ID0`EgDBN;mUkg}1CU0Y7Pz-oB3?X_YQ#X(HR)0kD7 zn4QMt0T}blr~fZZ^&c(& zT#3;aiWK=z^^Skicl!GQ+J)pPZG;*;oT{HA&HMrjsUvDh!KS^clb*Ds^wuEe;jf-9 ztIB@40ZhVF9g%T`#{De&UK9TeZAW zq2KL^SpbImz%!?Stw!Y&LiXXJhK%aoP-dDWk^{j`f5JWe_YNP2Gxw}sy9Am~hs|V% z4}!mFZva}(rZSY8cxQH>>@2wgp1#3(E_XMaS7Q6+q~$9O(FUD7DL6=?r1QY=?5|p zH=EwwZ(_Pxk-&`kTz1DG!j}(c z$9Ww>DM_^8>zUDNrAtHJtT@WvTCJWc1RKeAa%{btVRY40Jl1x$sXucWPO@~%R`4q6 zkLJZSJuD5?uZPi;vc+FEY6}HdsFpd}S5{qG3QB7=_u5^bxC%+WdTCg1TS^-q@{Oyd zq<&}>UjzP30u~r>-$^`QmJrQIbzINbV&Y_yr{FZ`Gfpufmo&7lAM+Kw9NHy>>#88Wa^KMKHq3s`bAo9oL| zIede6F%wRCZID}F}u!ri?(ERN|1b>sZ+^q(gaazj{gf{>vv^ejcQLi*l;5_sf z=*a&{Wnsh&u(i;GxQnpA8V?V#FNJvEVHPs66fnacj)yXjrw7FyX4dG9nY4+6nyf7P2YWA+-_ctES3o~VCZ`RQyd7p( zBtT+56lQq-98O?dAP-l|_T~R+b0!FSnz&0K;7n{ox&}y4>gtO@<3yF4W zHs<}h#m9>0%6U$KiSz_}W08`?g`M6q5ngz<7%5_J%kRGMQ!|Br&eO2S^{V(1S18{? zFUyHc9%Z84Y8&^a@PVnJs5G#Y&BbaFsp2`6PNZ8gv&Cs|?s1yk#~9Mf7uAkR)wGZt zdqeJ>^(9>2%EN<wc_Gj4RpV!T3ac!Q3S?PE)z~hH3q#JdULU+DyzY1_7 z7ayA=Tvi{iAq=yAc!3=!%AZ^V#9jUuK9FZ7}avDvE&BVsB z5?I16)lgxP_8sjJ_luXXJsLjlBvv$5N^eL+icJV#Ip*HJGUz5ixm4|AUszqleEK4Y zjpfvp*cGvsqmGTIGFlwa_E-l*v($2st2o zuWh!}6nDF#VN_}ZM9qHakVj804MTUTD9%Q=^?~mnlN|!@{vOc( zWxg-du_4^C@eN6I7e#u0RZvLba#y0?dK^Vom!zA?I{Vm~L7Dqgv;r5Lg$ z%*?`izI;qfiE`2PNn1-QS|!RoDBhdpze(rXae9Fy|mAwNXnhgnpm%QmK;J zNWw%B3O^Cr`@)|NK3TQb5#!$PhK?cpN;DwFp*KB!P~I3M)YweqCn0~C&^@|N zW>ZCAdqO#P$nh$L+p0`jkgHY?m%O3sjLgs8OMhMmv^eki7J9{e#$k6hK&8eb3JY)D z_;sK~hVw_NaAFd3G#OO;h|v4^v(JNu0qVzCN#nUoW%G4mqdFUE z?mXb)Ev;@PMyANZxC5ur_1_|-9Km(X`usZw=`F=wYJ!;OKb2Td9&*K`;S7sc8lE0U3AJBoCXXYbAprHaEw^}?UzQt@EgdLl0 zoH0V3j2v}rh*wztyhaJzMmJjB3ssgzLZdydEJsY9`d)xu^JKL?a5EsmXZQ{+MI`rh zZ(}(wD7{I$i}GJrP^FL>VAG0+9fwSMl?SU9=O+| zAlTd3^*pEBb+}(X;iX=;oE&+9N?@lXuyykD{J8*mdXcW81>bXK_*rB)+AIBi=Qq_45wATj-lT2{oA@dQbgw`h zM$Fa7Zod1OT<>ESBi?)!2ATyKUNpFaKMYF@Cha}yHRH>wVPVUa?8(euOhdeI-RJRX zX78lmEv?KiosHPM6S)%p0~O%ZH2~GyYf7^Iw*CF2A&} zp)mQ|QDBn!ausuOjr&F2o$l`xq&$cL!Fs|Mx)ETm<}jslqF>o@n|TP_?>v4Qy6`4>7hB6x{_*@9HUF%FYP8VlVO_k_ML z1n+2tEpCpF8P=@#yfs&S*-m?7d#Gma0k^8I&9i<_RwIofDsWcc?S|>w3rJyqE%5Vc zxx8tAD_JQXm?K(EB$tg`35G0HPp|9+^>%oKN*SxB{ie-?A}aLBO*)TV#0zT}Z|0pE zKlSj(bl1!?Geh^#G?)EP7spCg6qXd$D#x|yLQk4akNC@pVMEWN{Ix)cCTp6TZ8iyK zA+o{a%YrEzX}%T8C;hW}w=4C|+lV>}#8fba7X5vk4_0RUEvHO()Aru1bIsd_=>TtM zw!^s@?draS0e{csq7v@v9L(l@^SB#Kt2eC6{ggxRi|(W~e@XXQG*lZs{E1z5OMa7q zLwE`-<0rqog2)flz77aI6ctk?>*zfQV%UUrrm$__S7|1SfokB(!?a19NH;I~3$NaD zrSRL@7vOJqTQ9q@)7ZQ%&TnFgA(R!pDiRN1IWC7Y5R>BmRfvAq#SzxFwq?7+&+gR# zk41^=i=&4X?b?5l-u@@l9I}a5_TezJ1)u-H|LVqJS4_h|#R_motEB;{Fr!VH8(uuc zp^W`_2(ibKoNAS<<|db#X;@7>4Wq=}NSH|xQ=*}I9oys9eF{dS$aPuRiD|?_MH%kH zUY3-C9mP{toUxLx0`;<_@4-r)VtK;*6@DW!b-JEo6|Gpf^X~|#w<2l`7O^Ce!`b4^_z35c&glD zy~G^;@UV-dnqs+dB=#7tS4qQYl1tn7r0&lT+j#NVBOljxb-L57sMKh20ha|Fb{R1e zoC2koCYSOnS6eV#GD?M1YF^8q%WiE5F2q&_7B3OL2evFAUOwR?(ugC{V7Vc~OE317T~F*ahn54%y5NP$qhdRNyO?S| zulHn!C1Et%q00G-5k?63stCsNLO_AFhf+PkHEX0lq1jrPP!Tsi@7j@~X@=LaD z7m0A}WKy=}Tfl_z<>mJ}k2$XN;-eG3#SHO)?;>Gd4j8HYQyS-73r;v>oZQ}5WK}v> z8bMbu#^6%tF#imrmOkS`=>yN)hbE&Nz67t5k9Lm<^}dW5tVw5cXV@69wj;&_%8 z{qB(Y;oeSH7z+4dim}Jmjy`h5{Evac|YHlFdyTb_OyEU6VDQZ)J`+(q)-On??~x*Awfx>R2m!e8A<;Je(TFrkJa zH+h-}&7`AtTXw}#9zk1LU@)j*bjg_SGKC06S%ah#^WYjuNN{*m3V)yxm@`4-s7meC z9n@&VtmzATJ10^2-FlM>WZ}7VX6zrp-F81&IS+l%?X2xH7OSLcc$b?;5_-%w z7%2iy8=yW_0OdM|FYqiR@kqFjX z7DAZBq$i=$$%$$7lvB>mx!dSmV8-UiGR;w=`%^vM%iI7gnz?e4^a%^S+vxl9uTq>z z*~bC&^Xd_(y~KSevs1=^vap2ll3S4F&WL0nyrIrK%&9J|$qR?f^pAmgeGsfBlu;%O z(k%xWy-zNy6^5$fYVB?+M2Vriz5PG!!=!+jwNG``>}|(>-m{7fXq<+UVvZWm`nLTU z_mKnWDk_BwWepVN^Xmkd8@}71LzYfkpE?I^gsJok1cwjfV9xx^0?Z2s%6Whl8h|#I zVllx`<(=?eub-6HKergD6O&^+h;46}0(5TW6Tw%XGo8%XRXtHG$If?}k3FFEmOGbD z0j(eWNBiYl54*G*OFqCZdMaLqqun;#-4?k;GG#SNJ z5fOD;zv0tv5jN?@+?msugUm`Mn@6#0&YMuU{zOnEU}sY_FWBw5>eOb{Mbbs({i=`byh-6t zlfaIX=@+o`U>Qx>59e5amJ?lX-8P5#yx*@rxD*}tp0_ycWEE!$lVZuzMR-%}`ByMG z(VTE6GnUb0H@`{q3KXu<72Z7`CNg{hm{SU1IO8~c-%~gq`cY68%)6 zNppA6D$tYoGJkSdx>@dIZjJp$pm?Y-k@|CQZBUuyO0|b>_2#Xk&wLpqmn+FtLUlb+ zALJLU>Sz$ugC!vPaZQS^b&)gxw4R{_k`{aSI=QR~Z5O%y7W5%oT-4}pOsj=0m*7Hp z&X-o{N=wO)Y4ty9=aF&s+19|8?ZE6}(49T|JcUDxs^mB6@V%^e_PbuI9Ml05m#dkJ z6I!(oj<_$cj!KETZW{FD8st@V8Et}Y9Hnd8ZZTHY&tr#Yd~=&uD94-&ecICxgAQwV zD;k+xrA9qn$!VZFD7Mquo|_8`q|s0=z51yG%@(VDc-hr8~~h z7NLoaN!RhfyGLBBzMd4C#jA)25&LjiFKs(!N3$!aM*$}{geP_8GluqyjwVx?xazV!jDeU zUZ4f}>LRNHoL;)4kG`upDxHVwcl+dw@Mc0h}#|r^j<#_c$^YYo-h7%Q=*C_6t7O4WKrD)$Rl3z!mV8v zJ#^|YYKjsj}Pnc$DSCOPpGb?sub)1#4cxYO_3B=Z6^Ns z7^!xkQg@JT`Wq_wDvg+5(YQm~RfBE99OB){_IF*d{p15Rn}!cZwSd-f5qj#-srC6) z<0`nR{kz)nnFTeKtR3kQqIr@&whLU$ON0I7E8%A_G>k}45 zt<=;+C1_8MPR;An&vT|;p^(7h92Z0z*rqy>Ljvsdfc&)8ILvA6&V3Ab!>uakvCL96 zhzzAb1x_9E$3{>`S#So(x1jgblIOj{QG2Oo3aik^VRlDZDJAgWrU2S3Fm%gGAx-hx zuW#y*fYVu${Tg(ooz4z?AogUXL)7sZneQkrY74+_EG3>=^cZ9w&~Gz7D9{k8e4V^B2yinD?9uwg1!j z-S>WwOFK3|K3BR^-?F6-d|Ab5MZQmv9+mQ;CqPFy*L4wz-MzTjMZmXu)d1@x5Gc?5 z$Jh}YDFa@*ctt+>;^~Gf;iT#oL?jWN@ZhSJ}y%nd?98z+!?G&Ka95DBa zHYlqM&^h^{Ub3zwwUdC>!yq~p?OS88<8osmpW5l>=FIu&K8)B<9TJl~5sgp#;Ef(! z>i_@TEn1WVP!Egd(KZ%-yT{y(r0uTDAnop_*ztPz6)Z@%2QFw%W5ZpQAwb`~(9BI$ zf*NSdYKIU>HfW$=ADy0Aw&jeac%4y?8Rm zYDN@v+hgdo;^|$GYZ&Ifv+V9oc{W9g%u--$dERe3>A)weg=b3;TczIEjyjXr2UCK#=*}e;vvHVZx7$yzq)^@EdQ7F<7=#k($;DJ_(1<>fZ)F`OiUT? zM@F#U6j`>oWabzL(f2LzH!ZBUbz!iwP^IyiW)Rf-$l}ObL(XR?rjIaY6Z@Wf3`1(~ z)6~3diKtXx7TUi+B_L}0BG}R7-b9Da zqLbC_;%&!1gP@xfzTl?MwAa=kLwvoDdR`&u27eOa%`rW+$pOD=>mVy=hu^mcFfOx1 z`oeEDpVmW3w3#-`q#vy<@Ws`Vk9cT=O>x7Z85V8y=v zRqIHh4bn7Ymbvz+yCS}_0&4yT%PFlUk+8irH^i$TpE1jMc5Qfr)&kLum!5_@zIcaMMv?! zHB)6JtstZNuIg-QmAY;jJ19U&EnN{{f;hegRac<#QHBqNRU7kNZ4Y{Szq7Imy88tb zb}0XjRH_sU_Fmhb_GGw}P6zT_Rw>_EX#1J}1v*N)fRfK$T)t3=#V>-9&E1_01Tz&M z%FVUb){^#*IQlm)R13+V#jZW5-$gCI-;f{-H;6AmJbh~#Z1(iq4^9_47AWQ0ScX!) zxIGtxTejCBUEPt#OLQ4=F!baX+>T!J zyE8h}!J)7#R!k9x(@d+SWbwz`%9LINB0!EWF7o+w=6uUvsvf)z1Hughxyx5)3I{s) z@?EUFFKmkwz13wBeJAGgz=gZN;LkS+fE#_Rk!SH!#72LNRgAc#M`L~406s<&gDOe)3EMz1}&#&-|BuSKSRZbGhles0KBu!XyC zKLd6ylV8w6a6~>rm~X7l(vd>(I5vvvoD4e{7frWcEEidX&Rwpz@PdUN*Az4!c+*zK z?}(NK^A~9n55pTdJT{pb$0f*o>=xS~j>2H5Kbo15i>m*Tpo=*;d(USOvS;ejALyuJ z`yjq!c|+2+Z2s^Wj&M#<2`pqH^TtoY>Ra~lNMCw~1~UKG%H&fFl|rCVV6}Li^ExU(ci3ekui6^b z{kwm<%0N60#e0xlS$qp}-yJ%EMF|$fYO|_&de4geK1tp{rEa5rAv|@N9hl56NSlsl zTcsTY)xJ2;q+J1f;Ek>O68%fP^=-kuJR!S*NMVs48ozEmVRhyOo03A_l*eB^??i5` z+LOo-|Jwx?s;nc=+KdL{=g)k06E_pulYGTht5Xr9aP$Se*F9@?gX#vw1=EvNJ)yq3 z)_?KkE>ouocea+#it|`an!>K3f3I2y!y5Q}9TdkP-QJFpYmrMRn z90^}A>8ZQdsx&4V@xrz|k$g=+mGgqU_@wS%y+j;2#}5IaeeIEgdmKPVNVCS@6H1nV z7#y>&m~yjSF-)SqelpQpSizjykJNDcGL{4}nG*jTz=A)2{H4e)93 z4X(Vs>9LoD+N|Gc&cR+YNBh#ZyIEcKL9FnXqf6 z;TP;tsPoPsB-rkqdWj6oQ9qzt%zI*N->Dm^p_hq#aN3CEW5-3N}3YqW`Z z%A}Xqs`6D@Hwem%>&N>TiBzf>7=$lhX(^9=^^;HqlL$M{E!1wr0i_4!!U8EKu zH|1Y+#4s^4uZlZjef^~v9TzeCwr4s!;|@8PFy} zf_^*3(_&v&y%$5EW6FEIo`^RAUDNNVCt5QcG!VSZE)MyY%qWSEU?!9jn~0|)9eMV! zLgt*ac0F&-I|qb{sw_|~2NBL5Wes1@5oP1A>Xf;`=AeaN4H1RI5^ zZRU#GzO7H%FPJoln?TB#3K-|t;BcRBxNwo9@JtQM&Jl%|pOrUGEZ!I?w9$M?S0K8` z3m1{{7GvKr#{*?L+0$GS-@4Jk&3i8TsaEOl;dr29P%Ba+G&u1AmzDM+qaZOeOwkcx zsg%sPgnyBw+~XO)Q+|c0-=}oD71eXAi?{6*6~^C(QTSLoOl{`@jtV2LF5(Ix zOg7T8@EFxo88NQf5@X5bfUqM-JAhLL1Ldh0pK|e#f#dQu%_wY29TVE_ciWvz1 zDBz@0|FTpo3VoZ*`Yi$c5%41%mP70Dj?ps?== zEgwB;SxzQq&trcp?>PD9GotY19B7C z)NVnwj-OB{OAM66)y+*iItrpdE4OyRv}KC{{wE}K!WX(ukLk~F{GlLbfAHNnq)lst zXubO*3ky!1xISLvnZ!8c4x7K!jcLN$a~H5#MrD3;A_lb4V-_kn=?$7GDZ)=Ke)twj zBzjDiolbkUENa5;6Q^^ zI!G&|=Flz>I6m>#R5|oY0J}M%kS-{tr+vC+17G*LYiI?{$6Q;2!y>XRW*p zK+nPO12Ua;g^Y&7cpjbP@DCTYP6X*jsmGEt>zxUNY+p&9?seWHT-q*52E{PvR3b?c z9l7Nsxm|`0cx2{~Kl&o1sP=4Mg|P4ABv@xZLNzl8OrWa{ymKMEl6N^p z-}(_a`%W8*^qpB*UC?laIV;7-Y)@WuqB_8x=dkDtC8Sm6m`b~$ZI)7`XZPX5ZM_k$ zy?8MFwMon`-M$w6Wc}xKVqfh_Sw;^L7pwMl+ed+KTcACR^-fbN-ey6%G>0_t_3i2} zWZ_U+cNav`{uhNscWqv8pMPy=gB3ZxRd5a zKn`2x#A}@_7c&)i9_LwcaEj8;wt%?H!(O7kowBpJfD+S+6(*pdiPD9G<#($?zs0=a zK+&MdGw3b^J`$fb80ckocNXJLebU@d1h?Hf{E$TDA{0zyg)?5yPFtEzvxL*(DF2aO z{Ppu9bkjs+v5+aF+OlnTrwH>yphO+^ytJ<<#RB9rW1daQNKDLqbfng;pA28*%;d;E z-$VzUUBaWR&}WA(n)fs9^UHxCSnS!jS6ni72;kM0}F!QgU@Iwhn@Q{aC*Y9;5vFj;jnMd8OOQJ zLQiHep8LuUZq|$PbT-4sLOc@9UP@>mWLN`;(vs9kS zy@pI!pgFa@5*;Ka)fil`8u+%^*)F71TJh#}4Ycf(oN@7%BX?IdhnCc6jA1s6p|Pwg zmts^4ohi}x*(H?>IL)LilRy#LO+I6K#NqFEL~-8;yz-FSYtR}|5a$NsguecJ$P`Wg ziSfHxdt1p3bMMfs{*_OC@6B78CTMsUv>b9NmX8Ap#qqng40UshQJxU^anska>qIr( zo#TpxT{u(TWz&Y$@1}YK!tx_PE$p1`52%~p~0RSL!mPLZaDe8rzOO#4A*W3Gut z>}%{F12PITgH2k<{lGGv!$9|}C43X)T(6aCu=a*eKXa8~)aA@$iQp086J5Lj;#bV0 zaNoG)LP3=?#4z+F;_KC{s!@lI^#Uo$eo*V|O@Ob;Wr!aLg>Zw`ZZDCAppB#7t2y*%oYdP#phlQP)GJyG-tvtk*Cg))*>`QgHXmY24b7yj^pK7CbkBveQII1~hmjn-M?iIRVcxNK5|DnI$Jhh+ z?zFjfKEa!t7*+BhfUV^ZV}$NZ!_}a~wd5{K5MtS^7Xiz@EH_|-&K=~Tf-SVsw-@bV zY113GB)RATeGF(WV~~x*wlfMPo(|7W+Kcb#E|&ocPFS(DBBZBJ95weWX}$A?Fi2EE zwO#Y_#=ydYAPLm&Il<}HBFT79fDo#!E)IHUL#_G3TsnL;oV6rs9h4XDTlf_5ms4*~ z84Dp6!Yq_;}* zUF&1c7#xDr7c8BE{l;fF4L;ISsG+flgXY=wq$8a4%ag$4TQ#DQli-K5$B@jE+v}`L zSf2Zx)Am-iRdgE(5)6SZ4+0Xx5>O}IDwGN^R1?hI)mWawKbwMxP`;6aRz zF;nQAw@5lw)$!2~M&1YWx})FmzPU@N6}%HqaHr1cbJI201-~V>%m2-IN0U9Y{z)j8 zT9d_Op`jnO5Mg@;{tdqfW+}VdKgZEWkC31Z3v;eP9AXkHz2U@-;8iXa5I6Xq`nbc3 zWwAOIsR~v=tZ^2P>7FQ6Bj7ylN zFP}eFsekf~^GqI^rpQ&%ZH**6;->Nk*23zzXtD<5#|Wn@+LVakEhz8ka_680jDE z>iI4Bja-U0$6R4A!hpi(SvtM9NF<+tMqPVzYNZ40X;8i7y5+GPff{BuDeB`?USEI1gcU7?Jn?3$YeQV3N zghohaac)Sl8XQ0(WQlTMlbG`=37cS_E@p^^+Fl4;u(O&f{dkiuB$MpUjGWqc;O5k{eX+W~Q zrO&|`Uw)Mv+;(vT+Zzem*fd>fnMdpv^xZvEc)tvdha;Qz#ukwsDig6#@et4E*H$M3 z$<+7#Lri3oi{G#=TY}aLOwXa2^=sDThl)ugh*x(~$HWa?j#RLxt>Up)apI>_=zW$>dA^NU!hfC-`E2TNoDdjKW;+1bS*Q4*|p_ zC_LN%f=enf+Hab8PrshBF5F2cdu1#p&3~aR_!R|5SZY;Vxu))MnfMzz|1y`JqG@xd zn^yVj4{s=l8TLEGI)oQ>k%j#Y5DW$;RuC-HS`h7?BvWO~gk2qS!Vi58C2H8#Rzdgh zKvX^q5)~{rhB2KDB6(&=teW!2r85z*fr+Tt5i2G2cuq#Aphb`9I121Lx_P~Pk zYmAHx zU>nk6-^HYh>Obg=A4jn`TSFpuzd!5hwP&SDJ1a3b&4nG54}||{n~K0ED2n$z-F^~5 zrUsCXM6~>(pu#gF#pL0@=d;`w9_wg)_ygGzLdT3_L)$&Hey4Ghd#QEd`R5-T#B+K}$MH%%%Pz1dw7|5RDbXjHrV#Pnwv*Ia;i+Ks>poUpnu?|%OYB0`XOYFWI-0L6IYn0 zwOeL>xG(oFJ$3}2Qbh-cu$g7-z3C^eSo-eOM-Vp=dnoQAh!v_^3NOl0>3()w776(4 z>6v>z(nrk1V-&c1+hRMJ720d}^CntLv~gWK=IbB}Fy>3W-Ra)v&N5%wiYC=<>GMCI zosN~@Z}eBu#T8-kh}4vpmS3Rf5$9{Qu5O;}GHY`MqBPI~mucx$S$b!}?JgvhnA?{r zTYYKV`X})F4UOx2oCq_0u8zOS5`Qo6fd!LUw2YT4?ST9(2cFh~V>vL?Fdf#JZk3k_giWgPaOy1pE`EfFin@Xoc3*mZpr!W`x9-C zGzxv`J!^Q|9}x}c$V%EinaJe-^MXJ2p{?qanEnTW6AY_6r`axBXF6~ur^of^t*ihh z^jP5jIx6{CYJ~}^b&EmzZ!n4(y30MUBC|38S6{JuK86Mq8ONL8f;CA0e?G4N0b189 z7HSx8n5Ha(h3rwtO)2bA6iRO$6-NoGI75AmM8#}^eZB^UVFS2c3+45qX!LiZU`rl= zLSEvf3{_%UT(6B*v^)S!^p=&Gf|5*SnUsKb80a5g7TSY}j(zy*%`H6JEskz{`O)v7 zm8oSoF$ORGLgKqIPSNj%1Umk$Zs2j!3y-W_!kvKe-G~#PcRTBc2$srJLP2Q7YrNN6 z(immrgx1Il`1_0lAr*PAjHG>7%w5r^o}Oh=~2Smok>3Hz3} zP1if!FH($yW_p;-M{B~EH+jS?M)(&(4RDFrhzf|+9m$B4@{S1&PRcB4`yJt z5Yq}RHtD_lOi)C`-2~u_GFCvp`Osie`OWoZv&UkB6i`rV{X13PtEcgLiv>b>!Z9#j z$KhJVqx}G>wC60Hs~D1z(u!nvH3mIcFwV{ASRjKH?F<5)*2xdfv_R%1@U#Oe_*tB< z8SZ)O8pcR>%EwLlTvF0&7(@9F4%eSVv_OC~OXKxdQ)OCmeKXYSSZ_Ic9RQaQkGSt6irNB*jGZH{A8XJ8lbQL~$5YA8! zxyvxKy?Ji3*gJ$Skz^0XSz)uyI?`|s?L=T_da^pH% zqL$*>tkIDm$64n&<>h(mB54wFQ&g!V4X}n5ufu-uc8$^&j0Oih_EkMi!hyz!i2gtt=uZ zgRq_xSk{EeAf-O4!tPH9)yG5XYa5$W^mM)@J;LdOfqIDbwm({j?#K^7@{-*4-2l{> z?mC*IletX4YF~*M8CZR0FMD~vn^3#-fxFnAxzPV&6@DdTdu#`!(0Y0|+g>J2`Jkur0`s8kRdXt% zAi!5tZR8~RzJ%_{WR%?=WH_}z74B7&JeIk(Tg2NSqgJ?9ZbgeVS@i8tX%2 z@1J^hfwv%YTtA`f{d9q{PZES2R#*4!8Qp7V_$1yf zWxwFibn&J26RF^!Sqwr2!!+pyxB`ZCJT9v^9` zawJKWNF`FW5iMC3MUkcYz>26uX6DCPjz2*K>X;0lX-vNjHn!iDjb4(fFTw4$O-A0v zUdi(`&>@|%=d;j2VwL)=jJnUZCJUO}QoZZ@Qt(oftl2i&ERAMKOf&kgBNBeHZ{4_A^0DpF>2C>-jdmn&<*}ys42lua4(q>LPPSM@`vS-Kg%7<8q84g3dU=3 z_|^@c-t+`16cL80N1r=tKMeQJ2aYHaxDzZI+@n1?BhoAC(UKwMmWh+kWbAC!d9a&7 zqD2PF@Yw|KVG#Hv1!Q(h+aX&wiP48b^wt(!mJfPh^yvNDazf73^KJJ9MY#uraej%<=R+CH!9R0d~M>g=!to8DQ+4E7VIVe?%(~ysF ztcTT5k^lB)U*fF@HhSMbMS=yr-X0GO2bd%*O`Zo0rC@zW%4o@NauLdv2aXXPGvD9t zRBUr4%kSA)FDCWKHd$Uoj|&`PUCca>_f@SJj|odjC3I3>p};=B`Tj4l(cm`B`utbk zf?$Zcf*y$vK1?;`WdHc}8JoD*n5>oopo^zqhDwY~gQ>a|!jgWs)aNj~(QV8IDIQi( zPf)`}&d0o{oZs1JjX-Njtn$J_CC&Y~W-Bo;DZ_4}!j7mfxkj&o{H^JVyPZ3$TY^f5 zQk{&gJ+l06Oc96QOQ<}79uuA{MKjT^2y?Njo@=;?t-HauAE~`XXY!F^zjHg2EFG2| z+T#w>A~Ez1O&`Oxp$tsK&yHgjzSb;jGp&CvKCBIf8zsHJ6;pF{ZJ}4UF-b);B%U+hyF;(kbnAfp1TMm-{i^V zr!M}U=vI~wx@iC{Z-5}>Iu`~-V?E?s)0#$pu1h}qecN&LJdl+*;^np~)kt-%vZB}YCoc_8Inzua!RZYDHr&B*IIqqp zo77siPiCnQ#8Q0dn&YVm@;axv5a#q3>TK&Kg9SW#vFt8yaCHYY1hric*$e&&HJ;BS zG)BNpVthg*cF+awl0R|U;}w-auuUBTCj2@XCZc%kc%q-!c;I9XkA7q z+@C4Gah57JSOZn`FtQjt`@79SiZKsJbQemL3SP36j=B|jkbCiyV8y#2S_`z4#vUxP zS@!s+q4bsyJO%8Kp|M=DPVZU=k3ZxEnN*5fzLUUBDF`iWmIZqoZ@@3A{gnfW-IVlx zCk)>y&fW$y;Bi{Q#S{0gNYPhVw-)ddD!f+$=L+*YjVJ9KN5oqnW4>Fog!CuKx(r$i zVa^F2x|sx*dmH>C1bOe+NVf|5q(7FN$@`+>?xYm#>+>e;Ww4TyM~=!gl6u7b1JH`5KE7yV2%<#r+* zmq-e@l4kx%w`tw?8T4g9enOpQHfY6WGKcwYdwC6*dERA*x@lt}%^H+QBeb1i6b@K-dSuAroIenO3Rcr5{BbLcHT~7l=_G>!r8+G};)+X6! zttIo{0D2(}C2>^L*MnX$E3*uVFy`tGSa+IYluG<_^ZcK0#X2MUk{W!F2wNaOx!E2i z-!MYh$6gv$&OG?}P0S@0?owM;qD!O}4Pkpj7a)qaqK3+qj_Umxc|^cF0^BJ(T%Ru_ zT@$kFzd6}9TK5D<&RHt=W|aya`u=g&=p?{wmq3l#;a+ISsS+PbXSaQJq#i%y^mM}& z;S`N{L$TxYQuaL#nv$^?0cHOe^2JlKzu_G8Ek?Nfm>@Tl3wKWQ00(Z3J#LNsB9KKs z?J;*y=!;;hjCSZ7DO|WDu0K8yGdCS0MyD*F*{yovJHL^stbvx-zVqW?5-k2C03U#S zndlx5P-h(RODeM+-0&YLP3U0^)hes8ufY&vuxD9qW|)@P!{TDe;`s?-HEhB3Go&*E zKSWYbpi@*Irnmn-?vb+E9- z3-=ObG?{RdHmgn2^$%AaK1ep!!VGXbs;a7(Ye^#n@Z>*NIX`;I*3?uzZx*|5QPfeo z&bij62RAvm0%={MWc`ToiVpDZt)H=V30e~TxVo{*X)nuGWlI|4Kg4S1NPWj(5b|`) zR8;xubGPwAmRxoUz?uBjb|l>hCZ--qc;@dcm-Kw*9hyNw8Yu#O=&=_w; zmu)i&ZuKI`GkbGl8L!ALPmlz>6&ZDQ??qxb_lsROt{B0yU%zUR+>ad!jgEZvH%k#o z@DdanQiGQYdd7SSlP+jwOwk6rS@MvI{OArMqm-Yf9g%3t46QFSXcCU_Z)>(?HrCT< zvt>#7Ms>s=3d>n4{-Pj7wZVmTTautHP26E6U#=N4`N{RnP{ht%2j$TyK?f=d*^O0IGC0XwMzh8<(f+`|K33Hu>=C49 zYF4m)V1A+H0=|TyF}cvz85t%sM&(h$;vN{nk$mRm_Ekgt+)&Xu)`RJ176@A!Z~xH4 zS93S=M&?qFp};mKVXrCnNBNH;OWRlp5SxeFLym1W5G7%_L6aB8{xN65+}0>pYAXaP zvP0H%_*z)8y3cL?Cy7vga>V=)E&1QwM(u40F(<<4{u5(DtChEav6fS^KX3Jp>NXvN zjgsvWG*!9u#>;-(B$qOha~GTzTi}2wvh+#n8rb~%`vq`%B-`drX6qr7la=}?r47W@ zizf0gT7SNSGi=l{K599f3dd2o4L_`l)SK*KDKsti19|+JxryJ#29`GDg4Qlu6rw0% zy2m-=^Pm}05!S_HsZVyqO79|std?saUB-yLd$J69eCqQ@GNqNJ68(-YJ1fbx-n2V? zsL-xk^-YzSfyt{h`It%15m@g$y%h)ZKM{yPny*)*%O9iPVMR=*9@~Q~EjwqtB&z!| zXubO?oPLj6po;Ak5fzdPQ}H9yjBVvLY)pp6-rCbyPrZD5lP77q&_}*4ihb1YOVaaS z^e=iK$)S9Y7wWCuTxVG9_d(x79QiqG76K><(lhR@>kJ~w)fm6^W9MMuOG1P{e}oH6p35 zIjZa9G^wr%i;P%5$UXi!barxK-pj}6$BDrXvqqM;%a7IN0H^92ai>@%87`G84DTy#q8LBS-HGV)Wf-y`qv>z4h8{Wp(m>$*|vp)tNA;SzTZ znlrTlXZ|E6_h-VzXGC5?PNpvuXNxUNMy_{0H`^aEGtti%-!{l(OD(ngCGBnQSKmw3 z1Nr1t@19Jz3|ZYJlC?5QqO<66OCrM%t?(74IaB#8ec6!osBuG#KGi>4ryp!gOHD!O z=8H2m?S^PfjfFb`a;Ms!iq%Phx|tVg0MFc`y%z_6Btod-ZjQKAKMT+?uM?yyou*fB zmom58?G83^-kY|dir`$kvCjHC+rM=HVS(MXT~oXtrN0tvj0CGvv1A3L@0H|;eN8Tr zaTvta@QjtQk#R;g9~wglSuZN)8#k#;(4p~G?Fs(f?^=&nT;SLCn?84fx#0l*gNp*= zhX`Z_Rm|{BVpT;cXtMrVJ_q3L?IHdEhJcTdLjuKz8Snk{09}S{*4;R7emC;RIERnO z;TrW%xbgs4CZt^1%dou_Qb?a?y`MXw`a5#zjMD>HuZ@vm)!$2Id9xfr0|0#TDpGxv zCY<6hfviIWzhBFL{x=$SPgHBMLv6xs`b%K&FF9&m1zZo%w5g-pCdZ=jFEK|7Zy)~B zdUKzEnyn==TQHW~n?r;ac$>lE_Q*?q zDWJ1zv84^lfN}cMuIm5x0{9bl{ZjnIc|Gvrt|}L}Ax(hqVIASYx)rsvOrl92(4Jf7R9=dfjRfQhmMblH72n3tgE zlZKS$spU-*oF)yT8>}5%C55PFhUgin^{7 z+r8><(k>H_>EWhJ`L1WbcD(LHOQ)GuMbmErI=VT*yQBvV3}M@F7Tpf4uvMxllQ>qn z)q2uO!2U<9Ew&{G1*>m&EQ1c0F*%D$mp=24x8%B%N#!wP)bg*|WL3dP(QK`S09`ux zp!!nkPPNkTH)X>Xj!5ZuKqr;rhh`_;f?i*dv$qSipsh%6GUq4DIaU00ltv$wx_736 zM|d}%i#JzD*5Y-aiZO)gK%wt;qOP*Z6s2t3&okF=c!h#%SQ3OWDYePeGee zIC{Q}h~%9kLP9zFglb{Y^nhlkWt>c=f_LfB2?aOEcuTPH-xj6qYEjCqukgoI-a)H2 z)t1=3j^(;9F6q;#I10CIz(j|LDb!C}{QUN@kacf?g-b+=Vq~g8tjHZkkO|jziZW_W zY^WuIYR4D=A)%TC>!B9B6ZA)@e#2&7ZVgfIgtJwid_oQJ3egnww|aPwCY4R2nv-LG z*a(?a!ghMNE;TczExA!Wb6{iS%Rz{Z^_5=k4Ojr#4UfjUmFk0D0BFmVb|ZVLhpN7Q zjtL&f%|I;^jYBBLZ|b+|rW=ndz7+sfhA=nv+(+--I=(JfIj>K8<_FUm)fEf{)<^DL zX^34qkpIT13O%F29t<={>-`svoxO; zIQ*Ws80>fb>!6_61fn}+^fJ=z@*%hVs*&4;V0gD7V0bcIh$I}E@HtwmnJGDH`}RT+ zPK0WL&nK$MPjlbQdd~z?Zkv$Vf=+LnyN*7>)iY6m=V8|h8^kUK|*+P6&Qdu9(KEWZ1al1*MxHQHn0tCLl+i6dDQ$; z5Wv8LEp-Y~ub!j571{pj1sn6F<z}QpXQV99doR%5~5AKrF+{5crxDN zxJ4gfNi4RKI}`|{O~H+vsy@VXv8KlaFkqUBMLx&w>pr#Rmj8Ql{0QK$sm9FD*pWAp z_glyoJsPeKrPDDcVv^fwsq~jSllZk4JG2iI{N8NutI*K*ss~TWiqDTkHqrDUwG?`V z6QBCIH&L9u#dQxQsBrB{)p(1&jII0D+Dt!ClY5gA!Xz*i8X{O3mQr&W_FWH#WhJ%S zQGUU3E;p6L9bA)qyij|9kIU}t)Hdv?8^P*YnZc}Xt6lI`-#bn<`GwOwOMz`p)UbD$ zZhZs;5uETSEMY@E)^=E+GDkdEfEdkknO+SOdNLlMD~Jl@W$ge&`*=R7Wab;vJ(Y`eL9XF>sDBu=nD7fda9HNOe~pEVpzP6;g;VB~zaKcmx)fKD zu|2ujh@6VzNVkzJj=J#v{#SCAJ2Tsw1QbE!9i!?ymykQyTK3j`P%h@3=SR9Pv~vrDr4BjS&DNb@Q9UQI2`P>50kkxu zEy&f7Gj-2%fTI^-1NVAeE&m5jd!UzIKk=X=J9jX@zL0(}<&~DG*da{2zM9EZ`aynH zdrqN*F-Awn?lnVLf#2lM;-F+X@ukrC*u(V5!YXRl_Z!O%EL6CG9-%Qs58RH%anN|x zK9fjq!JlHeHC1|3bqRmm3 z0-PzTUi3B1fN4=RW_L=#dsgIvN4A)kgcvreB>M}nm+5?wxK@q^`N9hV#s2u#%AI?} zJdljr^yz2~$YkDjLEdbUe`#6O(x{kM6)NK483Y{5t8I^*<)#X|$YW?ay2b37`Q~;T znv&vWEVvGi%oldCYVqz9tn z5#H}XEhTLG&N+NF{quW_2~4>FG&z%o5Fxznz4s({8=v0?DVa0!@E<%M>k>9mH}4#s zWk3-SM+)RdFl;#)K6-1m)jC7gTLSEh!;o1o@V2m4Mlgp7@Ze4=z4BwZn$;}g4u*5{ zHItzE?;hMO#?HT*(MG;11qFyrd^nC#CVC)x)N!Ms?=|^Sf3soHN)BY04%p~h@y^v8 zSW}C)#@-%J7j&U??X>$@&Osi7+yoFj6dPf_nq60GeI)WLmL{Gsv56E01z=~(GLCd4 zIoe-Nj^%dNP6<#3zUj>;(UHfF zeq)7p>+G3iDhS-$ok7KPvCPuz&txE%|SqAe1ZRkqXoltMPve`uZQX zjQ{<%e62@r;-;5Q^~${hpnry@OP(aC9iDr~hw1l@p3bwHe>!?4;x|LMEVZ2Alw2Y1 zjH*H<+22G@Zf0C|7R<7S(0^X`=^$CzT<>hE0kl>5uv$>G2(yNg{) z2wt4JS;{gt`lk@U6ZS)_M6sFIaFH3BG(h<0J*%5Ic%w}hGnc%k>=d{}QAXJW*T>R3 z!_OM$Xffiq|pALip_ujmczqYYI>gE%1?p`FL`XK4o>>;9_%{M8D3w_ zeBb$yE&VPuX5@|BXXeCqqBLlF{0JRv=6t@JpR!GvT{=aV%DuG6PM-jKowZIWP zScZ~BKoqQ<2AGwX9{#AKy{rl(Icut(Iut)<)mT1x%ou)eq$Rw#wno5WK#$X48$T&k zWJ-+te0j(2uaC$5i-#>;q{Ds71c^p2t=^#~31V-8c(EWI*)IAO`-C2W0EgDsS4kCv zAo_nH+A^5(s}zKY$=x0mFg6lU`J!dUEe z)URt$p{Y`kMaI<7M9GTrg(uyW{l}d0?xEcr3Ni0+od(OLQOK@47=9f&0!OrjdGj)H zv^!cSbl{`37$9>dIOH$_0u`fA%JYwtL2gv<3H!9qh5l8fTLMAV!H$-RhpC$1##X{; zrCf9m(^14v7L)zw_CGi!eUM?2YQfT9XQelTV}50+&Hcw_&SI|Tw?7_>DUC4R$FQmA z{P@Kn%DPt2DbBOGDS*b$-#Z{VX?7jw#SQ5ZmDMWgBkt6*u!R<4y}56*>k14HYlN|m z;~WhLn#R{J14!jtofm7T0qlAnJ3O0o_U|;pef8NAVyn!q5LhGG! zPolDQW^;mq+9wFElYWsP$TzcCNIcemFl?O?k?-B5lk}*tl%rEL0{(gdS|1|f*@HKn!RkAk&m%7xz*6C7{T6|52P`(RPRU>P z9icuLP4z^cv&x-strzfDAJW3aR{;czYd1IvZ(IPECpQDgThCv=r!|_OE}u^68Nl zr_usN84ws$#xlys@{kBiJ$>$8AanH{*+MZMJ!vVknB?~Mcl?)Zm*i%rHWemdzawNt zHefLx>Sik6w&ko_L#6l#o_x*2heaT}L3)`N=(#U8u+T|^g_Dp$_bjls%grd{ z?H@rx#FF@Q-99KCm9-9}*0jiBHZ!u#sv5Wzo}c-xW76AJ#e+=~*NPlv+xhQ`@INc^ zIvzU!jP7KS_Ae0AfAuL%%Fx*^tSyFVAqKw1kudW=d|RPt5gk?XGfT164{S+5URaEjPo z$6c~d8)9v6Dv30^Ox5-VHQ>>TYTA_!6&l5g6QF&~SS*O3*PD3@Y~?-(x^6z@`bP^o zm0_N0FrJ-ID7;XgU#Z=|!s2=Me8jcO>=ib?d=`%`UO0^NtMG0^etC)~22Q7|YXL@YzM6P^kR+ddU{ASh$w}@8i*(iT zHjum3Ed6TlmiHE49T!az)2A-P%@zaSZLKKCPU@2a-&^a!-B0Yy3$L7J-JAviPviBV>s8(jrCAP@#l5HR-q2+q!J`DK$CK!RGSh3D*6IbrF*} z@?wNPf7{_o%kQ-|FSn@7&XLame<(U}E$Baj?W(v-uW?^}XsU}pOphW?SH%%MNBi2r zqGel$UMoiM>@d<%IN+^FjHiX^I42QXLDZx5$a%Yx4;kF$7nT><{=LEMd{N3Do*zyg z!1GnEM@ev3y)JRh4r#Xupz;TdK(TRK$yix3O;Z)zeV}nq$NNQ2qi!wqM#J1A+!*wfdoPcAtWKmmviqu_q*S?=bZ13-}rw2 ztdWtCvDO+ZYs_~(^O?_lwE`5?Z;Rb8p;yWnz2{iWK3+||#h-vyZZ4TwSi8+^{H+Fm z&LYMpzW%&;AvAab{sFh)JyaHU<`Y!`%N62Sj#zFN1Q)%T-7S>*aI+9&wd}5$5)&oC zF%$f`ZjP_jJGSyD_>sZOaTiddyrI*1rN>Dlos$exZn1>cmbll%!4Ul^x-u!8onknRpwjN zHgyadzj?0qe=tKQT8%Si9|_eWBj`*%I5`J4B@`U*G=yPpW# z$4zFD-y23}-w5w_AryMuB#V)B1+ZHCehMCHG(SNQgTEx)-C-NQ9`qX#sZ;)$jZn`W zn2osvQ-;{oD|o4_OdZj4MOQ#H#XKOqUwqHX`;$)lU{ZL0+-Wtjy zn#$veF}31rrGdxpYaMEqgM9gRyXO)66hG(Vd13JYV_8nLXd9{yAMrCO;T{v1O6*oi zM$;1|@8VuJ_#_^mRDF#FF`jrVitf2UhJ~EB_7r(m%G>AO0tHp3AjCyj**7ph(8=As#2+*d#Y2X2&Q>DZ z;va~?uZwlWl3$m-nV(8KedCcz)dS%?;S4ekW~pEQOeS&5Z%Q!y`Df>ErYG9azed$J ztd2i8y7`wO?;H1=)kxD8|5w~+2*3iL^RRjo7 zPj$aO1`UkaKQF!`clKM{zi3ncd)M}J+P!CjZwmUtToC^ffg|D%ZHu2!k*ZD-ymB6s z>;1u4K9S3;QJI9*N*;NCI91KMc3F)nB#q%$( z@kn6(;NOUJ2Y-9iL;LgI2HkNpKe=|AQ^86Fo~S-$5T-PjyZ4N_=_C=_{hOhPp43|ruv#-W!2D0yk%+)}iR$YKDRz__!uN}D@hw&7VK9E{k2(9aUyisva1q zXsJBB_x90+CpQ;6dy>R&ok@V1_(+MFNAkus@0%A9%8ul?)i|EgzZHP=cCu&IA#ZWL|=nlUlZWH-5W^ewsKoW!coBEC$b< z>rT|lcyh4YVA=l4eU+Fav&J7=jcQ|$3Yx{4AK!F+WhV0_OZ)6;hfA%F6~c=G`i_>+ zW4CbXA4ARe0gL9f^j=az@f82gmv1DpQeHS;w&6={%bCaGE3E?4u7gFw25b8Co2`zH ze^MSA@k4Qszif~Ua6Kh}7Km@TE7zQG&u?ZRdT8{8coOI54+<+sGeYR+)mc~VkKJND zsJPeKdwG`ke)JuGqcVXue!|fl_C`L@pvLf^RDP~%U8+aAWTUs*3lC2-6UjsSCAa)!xRGcCO(+0COoR(T!YJj4!9UfFo8+9oih}k-@Om}Kl(4ZPYVT{HE6WQxVQE2 zx4#1jYI`ifwupn>2^RzO%znHuReWC_ zb*nvd!IuNr(rH<|^McdvLG+W7#@u>O~Kk zKFKz9`Y6KRO)yvN16G+Zh%|AD33^ILzvPHN;zt0@)cqCJ8^DXg-Pcg=@hIpm^O4e2 zyKNM$iXX1EC;dvT1(u1lTCljuzlsM+Q(rtAth*4^Rr4;5Cq8sv`-+`+v0kco*&oQ$ zRj}&5-ZP?Y&%}kV8V%k{30QuImZLmSW6?SPOv*t;)#a&=+tUwNQq z`$<9LF$X7*M={p8pbVR^+nC*i|HKjQ2NHPoM`-RXaQE}%dt#Iu8ewYAztO2kAT@Zk zd{$ThBzo9Daf@?(Zc0{uD2ki#zmeo0@zH;m65j2j8VCH}Xl7i(@#P)yLsmwi2V~Sf zpIBKsd_~i?o=Ud7QWzEoP<}LfO=i^VQMA$aR%np(RKH5P4zpHuL+^hoY;VjQ|4dLO z2^RdWQR?)&fKF$f=bdBv;}trOZ4EwO^1dGS^7+{esZa{zQLE$$@3*jYnRnhUVM%k7 zN1o|>EGKugU;A8r8C^@6|`S;QLr80jSd}!F$@g-U0R9**5a&d9*tWz7- z<&?moTj2Q5Wv@goQ zxfr-Cd|~_GHsY_dzoPbWuH=mU2H+Hl^gKLvtC6WDK zQA5a0r}X}UUGy8V;@kQRTz_5jc@XqOwsET2#8}E)M7b+4?l!{fk3H!^+55|SGrki= z8Yu5N2rv~jm-sP~nXm|%mzn5Tn~u?UM}PsdZ0A#2EQO;qHNnsry5!0fzr3l2ftdzfoO zcth8GAEImDfzjurhsJ7DRM*hM-1~7{2+l@$22_C@XexXw8bT<_kN}%*&>tkb6Y>nl z%A#wJQVn$J3F%Rz5dma#pwz|onx<9f@~F#MJz=ZqVB4E0aJusEu~gOSba7P7%3c&0 zW7pB{soD;wtSd8|8EvQ-3r10gs({hwqj{|sOVjyI*++L%sf*-Uym8fm}p7QLr)=)q4p zLwx(CgbOI+6q{&ocN_0m*H1EtK;6CO_zwjm&3Eb6?fH!ly8S84>fvLK_ZUCCfT1Dz zGw;C1^VLRjxi#^xQQd_e8Ypsby`w&(z^RF3Gq4gRbKQ9BKpi zrvtp87Ooi`VF5c!+-4`QrzniGR+1y`t@-48zwm-iZL~fo2CLOfKN;pcO#RKU z%0_m?6v~e8`bG|rfV|@+Euu5RGqwDTy6sVA)wf%ef8f;kDL_ru;c49c`<+Q<#=Y=^ zNCQLj_Zoa2fS+~THK0>h`^3OFVUq@*BB6__ zA65Br;$9$DPSK#8E42*88&C zn3(oPCV^=qc)v?2y7bcNjfH@Gi`wNBJS|mG z^Qy*h?GCc^?bT9}e^gYNRF>V%UumdX1P7nlI6QexFh%)NMd**!v`x2G_I?zyB6ecc zF>nGllB1Mh(<-tZJy7D@#Fn&8e{55Cb`gDOl;m9m2+-Z0j?gQHotytlwn^@(h=+tE zywxx+6^_R=i`D2LAAK)Xa#T`flRP5?9+Pm5x`_a*klwO9zJh7MCy1a za5pW5?7vD3PZ-ePBu>H@!`)xX)l=M;E>53A@ls*bW=`LY`W3Zo;T5f&^@Q2-?5AH9 z187eDxX{QXcT;sjLULA=k6ZO6KpnIOy)OFo3@Vp?2`yV6?})l2q}0wRel}36>a|lq zjjYrON5&g)Y%!;C+@Pu$2l^AsU(Ls0v>#bPK876ZlS%|Pc5~G)VpdO(r#F77)4fmc zZOV&Qtkxk1<@#@{;lp*h1!5Ky{1@XQa(7+>=K_ILNu3OKBXY^#c9o_q=9mG zJN1H(=@A_Zi)!YTwtqff_uuq=67oGcU!8rA@#mh^O4h50q~9CWS=f#o{y31PhhEfB%LiuCTZWlUdii0ocBQI#<2?6% zWhqD?(bx+)5>p`;(iC9Ge)d@7FsSFeQYtiJtE5YJC44mxHu zIl%a&-Knw-N^h4GG`I*`z7_CpZebba@s>c$WA4>@Yz*RdTM2$ZaMG7 zlGtcknX%ZYYSx{(hJ0CCXW;bZip$x^r-&rk7?R|FfNIRLAglb!j;yuC#smB$dNPds z-WfMFu==Y1>aOm&RCz(}OBY}koo!&fuQG#TJ{rvF1^miIuwUt!t8R`a=4h3!?FCdc zdb7b^(SoPD%sd1Id8J|Fk=DIMdErzmk%d(=d)R~hxk(3dp_A}A`VT3qqpp4)E+!<& z)aSGWGUGkr<7XRb*zUq#vXLhGDXD7n9uGDuknEzzjh10O*^Q1(wodft#OMd>-i>x{ z$T4f#w$HgyHXP^ZLR<1Zj^yvhtIE!rA}<+B#vD_m&>W0o@pw&(qX>jRf>?+>s|1eN zN^d9Y#^M9F|GY~1Mn37H1s#mEM!fG}kaJ*bCIf zU#ca#6Idr_%jQ`eJ(HJ?IBMlpiE^9N*0)!Whk{<9C5MBw!)Sh$HTVaR&?z+3jv^M2 z9c9mO9^aH4f)8{?wjZp0g(SIIJ`1q^{7G_EeAFn~uy?&-+l^fc$Op5x!km(`#m!Q` z{x~D8QVBv$Td*Zsvd!=GEF_Uzjw1vfCiMIzYYP)@aXTF~?z5d$q_gu(>Ve#w-40IP z7~vOp$EG%lVWAS5>glus@M5e)Hc`gXmR?@BhOdcPI9$9Xrm6KkTW~R>H441^OJcuh9;DaiQPqXD@}A--B^%K6X~X@CrJ158e$@{J#UYm+O97*? z%s*`yb0tx_6`_w6y}miVuTBUXJ{P)`?afp~e?}i5gP~>|1X_ZK<4kd5fGDvS(_w@L zb`^{A#2f+_7p<1;Q#*K6PaIw_<9s=qme6IiOsu9Q@5EwD(GHO0=UdccjI!$bl){~z z0neFeuK-;Pz}60nj73_Q?lrx2r8 zSWIb}iJ?b#r4UDNc$cx|z4oLb{VIz+jz~?$B@cqe>f=F~tqh5LP_)8ju2e z5-tyWT@i9nr?|KM%rYCE>U`>yFIQd`sJ(iz^SJv?EbKzQF`&vMXXn1fvtLEFGr3l} zXlY<-R&4a-FLd)#w!_ZsQC2QS79r=Qr?^xnBn{u^R%M3r9He z{SM|R&Y1b-)7o%bRng%U#G{dH&x6}&g1T|ckz$i!(F{=01E5rH5owa^ic{}zd506?hP5TQy^4c9RGH{p;g^U zD6!woHr6n_&NjI}Dq`t%pOP++tS(2j@8AG|DtH zUvxz9jgk;^gzgd6LEG*5(cqG&lg_c&;>A+j`h@>7bFpm>GN?I`<;xx;R?iUCXaU#R zv9QYpu}=7>+F{<;*j2HA@Ukjy4(q(X*hyJZB!=``*0<)PZ*V*+Yr^4DG%t6*7Tm*r zJ4dPwE_2=KPjPdPnaCiewqoeA?sPqsF67|olsKTST$>Elmc>@mGJuSXSB7mi1v zrlBFgMn`l(uitc@dVQqfexyg_Cusy8g!+Sybr6(M6w$WrKpR9lQN-FL<-g3ZIjj_$ z3zM=%?OWf~otva$7Ow_a>IU@SIL$z$Kf95bvbEjnspuJ_2d7Ik0kn2t@Ao~Go=vrG z6c3wQ;<)jmxH;ScidHtHDs$<>1a@x=*7q7RLP-_+He^$;-Sal6t&EL-HS#fIecR|u zc@k9ilO-@u9X2tvd(uq53;HF+izD8t%SA@ejmVQV}0H>`(%ef;#PBz zlYSR`JyWjz|BOq88KTYBqSH@1pL+4$=z}5*588Ya#?XZRUR*|)76S1q?Zx{{1wl1h zg1hN&)r!z75=B{J8{#?8QN@6rA-6LRenEVTl8me3ZH#*R-aywkIs=C21mJ?=Har=hZqL0pqR!KDY-Y3iit(o}PnBfQvw-Wo>8tF6T zn?J;Qnc^)*NT^J6u;-jaSNcAmJGd?upSw4c6u#vghpWL>%qy*DtYrw8*oDp6jzuP= z@CI#Qzz=p`ZV!c`Q%s|kNXPB^RZD1cemY(Zsmn^ zwIyLgRHyp3nMtRnlQPjZw$z7Y_dx7x8(BrCdf&W!<9tsEXc=kyZYnJsMrtHv@1e(% z2^UcAMQfA2=$SP13_qV>ghudxXcN*P*|gpM4KuR0)(T}D#?kmTR|#49sZRi9zy7sX zzPz!uO#ceXO0UGa3WAtDw$Xp^cceVVaUqB7dFg0;1;-Leukn_~8K@ITLDfy8M8o-I zYZdxv0jEkE%paRRoSm>RvBJ1TYW5o0O^wpnF$Q@+;cjPB-!U>Qpq zYGhM(D5iQ78QE^lA%qcXPa=P3!5dqktKMyjZJHEzsA790bGn>4upJ#wp1iL#`jd<) zSlcy?JVuFnwK(nMnNddGoZu&(SDalAHt?G}*KgNiGnUqs<5pEtl#RVJ-!P)%+%-hD=z zUkEJaPBdYou0f3l29^uJnhX8V^HM)$2cDn333Ie~R!TGxPgT5o_2}gg>$qo?E(T^D z&l@R?4SVgh%(-w}N@maf=D)=DB5dPY0O!?S3O=YQxanUc+e#)XO5DrDt;|x^gnbH`k5!~=evbUKUHw^u@97$DrHGxcj3@jWa%gCaMLvy`#05{YyM$< z{qMEw;x9TAgar}zuK_Fk6a5WJEnl7L)8kGbXOyH?v`3B+YcejMRy}q>a4JeL-n|~n zL-{Z84C885Nb0=e43#TRDa3-2Sk!2sui(>0V_=i%)3ICTc%tkYn;R6$Tk#4dt{wCs zQ&=@}F2y1}3JQp^G`U0w!ya|6U`{n82W(Z$j8?2}V%mGClF^2$zI z*z)jGDPET?A0%> z!#TYWh^dN~UJQK*FKk{wX=z}}-G{C}+S5vWT zH@4{4)NtSYMS1+Dqdw^Nx3!Bn*>`pIgNH|MDhBx@7YD*h_*l9+ayS8~ZP$ISI)kF|Gp4z0CJe>PB$8IAiBenYL`b#oB zLLJ;}x5fZG9AimVuM+Lp`FTTO# znep+}qQmI-x-+0t#|{eW>Rr!2rlOEIf^#uNkJQiDg+Ov2T%}%?UjGqQ z0lG~3hE`wDo|BCHs!-r|+KhG1v8pnvsk8u9-WDyt6aQHIlcW}7g{!RHD1+br3_pgi@|=1*$T=3>oSb7gG;0|rg2Ua^Rfy+)h3YUw5f9bGeR%Vz&gCX+hg z;>dGx4j$!*0^(~9UGdIP!kUD{vRr8oeu{Cokvn_qrcs^pkgxNzs3}e9aqv{!e^{Co2Us1 z;lo{j0vUEqAqIA&HKmyn986s1f*NG~X~Ls{rW9$HknuI6Z46 zagcF2QDZXazPcHl?V^2Ym(`X+vJp>4dc_VxYp8q;$2^riA&3j?lYUT5=SR^q{CcPQ z&2bcW98%IASx|%inSmtdQ!@RojX2rst_rt7z25j}5+L{Hd)AkPbdiyr!U^qc9}`OV zUVv2Q{BmyBTRaDLi$=Z|jW3mI zV^iq!t%@_bk;)z%z4E8WwiU+%j~%^|DDuPQAb@@v<+L((ARR8FFN- zJ;*Pi;mT`kUeYA<5ol+jMN%u0Vb9UCoNQSPk;d345K*;xcCuEVxvS`Cri-9aIXxuM zcD_puxx&mFq-$GZ589Vl)0P9qk7)X5yi#`##cJG|fAJHD)V5_?{Wpg3chN(n`RxHR z@PVtxk^cu&V|rX*ZP9Pq=JQPW5=6nBuYNFkRnq-$2qrqnufk=H7$ixkv(GRNGiW5J z#X8czyao|(G*EyQ#n4`mgKorVd+}b@*u*{azv4TxQ{D$9LVDa^PcXh9n2eH%&5%nm zPQBsfCESsptG6}XKt(K9YArirIFN%_VYE*)jTrK@%WmRJgnQ_f4 z1xX8r{R|mSVR1k$w9O_NRd(t?!2q^$r)o)wUI_i3)Mmpe@0A}OKydBZAK5QSqN3>Q z$K5l;4y@2m+x&7JGvKho4EN`?0G9Vwm?wu|hV!&a*(0EEC;c37T#o)cUUXq4M8`i; zTA#-QolA}`f>_^p=NREP zGDBcfrqr6pJKbNZXTf=-^3LvlZ~pD9&8B)YrxqWuq;bTfDlDFe=+SH~sQbi>HM$&) zDcLt9F0RsgL^#L!16B%)tR6E^M5gO+AZ+5`40LJ>ThDzbE1+$!PZb~)X5cbPX&y_N znxwXr53t=qNR~H=1Ek_u>0w@;oK~fFA55lbqBr23GC(6VI<8sUm>5USr{8!FwsPf9m-FQrVnT0_{r8`xiKRaS%YRE|L{!6aN9PGL~R7Y%xK@g z1Y}u6&-g~RGVcYB*W~we4OrmaJJ;FO8|~ZPxCj%8RC5f|r#iA4*0&1eM6%V_7>=9K zOuVz$rK+>xO5V9IIvu!uzZF~pIfuwrO)tVXO9G#kDDKqseq9a7cDTwe9bvpUxX2d& zQa=COPE>UL)yNZT?UKoP^#RygG?yp~C(~w$(jzRZyiqM?jk&wJT`#@x*Wv}i!B)78 z%;OEa&@@Q2Sm4#-=7Bk3k^}GT#Xp zn{QWzW3!&>hRg_~k4l*-1kftMJ_S~-w}7ZT2TM^LMeNGTj(~!^yV2a}yNUO*G}VbJ zM=gwef*<*Bi*YI-W{kzPZ&4znWvKQ|Xl1KuTY&zpO4e59JB-NP1!F2lB~vbtfXR(eCqy!^b9R=xn(RcvFj9)l2YldQCrnDA>JZjExDVl?zN z>Z-5B{XGjHUf=OkUQ=-m-hLV3x0~%RdP7>`NWwd60>4xBGboRE%n^<#+-xMzJO+iC zXHVp|OvbwPKV+CHX&83`Nqv3}S!Ted1*@_zLt^w!yPUxD2r|DZ z#k&$TR<(}UbfSl=%P?Md1=k`gWKWTycL!3--(Ejgm{VhtUgDsad$G4)D}sQx>hwmE zDV0lnKjA&jBwP7HA5#bU7I07_~l&phP?N-#NLzPgQ-xRhL6XfN%qL4m4D zBSS)z>vO!VX2oHZ5@tPfPYF5JzY#^LuF&P- zoIsWDyGxqVsd*!TDUL%U3(oY9Sd!S2X1V=nmA$*!5f+?w>m$h* z=%iaJ;SG7z@(#)(ls885D&>BpVh{3}T7sJL+{Y!I8!cr*!}*Fuo9$SxpoRiqYUJV z#6xu`=$bLcG5S_vm;<(IK7SCf7LVM^~WP{ z`RRaci*^Zq$h$8?k?BY+$e!qhI4Oze+YVA5Yx~JpKm7Di5DZ2ZKkFanFEORfWGwGR zJixV|AvzAf`D5^h&Bj~+JpRLallc@(W^{UFifbci5A9ZdRZjyzW56klA97ATMDSQ> z9wBr}F(}4Iy)EdDT__fFhaP&fN3weaK6S8NxG^NHoTD?h__Sqbp09_$J+b6o~~M8_iP#O z=z{X#OuI!GhU#95uwqPo8t8B4?@c}MCVhg})kmb=gYo3h$eu(~K|$Y{5r%VlV3{_z zZYLTWGZO+UAkrPlM%605DC`Oj_G5KN$4V~)M{Qd}+}wiP!=`aPN9n}YY?UfFG34M{ zLzRN(21g0Ac9EZB_92#*mAMxjcoj0?JF_|ykibiW8^zSWIn{5Z-+{b{98B_dz-%yk z7ugQb$S@psyH>|6G}hf#(TuaPkCZpPY10a2PruxAs)^48&VPFpHZ6NU{6-$69?v&_ z7;n}y8-T6vn&uYI)WaMx(y&FvY=~VLp{uRkHk$@ehW4$Fxw~~r-#5?ek@LKm9lO*r zzv*5V@6?-^6NFoeg`j*8tCJaIsI`dykXJb0j+5}|sKBOpKju?_hF-~$wn!*kDo2$) z!klLwv7GUnB*5w6898(EC>=`ooQwa?CtL}0UcyLD-pKbhMnxI?Qyh#RVE0lYRjUfr z*y5?YMoyYFy&(QoXzoC!c?&29hh*0BULfMJJk{{+{p~XJrd~ujuD}jM;o*u9G^CDTSph2BQ*#!<`jlK{;8ZvXyV`q;vK!P!1P;E<@ncL{*@gLd) z*?uDZc1T6-Ba`dzC;WfHfIRZ^^n~~%Md5I}z4%6*x$-SbUmj`Rycv7?AnnnF!q&2E zP`H~kbvrD|X6**!X**Y0c*&?qE|YUzCV}%Lv~9lN5M(e^CdyA|`ePXJjDJr-Oa&l> zy4VP0+s#(--1Qj<$58Qilg_q#z5LG8L>(0NaCBD(XRM2|a@`T$>lE+@f=tkFb=LYY zzt)ez^rbP^>leYeP2qwZlcv!S-jc1u(AL%uv1t7S|2%68ZY+{QydVgY9cc^m8*x?u z9a6@qPK$!X)Yo53ggCJaj>4{U7pvHeqGZ0+V`h(?9KA@@Dhj=$(h{kes#F1%7*5$F$xo6;_}$M19POx6@UT^8Cse`stKD>*Sko+v9~fPcSXkaY+Um*$vKG-`Hnm3l4 zp9d{@#freUx;96J^27uUm8(dvk4S)8PD$R=bCE}q^m$!qD~q!DbEzJYni{={m!IML zUrenJg_Va-Z_i8k8+KGrVsDguwre4r5Sv~R6LA)8&JwL!iT)%ldh^T_2JpMh8~@4_ z?FF*u-QMTN!PehoWfC2Infe(s{5F~K{Ol7%m00q6U7qa%N=AJqcoBEV6nS<|a|uzn z6jjB3^+W#W`zdwI#o@czS8TfIf5~cpB*}hq(ylx^c0J86ed>wKVO8+_pm3%_q7^1m za~Vo^=KIztH4I(cdgee5b-hKpsc1f&oo#1k=YEZF?fKbxo%aXli_~&iH>fY@q{WR8 z#VQz>(X^h~!KsdgJ$wtPoWz0`78i#3wd8r#J#kC#|*6zHBu zd^MbC2V2aFX&v*A^=tA`9``QwOdhueN$Uc24<*S48(_%ge(y5LgwfDeIAW6!_?&%V zG%f2+V3m}5erK|JG2%`;tW?4rr#XJT-E6rwM?S%aV^1fgukFGwCVjdp)m;o0=xN4Y zUe*gRc-m*Da`@y*Ej7W`Bf+;C#@{lX1&JiKW`_GwIc8Vty z{p9TQmoht}pcB2g@L{T5h-@mEan5S!8n>3105AU+gw9DNZi%jSjb!+r8rOey1^vCn z{y+LI?zu{B>*!(a5;xvTer8WFASA}{?aR!z3BuyTHls}7dx=W%K1`1CV*R}in5TN1 zh3KOQf8gqjzs+Ua3;QsJEBRzr%Dcl5r?y-bovLTp^sv=D>u0m7N_K+HX7Ar>mPTDs z+_0I~cz)t5L(s)%NuyH|%^to?Rhz?%{_(GBNrU;cL3W!(fG(>^^AO zv>4QkejGHLN@k{U^EWb4Rr>~tFPT`ip(u(0^_fwh5Oi<*xJUBW(NFCL6wfwPc{7QV z;j4Bg3`c503b}Q@I#BuY>51gYHyK2g0w8z*g~3kMP$nhpu(0*Tz1Dhw8-1;X4WtxK4y}?p3DnH|5z0slpFYq&GsKlMwo*kcynSOi zg$-L^7#B^X3{+|x(Y7<`dpC~QjIO;^%kmEdEpU&ZtVhDwv@~kBMK54kIay6K6x))& zem)Od)m*#=J}ij=D034Mpt@WFsUI90A_vy1Wa=TiUiV5gwTNqVhv*=?Ikw3^$(s%n z5aQ3M+@Z~3hYGMfH}xBAo+~fyzSMhic7xOp^;_!RD}ddnLGm|j0=VV0HKr;&!Px3J z(XD`9a0n}c2wN9SnxYujbXETGK5a=Dd6w(3GcXNYlZ{4=RF^(w?vZK4I#_jFvnSx} zSR_Nb)J+44Y`Wy1D?6h}lh zsq4B??J@T|Mzn|w+1MNWp=!FIV3tZ2r-bP~&zpJIoyjju<@>o#Su~hs_l>!Wol4A5 znZR}WZhb2MbuU^*Ur;`YXmO}YfZLvJlS-&wF-l^MFz(Cq3PBJd$;Ah1Z0rCp+Bh5z z682p%Cec}HP13d@(DaaYn9-Src>jMcvF)7`=m$NKM*MRz{(l5Y|At_3;pYdP`KzII zZOxQ|-6{Cz&R5CPh{BtWO5*YHXJX}qpVk|D>b6_M_kBwaxEH$qT9?Sl&QiKm>#x#m ze#BpyV|9uxtWXhHiMVu6@P0;EjRtmE^!75{pkXu|(2Od&TEnt2tOcjIIo50Y)qAif z8c_`}n7w|XdzC`RbRpD;7-he|*%BWfqv#ZQ7oREd^fp_Cl-@zFzUUnOz@mumY=lRi z0Lz}e@sNi0=hP>ib+!&557+pn_PAsGYzpUl1C`p}FBC@%=aUs(MhID<&S3mvKeK$M^joO*ythvlgXgr^SDfiTwk(5187t(imgb7WCHYY>Wzny)Yb4w8n9a@g zyZJxetX$M=LJ4FH75?a+bouwomwu`CbUHM;k-M*?R&ff(xLf3(UV9gnK($Mmpz_7h zP~2uYEg-wP5y`Ua^`F4Hiyl@4-YA>l{AP!6QhAB0+e;MCo=+qOM0ZEpP;e@?g8trn zqIF$`_1jO}8{FnBwVhn5W?hML4>0Uo!1aQhOJ@miKXqP5rWqM#n%<>=Gwc4l{1 z;ZPGPlw&_Xw8kPsCla+?bSpW5gbZv2e1;Lh;&iaxdS)TBr#j*FJr3{oKq%v#57Fjx zMSO8J5Xt@-wpZq<?sM0XK58}41|hL$s( zw^!mbHE=~2BK}b?+G@jd{64|~69a8`8s!W@$ZUmQoVga%?%aGf@3A(jIP1mN;%oAO%1CWeAw zwri3opx8H8M=Y9a6v_z>f_b!7J#~gT&{Yguq6Bxmn0Yemrt%RvVuV5p-;1`%@0fFa zb*vfv_VlL9<6w5mF5!CEGuNP%oPdBl$}=rXp~Z znL7>L<&bhB2McN-)<*4^3j{m zva|SHKf*bVTW_JlE#e&_IwP(`aqf}v4JQxIUu*QSnZmAyw%MR~G|Fc2G|;TE2cFwl zFHl&2OmthF4~Uojvt?(l5?4^L0G?AAh5LAv5+`}s3Qj4dlC^eftj=P{jq4A!kFtQ_ zqeuyoA)>nJBYx`O!5S`qgH~Gma9*0xXiR`p?>+D&RXz1ms?J7jnPkKQ*_{{NZG zDq2Sr<%~)vDj~;=QWQCoBe!THx171g)QW`pwpJ=cEBBRvL1(|sJuB1KAO-~TsrFSVjO3{nfa44@5PHSLwE|C zwxFdj2amm_&FN~R#Qrlo!jjHE$`Rh7F!8fMeN={@HazV#Je1w2|8v-l?dEdhlJAO= z69v{|)wl$~t{uKfD=lbqCX9QmT* z)bKO>W0~@&Ig@k2;?wE{4&`!s$ArDEDLSez#_5X=h24-Tk9KwQ;@WHM6~nvB%*44c zdHQMMbRu@S<&0}0oh4=ulr)jDuY>RRNX<)ZJx+KsCz5SyV=-_PL5TGzHPI)`5adWL z1yJ3dk5Pba#&+CR4b;c-OKL&I5)|Lney}ldelK^;eVP>#e;w?R5$|vy_A#5VQ~f*5 z`dmq;Uk_NOgN|$3tLeqN@@{JL z-kxQ>xr>!rKR-BM=#V#Z3k6EDO&vI2sChUmUDyI+$===epvlL=%q_Bap>=rK9_qxl`cwMg|slKpwJMbY2AD_x?ECYx~P<~^{|xhIt!Mjt;vse1d) z3L>&_PAW25)fjSOAi!e2{C~fWTjT+=lY?-12Brl;1jtW$z~{v zi9#2@OL9){a*Gl%suATyzRJ#$BM|xNI^~|{(3=yz_XeX92}9v^i~UjSJc(_ivSk2lcG!r15+R=HmoSbQ^n zP60n98sx+Ew8n?jM;Ii^51c3_bKrga%PggOvsq_G2yPhH&C9of!Ef$C4;|(-K{Qy< z-Wk?YtU^RhzI*ijI`yAl5n%#h^b%niF}`el-JAz|a_2FYHSQum+j#2$<=Ch5ue!ai%@ zfqz6IhLA~~Q;+(LzTO)^I8|f9b|ld4lb+89%UzjrSS`oxwrT<*P_&2}AOE3<~+Dfp*?9a5+A%W%WJcVM43<;N5( zyS#eny2Sz(Ie}9Mtkuxaa=S)ga-2!xJz)-Y5-mHCMaI{m+{q`qKYl)4%-| zIR|3lxAe2AqcQn9zD2`%M9~Xq&+R{|t(WswsNdJY&Sm9~jX1vHdtpHZ?tjJS0D&?M zY{2{^!~eHl__y2*caTyEnl6+Z-2A^GaW&o-lxGHobDG68SbZ1GECAR#2>q0Zl6*6qp+XOXCZ1p^%41y_)-UQKpTm01SOC}H+WsK;I5v1b7aXv zviE+7lq+`R`&57?>|IVo>gPCuX;=aMY70PJRye-w6@zv7hJ(5_E#;1HI0=s%GFnw} zR>TJz{4dE+3yXXOp6m6-mT`8%ET5Ah*dJUVwW@SjP`(dDfQ59Bi2qXfPqY+b zkWP{I6$bvNSmww%D6;nivCMChEVLy48vPS(5}mrs3&<|sjy026!GUIcaI06p8JCYf zK3-%br@a^LV=*?At9eI$AJw5#ce&bNy)94G9Q7xwuZ-pSTBdm0+?>BEvWZ1<3$;_e z=+uYbG<6+5W?TQ@y9upFjv0bjEIofsl$Jd>;(!Fqnp0yZO(nxJH3{m&eba+S5r?C$ zzSrT)PY<4!MrAP#*g8CdHVQUdBzIFrhbtG0y(Ugqq=oP_Iq!&h%XKB4%nvv{M2U#v zM&&aCDyDc}boM!m(`brF%ZYEnx3YHeYll$b%>QQ=`^q0Ci*Fg->Uz`uif|aJHyfCBF{>x_ z{2u~Pt&Y40^0(+S8NKHCU3ob*g6eGobsOVYsm=t7WC0x@O9|xa*m18gv;P_Jj>i+R z?c;W^=Uq7tN-v)o$?4dmKn1iHo-k^OBV#$fy`D1l3!OO5w_Ts#hnH!2mQSK|ie+s- zrBS-$&(tywV1ro=v|`t9;foGAu`Dvb?_Gx#W=3t|vRdltYGbES26*d(0eM;;z+ILV z4sq%aYrkl~m)~(V+tLRUV#7*p9k};iX`f!){hpB8Nfc)j;h7#vsuPwl$H7^Cg|5IQ z5^!Rf>hyK^d_}c3-6NJomkVV|s4h97aN`Os54j2fMQyoWDevteNXgH79Iy{efDwFJ^%wo}o#- zkH1o02C>XE;8!Q47o7vY9(_~%DcKuKEOVbEcl(hi`&frG?5LxE*>fePK(g=6=I^A# zMU&?fE$j`wuQWOD(z4Cp2YqN8W*m^`9I-Xuq+uY7W8w!+q6*Cf%m>Ocs(H)^nlgXM zS*G@*NXZuu1jgO8p*7wY*i0ENvts`Y$YpoM_ha*>=yKb4QmR3XR@t10<(j@KI*FDW zfz@5M@NcSB>VF@o)O8O!P#gHVdmA(-RL{pfB%=QqQXrZ^c z1pm6s)|TQS;)}BST)u#p+AtAjkch5Ty7BNmom9_@?$5~Q0&LA?O;ZEVF*q3z%SJ9y zl^`bOzg~FnmL@3wN(6aVemb%8+vQKBQ$ce!bysc7wo#l0e1YTyfx;&@JS(DEk!9mJ zd-&*isI!=%O`eJ7JSH>QK7dSW|Kv~6L@vY>7ZN>SLvDrZp=2E3T}K2i8xAiS7mM*1(^ zDD}C|&P+Hw^xKb;Hz>7d+4w#fV7eD}H}6o%0&Jnd#oy9^=pZI$C3|IuwPj&m+GtfE z90N-Tc{}?r3_&1D0kU96`wpkS;2a27Q&}PbnzcOYps>(jU&b zS9+w1xC_iD;t*Le4e5V1aYkwOib;q;l=EZ26`BqOreg)13$l;YsL=F9z`hBVaXzG? z1VW4&YTvYlzu59r#673ugEh5&X!ZTerO2oGK^n8DyaimK=#UYlkw313a}u zvf_sI$uppEO;W3_B8B-y^sJmN?r2T8y|5^yWE?<}6Ng}wjL9*Q*5swTc-2y5Di4*W zUrt^44``0v|BQ-`1bvAKVph<>fJ<|Gs3q%D*?3SeG}GfQ^~V4nRrgBoP&=F>CTpGC zD=3!Jn(3CT4L5MBjHj_~eVa-L~}F#C@EdTYapB1ediIOtO!w6QJE4Pzj>JOaMbP0w%Rq zx@Y+l@}nT)ee$F58Jcs^{LB=#{Q4zYU0ixZ4SP9Mew#zf^#1G`>x~^w=arT-aXrCDx;B``oQqOW=}5F)5P;5nK1Oq;eIM-`9`h$t?FZ zk#I`rcGQWxvrsv50SD6*_#`qBS@l-3{|u_xdGlFYa;AnQH7kBm41S#VsihT1Z2vFR zvH#6ex?Eug-!waxvswxgJ!kt|09)M=I_ozse`JRL3fXNJO_XYE;g8YJ zGTHQ(?Y>Gqb5L5iss$O=mS%*n-D#a^>43nEL}iRc*eiC!rn=N{ziU+V$Ly)?4-TCU zc9YW{vQ6+1qLP{;9qrhC)ReWh^>n^xBkq zw*5pIzF&h*a0}pIjyW17Lcz_;Dyt=!?WPUAFDBqXq6rh#j}N;OKFmtN}>t?XRxgKTUwjE;%bYyit0RF!fh0S2?@o7)O2T# zG{Po%0&t3D+oo$jT$>p+tf=%!!pHDlE}8l4TsC9IrV{9!+t~@7+sAPnEI>t^@^+xB zNq$26(tKw7k=x7o^QOk1Se&WmadY&!yu1H{eNtyB@AQG*w2)pONWV{EgJY@~qSC~( zBkDJMDbN+5$1fzeKk5&2zXiB$1Y&%w`A9fhF>_`LA$RU)^9VhA@`@E063ekH z-i~=Lmcp0PBGWBLsitcgSS?kpeE3|&=XchH*LGS@cRevy;-1zmY;p1)x#*(bsanBT zHsxMRUeI8ZnP?=+_Fv30sLl*M8;(CqQ)hqC7cK@K=iB=X8@7igDSX)#?FZD#{+zdY zXkDwk<$gg?wX$!3l;#SIyCPVsy3=-~GWAC{-5D~<3}x+T$*+Dc7Fd$2O+M#aPe$T4 zbl1nXa~^!;g(10DG)Q1{T!>y34(dHGJ@O*kULcDLk3M1DLAfWg9&`X9>6D!^zjO|F zip+x%gW%p(TgrEzUeY5*4Z(0x+zHtbW98UE5#<>b{j2f$7Kajg&&*47r^Rm`fu<&f zDbRH`m<@}wUbFv=JL#6n7d*yleQp!Tj{X*7z@PS4CJ7F4oa zBNb~kmJzC12hJ$PMQReQv-G(oZq*Lng;*;I8AS2=EV;TDD7z{2+rv<0pRE-PIT=-4@!_UwT37#rEJUiw_Ef zuU2C}o~#&sQE7ij2$S*2UOB!u&^QI4ikdl7bBg|U51-z2i z{bSGt4>|l)D-^pU2ICdLJk{Fn%0ia6i}2*wy0R8CY)_gP>0^zh0BN{LtY^6AHl}F_ zqfNdrFSqZ_0)8ac4O@1LQc(E()-!IE<$J+AQmrHRT6r>4W2|xQp*lYz3Uy%n`rBs4 z+?Mnz>Z=BbFyEv7cBl@Bu6kT}?O?;~sAl=e;^q{qfs5k^nSE0}{6+(#hOTZAIN-S%`@BIQKgBI*OAD2qxret%{EK~8R9%5~5wF>{ z@@!K)g2H_0u1)&;M3EZsR{<|kagnx3w`XTa!}aPodGqn%*J%RgcP`2w&DkdTgive8 zpPDewSFe*%DGTP9AGrTyQCuo(PF*{dX&}Fbh<_0(5-^&FuWprq>qZt9evun{ z_R}`)qOL|D^VtTqaoHxXA`N(jD%-9Ju^b@8yz#uJl*VNhwJJvm?7EpAUWWjhjUIO4Tm`F9G)SWU2~slH53=;a&pFm31L6_$&dogq}QJJdGZ;nvLK zsu>c0t^?ewy_wqqt5+Dfub;>AI&$&x(ENtmF(I`cB=vrq@}?1_#i2@Ho;>4RTy>+{ z&OO+Zu{R$_MpJyAiM=&Rak61imIaW3--XokN z=aRbU(wvJU7i+$%CNNiVK4AjxHDwyGw?*Csrkq!Mu)R5@LRKYFpgQL{xhu?7-20en zDeXpLncEONU>G#r=nV?zYpkDFf7yZ`{tqZz>X5$X$PfXW`g~MfvYSJiq*lQ>%Xuup z@j{SW)+_-*;H-T+I zfpHh7-GG@a4dA9q0mJmhyxBk}mS+#25;=@b(uT#|k8JYIy@Tw*HUp(K%6^C62=c;m zm@ZjBv*#Z2>UUvrik`my%1$Y6V{Y9R3TiRV*z6fxp!79gPYSAsU*DQm8gMBokbIBS z`@~e>u&`RKe7BZuF|V6o)D^Qsvm^dTcT|~IoP^%4oNFD(aNC;Kb^AAb-GBTRz+bjdVw;^~e{W-I#zUj-7nWkxO~lU~>qJ~<@*Dbvrb~op z0rS6uh_iHS^p)(t)=zX((8%}C48Ajtp$lyaOwmj3^b}>;_z|F!A&>Xe`HcRdYgJ{r zus8|SihLbDKhc?`tx4?f$O4Z8oD&y$e7&8M25fUuAlGr7_xTSGmsMQTVfBCR&hOae zzdMv|D;Mxjp##zD4Yq3llejAkt{{?s56#Q!t2_p_VRtHdMiaRI-3F@{N<~{G$W6PN zHbK)Xlm6tLHN4oX4{Y-|!ibia|LuL=Y}zPYH*#P6-(Hs{yo1>`N=p_@zoXlIt-(Ar z%l`?b<3Rm+T*&>;_v`Z_QFnQSA#2gTKFj|Z_o5P_X!%r|$bZp5^d#m5E~p@XuR0LB z&igQu&Kk%_myvY77wq(~{6{8aB%L(`Gb8D&z8(O~%t$(aW~_hyf{}Fo8-0Bbhm1~V zEy;k<>8zz=Wpp}!6cgWzMtbEOqtl^hmA~UUMyInHjD52vW4!jy%MFT9W{lVVE*j~W zl`&ph(}avMURy)u!5FWtrO0Jm(^V2sxo<26R7vxef6(dn$I_+(*pI%@zMqtjUv z*cdkw(3w2{9sC%b4x`f%Wn9x)0|*$`bpH9klY-9~*L2p?@BgG{Y3Zoq2(1yI@WoczD@GdfeJ@fgPAo9TDZ2lS_ukS zIIZ(GQ!Ik~P$BxicJ%LIFO*GQI+7!Iy`Mnx0da&UM24>hGi&G)PJspa)kBQd`wT@VRSaD?zR}6&8qo-BcrpS?!mrO%~Bec(b=q)|C!*70orOCDAE1Wey@0H We^5T?3Cu^C&Yspjm2=YS#{U5vzWyoz literal 99262 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 G$3Fnl0pzRz diff --git a/docs/how-morph-works/general-protocol-design/3-transaction-statuses-on-morph-mainnet.md b/docs/how-morph-works/general-protocol-design/3-transaction-statuses-on-morph-mainnet.md index 5dac47606..b170248ba 100644 --- a/docs/how-morph-works/general-protocol-design/3-transaction-statuses-on-morph-mainnet.md +++ b/docs/how-morph-works/general-protocol-design/3-transaction-statuses-on-morph-mainnet.md @@ -24,7 +24,7 @@ In Morph’s L2 rollup lifecycle, block states progress as follows: ### Typical time to reach each state -- **Sequencer confirmed / unsafe (`latest`):** Typically within 2–4 seconds, reflecting the L2 block production time. +- **Sequencer confirmed / unsafe (`latest`):** Typically within 0.3 seconds, reflecting the L2 block production time. - **Published to Ethereum / safe (`safe`):** Typically within 5–10 minutes, up to 12 hours in the worst case (e.g., if data submission is delayed). - **Finalized (`finalized`):** Typically within 15–20 minutes, up to 12 hours in the worst case (waiting for L1 finality). From 93f084c1daac7863ed1dc683d2f1a2a9a1f833c1 Mon Sep 17 00:00:00 2001 From: "marvel.yu" Date: Tue, 28 Apr 2026 16:04:07 +0800 Subject: [PATCH 06/25] Feat/fix content err (#144) * update withdaw img and fix tx status desc * update withdaw img and fix tx status desc --------- Co-authored-by: marvel.yu --- package.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/package.json b/package.json index 615e3ce5c..c7c08b5a0 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,11 @@ "webpack": "5.96.1" } }, + "pnpm": { + "overrides": { + "webpack": "5.105.4" + } + }, "browserslist": { "production": [ ">0.5%", From c04cc8620db56a1ec689647be354a4903cfc5bad Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Tue, 28 Apr 2026 17:21:56 +0800 Subject: [PATCH 07/25] fix: precommit for skill check --- .husky/pre-commit | 4 + ...t-driven-development-workflow-doc.test.mjs | 2 +- __tests__/doc-skill-pairing.test.mjs | 4 +- .../7-agent-driven-development-workflow.md | 2 +- .../full-node/1-run-in-docker.md | 3 +- .../node-operation/full-node/2-run-on-host.md | 240 --------- package.json | 9 +- pnpm-lock.yaml | 474 +++++++++++------- sidebars-skills.js | 2 +- skills/morph-full-node-run-in-docker/SKILL.md | 34 ++ skills/morph-full-node-run-on-host/SKILL.md | 28 -- 11 files changed, 342 insertions(+), 460 deletions(-) create mode 100644 .husky/pre-commit delete mode 100644 docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md create mode 100644 skills/morph-full-node-run-in-docker/SKILL.md delete mode 100644 skills/morph-full-node-run-on-host/SKILL.md diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 000000000..2294c4098 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +node __tests__/doc-skill-pairing.test.mjs +node __tests__/morph-doc-skill-inventory.test.mjs +node __tests__/skills-sidebar.test.mjs +npm run build diff --git a/__tests__/agent-driven-development-workflow-doc.test.mjs b/__tests__/agent-driven-development-workflow-doc.test.mjs index aaf84e8f4..f7ac3f40c 100644 --- a/__tests__/agent-driven-development-workflow-doc.test.mjs +++ b/__tests__/agent-driven-development-workflow-doc.test.mjs @@ -48,7 +48,7 @@ const DISPATCH_TARGETS = [ '/skills/morph-tx-cost/SKILL', '/skills/morph-rails/SKILL', '/skills/morph-skill-ln/SKILL', - '/skills/morph-full-node-run-on-host/SKILL', + '/skills/morph-full-node-run-in-docker/SKILL', ]; for (const link of DISPATCH_TARGETS) { assert.ok( diff --git a/__tests__/doc-skill-pairing.test.mjs b/__tests__/doc-skill-pairing.test.mjs index 2cbc2ffe7..309fa3c8c 100644 --- a/__tests__/doc-skill-pairing.test.mjs +++ b/__tests__/doc-skill-pairing.test.mjs @@ -13,8 +13,8 @@ const ROOT = path.join(__dirname, '..'); const PAIRS = [ { docRelative: - 'docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md', - expectedId: 'morph-full-node-run-on-host', + 'docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md', + expectedId: 'morph-full-node-run-in-docker', }, { docRelative: 'docs/build-on-morph/sdk/js-sdk.mdx', diff --git a/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md b/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md index a6b19c358..d4e1efe78 100644 --- a/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md +++ b/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md @@ -33,7 +33,7 @@ single Skill — the Skill then self-describes its own steps. | Compute or display transaction fees (L1 + L2) | [`morph-tx-cost`](/skills/morph-tx-cost/SKILL) | Explains `GasPriceOracle.getL1Fee` and gas math. | | Route to Morph Rails (Alt Fee, Reference Key, …) | [`morph-rails`](/skills/morph-rails/SKILL) | Product-level rails overview. | | Install Skills into Cursor / Claude Code / OpenClaw | [`morph-skill-ln`](/skills/morph-skill-ln/SKILL) | Symlink script. | -| Run a Morph full node on a host | [`morph-full-node-run-on-host`](/skills/morph-full-node-run-on-host/SKILL) | Node operations, not dApp dev. | +| Run a Morph full node on a host | [`morph-full-node-run-in-docker`](/skills/morph-full-node-run-in-docker/SKILL) | Node operations, not dApp dev. | Rule of thumb: **if there is no planning document yet and the task spans multiple files across contract / SDK / frontend, start from `morph-dapp-workflow`. Otherwise go to a single diff --git a/docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md b/docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md index 3b06b3756..903d6c86b 100644 --- a/docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md +++ b/docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md @@ -1,6 +1,7 @@ --- title: Run a full node lang: en-US +doc_skill_id: morph-full-node-run-in-docker --- import Tabs from '@theme/Tabs'; @@ -199,4 +200,4 @@ Edit `morph-node/entrypoint-geth.sh` to change geth startup flags. ### Sync from genesis -You can skip the snapshot steps and run the node directly. This is much slower and **not recommended** for most operators. +You can skip the snapshot steps and run the node directly. This is much slower and **not recommended** for most operators. \ No newline at end of file diff --git a/docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md b/docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md deleted file mode 100644 index 79b533cd3..000000000 --- a/docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md +++ /dev/null @@ -1,240 +0,0 @@ ---- -title: Run a full node from source -lang: en-US -doc_skill_id: morph-full-node-run-on-host ---- - -This guide outlines the steps to start a Morph node. The example assumes the home directory is `~/.morph` - -## Hardware requirements - -Running the Morph node requires 2 processes: `geth` and `node`. - -- `Geth`:the Morph execution layer which needs to meet the requirements as below - - Fast CPU with 4+ cores - - 32GB+ RAM - - High-performance SSD with at least 1TB of free space - - 25+ MBit/sec download Internet service - - -- `Node`:the Morph consensus layer embedded tendermint which needs to meet the [tendermint hardware requirements](https://docs.tendermint.com/v0.34/tendermint-core/running-in-production.html#processor-and-memory). - - -:::tip -According to limitations of the current geth implementation, we only support archive mode for launching a Geth. So the storage size of Geth will constantly increase along with blocks produced. -::: - -## Build executable binary - -### Clone morph - -``` -mkdir -p ~/.morph -cd ~/.morph -git clone https://github.com/morph-l2/morph.git -``` - -Next, you need to check out a release version. You can find the available release versions on the [Morph Releases](https://github.com/morph-l2/morph/releases) page. It is recommended to use the latest release version. - -``` -cd morph -git checkout ${RELEASE_VERSION} -``` - -### Build Geth - -Notice: You need C compiler to build geth - -``` -make geth -``` - -### Build Node - -``` -cd ~/.morph/morph/node -make build -``` - -## Config Preparation - -1. Download the config files and make data dir - -``` -cd ~/.morph - -## mainnet -wget https://raw.githubusercontent.com/morph-l2/run-morph-node/main/mainnet/data.zip - -## testnet -wget https://raw.githubusercontent.com/morph-l2/run-morph-node/main/hoodi/data.zip - -unzip data.zip -``` - -2. Create a shared secret with node - -``` -cd ~/.morph -openssl rand -hex 32 > jwt-secret.txt -``` - -## Start Node -Mainnet nodes support synchronization from either the genesis block or a snapshot block, while testnet nodes only support synchronization from snapshots. - -### Sync from snapshot(Recommended) -You should build the binary and prepare the config files in the above steps first, then download the snapshot. - -#### Download snapshot -Download the latest snapshot corresponding to either the mainnet or testnet network. - -A complete record of historical snapshots is available [here](https://github.com/morph-l2/run-morph-node?tab=readme-ov-file#snapshot-information). Below is an example of how to download a snapshot - -```bash -## mainnet -wget -q --show-progress https://snapshot.morph.network/mainnet/${SNAPSHOT_NAME}.tar.gz -tar -xzvf ${SNAPSHOT_NAME}.tar.gz - -## hoodi -wget -q --show-progress https://snapshot.morph.network/hoodi/${SNAPSHOT_NAME}.tar.gz -tar -xzvf ${SNAPSHOT_NAME}.tar.gz -``` - -Extracting snapshot data to the data directory your node points to - -```bash -mv ${SNAPSHOT_NAME}/geth geth-data -mv ${SNAPSHOT_NAME}/data node-data -``` - -#### Start execution client - -```bash title="Script for starting mainnet geth" -./morph/go-ethereum/build/bin/geth --morph \ - --datadir "./geth-data" \ - --http --http.api=web3,debug,eth,txpool,net,engine \ - --authrpc.addr localhost \ - --authrpc.vhosts="localhost" \ - --authrpc.port 8551 \ - --authrpc.jwtsecret=./jwt-secret.txt \ - --log.filename=./geth.log - -``` - -:::note -For testnet, using ```--morph-hoodi``` instead -::: - -tail -f `geth.log` to check if the Geth is running properly, or you can also execute the curl command below to check if you are connected to the peer. - -```Shell -curl -X POST -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}' localhost:8545 - -{"jsonrpc":"2.0","id":74,"result":"0x6"} -``` - -#### Start consensus client -```Bash - ./morph/node/build/bin/morphnode --home ./node-data \ - --l2.jwt-secret ./jwt-secret.txt \ - --l2.eth http://localhost:8545 \ - --l2.engine http://localhost:8551 \ - --log.filename ./node.log \ - --mainnet - --l1.rpc= -``` - -tail -f node.log to check if the node is running properly, and you can also execute the command curl to check your node connection status. - -```Bash -curl http://localhost:26657/net_info - -{ - "jsonrpc": "2.0", - "id": -1, - "result": { - "listening": true, - "listeners": [ - "Listener(@)" - ], - "n_peers": "7", - "peers": [ - { - "node_info": { - "protocol_version": { - "p2p": "8", - "block": "11", - "app": "0" - }, - "id": "b4ac59de479b0251d441ca0385429bc21713a208", - "listen_addr": "tcp://0.0.0.0:26610", - "network": "chain-morph-mainnet", - "version": "0.37.0-alpha.1", - "channels": "402021222338606100", - "moniker": "morph-dataseed-node-0", - "other": { - "tx_index": "on", - "rpc_address": "tcp://0.0.0.0:26657" - } - }, - "is_outbound": true, - ....... - ``` - -#### Check sync status - -curl http://localhost:26657/status to check the sync status of the node - -```Bash -{ - "jsonrpc": "2.0", - "id": -1, - "result": { - "node_info": { - "protocol_version": { - "p2p": "8", - "block": "11", - "app": "0" - }, - "id": "cde0d7cecfe9c82244c1dfa72c951759d02f1024", - "listen_addr": "tcp://0.0.0.0:26656", - "network": "chain-morph-mainnet", - "version": "0.37.0-alpha.1", - "channels": "402021222338606100", - "moniker": "my-morph-node", - "other": { - "tx_index": "on", - "rpc_address": "tcp://0.0.0.0:26657" - } - }, - "sync_info": { - "latest_block_hash": "B4C0E514CD984B101FA89D7DB48C1FE18384F64C25E5565F618A5FE2851C42A9", - "latest_app_hash": "", - "latest_block_height": "2410", - "latest_block_time": "2024-10-21T08:49:09.952573291Z", - "earliest_block_hash": "0D66D908033DA7A3F5A95179B8D64261EDD887B944E59502A1C9EFBC1C9C4EF5", - "earliest_app_hash": "", - "earliest_block_height": "1", - "earliest_block_time": "2024-10-21T06:00:00Z", - "catching_up": false - }, - "validator_info": { - "address": "B7395023EFF719D0EE15AD96FFC7F69B6B9E52EF", - "pub_key": { - "type": "tendermint/PubKeyEd25519", - "value": "tZI+wTExwoKeyUFgdSSYmf4sAYp4BhJu13UgPy1wDOc=" - }, - "voting_power": "0" - } - } -} -``` - -The returned `"catching_up"` indicates whether the node is in sync or not. *True* means it is in sync. - -The returned `"latest_block_height"` indicates the latest block height this node synced. - - - -### Sync from genesis block -Start the execution client and consensus client directly without downloading snapshot. diff --git a/package.json b/package.json index c7c08b5a0..37839051e 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "deploy": "docusaurus deploy", "clear": "docusaurus clear", "write-translations": "docusaurus write-translations", - "write-heading-ids": "docusaurus write-heading-ids" + "write-heading-ids": "docusaurus write-heading-ids", + "prepare": "husky" }, "dependencies": { "@docsearch/react": "^3.5.2", @@ -52,15 +53,11 @@ "@docusaurus/tsconfig": "3.1.1", "@docusaurus/types": "3.1.1", "@types/react": "^18.2.29", + "husky": "^9.1.7", "pre-commit": "^1.2.2", "typescript": "~5.4.5", "webpack": "5.96.1" }, - "pnpm": { - "overrides": { - "webpack": "5.96.1" - } - }, "pnpm": { "overrides": { "webpack": "5.105.4" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 824468dc3..bec1b35cb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: - webpack: 5.96.1 + webpack: 5.105.4 dependencies: '@docsearch/react': @@ -49,7 +49,7 @@ dependencies: version: 2.0.1(@docusaurus/core@3.1.1)(react-dom@18.3.1)(react@18.3.1) docusaurus-plugin-sass: specifier: ^0.2.5 - version: 0.2.5(@docusaurus/core@3.1.1)(sass@1.80.6)(webpack@5.96.1) + version: 0.2.5(@docusaurus/core@3.1.1)(sass@1.80.6)(webpack@5.105.4) dotenv: specifier: ^16.0.3 version: 16.4.5 @@ -97,6 +97,9 @@ devDependencies: '@types/react': specifier: ^18.2.29 version: 18.3.12 + husky: + specifier: ^9.1.7 + version: 9.1.7 pre-commit: specifier: ^1.2.2 version: 1.2.2 @@ -104,8 +107,8 @@ devDependencies: specifier: ~5.4.5 version: 5.4.5 webpack: - specifier: 5.96.1 - version: 5.96.1 + specifier: 5.105.4 + version: 5.105.4 packages: @@ -1907,7 +1910,7 @@ packages: '@slorber/static-site-generator-webpack-plugin': 4.0.7 '@svgr/webpack': 6.5.1 autoprefixer: 10.4.22(postcss@8.5.6) - babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.96.1) + babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.105.4) babel-plugin-dynamic-import-node: 2.3.3 boxen: 6.2.1 chalk: 4.1.2 @@ -1916,32 +1919,32 @@ packages: cli-table3: 0.6.5 combine-promises: 1.2.0 commander: 5.1.0 - copy-webpack-plugin: 11.0.0(webpack@5.96.1) + copy-webpack-plugin: 11.0.0(webpack@5.105.4) core-js: 3.39.0 - css-loader: 6.11.0(webpack@5.96.1) - css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.3)(webpack@5.96.1) + css-loader: 6.11.0(webpack@5.105.4) + css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.3)(webpack@5.105.4) cssnano: 5.1.15(postcss@8.5.6) del: 6.1.1 detect-port: 1.6.1 escape-html: 1.0.3 eta: 2.2.0 - file-loader: 6.2.0(webpack@5.96.1) + file-loader: 6.2.0(webpack@5.105.4) fs-extra: 11.2.0 html-minifier-terser: 7.2.0 html-tags: 3.3.1 - html-webpack-plugin: 5.6.3(webpack@5.96.1) + html-webpack-plugin: 5.6.3(webpack@5.105.4) leven: 3.1.0 lodash: 4.17.21 - mini-css-extract-plugin: 2.9.2(webpack@5.96.1) + mini-css-extract-plugin: 2.9.2(webpack@5.105.4) postcss: 8.5.6 - postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.4.5)(webpack@5.96.1) + postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.4.5)(webpack@5.105.4) prompts: 2.4.2 react: 18.3.1 - react-dev-utils: 12.0.1(typescript@5.4.5)(webpack@5.96.1) + react-dev-utils: 12.0.1(typescript@5.4.5)(webpack@5.105.4) react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1)(react@18.3.1) react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.3.1) - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.96.1) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.105.4) react-router: 5.3.4(react@18.3.1) react-router-config: 5.1.1(react-router@5.3.4)(react@18.3.1) react-router-dom: 5.3.4(react@18.3.1) @@ -1949,15 +1952,15 @@ packages: semver: 7.6.3 serve-handler: 6.1.6 shelljs: 0.8.5 - terser-webpack-plugin: 5.3.10(webpack@5.96.1) + terser-webpack-plugin: 5.3.10(webpack@5.105.4) tslib: 2.8.1 update-notifier: 6.0.2 - url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.96.1) - webpack: 5.96.1 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.105.4) + webpack: 5.105.4 webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2(webpack@5.96.1) + webpack-dev-server: 4.15.2(webpack@5.105.4) webpack-merge: 5.10.0 - webpackbar: 5.0.2(webpack@5.96.1) + webpackbar: 5.0.2(webpack@5.105.4) transitivePeerDependencies: - '@docusaurus/types' - '@parcel/css' @@ -2013,7 +2016,7 @@ packages: '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.2.1 - file-loader: 6.2.0(webpack@5.96.1) + file-loader: 6.2.0(webpack@5.105.4) fs-extra: 11.2.0 image-size: 1.2.1 mdast-util-mdx: 3.0.0 @@ -2029,9 +2032,9 @@ packages: tslib: 2.8.1 unified: 11.0.5 unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.96.1) + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.105.4) vfile: 6.0.3 - webpack: 5.96.1 + webpack: 5.105.4 transitivePeerDependencies: - '@docusaurus/types' - '@swc/core' @@ -2130,7 +2133,7 @@ packages: tslib: 2.8.1 unist-util-visit: 5.0.0 utility-types: 3.11.0 - webpack: 5.96.1 + webpack: 5.105.4 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -2174,7 +2177,7 @@ packages: react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 utility-types: 3.11.0 - webpack: 5.96.1 + webpack: 5.105.4 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -2211,7 +2214,7 @@ packages: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 - webpack: 5.96.1 + webpack: 5.105.4 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -2671,7 +2674,7 @@ packages: react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1)(react@18.3.1) utility-types: 3.11.0 - webpack: 5.96.1 + webpack: 5.105.4 webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -2725,7 +2728,7 @@ packages: '@docusaurus/types': 3.1.1(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1) '@svgr/webpack': 6.5.1 escape-string-regexp: 4.0.0 - file-loader: 6.2.0(webpack@5.96.1) + file-loader: 6.2.0(webpack@5.105.4) fs-extra: 11.2.0 github-slugger: 1.5.0 globby: 11.1.0 @@ -2737,8 +2740,8 @@ packages: resolve-pathname: 3.0.0 shelljs: 0.8.5 tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.96.1) - webpack: 5.96.1 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.105.4) + webpack: 5.105.4 transitivePeerDependencies: - '@swc/core' - esbuild @@ -3405,12 +3408,12 @@ packages: resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} dependencies: '@types/eslint': 9.6.1 - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 /@types/eslint@9.6.1: resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 /@types/estree-jsx@1.0.5: @@ -3421,6 +3424,9 @@ packages: /@types/estree@1.0.6: resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + /@types/estree@1.0.8: + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + /@types/express-serve-static-core@4.19.6: resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} dependencies: @@ -3688,95 +3694,95 @@ packages: /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@webassemblyjs/ast@1.12.1: - resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + /@webassemblyjs/ast@1.14.1: + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + /@webassemblyjs/floating-point-hex-parser@1.13.2: + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - /@webassemblyjs/helper-api-error@1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + /@webassemblyjs/helper-api-error@1.13.2: + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - /@webassemblyjs/helper-buffer@1.12.1: - resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + /@webassemblyjs/helper-buffer@1.14.1: + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - /@webassemblyjs/helper-numbers@1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + /@webassemblyjs/helper-numbers@1.13.2: + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 '@xtuc/long': 4.2.2 - /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + /@webassemblyjs/helper-wasm-bytecode@1.13.2: + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - /@webassemblyjs/helper-wasm-section@1.12.1: - resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + /@webassemblyjs/helper-wasm-section@1.14.1: + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 - /@webassemblyjs/ieee754@1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + /@webassemblyjs/ieee754@1.13.2: + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} dependencies: '@xtuc/ieee754': 1.2.0 - /@webassemblyjs/leb128@1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + /@webassemblyjs/leb128@1.13.2: + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} dependencies: '@xtuc/long': 4.2.2 - /@webassemblyjs/utf8@1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + /@webassemblyjs/utf8@1.13.2: + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - /@webassemblyjs/wasm-edit@1.12.1: - resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + /@webassemblyjs/wasm-edit@1.14.1: + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-opt': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - '@webassemblyjs/wast-printer': 1.12.1 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 - /@webassemblyjs/wasm-gen@1.12.1: - resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + /@webassemblyjs/wasm-gen@1.14.1: + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 - /@webassemblyjs/wasm-opt@1.12.1: - resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + /@webassemblyjs/wasm-opt@1.14.1: + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 - /@webassemblyjs/wasm-parser@1.12.1: - resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + /@webassemblyjs/wasm-parser@1.14.1: + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 - /@webassemblyjs/wast-printer@1.12.1: - resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + /@webassemblyjs/wast-printer@1.14.1: + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} dependencies: - '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 /@xtuc/ieee754@1.2.0: @@ -3807,6 +3813,14 @@ packages: negotiator: 0.6.3 dev: false + /acorn-import-phases@1.0.4(acorn@8.16.0): + resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} + engines: {node: '>=10.13.0'} + peerDependencies: + acorn: ^8.14.0 + dependencies: + acorn: 8.16.0 + /acorn-jsx@5.3.2(acorn@8.14.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -3826,6 +3840,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + /acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + /address@1.2.2: resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} engines: {node: '>= 10.0.0'} @@ -3848,7 +3867,6 @@ packages: optional: true dependencies: ajv: 8.17.1 - dev: false /ajv-keywords@3.5.2(ajv@6.12.6): resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} @@ -3856,6 +3874,7 @@ packages: ajv: ^6.9.1 dependencies: ajv: 6.12.6 + dev: false /ajv-keywords@5.1.0(ajv@8.17.1): resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} @@ -3864,7 +3883,6 @@ packages: dependencies: ajv: 8.17.1 fast-deep-equal: 3.1.3 - dev: false /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -3873,6 +3891,7 @@ packages: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 + dev: false /ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -3881,7 +3900,6 @@ packages: fast-uri: 3.0.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - dev: false /algoliasearch-helper@3.26.1(algoliasearch@4.25.3): resolution: {integrity: sha512-CAlCxm4fYBXtvc5MamDzP6Svu8rW4z9me4DCBY1rQ2UDJ0u0flWmusQ8M3nOExZsLLRcUwUPoRAPMrhzOG3erw==} @@ -4061,17 +4079,17 @@ packages: postcss-value-parser: 4.2.0 dev: false - /babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.96.1): + /babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.105.4): resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 - webpack: 5.96.1 + webpack: 5.105.4 dependencies: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.96.1 + webpack: 5.105.4 dev: false /babel-plugin-dynamic-import-node@2.3.3: @@ -4123,9 +4141,15 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: false + /baseline-browser-mapping@2.10.23: + resolution: {integrity: sha512-xwVXGqevyKPsiuQdLj+dZMVjidjJV508TBqexND5HrF89cGdCYCJFB3qhcxRHSeMctdCfbR1jrxBajhDy7o29g==} + engines: {node: '>=6.0.0'} + hasBin: true + /baseline-browser-mapping@2.8.31: resolution: {integrity: sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==} hasBin: true + dev: false /batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} @@ -4240,6 +4264,18 @@ packages: electron-to-chromium: 1.5.259 node-releases: 2.0.27 update-browserslist-db: 1.1.4(browserslist@4.28.0) + dev: false + + /browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + baseline-browser-mapping: 2.10.23 + caniuse-lite: 1.0.30001791 + electron-to-chromium: 1.5.344 + node-releases: 2.0.38 + update-browserslist-db: 1.2.3(browserslist@4.28.2) /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -4325,6 +4361,10 @@ packages: /caniuse-lite@1.0.30001756: resolution: {integrity: sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==} + dev: false + + /caniuse-lite@1.0.30001791: + resolution: {integrity: sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==} /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -4635,11 +4675,11 @@ packages: engines: {node: '>=12'} dev: false - /copy-webpack-plugin@11.0.0(webpack@5.96.1): + /copy-webpack-plugin@11.0.0(webpack@5.105.4): resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} engines: {node: '>= 14.15.0'} peerDependencies: - webpack: 5.96.1 + webpack: 5.105.4 dependencies: fast-glob: 3.3.2 glob-parent: 6.0.2 @@ -4647,7 +4687,7 @@ packages: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.96.1 + webpack: 5.105.4 dev: false /core-js-compat@3.39.0: @@ -4746,12 +4786,12 @@ packages: postcss: 8.5.6 dev: false - /css-loader@6.11.0(webpack@5.96.1): + /css-loader@6.11.0(webpack@5.105.4): resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} engines: {node: '>= 12.13.0'} peerDependencies: '@rspack/core': 0.x || 1.x - webpack: 5.96.1 + webpack: 5.105.4 peerDependenciesMeta: '@rspack/core': optional: true @@ -4766,10 +4806,10 @@ packages: postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 semver: 7.6.3 - webpack: 5.96.1 + webpack: 5.105.4 dev: false - /css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.3)(webpack@5.96.1): + /css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.3)(webpack@5.105.4): resolution: {integrity: sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -4779,7 +4819,7 @@ packages: csso: '*' esbuild: '*' lightningcss: '*' - webpack: 5.96.1 + webpack: 5.105.4 peerDependenciesMeta: '@parcel/css': optional: true @@ -4801,7 +4841,7 @@ packages: schema-utils: 4.2.0 serialize-javascript: 6.0.2 source-map: 0.6.1 - webpack: 5.96.1 + webpack: 5.105.4 dev: false /css-select@4.3.0: @@ -5425,7 +5465,7 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /docusaurus-plugin-sass@0.2.5(@docusaurus/core@3.1.1)(sass@1.80.6)(webpack@5.96.1): + /docusaurus-plugin-sass@0.2.5(@docusaurus/core@3.1.1)(sass@1.80.6)(webpack@5.105.4): resolution: {integrity: sha512-Z+D0fLFUKcFpM+bqSUmqKIU+vO+YF1xoEQh5hoFreg2eMf722+siwXDD+sqtwU8E4MvVpuvsQfaHwODNlxJAEg==} peerDependencies: '@docusaurus/core': ^2.0.0-beta || ^3.0.0-alpha @@ -5433,7 +5473,7 @@ packages: dependencies: '@docusaurus/core': 3.1.1(@docusaurus/types@3.1.1)(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) sass: 1.80.6 - sass-loader: 10.5.2(sass@1.80.6)(webpack@5.96.1) + sass-loader: 10.5.2(sass@1.80.6)(webpack@5.105.4) transitivePeerDependencies: - fibers - node-sass @@ -5535,6 +5575,10 @@ packages: /electron-to-chromium@1.5.259: resolution: {integrity: sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ==} + dev: false + + /electron-to-chromium@1.5.344: + resolution: {integrity: sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==} /electron-to-chromium@1.5.50: resolution: {integrity: sha512-eMVObiUQ2LdgeO1F/ySTXsvqvxb6ZH2zPGaMYsWzRDdOddUa77tdmI0ltg+L16UpbWdhPmuF3wIQYyQq65WfZw==} @@ -5575,12 +5619,12 @@ packages: engines: {node: '>= 0.8'} dev: false - /enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + /enhanced-resolve@5.21.0: + resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 - tapable: 2.2.1 + tapable: 2.3.3 /entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -5609,8 +5653,8 @@ packages: engines: {node: '>= 0.4'} dev: false - /es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + /es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} /esast-util-from-estree@2.0.0: resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} @@ -5839,10 +5883,10 @@ packages: /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: false /fast-uri@3.0.3: resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} - dev: false /fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -5870,15 +5914,15 @@ packages: xml-js: 1.6.11 dev: false - /file-loader@6.2.0(webpack@5.96.1): + /file-loader@6.2.0(webpack@5.105.4): resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} engines: {node: '>= 10.13.0'} peerDependencies: - webpack: 5.96.1 + webpack: 5.105.4 dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.96.1 + webpack: 5.105.4 dev: false /filesize@8.0.7: @@ -5961,14 +6005,14 @@ packages: signal-exit: 4.1.0 dev: false - /fork-ts-checker-webpack-plugin@6.5.3(typescript@5.4.5)(webpack@5.96.1): + /fork-ts-checker-webpack-plugin@6.5.3(typescript@5.4.5)(webpack@5.105.4): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: eslint: '>= 6' typescript: '>= 2.7' vue-template-compiler: '*' - webpack: 5.96.1 + webpack: 5.105.4 peerDependenciesMeta: eslint: optional: true @@ -5989,7 +6033,7 @@ packages: semver: 7.6.3 tapable: 1.1.3 typescript: 5.4.5 - webpack: 5.96.1 + webpack: 5.105.4 dev: false /form-data-encoder@2.1.4: @@ -6489,12 +6533,12 @@ packages: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} dev: false - /html-webpack-plugin@5.6.3(webpack@5.96.1): + /html-webpack-plugin@5.6.3(webpack@5.105.4): resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} engines: {node: '>=10.13.0'} peerDependencies: '@rspack/core': 0.x || 1.x - webpack: 5.96.1 + webpack: 5.105.4 peerDependenciesMeta: '@rspack/core': optional: true @@ -6506,7 +6550,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.96.1 + webpack: 5.105.4 dev: false /htmlparser2@6.1.0: @@ -6603,6 +6647,12 @@ packages: engines: {node: '>=10.17.0'} dev: false + /husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + dev: true + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -6997,10 +7047,10 @@ packages: /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: false /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: false /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} @@ -7089,8 +7139,8 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: false - /loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + /loader-runner@4.3.2: + resolution: {integrity: sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==} engines: {node: '>=6.11.5'} /loader-utils@2.0.4: @@ -8114,15 +8164,15 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false - /mini-css-extract-plugin@2.9.2(webpack@5.96.1): + /mini-css-extract-plugin@2.9.2(webpack@5.105.4): resolution: {integrity: sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==} engines: {node: '>= 12.13.0'} peerDependencies: - webpack: 5.96.1 + webpack: 5.105.4 dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.96.1 + webpack: 5.105.4 dev: false /minimalistic-assert@1.0.1: @@ -8243,6 +8293,10 @@ packages: /node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + dev: false + + /node-releases@2.0.38: + resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==} /non-layered-tidy-tree-layout@2.0.2: resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} @@ -8740,18 +8794,18 @@ packages: yaml: 2.6.0 dev: false - /postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.4.5)(webpack@5.96.1): + /postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.4.5)(webpack@5.105.4): resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 - webpack: 5.96.1 + webpack: 5.105.4 dependencies: cosmiconfig: 8.3.6(typescript@5.4.5) jiti: 1.21.6 postcss: 8.5.6 semver: 7.6.3 - webpack: 5.96.1 + webpack: 5.105.4 transitivePeerDependencies: - typescript dev: false @@ -9165,6 +9219,7 @@ packages: /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + dev: false /pupa@3.1.0: resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} @@ -9199,6 +9254,7 @@ packages: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 + dev: false /range-parser@1.2.0: resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} @@ -9230,12 +9286,12 @@ packages: strip-json-comments: 2.0.1 dev: false - /react-dev-utils@12.0.1(typescript@5.4.5)(webpack@5.96.1): + /react-dev-utils@12.0.1(typescript@5.4.5)(webpack@5.105.4): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: typescript: '>=2.7' - webpack: 5.96.1 + webpack: 5.105.4 peerDependenciesMeta: typescript: optional: true @@ -9249,7 +9305,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(typescript@5.4.5)(webpack@5.96.1) + fork-ts-checker-webpack-plugin: 6.5.3(typescript@5.4.5)(webpack@5.105.4) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -9265,7 +9321,7 @@ packages: strip-ansi: 6.0.1 text-table: 0.2.0 typescript: 5.4.5 - webpack: 5.96.1 + webpack: 5.105.4 transitivePeerDependencies: - eslint - supports-color @@ -9324,16 +9380,16 @@ packages: react: 18.3.1 dev: false - /react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.96.1): + /react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.105.4): resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} engines: {node: '>=10.13.0'} peerDependencies: react-loadable: '*' - webpack: 5.96.1 + webpack: 5.105.4 dependencies: '@babel/runtime': 7.26.0 react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.3.1) - webpack: 5.96.1 + webpack: 5.105.4 dev: false /react-router-config@5.1.1(react-router@5.3.4)(react@18.3.1): @@ -9671,7 +9727,6 @@ packages: /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - dev: false /require-like@0.1.2: resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} @@ -9769,19 +9824,20 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false - /sass-loader@10.5.2(sass@1.80.6)(webpack@5.96.1): + /sass-loader@10.5.2(sass@1.80.6)(webpack@5.105.4): resolution: {integrity: sha512-vMUoSNOUKJILHpcNCCyD23X34gve1TS7Rjd9uXHeKqhvBG39x6XbswFDtpbTElj6XdMFezoWhkh5vtKudf2cgQ==} engines: {node: '>= 10.13.0'} peerDependencies: fibers: '>= 3.1.0' node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 sass: ^1.3.0 - webpack: 5.96.1 + webpack: 5.105.4 peerDependenciesMeta: fibers: optional: true @@ -9796,7 +9852,7 @@ packages: sass: 1.80.6 schema-utils: 3.3.0 semver: 7.6.3 - webpack: 5.96.1 + webpack: 5.105.4 dev: false /sass@1.80.6: @@ -9836,6 +9892,7 @@ packages: '@types/json-schema': 7.0.15 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false /schema-utils@4.2.0: resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} @@ -9847,6 +9904,15 @@ packages: ajv-keywords: 5.1.0(ajv@8.17.1) dev: false + /schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + /search-insights@2.17.2: resolution: {integrity: sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==} dev: false @@ -9914,6 +9980,7 @@ packages: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} dependencies: randombytes: 2.1.0 + dev: false /serve-handler@6.1.6: resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==} @@ -10390,15 +10457,20 @@ packages: /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + dev: false + + /tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} - /terser-webpack-plugin@5.3.10(webpack@5.96.1): + /terser-webpack-plugin@5.3.10(webpack@5.105.4): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' esbuild: '*' uglify-js: '*' - webpack: 5.96.1 + webpack: 5.105.4 peerDependenciesMeta: '@swc/core': optional: true @@ -10412,7 +10484,30 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.36.0 - webpack: 5.96.1 + webpack: 5.105.4 + dev: false + + /terser-webpack-plugin@5.5.0(webpack@5.105.4): + resolution: {integrity: sha512-UYhptBwhWvfIjKd/UuFo6D8uq9xpGLDK+z8EDsj/zWhrTaH34cKEbrkMKfV5YWqGBvAYA3tlzZbs2R+qYrbQJA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: 5.105.4 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 4.3.3 + terser: 5.36.0 + webpack: 5.105.4 /terser@5.36.0: resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} @@ -10654,6 +10749,17 @@ packages: browserslist: 4.28.0 escalade: 3.2.0 picocolors: 1.1.1 + dev: false + + /update-browserslist-db@1.2.3(browserslist@4.28.2): + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} @@ -10679,22 +10785,23 @@ packages: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.1 + dev: false - /url-loader@4.1.1(file-loader@6.2.0)(webpack@5.96.1): + /url-loader@4.1.1(file-loader@6.2.0)(webpack@5.105.4): resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} engines: {node: '>= 10.13.0'} peerDependencies: file-loader: '*' - webpack: 5.96.1 + webpack: 5.105.4 peerDependenciesMeta: file-loader: optional: true dependencies: - file-loader: 6.2.0(webpack@5.96.1) + file-loader: 6.2.0(webpack@5.105.4) loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.96.1 + webpack: 5.105.4 dev: false /util-deprecate@1.0.2: @@ -10785,8 +10892,8 @@ packages: - zod dev: false - /watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + /watchpack@2.5.1: + resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 @@ -10828,26 +10935,26 @@ packages: - utf-8-validate dev: false - /webpack-dev-middleware@5.3.4(webpack@5.96.1): + /webpack-dev-middleware@5.3.4(webpack@5.105.4): resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} engines: {node: '>= 12.13.0'} peerDependencies: - webpack: 5.96.1 + webpack: 5.105.4 dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.96.1 + webpack: 5.105.4 dev: false - /webpack-dev-server@4.15.2(webpack@5.96.1): + /webpack-dev-server@4.15.2(webpack@5.105.4): resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} engines: {node: '>= 12.13.0'} hasBin: true peerDependencies: - webpack: 5.96.1 + webpack: 5.105.4 webpack-cli: '*' peerDependenciesMeta: webpack: @@ -10883,8 +10990,8 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.96.1 - webpack-dev-middleware: 5.3.4(webpack@5.96.1) + webpack: 5.105.4 + webpack-dev-middleware: 5.3.4(webpack@5.105.4) ws: 8.18.3 transitivePeerDependencies: - bufferutil @@ -10904,9 +11011,14 @@ packages: /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} + dev: false + + /webpack-sources@3.4.0: + resolution: {integrity: sha512-gHwIe1cgBvvfLeu1Yz/dcFpmHfKDVxxyqI+kzqmuxZED81z2ChxpyqPaWcNqigPywhaEke7AjSGga+kxY55gjQ==} + engines: {node: '>=10.13.0'} - /webpack@5.96.1: - resolution: {integrity: sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==} + /webpack@5.105.4: + resolution: {integrity: sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -10916,44 +11028,46 @@ packages: optional: true dependencies: '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.6 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.14.0 - browserslist: 4.28.0 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.16.0 + acorn-import-phases: 1.0.4(acorn@8.16.0) + browserslist: 4.28.2 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.4 + enhanced-resolve: 5.21.0 + es-module-lexer: 2.1.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.2 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.96.1) - watchpack: 2.4.2 - webpack-sources: 3.2.3 + schema-utils: 4.3.3 + tapable: 2.3.3 + terser-webpack-plugin: 5.5.0(webpack@5.105.4) + watchpack: 2.5.1 + webpack-sources: 3.4.0 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - /webpackbar@5.0.2(webpack@5.96.1): + /webpackbar@5.0.2(webpack@5.105.4): resolution: {integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==} engines: {node: '>=12'} peerDependencies: - webpack: 5.96.1 + webpack: 5.105.4 dependencies: chalk: 4.1.2 consola: 2.15.3 pretty-time: 1.1.0 std-env: 3.7.0 - webpack: 5.96.1 + webpack: 5.105.4 dev: false /websocket-driver@0.7.4: diff --git a/sidebars-skills.js b/sidebars-skills.js index 8e84ddf7a..4d977ae0a 100644 --- a/sidebars-skills.js +++ b/sidebars-skills.js @@ -34,7 +34,7 @@ const SkillsSidebar = [ label: 'Skill playbooks', collapsed: false, items: [ - { type: 'doc', id: 'morph-full-node-run-on-host/SKILL', label: 'Morph Full Node (host)' }, + { type: 'doc', id: 'morph-full-node-run-in-docker/SKILL', label: 'Morph Full Node (host)' }, { type: 'doc', id: 'morph-js-sdk/SKILL', label: 'Morph JS/TS SDK' }, { type: 'doc', id: 'morph-rails/SKILL', label: 'Morph Rails' }, { type: 'doc', id: 'morph-skill-ln/SKILL', label: 'morph-skill-ln (symlink script)' }, diff --git a/skills/morph-full-node-run-in-docker/SKILL.md b/skills/morph-full-node-run-in-docker/SKILL.md new file mode 100644 index 000000000..6c736025a --- /dev/null +++ b/skills/morph-full-node-run-in-docker/SKILL.md @@ -0,0 +1,34 @@ +--- +name: morph-full-node-run-in-docker +description: Guides running a Morph full node via run-morph-node (Docker or binary), hardware requirements, snapshot sync, and startup. Use when the user asks to run a Morph full node (Docker or bare metal), sync from snapshot, or troubleshoot node setup. Canonical human-readable documentation lives in the morph-doc repository path below. +last_verified: 2026-04-28 +verified_against: + - docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md +--- + +# Morph Full Node (Docker or Binary via run-morph-node) + +## Authoritative Documentation (single source of truth) + +Primary guide (covers both Docker and binary with tabs): + +`docs/build-on-morph/developer-resources/node-operation/full-node/1-run-in-docker.md` + +(Site route id: `build-on-morph/developer-resources/node-operation/full-node/run-in-docker`) + +## Agent Working Method (skill = execution playbook) + +1. **Existing zkTrie node?** → Direct user to the zkTrie → MPT migration guide at `docs/build-on-morph/developer-resources/node-operation/upgrade-node/0-zktrie-to-mpt-migration.md` instead of a fresh install. +2. Confirm target network (mainnet / Hoodi) and deployment method (Docker recommended; binary if Docker unavailable). +3. Check hardware: 4+ CPU cores, 32 GB RAM, 1 TB SSD, 25+ Mbit/s download. +4. Clone `run-morph-node` (with `--recurse-submodules` for binary); `cd run-morph-node/morph-node`. +5. Set `L1_ETH_RPC` and `L1_BEACON_CHAIN_RPC` in `.env` (mainnet) or `.env_hoodi` (Hoodi). +6. Optionally select a snapshot version by updating `MAINNET_MPT_SNAPSHOT_NAME` / `HOODI_MPT_SNAPSHOT_NAME` in the env file. +7. Download and decompress snapshot: `make download-and-decompress-mainnet-snapshot` (or hoodi variant); move `geth-data` and `node-data` into place per the doc. +8. Start the node: + - Docker mainnet: `make run-node` / Docker Hoodi: `make run-hoodi-node` + - Binary mainnet: `make run-node-binary` / Binary Hoodi: `make run-hoodi-node-binary` + - Stop: `make stop-node` (Docker) or `make stop-binary` (binary) +9. Verify: `curl localhost:8545` for geth peers; `curl localhost:26657/status` — synced when `catching_up` is `false`. + +Do not fabricate snapshot names, make targets, or URLs not present in the doc; open the primary doc to verify when in doubt. diff --git a/skills/morph-full-node-run-on-host/SKILL.md b/skills/morph-full-node-run-on-host/SKILL.md deleted file mode 100644 index d0f873302..000000000 --- a/skills/morph-full-node-run-on-host/SKILL.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -name: morph-full-node-run-on-host -description: Guides running a Morph full node from source (geth + consensus node), hardware requirements, build, config, snapshot sync, and startup. Use when the user asks to run a Morph full node on bare metal, sync from snapshot, or troubleshoot host-based node setup. Canonical human-readable documentation lives in the morph-doc repository path below. -last_verified: 2026-04-20 -verified_against: - - docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md ---- - -# Morph Full Node (Running from Source on Host) - -## Authoritative Documentation (single source of truth) - -Full steps, commands, and notes are in the doc: - -`docs/build-on-morph/developer-resources/node-operation/full-node/2-run-on-host.md` - -(Site route id: `build-on-morph/developer-resources/node-operation/full-node/run-on-host`) - -## Agent Working Method (skill = execution playbook) - -1. Confirm target network (mainnet / Hoodi testnet) and whether to sync from snapshot (recommended). -2. Check hardware: execution layer geth and consensus layer node run as separate processes; disk space must account for continuous archive growth. -3. Follow the doc in order: clone `morph` repo and checkout release → `make geth` → `make build` in the `node` directory → download data.zip, generate `jwt-secret.txt`. -4. Download and extract the corresponding snapshot; point data directories to the `geth-data` / `node-data` layout described in the doc. -5. Start geth first (with JWT, engine API), then start node; ports and RPC follow the doc. -6. If the user deviates from the doc path (e.g. missing C compiler, wrong path), troubleshoot against the doc commands one by one. - -Do not fabricate download URLs or release tags not present in the doc; open the above doc to verify when in doubt. From 67b2a03dc545b182dcb5dcd4fc7110d0cfa97f44 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Thu, 30 Apr 2026 15:31:55 +0800 Subject: [PATCH 08/25] fix: harness workflow --- skills/morph-dapp-codegen/SKILL.md | 4 +-- skills/morph-dapp-workflow/SKILL.md | 50 ++++++++++++++++++----------- 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/skills/morph-dapp-codegen/SKILL.md b/skills/morph-dapp-codegen/SKILL.md index 8eedd0935..3fdd5eb1d 100644 --- a/skills/morph-dapp-codegen/SKILL.md +++ b/skills/morph-dapp-codegen/SKILL.md @@ -1,7 +1,7 @@ --- name: morph-dapp-codegen -description: "Morph dApp TDD codegen: take a planning document produced by morph-dapp-planning, write failing tests first, then implementation, looping tests + lint to green for Solidity / JS SDK / frontend code. Use when the user has a Morph planning document and wants TDD-style implementation, or when the user asks to implement a feature against an existing planning file for Morph contracts, viem/ethers SDK, or a Morph-facing dApp UI. Trigger when the user wants to land code against a planning document, run a Red→Green loop, or backfill tests. Not for ad-hoc edits without planning output (run morph-dapp-planning first)." -last_verified: 2026-04-27 +description: "Morph dApp TDD codegen: take a planning document produced by morph-dapp-planning, write failing tests first, then implementation, looping tests + lint to green for Solidity / JS SDK / frontend code. Use ONLY when planning/.md already exists on disk — never use this skill for a fresh requirement that has no planning document yet (run morph-dapp-planning or morph-dapp-workflow first). Trigger when the user has an approved planning file and wants to run the Red→Green loop, land code against it, or backfill tests." +last_verified: 2026-04-30 verified_against: - docs/build-on-morph/sdk/js-sdk.mdx - docs/build-on-morph/developer-resources/1-contracts.md diff --git a/skills/morph-dapp-workflow/SKILL.md b/skills/morph-dapp-workflow/SKILL.md index a55628ce9..6b09340d1 100644 --- a/skills/morph-dapp-workflow/SKILL.md +++ b/skills/morph-dapp-workflow/SKILL.md @@ -1,7 +1,7 @@ --- name: morph-dapp-workflow description: "Morph dApp end-to-end workflow orchestrator: chain planning → TDD implementation → multi-dimension review for Morph contract / JS SDK / frontend changes. Use when the user asks to take a Morph feature from idea to merge-ready code, runs the full planning-to-review pipeline, or wants a single command that walks through planning output, implementation, and review. Trigger when the user wants to push a Morph requirement straight from product description to mergeable code, or wants an end-to-end pipeline. For atomic tasks, call the matching child skill directly instead of this workflow." -last_verified: 2026-04-27 +last_verified: 2026-04-30 verified_against: - skills/morph-dapp-planning/SKILL.md - skills/morph-dapp-codegen/SKILL.md @@ -42,30 +42,39 @@ Any missing → stop and point the user at `skills/README.md` to symlink via ## Execution Steps +> **One stage per turn.** Complete the current stage, surface its output to the user, +> then **stop and wait for explicit user confirmation** before advancing. Never chain +> stages in a single reply. + ### Stage 1 — Planning -1. Hand off to **morph-dapp-planning**'s full flow. -2. Output: `planning/.md` containing Goals / Test Cases / Target Files / - Morph Constraints / Open Questions / Self-Check. -3. **Gate**: every 🔴 in Open Questions must be cleared or explicitly accepted by the - user (recorded inline in the planning document). Otherwise stop and wait — do not enter - Stage 2. +1. Read `skills/morph-dapp-planning/SKILL.md` and execute its full flow verbatim. +2. Write `planning/.md` to disk (Goals / Test Cases / Target Files / + Morph Constraints / Open Questions / Self-Check). +3. **Output to user**: paste the full planning document path and its contents. +4. **Hard stop — mandatory user confirmation gate**: + - Display: `"Stage 1 complete. Review the planning document above. Reply 'proceed' to advance to Stage 2, or give feedback to revise."` + - Do **not** write any code, do not enter Stage 2, do not read `morph-dapp-codegen`. + - Even if the user previously said "run the full pipeline", stop here. The confirmation is required every time. +5. **Before advancing**: verify `planning/.md` exists on disk AND every 🔴 in Open Questions is resolved or explicitly accepted by the user (recorded inline in the document). If either check fails, refuse to proceed. ### Stage 2 — Code -1. Pass the Stage 1 planning document path as input and hand off to **morph-dapp-codegen**'s full - flow. +1. Read `skills/morph-dapp-codegen/SKILL.md` and execute its full flow verbatim, passing the Stage 1 planning document path. 2. Complete Red → Green → wrap-up; the project's root scripts must pass (`npm test` / `forge test` / `tsc --noEmit` as applicable). -3. **Gate**: all tests pass, no lint errors. On failure → stop and return control to - the user. +3. **Output to user**: list every changed file and the final test run output. +4. **Hard stop — mandatory user confirmation gate**: + - Display: `"Stage 2 complete. All tests pass. Reply 'proceed' to advance to Stage 3 (Review), or give feedback to fix."` + - Do **not** enter Stage 3 until the user replies. +5. **Before advancing**: all tests green, no lint errors. On failure → stop, return the failing stack trace to the user, do not enter Stage 3. ### Stage 3 — Review -1. Hand off to **morph-dapp-code-review**'s full flow, using the commit recorded at - the start of this workflow as the base. -2. Pass the Stage 1 planning document path through so the planning-compliance dimension is enabled. -3. Emit the review report. +1. Read `skills/morph-dapp-code-review/SKILL.md` and execute its full flow verbatim, using the commit recorded at the start of this workflow as the base. +2. Pass the Stage 1 planning document path so the planning-compliance dimension is enabled. +3. **Output to user**: emit the full review report inline. +4. Proceed directly to Stage 4 (no user gate needed between Review and Wrap-up). ### Stage 4 — Wrap-up (handled inside this workflow, not delegated) @@ -77,15 +86,20 @@ Any missing → stop and point the user at `skills/README.md` to symlink via ## State and Recovery -Simple rule: each stage's output file IS the state. +Simple rule: each stage's output file IS the state. When resuming, **always confirm the +feature-id with the user first** — do not infer it from whatever planning file happens to +exist on disk. | Existing artifact | Inferred phase | Suggested entry | |---|---|---| | Only a requirement description | Fresh start | Stage 1 | -| `planning/.md` exists | Planning done | Stage 2 | -| Planning doc + associated impl/tests landed | Code done | Stage 3 | +| `planning/.md` exists **and user confirms it is complete** | Planning done | Stage 2 | +| Planning doc + associated impl/tests landed **and user confirms tests are green** | Code done | Stage 3 | | All of the above and the code was changed again | Needs re-review | Stage 3 | +Even when resuming from Stage 2 or 3, the per-stage user confirmation gate (step 4 in +each stage) still applies before the next stage starts. + No manifest file, no lock. For multi-person collaboration, ask the user to `git pull` before starting. From be65b9f1ab32af9311c13c4c264487428f507bd8 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Wed, 6 May 2026 14:40:11 +0800 Subject: [PATCH 09/25] feat: LLM Wiki --- VISION.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/VISION.md b/VISION.md index 94ab474d8..8bb262f97 100644 --- a/VISION.md +++ b/VISION.md @@ -13,6 +13,8 @@ This file describes how **morph-doc** binds "human-readable documentation" to "e - **Flows and facts for specific topics:** `docs/**/*.mdx` / `docs/**/*.md` and the corresponding `skills//SKILL.md` - **Skills overview (directory conventions, division with `docs/`, symlinks & `morph-skill-ln`):** [`skills/README.md`](./skills/README.md) +**LLM Wiki alignment.** Morph-doc follows the same **three-layer** pattern as the [LLM Wiki](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) idea (immutable sources, a maintained knowledge surface, and schema that disciplines agents). Here **maintainer-owned `docs/` (MDX)** is the wiki body—canonical facts and long-form narrative—**`skills/`** supplies **routing and the execution contract** (playbooks, self-checks, pointers into docs), and **`AGENTS.md` / `CLAUDE.md`** hold the workspace-level operational schema. + This VISION does not repeat CLI commands or directory trees; it only defines **goals, contracts, and self-checks**. --- From d71daa57a080cc3f4620b9611f10c40bbf9d7f66 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Sat, 9 May 2026 14:53:41 +0800 Subject: [PATCH 10/25] fix: skill doc_skill_id --- .gitignore | 3 +- .../build-toolchain-constraints.test.mjs | 2 +- .../3-bridge-between-morph-and-ethereum.md | 1 + .../5-verify-your-smart-contracts.md | 3 +- .../3-morph-json-rpc-api-methods.md | 1 + package.json | 2 +- sidebars-skills.js | 5 +- skills/morph-bridge/SKILL.md | 62 +++++++++++++ skills/morph-dapp-codegen/SKILL.md | 2 +- skills/morph-rpc-api/SKILL.md | 68 +++++++++++++++ skills/morph-verify-contracts/SKILL.md | 86 +++++++++++++++++++ 11 files changed, 229 insertions(+), 6 deletions(-) create mode 100644 skills/morph-bridge/SKILL.md create mode 100644 skills/morph-rpc-api/SKILL.md create mode 100644 skills/morph-verify-contracts/SKILL.md diff --git a/.gitignore b/.gitignore index d1cdeb9ab..c5f34440d 100644 --- a/.gitignore +++ b/.gitignore @@ -47,4 +47,5 @@ IDENTITY.md HEARTBEAT.md # dapp agent -planning \ No newline at end of file +planning +research \ No newline at end of file diff --git a/__tests__/build-toolchain-constraints.test.mjs b/__tests__/build-toolchain-constraints.test.mjs index 125eac4ee..1de63b66e 100644 --- a/__tests__/build-toolchain-constraints.test.mjs +++ b/__tests__/build-toolchain-constraints.test.mjs @@ -12,7 +12,7 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url)); const ROOT = path.join(__dirname, '..'); const PKG = JSON.parse(fs.readFileSync(path.join(ROOT, 'package.json'), 'utf8')); -const PINNED = '5.96.1'; +const PINNED = '5.105.4'; assert.equal( PKG.pnpm?.overrides?.webpack, diff --git a/docs/build-on-morph/build-on-morph/3-bridge-between-morph-and-ethereum.md b/docs/build-on-morph/build-on-morph/3-bridge-between-morph-and-ethereum.md index 2fb0ef475..1ce7736ca 100644 --- a/docs/build-on-morph/build-on-morph/3-bridge-between-morph-and-ethereum.md +++ b/docs/build-on-morph/build-on-morph/3-bridge-between-morph-and-ethereum.md @@ -3,6 +3,7 @@ title: Bridge between Morph and Ethereum lang: en-US keywords: [morph,ethereum,rollup,layer2,validity proof,optimistic zk-rollup] description: Upgrade your blockchain experience with Morph - the secure decentralized, cost-efficient, and high-performing optimistic zk-rollup solution. Try it now! +doc_skill_id: morph-bridge --- Please first review our documentation on [Communication Between Morph and Ethereum](../../how-morph-works/general-protocol-design/2-communicate-between-morph-and-ethereum.md) for some required fundamental knowledge. diff --git a/docs/build-on-morph/build-on-morph/5-verify-your-smart-contracts.md b/docs/build-on-morph/build-on-morph/5-verify-your-smart-contracts.md index 03ba3eb01..dca4d63aa 100644 --- a/docs/build-on-morph/build-on-morph/5-verify-your-smart-contracts.md +++ b/docs/build-on-morph/build-on-morph/5-verify-your-smart-contracts.md @@ -3,6 +3,7 @@ title: Verify Your Smart Contracts lang: en-US keywords: [morph,ethereum,rollup,layer2,validity proof,optimistic zk-rollup] description: Upgrade your blockchain experience with Morph - the secure decentralized, cost-efficient, and high-performing optimistic zk-rollup solution. Try it now! +doc_skill_id: morph-verify-contracts --- After deploying your smart contracts, it's crucial to verify your code on our [block explorer](https://explorer-hoodi.morph.network). This can be automated using your development framework, such as Hardhat. @@ -32,7 +33,7 @@ module.exports = { network: 'morph', chainId: 2818, urls: { - apiURL: 'https://explorer-api.morph.network/api? ', + apiURL: 'https://explorer-api.morph.network/api?', browserURL: 'https://explorer.morph.network/', }, }, diff --git a/docs/build-on-morph/developer-resources/3-morph-json-rpc-api-methods.md b/docs/build-on-morph/developer-resources/3-morph-json-rpc-api-methods.md index aaffbf0e0..dac888f62 100644 --- a/docs/build-on-morph/developer-resources/3-morph-json-rpc-api-methods.md +++ b/docs/build-on-morph/developer-resources/3-morph-json-rpc-api-methods.md @@ -1,6 +1,7 @@ --- title: Morph JSON-RPC API Methods lang: en-US +doc_skill_id: morph-rpc-api --- Most methods are similar to Ethereum's. For those methods, we recommend you visit [Ethereum JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/#json-rpc-methods). diff --git a/package.json b/package.json index 37839051e..6360b5080 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "husky": "^9.1.7", "pre-commit": "^1.2.2", "typescript": "~5.4.5", - "webpack": "5.96.1" + "webpack": "5.105.4" }, "pnpm": { "overrides": { diff --git a/sidebars-skills.js b/sidebars-skills.js index 4d977ae0a..0a17c7e94 100644 --- a/sidebars-skills.js +++ b/sidebars-skills.js @@ -34,12 +34,15 @@ const SkillsSidebar = [ label: 'Skill playbooks', collapsed: false, items: [ + { type: 'doc', id: 'morph-bridge/SKILL', label: 'Morph Bridge (L1↔L2)' }, + { type: 'doc', id: 'morph-contracts/SKILL', label: 'Morph Contract Addresses' }, { type: 'doc', id: 'morph-full-node-run-in-docker/SKILL', label: 'Morph Full Node (host)' }, { type: 'doc', id: 'morph-js-sdk/SKILL', label: 'Morph JS/TS SDK' }, { type: 'doc', id: 'morph-rails/SKILL', label: 'Morph Rails' }, + { type: 'doc', id: 'morph-rpc-api/SKILL', label: 'Morph JSON-RPC API' }, { type: 'doc', id: 'morph-skill-ln/SKILL', label: 'morph-skill-ln (symlink script)' }, { type: 'doc', id: 'morph-tx-cost/SKILL', label: 'Morph Transaction Fees' }, - { type: 'doc', id: 'morph-contracts/SKILL', label: 'Morph Contract Addresses' }, + { type: 'doc', id: 'morph-verify-contracts/SKILL', label: 'Verify Smart Contracts' }, ], }, ]; diff --git a/skills/morph-bridge/SKILL.md b/skills/morph-bridge/SKILL.md new file mode 100644 index 000000000..024870b8e --- /dev/null +++ b/skills/morph-bridge/SKILL.md @@ -0,0 +1,62 @@ +--- +name: morph-bridge +description: "Bridge ETH and ERC-20 tokens between Ethereum (L1) and Morph (L2): deposit via L1GatewayRouter, withdraw via L2 Gateway with finalization proof, and add custom tokens to the canonical bridge. Use when the user needs to bridge assets programmatically, finalize an L2→L1 withdrawal using proveAndRelayMessage, query L2 token addresses with getL2ERC20Address, or list their token on the Morph Bridge frontend." +last_verified: 2026-05-09 +verified_against: + - docs/build-on-morph/build-on-morph/3-bridge-between-morph-and-ethereum.md +--- + +# Morph Bridge (Execution Playbook) + +## Authoritative Documentation (single source of truth) + +`docs/build-on-morph/build-on-morph/3-bridge-between-morph-and-ethereum.md` + +Site route id: `build-on-morph/build-on-morph/bridge-between-morph-and-ethereum` + +Background concept: `docs/how-morph-works/general-protocol-design/2-communicate-between-morph-and-ethereum.md` + +SDK helper: `docs/build-on-morph/sdk/globals.md` + +## Execution Steps + +### Deposit (L1 → L2) + +1. Locate `L1GatewayRouter` address via `morph-contracts` skill (Mainnet chainId 2818 / Hoodi 2910). +2. Call `depositETH(uint256 amount, uint256 gasLimit)` (payable — ETH sent covers L2 fee; `0.00001 ETH` is typically enough) to deposit ETH. +3. For ERC-20: call `depositERC20(address token, uint256 amount, uint256 gasLimit)` — the router auto-selects `L1StandardERC20Gateway` or a custom gateway. Do **not** pre-select the gateway. +4. To get the L2 token address for an L1 token: call `getL2ERC20Address(address l1Token)` on `L1GatewayRouter`. +5. Wait for the Sequencer to pick up the L1 message and execute it on L2 (no extra user action needed). + +### Withdraw (L2 → L1) + +1. On L2, call `withdrawETH` or `withdrawERC20` on the L2 Gateway (payable — ETH covers L1 fee; `0.005 ETH` suggested). Assets are **burned** on Morph immediately; there is no recovery if the L1 tx reverts. +2. Wait for the batch containing the withdrawal to pass the challenge period and be finalized (`withdrawalRoots[batchDataStore[_batchIndex].withdrawalRoot] == true` in the `Rollup` contract). +3. Fetch proof data from the backend API: `GET /getProof?nonce=`. Response fields: `index`, `leaf`, `proof`, `root`. +4. Call `L1CrossDomainMessenger.proveAndRelayMessage(from, to, value, nonce, message, withdrawalProof[32], withdrawalRoot)`. + - `from / to / value / nonce / message` — from the L2 `SentMessage` event. + - `withdrawalProof / withdrawalRoot` — from the proof API response. + +### Add a custom token + +- **Quick (dev/test):** Use the bridge frontend at `https://bridge-hoodi.morph.network` → token selector → enter L1 contract → confirm L2 address. +- **Token list PR:** Raise a PR to `https://github.com/morph-l2/morph-list`. Include both L1 and L2 addresses. L2 address is obtained via the frontend flow above. See example PR in the doc. + +## Key Pitfalls + +- Withdrawal ETH is burned on L2 immediately — **irreversible** if L1 tx reverts. +- ERC-20 tokens have different addresses on L2; always use `getL2ERC20Address` to resolve. +- Do not send insufficient ETH for fees: deposit under-fee → tx not sent (excess refunded); withdrawal under-fee → same. + +## Related Skills + +- `morph-contracts` — L1GatewayRouter, L2 Gateway, L1CrossDomainMessenger addresses +- `morph-js-sdk` — SDK wrapper for bridge interactions + +## Self-Check + +- [ ] Deposit function is on `L1GatewayRouter` (L1 side), not on the specific gateway. +- [ ] Withdrawal finalization requires `proveAndRelayMessage` with Merkle proof from `/getProof` API. +- [ ] L2 token address resolved via `getL2ERC20Address`, not assumed equal to L1 address. +- [ ] ETH payable amounts quoted from doc (`0.00001` deposit / `0.005` withdrawal) — do not invent. +- [ ] Custom token listing requires both L1 + L2 addresses in the morph-list PR. diff --git a/skills/morph-dapp-codegen/SKILL.md b/skills/morph-dapp-codegen/SKILL.md index 3fdd5eb1d..389bc7305 100644 --- a/skills/morph-dapp-codegen/SKILL.md +++ b/skills/morph-dapp-codegen/SKILL.md @@ -1,6 +1,6 @@ --- name: morph-dapp-codegen -description: "Morph dApp TDD codegen: take a planning document produced by morph-dapp-planning, write failing tests first, then implementation, looping tests + lint to green for Solidity / JS SDK / frontend code. Use ONLY when planning/.md already exists on disk — never use this skill for a fresh requirement that has no planning document yet (run morph-dapp-planning or morph-dapp-workflow first). Trigger when the user has an approved planning file and wants to run the Red→Green loop, land code against it, or backfill tests." +description: "Morph dApp TDD codegen: take a planning document produced by morph-dapp-planning, write failing tests first, then implementation, looping tests + lint to green for Solidity / JS SDK / frontend code. Use ONLY when planning/.md already exists on disk — never use this skill for a fresh requirement that has no planning document yet (run morph-dapp-planning or morph-dapp-workflow first). Use when the user has an approved planning file and wants to run the Red→Green loop, land code against it, or backfill tests." last_verified: 2026-04-30 verified_against: - docs/build-on-morph/sdk/js-sdk.mdx diff --git a/skills/morph-rpc-api/SKILL.md b/skills/morph-rpc-api/SKILL.md new file mode 100644 index 000000000..a323076eb --- /dev/null +++ b/skills/morph-rpc-api/SKILL.md @@ -0,0 +1,68 @@ +--- +name: morph-rpc-api +description: "Morph-exclusive JSON-RPC API methods not present in standard Ethereum: morph_getBlockByNumber, morph_getBlockByHash, morph_estimateL1DataFee, morph_getNumSkippedTransactions, morph_getSkippedTransaction(Hashes), morph_getRollupBatchByIndex, morph_GetBlockTraceByNumberOrHash. Use when the user needs Morph-specific RPC calls, extra block fields (withdrawTrieRoot, batchHash, nextL1MsgIndex, rowConsumption), L1 data fee estimates, skipped transaction queries, rollup batch data, or block traces for ZK proof rollers." +last_verified: 2026-05-09 +verified_against: + - docs/build-on-morph/developer-resources/3-morph-json-rpc-api-methods.md +--- + +# Morph JSON-RPC API Methods (Execution Playbook) + +## Authoritative Documentation (single source of truth) + +`docs/build-on-morph/developer-resources/3-morph-json-rpc-api-methods.md` + +Site route id: `build-on-morph/developer-resources/morph-json-rpc-api-methods` + +Standard Ethereum RPC (not covered here): `https://ethereum.org/en/developers/docs/apis/json-rpc/` + +RPC endpoints: see `morph-contracts` skill (or `docs/build-on-morph/developer-resources/1-contracts.md`). + +## Morph-Exclusive Methods + +| Method | Purpose | +|--------|---------| +| `morph_getBlockByNumber` | Like `eth_getBlockByNumber` + extra fields | +| `morph_getBlockByHash` | Like `eth_getBlockByHash` + extra fields | +| `morph_estimateL1DataFee` | Estimate L1 data fee (wei) for a tx | +| `morph_getNumSkippedTransactions` | Count of skipped transactions | +| `morph_getSkippedTransactionHashes` | Hashes of skipped txs in index range | +| `morph_getSkippedTransaction` | Full skipped tx object by hash | +| `morph_getRollupBatchByIndex` | Full rollup batch by index | +| `morph_GetBlockTraceByNumberOrHash` | Block trace for ZK proof rollers | + +## Extra Fields on morph_getBlock* + +| Field | Type | Description | +|-------|------|-------------| +| `withdrawTrieRoot` | DATA, 32B | Root of the withdraw trie (proves user withdrawals) | +| `batchHash` | DATA, 32B | Hash of the latest batch; non-zero means this block is a batch point | +| `nextL1MsgIndex` | QUANTITY | Next expected L1 message nonce after this block | +| `rowConsumption` | array | Per-circuit row counts used to generate ZK proof (halo2 schema) | + +## Execution Steps + +1. Use the Morph RPC endpoint for the target network (see `morph-contracts` for URLs). +2. All methods follow standard JSON-RPC 2.0 format: `{"jsonrpc":"2.0","method":"","params":[...],"id":1}`. +3. For `morph_estimateL1DataFee`: pass a `TransactionArgs` object (same shape as `eth_call`) plus a block tag as params. +4. For `morph_getSkippedTransactionHashes`: pass `[fromIndex, toIndex]` (inclusive). +5. For `morph_getRollupBatchByIndex`: pass `[batchIndex]`; response includes `chunks`, `signatures`, `prevStateRoot`, `postStateRoot`, `withdrawRoot`. +6. For `morph_GetBlockTraceByNumberOrHash`: pass block number/hash and optional `tracerConfig`; used by rollers to generate ZK proofs — do not use for regular block data. + +## Key Pitfalls + +- Standard `eth_*` methods are also supported — only use `morph_*` when you need the extra Morph-specific fields or functionality. +- `morph_getSkippedTransactionHashes` appears twice in the source doc: the second entry actually documents `morph_getRollupBatchByIndex` (doc inconsistency — use the method name from the heading). +- `rowConsumption` is an array of `{name, row_number}` objects (circuit names: evm, state, bytecode, copy, keccak, tx, rlp, exp, mod_exp, pi, poseidon, sig, ecc, mpt). + +## Related Skills + +- `morph-contracts` — RPC endpoint URLs for Mainnet and Hoodi Testnet + +## Self-Check + +- [ ] Method names prefixed with `morph_` (not `eth_`) for Morph-exclusive functionality. +- [ ] RPC endpoint URL sourced from `morph-contracts` skill, not guessed. +- [ ] Extra block fields (`withdrawTrieRoot`, `batchHash`, `nextL1MsgIndex`, `rowConsumption`) only exist on `morph_getBlock*` responses. +- [ ] `morph_estimateL1DataFee` returns wei as a QUANTITY hex string. +- [ ] Roller use case (`morph_GetBlockTraceByNumberOrHash`) distinguished from normal block queries. diff --git a/skills/morph-verify-contracts/SKILL.md b/skills/morph-verify-contracts/SKILL.md new file mode 100644 index 000000000..327f85b8c --- /dev/null +++ b/skills/morph-verify-contracts/SKILL.md @@ -0,0 +1,86 @@ +--- +name: morph-verify-contracts +description: "Verify smart contracts on the Morph block explorer (Blockscout) using Hardhat, Foundry, or the explorer UI. Use when the user wants to verify a deployed contract on Morph Mainnet (chainId 2818) or Hoodi Testnet (chainId 2910), set up etherscan/blockscout config in hardhat.config.js, run forge verify-contract, or manually verify via Solidity/Vyper methods on explorer.morph.network." +last_verified: 2026-05-09 +verified_against: + - docs/build-on-morph/build-on-morph/5-verify-your-smart-contracts.md +--- + +# Verify Smart Contracts on Morph (Execution Playbook) + +## Authoritative Documentation (single source of truth) + +`docs/build-on-morph/build-on-morph/5-verify-your-smart-contracts.md` + +Site route id: `build-on-morph/build-on-morph/verify-your-smart-contracts` + +Block explorers: +- Mainnet: `https://explorer.morph.network` +- Hoodi Testnet: `https://explorer-hoodi.morph.network` + +## Network Parameters + +| Network | Chain ID | Explorer API URL | +|---------|----------|-----------------| +| Morph Mainnet | 2818 | `https://explorer-api.morph.network/api?` | +| Hoodi Testnet | 2910 | `https://explorer-api-hoodi.morph.network/api?` (see doc for exact URL) | + +## Execution Steps + +### Verify with Hardhat + +1. Add to `hardhat.config.js`: + ```js + etherscan: { + apiKey: { morph: 'anything' }, + customChains: [{ + network: 'morph', + chainId: 2818, + urls: { + apiURL: 'https://explorer-api.morph.network/api? ', + browserURL: 'https://explorer.morph.network/', + }, + }], + } + ``` +2. Run: `npx hardhat verify --network morph [constructor args]` + +### Verify with Foundry + +```bash +forge verify-contract \ + --chain 2818 \ + --verifier-url https://explorer-api.morph.network/api? \ + --verifier blockscout --watch +``` + +Adjust `--chain` to `2910` for Hoodi Testnet. + +### Verify via Explorer UI + +Navigate to `https://explorer.morph.network` → contract page → "Verify & Publish". Choose one of 6 methods: + +| Method | When to use | +|--------|-------------| +| Solidity (Flattened Source) | Single file; flatten with `forge flatten` first | +| Solidity (Standard JSON Input) | From solc or Remix compiler | +| Solidity (Multi-part files) | Multiple files with adjusted import paths | +| Vyper (Contracts) | Vyper single contract | +| Vyper (Standard JSON Input) | Vyper JSON flow | +| Vyper (Multi-part files) | Multiple Vyper files | + +For all methods: **Compiler version and Optimization settings must exactly match deployment**. + +## Key Pitfalls + +- The `apiKey` value for Morph can be any non-empty string (`'anything'` is valid); Blockscout does not enforce it. +- Flattened Solidity: imported files must be inlined; use `forge flatten --output Flat.sol ./contracts/X.sol`. +- Multi-part files: adjust import paths to same-level references; submit all dependency files together. + +## Self-Check + +- [ ] Chain ID matches the target network (2818 mainnet / 2910 Hoodi). +- [ ] Compiler version and optimization settings match what was used at deployment. +- [ ] Hardhat config uses `customChains` with the correct `apiURL` and `browserURL`. +- [ ] Foundry command uses `--verifier blockscout` (not etherscan). +- [ ] Flattened source or multi-part imports adjusted before submission. From 0ed925c1eae344750f8dd792886de401cdfe9fe7 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Tue, 12 May 2026 13:48:44 +0800 Subject: [PATCH 11/25] fix: skill-trigger --- .gitignore | 7 +- __tests__/doc-skill-pairing.test.mjs | 15 ++++ .../skill-trigger-eval-examples.test.mjs | 61 ++++++++++++++ scripts/run-tests.mjs | 1 + ...ll-trigger-evals.morph-js-sdk.example.json | 82 +++++++++++++++++++ skills/README.md | 52 +++++++++++- 6 files changed, 214 insertions(+), 4 deletions(-) create mode 100644 __tests__/skill-trigger-eval-examples.test.mjs create mode 100644 scripts/skill-trigger-evals.morph-js-sdk.example.json diff --git a/.gitignore b/.gitignore index c5f34440d..bfcfa0ba7 100644 --- a/.gitignore +++ b/.gitignore @@ -45,7 +45,12 @@ SOUL.md TOOLS.md IDENTITY.md HEARTBEAT.md +DREAMS.md +*.zh.md # dapp agent planning -research \ No newline at end of file +research + +# skill-creator description optimization (--results-dir); see skills/README.md +.local \ No newline at end of file diff --git a/__tests__/doc-skill-pairing.test.mjs b/__tests__/doc-skill-pairing.test.mjs index 309fa3c8c..1aa857e04 100644 --- a/__tests__/doc-skill-pairing.test.mjs +++ b/__tests__/doc-skill-pairing.test.mjs @@ -38,6 +38,21 @@ const PAIRS = [ 'docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md', expectedId: 'morph-dapp-workflow', }, + { + docRelative: + 'docs/build-on-morph/build-on-morph/3-bridge-between-morph-and-ethereum.md', + expectedId: 'morph-bridge', + }, + { + docRelative: + 'docs/build-on-morph/build-on-morph/5-verify-your-smart-contracts.md', + expectedId: 'morph-verify-contracts', + }, + { + docRelative: + 'docs/build-on-morph/developer-resources/3-morph-json-rpc-api-methods.md', + expectedId: 'morph-rpc-api', + }, ]; function parseFrontmatterField(content, field) { diff --git a/__tests__/skill-trigger-eval-examples.test.mjs b/__tests__/skill-trigger-eval-examples.test.mjs new file mode 100644 index 000000000..e0c1e40db --- /dev/null +++ b/__tests__/skill-trigger-eval-examples.test.mjs @@ -0,0 +1,61 @@ +/** + * Example trigger-eval sets for skill-creator description optimization. + * Files: scripts/skill-trigger-evals.*.example.json — array of { query, should_trigger }. + * @see skills/README.md "Tuning description trigger rates" + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const SCRIPTS = path.join(ROOT, 'scripts'); + +const files = fs + .readdirSync(SCRIPTS) + .filter((f) => f.startsWith('skill-trigger-evals.') && f.endsWith('.example.json')) + .sort(); + +assert.ok(files.length > 0, 'expected at least one scripts/skill-trigger-evals.*.example.json'); + +for (const name of files) { + const full = path.join(SCRIPTS, name); + const raw = fs.readFileSync(full, 'utf8'); + let data; + assert.doesNotThrow(() => { + data = JSON.parse(raw); + }, `valid JSON: ${name}`); + + assert.ok(Array.isArray(data), `${name} should be a JSON array`); + assert.ok( + data.length >= 20, + `${name} should have at least 20 rows (skill-creator description optimization set)`, + ); + + for (let i = 0; i < data.length; i++) { + const row = data[i]; + assert.ok(row && typeof row === 'object', `${name}[${i}] should be an object`); + assert.equal( + typeof row.query, + 'string', + `${name}[${i}].query should be a string`, + ); + assert.ok( + row.query.trim().length >= 20, + `${name}[${i}].query should be substantive (>=20 chars)`, + ); + assert.equal( + typeof row.should_trigger, + 'boolean', + `${name}[${i}].should_trigger should be boolean`, + ); + } + + const positive = data.filter((r) => r.should_trigger === true).length; + const negative = data.filter((r) => r.should_trigger === false).length; + assert.ok(positive >= 8, `${name} should include at least 8 should_trigger: true`); + assert.ok(negative >= 8, `${name} should include at least 8 should_trigger: false`); +} + +console.log('skill-trigger-eval-examples: ok (%d example file(s))', files.length); diff --git a/scripts/run-tests.mjs b/scripts/run-tests.mjs index e76c37d98..c1449bd04 100644 --- a/scripts/run-tests.mjs +++ b/scripts/run-tests.mjs @@ -16,6 +16,7 @@ export const TEST_FILES = [ 'build-toolchain-constraints.test.mjs', 'doc-skill-pairing.test.mjs', 'morph-doc-skill-inventory.test.mjs', + 'skill-trigger-eval-examples.test.mjs', 'morph-contracts-skill-tokenlist.test.mjs', 'skills-sidebar.test.mjs', 'vision-md.test.mjs', diff --git a/scripts/skill-trigger-evals.morph-js-sdk.example.json b/scripts/skill-trigger-evals.morph-js-sdk.example.json new file mode 100644 index 000000000..f6b748db5 --- /dev/null +++ b/scripts/skill-trigger-evals.morph-js-sdk.example.json @@ -0,0 +1,82 @@ +[ + { + "query": "we're shipping a Morph mainnet dashboard (chain 2818) and need viem + @morph-network/viem to send an Alt Fee tx paying gas in USDC — wallet is privy, feeTokenID/feeLimit keep failing simulation, can you walk the exact client setup and tx type 0x7f fields from our repo docs?", + "should_trigger": true + }, + { + "query": "hoodi testnet morph 2910 viem createWalletClient custom chain morphNetwork preset fee tokens list", + "should_trigger": true + }, + { + "query": "PM asked for 'gas in erc20 on morph' without mentioning viem — implement estimateGas + sendTransaction pattern for Morph L2 only using npm packages from morph network org", + "should_trigger": true + }, + { + "query": "debug: eth_sendRawTransaction returns invalid transaction type on Morph after copying a mainnet-only ethers v6 snippet — need Morph-specific adapter or tx envelope", + "should_trigger": true + }, + { + "query": "compare @morph-network/ethers vs @morph-network/ethers5 for our internal tool; which preset matches morph chain id 2818 and how to wire JsonRpcProvider", + "should_trigger": true + }, + { + "query": "token registry RPC method name + response shape for supported fee tokens on Morph (not generic ethereum)", + "should_trigger": true + }, + { + "query": "write a minimal next.js server action that uses viem on morph mainnet to read balance — but the tricky part is AltFee batching limits and feeLimit math from morph docs", + "should_trigger": true + }, + { + "query": "our CI script needs to assert chainId and rpc url for morph l2 in env — what's the canonical table from morph doc skill not blog posts", + "should_trigger": true + }, + { + "query": "migrate wallet connector from wagmi default chains to morph only; user txs are standard eip1559 eth gas — still need morph sdk?", + "should_trigger": true + }, + { + "query": "i typed morph fee token id wrong and got reverted — need the skill playbook steps to cross-check feeTokenID vs registry before opening a ticket", + "should_trigger": true + }, + { + "query": "list every morph mainnet bridge gateway contract address and l1/l2 messenger for our security questionnaire — no javascript, just addresses", + "should_trigger": false + }, + { + "query": "why is my metamask gas estimate on morph so much higher than ethereum for same opcode trace — formula and oracle calls only, no npm packages", + "should_trigger": false + }, + { + "query": "solidity contract review: our L2 contract uses block.basefee assumptions from ethereum — security checklist only", + "should_trigger": false + }, + { + "query": "configure hardhat to verify contracts on morphscan from CI — foundry/etherscan api key rotation", + "should_trigger": false + }, + { + "query": "run morph full node in docker on aws and prune disk — ops doc not js sdk", + "should_trigger": false + }, + { + "query": "explain morph rails x402 payment flow vs raw chain txs — payfi middleware conceptual", + "should_trigger": false + }, + { + "query": "add morph chain to rainbowkit chain list using only public rpc url from random blog — no morph-network packages", + "should_trigger": false + }, + { + "query": "write ethers v5 code for uniswap swap on ethereum mainnet chainId 1 — unrelated chain", + "should_trigger": false + }, + { + "query": "json-rpc eth_call batching best practices for morph node — rpc methods doc not js sdk skill", + "should_trigger": false + }, + { + "query": "draft a new morph-doc SKILL for morph-tx-cost only — authoring workflow not sdk integration", + "should_trigger": false + } +] diff --git a/skills/README.md b/skills/README.md index 4c5a106f4..1b1ac3b92 100644 --- a/skills/README.md +++ b/skills/README.md @@ -6,7 +6,7 @@ title: Morph Skills # morph-doc Skills -This page is the entry point for the **Agent Skill system in the morph-doc repository**: it explains the **division of responsibility between `skills/` and `docs/`**, the **conventions and validation**, and how to **one-click or manually** symlink skill directories into the global loading paths for Cursor / Claude Code / OpenClaw. +This page is the entry point for the **Agent Skill system in the morph-doc repository**: it explains the **division of responsibility between `skills/` and `docs/`**, the **conventions and validation**, and how to **one-click or manually** symlink skill directories into the global loading paths for IDE/agent runtimes that support project-local skills (e.g. Claude Code, OpenClaw, Cursor, Windsurf). - **Vision & contract (doc-as-SKILL, `doc_skill_id`):** [`VISION.md`](https://github.com/morph-l2/morph-doc/blob/main/VISION.md) (repo root) - **Generate or audit a Skill from a single target:** [`agents/morph-doc-agent.md`](https://github.com/morph-l2/morph-doc/blob/main/agents/morph-doc-agent.md) @@ -16,15 +16,61 @@ This page is the entry point for the **Agent Skill system in the morph-doc repos ## What is `skills/` -- **Canonical path**: **`skills//`** under the repo root, with **`SKILL.md`** as the main file (e.g. `skills/morph-js-sdk/SKILL.md`). Skills have been migrated out of `.cursor/skills`; **do not** treat `.cursor/skills` as the authoritative in-repo path. +- **Canonical path**: **`skills//`** under the repo root, with **`SKILL.md`** as the main file (e.g. `skills/morph-js-sdk/SKILL.md`). **Do not** treat per-IDE symlink mirrors inside the repo (hidden config trees created by your editor) as the authoritative copy — edit **`skills//`** only. - **Relationship to human docs**: Long-form content, tables, and demos live in **`docs/`** as the source of truth; Skills provide **routable summaries, execution steps, and pointers** — avoiding full duplication of MDX pages. When binding to a specific page, use **`doc_skill_id`** in the MDX frontmatter; its value must match the `skills//` directory name and the **`name`** field in `SKILL.md` (validation: `__tests__/doc-skill-pairing.test.mjs`). - **Inventory & frontmatter checks**: `__tests__/morph-doc-skill-inventory.test.mjs` runs basic consistency checks on `skills/*/SKILL.md`. +- **Tuning `description` (trigger rate)**: If a Skill is under-used in the IDE, use the **skill-creator** *Description Optimization* loop (eval set → optional HTML review → `run_loop` → merge `best_description`). See [Tuning description trigger rates](#tuning-description-trigger-rates). --- ## Using within this repo -When you open **morph-doc** directly in Cursor / IDE, the model reads the **`skills/`** directory from the project, so **no additional symlinks** to other local directories are usually needed. +When you open **morph-doc** directly in your IDE, the model reads the **`skills/`** directory from the project, so **no additional symlinks** to other local directories are usually needed. + +--- + +## Tuning description trigger rates + +IDE routing depends mainly on the YAML **`description`** in `skills//SKILL.md` (plus `name`). If a Skill should fire more often (or less often for near-miss prompts), follow the **Description Optimization** section in the **skill-creator** skill (see that skill's `SKILL.md`; the install location is defined by your IDE or agent product — use its docs to find the checkout that contains `scripts/run_loop.py`): build a **trigger eval set**, optionally review it with `assets/eval_review.html` from that skill, run the automated loop, then land the winning text here. + +### 1. Trigger eval set (JSON) + +- Format: a JSON **array** of objects `{ "query": "...", "should_trigger": true|false }`. +- Target about **20 rows**: roughly half **should_trigger** (real user prompts that *should* load this Skill) and half **near-miss negatives** (share vocabulary but should route elsewhere — e.g. `morph-contracts` for address-only tables, `morph-tx-cost` for fee formula without SDK packages). +- Queries should be **concrete** (paths, chain IDs, error messages, package names); avoid toy prompts like "read a file" — models may not consult a Skill for trivial one-step tasks. +- **Example file** checked into this repo (copy and edit for another Skill id): `scripts/skill-trigger-evals.morph-js-sdk.example.json`. + +### 2. Optional human review + +From the skill-creator directory, open `assets/eval_review.html`, substitute the placeholders for your eval JSON / Skill name / current `description`, export the reviewed set (see skill-creator `SKILL.md` Step 2). + +### 3. Optimization loop (requires Claude Code / `claude` CLI) + +Run from your **skill-creator** checkout — the directory that contains the `scripts/` package next to `SKILL.md` (your IDE or agent docs explain where skills are installed on disk), not from morph-doc's Python env: + +```bash +cd /path/to/skill-creator # must contain scripts/run_loop.py; see skill-creator install docs + +python -m scripts.run_loop \ + --eval-set /ABS/PATH/TO/morph-doc/scripts/skill-trigger-evals.YOUR_SKILL.example.json \ + --skill-path /ABS/PATH/TO/morph-doc/skills/YOUR_SKILL_ID \ + --model sonnet \ + --max-iterations 5 \ + --runs-per-query 3 \ + --holdout 0.4 \ + --verbose \ + --results-dir /ABS/PATH/TO/morph-doc/.local/skill-desc-opt +``` + +- Adjust `--model` to the model you actually use in the IDE so trigger scores match reality. +- The command prints JSON including **`best_description`** and can write `report.html` under `--results-dir`. +- **Headless / CI:** pass `--report none` if you cannot open a browser. + +### 4. Land changes in morph-doc + +1. Replace the `description:` field in `skills//SKILL.md` (keep `name` and directory aligned; do not paste the full Skill body into `description`). +2. Run **`npm test`**; fix `morph-doc-skill-inventory` if `description` no longer matches trigger-phrase heuristics. +3. If you changed **facts** or re-pointed canonical docs, update **`last_verified`** / **`verified_against`** per `VISION.md` and `CLAUDE.md`. --- From f619fa712027ae00f8b2001b46a14a7683d3d4f6 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Thu, 14 May 2026 11:18:17 +0800 Subject: [PATCH 12/25] feat: Three-layer model (knowledge base, brain, connector) --- AGENTS.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index 735214454..582b6e6a9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -15,6 +15,20 @@ This is the Morph Documentation website (Docusaurus 3.1.1). Morph is an optimist - **Executable topic summaries:** `skills//SKILL.md` (see [`skills/README.md`](./skills/README.md)). Use these for routing and concise procedures. - **Agent sub-definition:** `agents/*.md` (also published under `/agents/` on the doc site; navbar **Agents**). Start with [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md) for skill authoring from a single goal. Canonical skill path is **`skills//`** at repo root; see [`skills/README.md`](./skills/README.md) to symlink into Cursor / Claude Code / OpenClaw global dirs. When in doubt, treat `docs/` + `skills/` as the product source of truth. +### Three-layer model (knowledge base, brain, connector) + +Use morph-doc as Morph’s **versioned knowledge base** and **external brain** for agents. Three layers: + +| Layer | Role | In this repo | +|-------|------|----------------| +| **Knowledge base** | Canonical facts, long-form narrative, tables, demos (humans + search) | `docs/**/*.mdx` | +| **Brain** | Reliable behavior: stepwise playbooks, self-checks; authority in Git, not chat memory alone | `skills//SKILL.md`, plus `__tests__/` where behavior must stay tied to docs | +| **Connector** | Routes intent to the right surface: YAML `name` / `description` (tool routing), optional MDX `doc_skill_id` (page–skill pairing), **Related Skills** for handoffs without copying sibling bodies | Same `SKILL.md` files; pairing and policy in [`VISION.md`](./VISION.md); symlink and trigger tuning in [`skills/README.md`](./skills/README.md) | + +**Connector contract:** Skills do not duplicate full MDX. They connect prompts → **Execution Steps** → pointers into `docs/` → optional sibling skill links. + +**Mnemonic:** write facts in `docs/`; write how to be found and executed in `skills/`; keep pairing testable (`doc_skill_id`, `npm test`). + ## Development commands ### Local development @@ -44,7 +58,7 @@ This is the Morph Documentation website (Docusaurus 3.1.1). Morph is an optimist ### Key directories - `docs/` — MDX content (`build-on-morph/`, `about-morph/`, `how-morph-works/`, `morph-rails/`, …) - - `docs/build-on-morph/sdk/{classes,enumerations,functions,interfaces,type-aliases,variables}/` — **typedoc-generated API reference**; do **not** hand-edit these files or add frontmatter (including `doc_skill_id`), they will be overwritten on regeneration. See [`VISION.md`](./VISION.md) § Pairing Policy. + - `docs/build-on-morph/sdk/{classes,enumerations,functions,interfaces,type-aliases,variables}/` — **typedoc-generated API reference**; do **not** hand-edit these files or add frontmatter (including `doc_skill_id`), they will be overwritten on regeneration. See [`VISION.md`](./VISION.md) (Pairing Policy). - `skills/` — executable SKILL topics (mirrored on the site at `/skills/`) - `agents/` — agent role definitions (mirrored on the site at `/agents/`) - `src/components/` — React (`MorphRpc/`, `AltFee/`, `ApiExplorer/`, …) From 7d36f71465b37d2c6683a663783f3c1df0a4fd08 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Thu, 14 May 2026 11:28:34 +0800 Subject: [PATCH 13/25] fix: CONTRIBUTING.md --- CONTRIBUTING.md | 48 ++++++++++++++++++++++++++++++ README.md | 4 +++ __tests__/contributing-md.test.mjs | 42 ++++++++++++++++++++++++++ scripts/run-tests.mjs | 1 + 4 files changed, 95 insertions(+) create mode 100644 CONTRIBUTING.md create mode 100644 __tests__/contributing-md.test.mjs diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..e4e7719ec --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,48 @@ +# Contributing to morph-doc + +This repository is the Morph documentation site (Docusaurus) and the **source of truth for Morph Agent Skills**. Before opening a pull request that touches `docs/`, `skills/`, or `agents/`, read the links below so changes stay consistent with the doc–skill contract. + +## Read first + +| Doc | Purpose | +|-----|---------| +| [`AGENTS.md`](./AGENTS.md) | Commands, directories, tests, day-to-day agent workspace operations | +| [`VISION.md`](./VISION.md) | Documentation-as-SKILL vision, pairing policy, freshness metadata | +| [`skills/README.md`](./skills/README.md) | `skills/` conventions, symlinks (`npm run skill-ln`), optional trigger-eval workflow | +| [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md) | How to author or revise one Skill from a single goal | + +## Morph knowledge base: Skills as connectors + +Team norms for treating this repository as Morph’s **versioned knowledge base** and **external brain** for agents. This aligns with the **Three-layer model** in [`AGENTS.md`](./AGENTS.md) and the contract in [`VISION.md`](./VISION.md). + +### Three layers + +1. **Knowledge base**: Canonical facts, long-form narrative, tables, and demos live in `docs/**/*.mdx` for humans and site search. Do not paste full MDX pages into a Skill. +2. **Brain**: **Execution Steps**, boundary notes, and **Self-Check** live in `skills//SKILL.md`. Executable checks that must stay aligned with docs live in `__tests__/`; merge only after `npm test` passes. +3. **Connector (Skill)**: Connects a short user or tool prompt to the right material—routing via YAML `name` / `description`, pairing MDX pages via `doc_skill_id`, and handing off via **Related Skills** without copying sibling Skill bodies. + +### Collaboration checklist + +- For **actionable** or **fact-table** topics, follow the pairing policy in `VISION.md`: keep `skills//SKILL.md` in sync, with `doc_skill_id` matching the Skill `name` and directory name (enforced by `__tests__/doc-skill-pairing.test.mjs` and related guards). +- Skill bodies follow the **connector contract**: execution steps + pointers to specific `docs/` sections + optional Related Skills; large tables may live under `references/` with guidance in the Skill on when to open them. +- When changing on-chain facts, contract addresses, RPC endpoints, or package versions, update `last_verified` / `verified_against` on affected Skills in the same PR (see `VISION.md`). +- Register new skill directories in `sidebars-skills.js`. To load skills globally in an IDE across clones, use `npm run skill-ln` (see `skills/README.md`). +- To tighten or relax how often a Skill is selected, see **Tuning description trigger rates** in `skills/README.md` and maintain an eval JSON modeled on `scripts/skill-trigger-evals.*.example.json`. + +### Mnemonic + +Write facts in `docs/`; write how to be found and executed in `skills/`; keep pairing verifiable with `doc_skill_id` and `npm test`. + +## Local setup + +- Install dependencies with your package manager (this repo commonly uses `pnpm` or `npm`). +- `npm start` — Docusaurus dev server +- `npm test` — run all guards under `__tests__/` (required before merging doc–skill changes) + +## Pull requests + +- Run `npm test` and fix failures; do not broaden test scope to silence unrelated guards. +- Do not hand-edit typedoc output under `docs/build-on-morph/sdk/{classes,enumerations,functions,interfaces,type-aliases,variables}/` or add `doc_skill_id` there (regenerated output). +- Do not commit secrets (see `.gitignore` and `AGENTS.md`). + +For broader product context, see the repository [`README.md`](./README.md). diff --git a/README.md b/README.md index 26d337177..6e1c6b10a 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,10 @@ Our decentralized sequencer design and innovative Layer 2 approach address block 3. [Morph's Origins and Aspirations](https://medium.com/@morphlayer/morphys-origins-and-aspirations-7afc0280a8e2) +## Contributing + +See [`CONTRIBUTING.md`](./CONTRIBUTING.md) for pull-request expectations, local commands, and the team norm **Morph knowledge base: Skills as connectors** (knowledge base, brain, and connector roles). + ## AI assistant workspace (Claude Code & OpenClaw) This repo includes agent-oriented docs at the root: diff --git a/__tests__/contributing-md.test.mjs b/__tests__/contributing-md.test.mjs new file mode 100644 index 000000000..364215971 --- /dev/null +++ b/__tests__/contributing-md.test.mjs @@ -0,0 +1,42 @@ +/** + * CONTRIBUTING.md: exists and retains the team norm section for the Morph + * knowledge base (Skill as connector) plus pointers to AGENTS/VISION. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const CONTRIBUTING = path.join(ROOT, 'CONTRIBUTING.md'); + +assert.ok(fs.existsSync(CONTRIBUTING), 'CONTRIBUTING.md exists'); + +const content = fs.readFileSync(CONTRIBUTING, 'utf8'); + +assert.match( + content, + /## Morph knowledge base: Skills as connectors/, + 'CONTRIBUTING.md has the Morph knowledge base / Skill connector section heading', +); + +const requiredSubstrings = [ + 'AGENTS.md', + 'VISION.md', + 'doc_skill_id', + 'npm test', + '`docs/`', + '`skills/`', + 'Related Skills', + 'sidebars-skills.js', + 'Three layers', +]; +for (const s of requiredSubstrings) { + assert.ok( + content.includes(s), + `CONTRIBUTING.md contains expected fragment: ${s}`, + ); +} + +console.log('contributing-md: ok'); diff --git a/scripts/run-tests.mjs b/scripts/run-tests.mjs index c1449bd04..a3b710a9e 100644 --- a/scripts/run-tests.mjs +++ b/scripts/run-tests.mjs @@ -14,6 +14,7 @@ const TEST_DIR = path.join(ROOT, '__tests__'); export const TEST_FILES = [ 'run-tests-manifest.test.mjs', 'build-toolchain-constraints.test.mjs', + 'contributing-md.test.mjs', 'doc-skill-pairing.test.mjs', 'morph-doc-skill-inventory.test.mjs', 'skill-trigger-eval-examples.test.mjs', From d5f44437bec1fac30bbe9a0e23cbd7a02fabe877 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Thu, 14 May 2026 11:39:07 +0800 Subject: [PATCH 14/25] fix: Working with Claude Code --- CLAUDE.md | 2 +- CONTRIBUTING.md | 12 ++++++++++++ __tests__/contributing-md.test.mjs | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index 18e745dff..7a6bfe3a0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Canonical handbook -Day-to-day architecture, commands, and conventions live in [`AGENTS.md`](./AGENTS.md) — read it first. The doc–skill contract (why this repo exists as an "external brain" for Morph-facing agents) is in [`VISION.md`](./VISION.md). This file only captures what Claude Code specifically needs on top of those. +Day-to-day architecture, commands, and conventions live in [`AGENTS.md`](./AGENTS.md) — read it first. The doc–skill contract (why this repo exists as an "external brain" for Morph-facing agents) is in [`VISION.md`](./VISION.md). **Contributor norms** (pull requests, three-layer model, Skills-as-connectors checklist) live in [`CONTRIBUTING.md`](./CONTRIBUTING.md). This file only captures what Claude Code specifically needs on top of those. Optional personal overrides: `CLAUDE.local.md` (git-ignored). Nested `CLAUDE.md` files in subfolders may apply when working only in those paths. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e4e7719ec..f12f93775 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,11 +6,23 @@ This repository is the Morph documentation site (Docusaurus) and the **source of | Doc | Purpose | |-----|---------| +| [`CLAUDE.md`](./CLAUDE.md) | Claude Code workspace entry: commands, skill authoring loop, links to AGENTS.md / VISION.md / CONTRIBUTING.md | | [`AGENTS.md`](./AGENTS.md) | Commands, directories, tests, day-to-day agent workspace operations | | [`VISION.md`](./VISION.md) | Documentation-as-SKILL vision, pairing policy, freshness metadata | | [`skills/README.md`](./skills/README.md) | `skills/` conventions, symlinks (`npm run skill-ln`), optional trigger-eval workflow | | [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md) | How to author or revise one Skill from a single goal | +## Working with Claude Code + +Claude Code reads root [`CLAUDE.md`](./CLAUDE.md) when this repository is the active project. Use it together with this document: `CLAUDE.md` carries commands and the skill loop; **Morph knowledge base: Skills as connectors** (above) is the team contract for `docs/` / `skills/` / tests. + +- **Workspace root**: Open the **morph-doc** clone as the project root so paths (`docs/`, `skills/`, `__tests__/`) and `npm test` match CI and the guards described in `CLAUDE.md`. +- **Global skills (optional)**: Run `npm run skill-ln` so `skills//` are symlinked into your global Claude skills directory (paths vary by install; see [`skills/README.md`](./skills/README.md)). Then other projects’ Claude Code sessions can load Morph skills without opening this repo. +- **Global agents (optional)**: `npm run agent-ln` symlinks `agents/*.md` for tools that read global agent definitions. +- **Single-topic Skill work**: Follow [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md); `CLAUDE.md` already routes the common “new or revise a Skill” loop there. +- **Personal overrides**: Add a git-ignored `CLAUDE.local.md` at the repo root for machine-specific notes (see “Optional personal overrides” in [`CLAUDE.md`](./CLAUDE.md)). +- **Verify before merge**: Run `npm test` after doc or skill edits (same expectation as `CLAUDE.md`). + ## Morph knowledge base: Skills as connectors Team norms for treating this repository as Morph’s **versioned knowledge base** and **external brain** for agents. This aligns with the **Three-layer model** in [`AGENTS.md`](./AGENTS.md) and the contract in [`VISION.md`](./VISION.md). diff --git a/__tests__/contributing-md.test.mjs b/__tests__/contributing-md.test.mjs index 364215971..a55fe4ccc 100644 --- a/__tests__/contributing-md.test.mjs +++ b/__tests__/contributing-md.test.mjs @@ -22,6 +22,7 @@ assert.match( ); const requiredSubstrings = [ + 'CLAUDE.md', 'AGENTS.md', 'VISION.md', 'doc_skill_id', @@ -31,6 +32,7 @@ const requiredSubstrings = [ 'Related Skills', 'sidebars-skills.js', 'Three layers', + 'Working with Claude Code', ]; for (const s of requiredSubstrings) { assert.ok( From 800cbcc8e1bf2d3367c3bdd9c14ae3cb20010be2 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Thu, 14 May 2026 17:42:09 +0800 Subject: [PATCH 15/25] fix: Claude Mandatory self-check --- CLAUDE.md | 10 +++++++ CONTRIBUTING.md | 4 ++- __tests__/claude-md.test.mjs | 42 ++++++++++++++++++++++++++++++ __tests__/contributing-md.test.mjs | 1 + scripts/run-tests.mjs | 1 + 5 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 __tests__/claude-md.test.mjs diff --git a/CLAUDE.md b/CLAUDE.md index 7a6bfe3a0..920481466 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -65,6 +65,16 @@ When the user asks for a new skill or a revision, follow [`agents/morph-doc-agen See `VISION.md` for the pairing policy (which doc types require a skill) and the freshness contract. +## Mandatory self-check (docs / skills PRs) + +Before you finish or hand off work that touches `docs/`, `skills/`, or pairing metadata, confirm all five items below (mirrors the **Collaboration checklist** in [`CONTRIBUTING.md`](./CONTRIBUTING.md)): + +- **Pairing:** For **actionable** or **fact-table** scope per `VISION.md`, is every MDX `doc_skill_id` (when present) aligned with `skills//SKILL.md` (`name` equals folder name), and is that SKILL updated in the same change set? +- **Connector contract:** Does each affected Skill stay pointer-first—**Execution Steps** plus links into concrete `docs/` sections—not a paste of full MDX; use **Related Skills** and `references/` only as directed pointers? +- **Freshness:** If you changed on-chain facts, contract addresses, RPC endpoints, or package versions, did you re-stamp **`last_verified`** / **`verified_against`** on every affected Skill in this same change set? +- **Inventory:** For any **new** `skills//` directory, did you register it in **`sidebars-skills.js`**, run **`npm test`**, and fix failures without weakening unrelated guards? +- **Routing (if you touched discovery):** If you changed how a Skill should be selected, did you update YAML **`description`** (and eval JSON if you maintain one) per **Tuning description trigger rates** in `skills/README.md`? + ## Repo-specific conventions - **Never copy content between `docs/` and `skills/`.** Skills point into docs; docs never embed skill playbooks. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f12f93775..28bbb6789 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,7 +6,7 @@ This repository is the Morph documentation site (Docusaurus) and the **source of | Doc | Purpose | |-----|---------| -| [`CLAUDE.md`](./CLAUDE.md) | Claude Code workspace entry: commands, skill authoring loop, links to AGENTS.md / VISION.md / CONTRIBUTING.md | +| [`CLAUDE.md`](./CLAUDE.md) | Claude Code workspace entry: commands, skill loop, **Mandatory self-check (docs / skills PRs)**, links to AGENTS.md / VISION.md / CONTRIBUTING.md | | [`AGENTS.md`](./AGENTS.md) | Commands, directories, tests, day-to-day agent workspace operations | | [`VISION.md`](./VISION.md) | Documentation-as-SKILL vision, pairing policy, freshness metadata | | [`skills/README.md`](./skills/README.md) | `skills/` conventions, symlinks (`npm run skill-ln`), optional trigger-eval workflow | @@ -35,6 +35,8 @@ Team norms for treating this repository as Morph’s **versioned knowledge base* ### Collaboration checklist +These items are **mandatory self-check bullets** in root [`CLAUDE.md`](./CLAUDE.md) for Claude Code sessions; keep both places aligned when you change norms. + - For **actionable** or **fact-table** topics, follow the pairing policy in `VISION.md`: keep `skills//SKILL.md` in sync, with `doc_skill_id` matching the Skill `name` and directory name (enforced by `__tests__/doc-skill-pairing.test.mjs` and related guards). - Skill bodies follow the **connector contract**: execution steps + pointers to specific `docs/` sections + optional Related Skills; large tables may live under `references/` with guidance in the Skill on when to open them. - When changing on-chain facts, contract addresses, RPC endpoints, or package versions, update `last_verified` / `verified_against` on affected Skills in the same PR (see `VISION.md`). diff --git a/__tests__/claude-md.test.mjs b/__tests__/claude-md.test.mjs new file mode 100644 index 000000000..7b556342b --- /dev/null +++ b/__tests__/claude-md.test.mjs @@ -0,0 +1,42 @@ +/** + * CLAUDE.md: mandatory self-check section for docs/skills PRs (aligned with CONTRIBUTING). + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const CLAUDE = path.join(ROOT, 'CLAUDE.md'); + +assert.ok(fs.existsSync(CLAUDE), 'CLAUDE.md exists'); + +const content = fs.readFileSync(CLAUDE, 'utf8'); + +assert.match( + content, + /## Mandatory self-check \(docs \/ skills PRs\)/, + 'CLAUDE.md has the mandatory self-check heading', +); + +const selfCheckKeys = [ + '**Pairing:**', + '**Connector contract:**', + '**Freshness:**', + '**Inventory:**', + '**Routing (if you touched discovery):**', +]; +for (const key of selfCheckKeys) { + assert.ok( + content.includes(key), + `CLAUDE.md self-check includes labeled item: ${key}`, + ); +} + +assert.ok( + content.includes('[`CONTRIBUTING.md`](./CONTRIBUTING.md)'), + 'CLAUDE.md self-check links to CONTRIBUTING.md', +); + +console.log('claude-md: ok'); diff --git a/__tests__/contributing-md.test.mjs b/__tests__/contributing-md.test.mjs index a55fe4ccc..9ca105ed0 100644 --- a/__tests__/contributing-md.test.mjs +++ b/__tests__/contributing-md.test.mjs @@ -33,6 +33,7 @@ const requiredSubstrings = [ 'sidebars-skills.js', 'Three layers', 'Working with Claude Code', + 'mandatory self-check bullets', ]; for (const s of requiredSubstrings) { assert.ok( diff --git a/scripts/run-tests.mjs b/scripts/run-tests.mjs index a3b710a9e..760b9abce 100644 --- a/scripts/run-tests.mjs +++ b/scripts/run-tests.mjs @@ -14,6 +14,7 @@ const TEST_DIR = path.join(ROOT, '__tests__'); export const TEST_FILES = [ 'run-tests-manifest.test.mjs', 'build-toolchain-constraints.test.mjs', + 'claude-md.test.mjs', 'contributing-md.test.mjs', 'doc-skill-pairing.test.mjs', 'morph-doc-skill-inventory.test.mjs', From 51544adad8cfae0be1c43266ba764924df220675 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Thu, 14 May 2026 18:37:46 +0800 Subject: [PATCH 16/25] fix: merge request ai review --- .../build-toolchain-constraints.test.mjs | 4 ++-- __tests__/is-alt-fee.test.mjs | 4 ++++ __tests__/markdown-actions-routes.test.mjs | 3 +++ .../morph-contracts-skill-tokenlist.test.mjs | 6 +++++ __tests__/morph-dapp-planning-skill.test.mjs | 6 +++++ __tests__/morph-doc-skill-inventory.test.mjs | 23 +++++++++++++++++-- __tests__/morph-js-sdk-skill.test.mjs | 3 ++- __tests__/skills-sidebar.test.mjs | 11 +++++---- __tests__/vision-md.test.mjs | 2 +- skills/morph-dapp-codegen/SKILL.md | 10 ++++---- skills/morph-dapp-planning/SKILL.md | 8 +++---- skills/morph-full-node-run-in-docker/SKILL.md | 5 ++++ skills/morph-skill-ln/SKILL.md | 5 ++++ skills/morph-verify-contracts/SKILL.md | 8 ++++--- src/utils/isAltFee.js | 7 +++--- src/utils/isMarkdownActionsPathname.js | 7 +++--- 16 files changed, 84 insertions(+), 28 deletions(-) diff --git a/__tests__/build-toolchain-constraints.test.mjs b/__tests__/build-toolchain-constraints.test.mjs index 1de63b66e..5d5bad1b6 100644 --- a/__tests__/build-toolchain-constraints.test.mjs +++ b/__tests__/build-toolchain-constraints.test.mjs @@ -32,9 +32,9 @@ assert.match( const lockPath = path.join(ROOT, 'pnpm-lock.yaml'); assert.ok(fs.existsSync(lockPath), 'pnpm-lock.yaml exists'); -const lockHead = fs.readFileSync(lockPath, 'utf8').slice(0, 800); +const lockContent = fs.readFileSync(lockPath, 'utf8'); assert.match( - lockHead, + lockContent, new RegExp(`overrides:\\s*\\n\\s*webpack:\\s*${PINNED.replace(/\./g, '\\.')}`), 'pnpm-lock.yaml must record webpack override', ); diff --git a/__tests__/is-alt-fee.test.mjs b/__tests__/is-alt-fee.test.mjs index 355a2aba9..d49590eb1 100644 --- a/__tests__/is-alt-fee.test.mjs +++ b/__tests__/is-alt-fee.test.mjs @@ -24,6 +24,8 @@ assert.equal(isAltFee({ type: 127, feeTokenID: 1 }), true); assert.equal(isAltFee({ type: 127n, feeTokenID: 1 }), true); assert.equal(isAltFee({ type: '0x7f', feeTokenID: 1 }), true); assert.equal(isAltFee({ type: '0X7F', feeTokenID: 1 }), true); +assert.equal(isAltFee({ type: '0x7F', feeTokenID: 1 }), true, 'mixed-case hex digits'); +assert.equal(isAltFee({ type: ' 0x7f ', feeTokenID: 1 }), true, 'trimmed hex string'); assert.equal(isAltFee({ type: 'altFee', feeTokenID: 1 }), true); assert.equal(isAltFee({ type: 'ALtFEE', feeTokenID: 1 }), true, 'altFee is case-insensitive'); @@ -66,6 +68,8 @@ assert.equal(isAltFee({ feeTokenID: 4, feeLimit: null }), true, 'null treated as // helpers (for other tests in this file or future reuse) assert.equal(isAltFeeTypeExplicit(127), true); assert.equal(isAltFeeTypeExplicit(126), false); +assert.equal(isAltFeeTypeExplicit('0x7F'), true); +assert.equal(isAltFeeTypeExplicit('0X7f'), true); assert.equal(isPositiveFeeTokenId(1), true); assert.equal(isPositiveFeeTokenId(0), false); assert.equal(isFeeLimitValid(0), true); diff --git a/__tests__/markdown-actions-routes.test.mjs b/__tests__/markdown-actions-routes.test.mjs index 9a4a9bf39..221c60cab 100644 --- a/__tests__/markdown-actions-routes.test.mjs +++ b/__tests__/markdown-actions-routes.test.mjs @@ -14,6 +14,9 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url)); const ROOT = path.join(__dirname, '..'); assert.equal(isMarkdownActionsPathname('/docs/foo/bar'), true); +assert.equal(isMarkdownActionsPathname('/docs'), true, 'docs landing'); +assert.equal(isMarkdownActionsPathname('/skills'), true, 'skills landing'); +assert.equal(isMarkdownActionsPathname('/agents'), true, 'agents landing'); assert.equal(isMarkdownActionsPathname('/skills/README'), true); assert.equal(isMarkdownActionsPathname('/skills/morphchain-bridge/SKILL'), true); assert.equal(isMarkdownActionsPathname('/agents/morph-doc-agent'), true); diff --git a/__tests__/morph-contracts-skill-tokenlist.test.mjs b/__tests__/morph-contracts-skill-tokenlist.test.mjs index 16982090f..414e91cfc 100644 --- a/__tests__/morph-contracts-skill-tokenlist.test.mjs +++ b/__tests__/morph-contracts-skill-tokenlist.test.mjs @@ -1,6 +1,7 @@ /** * Keep skills/morph-contracts/SKILL.md in sync with morph-bridge mainnet tokenList.json * when the bridge repo is present (sibling: ../morph-bridge/...). + * In CI (process.env.CI), the token list path must exist — no silent skip. */ import assert from 'node:assert/strict'; import fs from 'node:fs'; @@ -27,6 +28,11 @@ function normAddr(a) { function main() { if (!fs.existsSync(TOKEN_LIST_PATH)) { + if (process.env.CI) { + assert.fail( + `morph-contracts-skill-tokenlist: required in CI, missing token list at ${TOKEN_LIST_PATH}`, + ); + } console.log( 'morph-contracts-skill-tokenlist: skip (no morph-bridge tokenList at %s)', TOKEN_LIST_PATH, diff --git a/__tests__/morph-dapp-planning-skill.test.mjs b/__tests__/morph-dapp-planning-skill.test.mjs index 924fe542f..9e5b35ec2 100644 --- a/__tests__/morph-dapp-planning-skill.test.mjs +++ b/__tests__/morph-dapp-planning-skill.test.mjs @@ -46,4 +46,10 @@ for (const anchor of [ ); } +assert.ok( + content.includes('(new in Stage 2)') && + content.includes('will be created in Stage 2'), + 'Target Files / Self-Check should document greenfield paths (Stage 2 marker)', +); + console.log('morph-dapp-planning-skill: ok'); diff --git a/__tests__/morph-doc-skill-inventory.test.mjs b/__tests__/morph-doc-skill-inventory.test.mjs index dbf8dabc9..9c9cda0b6 100644 --- a/__tests__/morph-doc-skill-inventory.test.mjs +++ b/__tests__/morph-doc-skill-inventory.test.mjs @@ -41,10 +41,29 @@ function parseIsoDate(value) { const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value); if (!match) return null; const [, y, mo, d] = match; - const dt = new Date(Date.UTC(Number(y), Number(mo) - 1, Number(d))); - return Number.isNaN(dt.getTime()) ? null : dt; + const year = Number(y); + const month = Number(mo); + const day = Number(d); + const dt = new Date(Date.UTC(year, month - 1, day)); + if (Number.isNaN(dt.getTime())) return null; + // Reject normalized overflow dates (e.g. 2026-02-31 → 2026-03-03) + if ( + dt.getUTCFullYear() !== year || + dt.getUTCMonth() + 1 !== month || + dt.getUTCDate() !== day + ) { + return null; + } + return dt; } +assert.equal(parseIsoDate('2026-02-31'), null, 'parseIsoDate rejects overflow calendar day'); +assert.equal(parseIsoDate('2026-02-29'), null, 'parseIsoDate rejects non-leap Feb 29'); +assert.ok(parseIsoDate('2024-02-29'), 'parseIsoDate accepts leap-day when valid'); +assert.ok(parseIsoDate('2026-05-14'), 'parseIsoDate accepts valid YYYY-MM-DD'); +assert.equal(parseIsoDate('2026-13-01'), null, 'parseIsoDate rejects invalid month'); +assert.equal(parseIsoDate('2026/05/14'), null, 'parseIsoDate rejects non-ISO separators'); + const entries = fs.readdirSync(SKILLS_DIR, { withFileTypes: true }); const skillDirs = entries.filter((e) => e.isDirectory()).map((e) => e.name); diff --git a/__tests__/morph-js-sdk-skill.test.mjs b/__tests__/morph-js-sdk-skill.test.mjs index 0c1dd9ed9..79e5bc499 100644 --- a/__tests__/morph-js-sdk-skill.test.mjs +++ b/__tests__/morph-js-sdk-skill.test.mjs @@ -17,6 +17,7 @@ assert.ok(content.includes('morphHoodiTestnet'), 'Viem snippet should include mo assert.ok(content.includes('MorphSigner'), 'Ethers snippet should include MorphSigner'); assert.ok(content.includes('feeTokenID'), 'examples should include feeTokenID'); assert.ok(content.includes('feeLimit'), 'examples should include feeLimit'); -assert.match(content, /```typescript\n[\s\S]*```\n[\s\S]*```typescript/, 'should include at least two typescript fenced blocks'); +const tsBlocks = content.match(/```typescript\r?\n[\s\S]*?```/g) ?? []; +assert.ok(tsBlocks.length >= 2, 'should include at least two closed typescript fenced blocks'); console.log('morph-js-sdk-skill: ok'); diff --git a/__tests__/skills-sidebar.test.mjs b/__tests__/skills-sidebar.test.mjs index 40ef2d7ce..e0bd4b601 100644 --- a/__tests__/skills-sidebar.test.mjs +++ b/__tests__/skills-sidebar.test.mjs @@ -13,10 +13,13 @@ const SIDEBAR_FILE = path.join(ROOT, 'sidebars-skills.js'); const entries = fs.readdirSync(SKILLS_DIR, { withFileTypes: true }); const expectedIds = entries - .filter((e) => e.isDirectory()) - .map((e) => e.name) - .sort() - .map((id) => `${id}/SKILL`); + .filter( + (e) => + e.isDirectory() && + fs.existsSync(path.join(SKILLS_DIR, e.name, 'SKILL.md')) + ) + .map((e) => `${e.name}/SKILL`) + .sort(); const sidebarSrc = fs.readFileSync(SIDEBAR_FILE, 'utf8'); const listed = [...sidebarSrc.matchAll(/id:\s*['"]([^'"]+)['"]/g)] diff --git a/__tests__/vision-md.test.mjs b/__tests__/vision-md.test.mjs index 12445d177..fe13bfac0 100644 --- a/__tests__/vision-md.test.mjs +++ b/__tests__/vision-md.test.mjs @@ -23,7 +23,7 @@ function parseFrontmatter(raw) { const desc = /^description:\s*(.+)$/m.exec(fm); return { name: name ? name[1].trim().replace(/^["']|["']$/g, '') : null, - description: desc ? desc[1].trim() : null, + description: desc ? desc[1].trim().replace(/^["']|["']$/g, '') : null, }; } diff --git a/skills/morph-dapp-codegen/SKILL.md b/skills/morph-dapp-codegen/SKILL.md index 389bc7305..4532baa24 100644 --- a/skills/morph-dapp-codegen/SKILL.md +++ b/skills/morph-dapp-codegen/SKILL.md @@ -1,7 +1,7 @@ --- name: morph-dapp-codegen description: "Morph dApp TDD codegen: take a planning document produced by morph-dapp-planning, write failing tests first, then implementation, looping tests + lint to green for Solidity / JS SDK / frontend code. Use ONLY when planning/.md already exists on disk — never use this skill for a fresh requirement that has no planning document yet (run morph-dapp-planning or morph-dapp-workflow first). Use when the user has an approved planning file and wants to run the Red→Green loop, land code against it, or backfill tests." -last_verified: 2026-04-30 +last_verified: 2026-05-14 verified_against: - docs/build-on-morph/sdk/js-sdk.mdx - docs/build-on-morph/developer-resources/1-contracts.md @@ -50,8 +50,10 @@ run the full suite → wrap up**. - Solidity: `forge test` / `npx hardhat test` - JS/TS: `npm test` (the morph-doc project goes through `node scripts/run-tests.mjs`; new test files must be registered in `TEST_FILES`) -5. Commit the tests immediately with a message like - `test: add failing tests for `. +5. Stage the failing tests (`git add …`). **Do not `git commit` by default** — obtain + explicit user approval first (e.g. they say to commit, or they enable an explicit + "allow autocommit" convention for this run). This matches Phase 3: no auto-commit + unless the user explicitly asks. ### Phase 2 — Green: write the implementation @@ -85,7 +87,7 @@ run the full suite → wrap up**. - Files changed - Tests added / updated - Diffs from the planning document, if any -4. **Do not auto commit** unless the user explicitly asks. +4. **Do not auto commit in any phase** (including Red) unless the user explicitly asks. ## Morph-specific codegen checklist diff --git a/skills/morph-dapp-planning/SKILL.md b/skills/morph-dapp-planning/SKILL.md index a5673f3aa..25ce22dbc 100644 --- a/skills/morph-dapp-planning/SKILL.md +++ b/skills/morph-dapp-planning/SKILL.md @@ -1,7 +1,7 @@ --- name: morph-dapp-planning description: "Morph dApp planning: turn a product requirement (optionally + API doc + Figma URL) into a testable Morph dApp planning document covering Goals, Test Cases, Target Files, and Morph chain/contract/SDK constraints. Use when the user provides a Morph product requirement, feature description, API doc, or Figma link and wants to draft or revise planning output before coding. Trigger on requests to break a requirement into a buildable plan, planning work, or to align product inputs × API × Figma. Not for generating implementation code (see morph-dapp-codegen)." -last_verified: 2026-04-27 +last_verified: 2026-05-14 verified_against: - docs/build-on-morph/sdk/js-sdk.mdx - docs/build-on-morph/developer-resources/1-contracts.md @@ -103,8 +103,8 @@ Minimum sections: - Morph-specific constraints (see Morph Constraints below) ## Target Files -- impl: -- test: +- impl: — if the file does not exist yet, append **`(new in Stage 2)`** (or an explicit *will be created in Stage 2* note on the same line) +- test: — same rule ## Morph Constraints - Chain / RPC: presets from morph-network/chain; do not hard-code chainId / RPC @@ -130,7 +130,7 @@ have verifiable anchors: - [ ] Every Goal maps to at least one Test Case - [ ] Test Cases cover at least one error branch -- [ ] Each `Target Files` entry has a paired impl / test path that exists +- [ ] Each `Target Files` impl/test pair lists concrete relative paths that **either** exist on disk now **or** are explicitly marked for greenfield work (e.g. **`(new in Stage 2)`** on the line, or an explicit *will be created in Stage 2* note) - [ ] If Alt Fee is involved, the planning document states the source of `feeTokenID` (and of `feeLimit` if the product uses an explicit cap) - [ ] Any contract address, chainId, or RPC mentioned cites an in-repo authoritative diff --git a/skills/morph-full-node-run-in-docker/SKILL.md b/skills/morph-full-node-run-in-docker/SKILL.md index 6c736025a..4183cf618 100644 --- a/skills/morph-full-node-run-in-docker/SKILL.md +++ b/skills/morph-full-node-run-in-docker/SKILL.md @@ -32,3 +32,8 @@ Primary guide (covers both Docker and binary with tabs): 9. Verify: `curl localhost:8545` for geth peers; `curl localhost:26657/status` — synced when `catching_up` is `false`. Do not fabricate snapshot names, make targets, or URLs not present in the doc; open the primary doc to verify when in doubt. + +## Related Skills + +- `morph-contracts` — Mainnet / Hoodi chain IDs and public RPC references when wiring `L1_ETH_RPC` / `L1_BEACON_CHAIN_RPC` or checking network context +- `morph-rpc-api` — Morph JSON-RPC surface when validating a running node or comparing behavior to hosted endpoints diff --git a/skills/morph-skill-ln/SKILL.md b/skills/morph-skill-ln/SKILL.md index 82bcbc721..8bd2a8f04 100644 --- a/skills/morph-skill-ln/SKILL.md +++ b/skills/morph-skill-ln/SKILL.md @@ -66,6 +66,11 @@ This SKILL only describes **how to use the script to create symlinks**; conventi - **`--dry-run`** only prints commands, does not write to the filesystem. - **`--unlink`** does not delete real directories under `skills/`, only removes links in agent directories. +## Related Skills + +- `morph-dapp-workflow` — orchestrated dApp flow; points here when child skills are not symlinked yet (`skills/README.md` + `scripts/morph-skill-ln`) +- `morph-js-sdk` / `morph-contracts` — common Morph topic skills users link for chain/SDK work (parallel **agent** definitions use `scripts/morph-agent-ln`; see **`skills/README.md`** → *Linking agents*) + ## Self-Check - [ ] Does it point to `skills/README.md` as the overview entry point? diff --git a/skills/morph-verify-contracts/SKILL.md b/skills/morph-verify-contracts/SKILL.md index 327f85b8c..2d32586f9 100644 --- a/skills/morph-verify-contracts/SKILL.md +++ b/skills/morph-verify-contracts/SKILL.md @@ -1,9 +1,11 @@ --- name: morph-verify-contracts description: "Verify smart contracts on the Morph block explorer (Blockscout) using Hardhat, Foundry, or the explorer UI. Use when the user wants to verify a deployed contract on Morph Mainnet (chainId 2818) or Hoodi Testnet (chainId 2910), set up etherscan/blockscout config in hardhat.config.js, run forge verify-contract, or manually verify via Solidity/Vyper methods on explorer.morph.network." -last_verified: 2026-05-09 +last_verified: 2026-05-14 verified_against: - docs/build-on-morph/build-on-morph/5-verify-your-smart-contracts.md + - docs/build-on-morph/code-examples/1-deploy-contract-on-morph.md + - src/components/config.js --- # Verify Smart Contracts on Morph (Execution Playbook) @@ -23,7 +25,7 @@ Block explorers: | Network | Chain ID | Explorer API URL | |---------|----------|-----------------| | Morph Mainnet | 2818 | `https://explorer-api.morph.network/api?` | -| Hoodi Testnet | 2910 | `https://explorer-api-hoodi.morph.network/api?` (see doc for exact URL) | +| Hoodi Testnet | 2910 | `https://explorer-api-hoodi.morph.network` | ## Execution Steps @@ -37,7 +39,7 @@ Block explorers: network: 'morph', chainId: 2818, urls: { - apiURL: 'https://explorer-api.morph.network/api? ', + apiURL: 'https://explorer-api.morph.network/api?', browserURL: 'https://explorer.morph.network/', }, }], diff --git a/src/utils/isAltFee.js b/src/utils/isAltFee.js index 32c059f90..1c31973ac 100644 --- a/src/utils/isAltFee.js +++ b/src/utils/isAltFee.js @@ -2,7 +2,7 @@ * Whether a tx/request payload is AltFee per Morph rules (type, feeTokenID, optional feeLimit). * CommonJS so Node test runners can `require()` it without package `"type":"module"`. * - * 1) type: omitted/null → skip; 127 / 127n / "0x7f" / "altFee" (case-insensitive) → proceed; otherwise false + * 1) type: omitted/null → skip; 127 / 127n / "0x7f" (any hex letter case, optional outer whitespace) / "altFee" (case-insensitive) → proceed; otherwise false * 2) When type is explicitly AltFee: feeTokenID null/omitted → throw (upstream contract violation) * 3) Core: feeTokenID present and > 0; feeLimit optional — if provided must be >= 0 and finite, else false * @@ -18,8 +18,9 @@ function isAltFeeTypeExplicit(type) { if (type === 127) return true; if (typeof type === 'bigint' && type === 127n) return true; if (typeof type === 'string') { - if (type === '0x7f' || type === '0X7F') return true; - if (type.toLowerCase() === 'altfee') return true; + const normalized = type.trim().toLowerCase(); + if (normalized === '0x7f') return true; + if (normalized === 'altfee') return true; } return false; } diff --git a/src/utils/isMarkdownActionsPathname.js b/src/utils/isMarkdownActionsPathname.js index 2c01576d2..ff887ab4a 100644 --- a/src/utils/isMarkdownActionsPathname.js +++ b/src/utils/isMarkdownActionsPathname.js @@ -6,10 +6,9 @@ */ function isMarkdownActionsPathname(pathname) { if (typeof pathname !== 'string' || !pathname) return false; - return ( - pathname.startsWith('/docs/') || - pathname.startsWith('/skills/') || - pathname.startsWith('/agents/') + const bases = ['/docs', '/skills', '/agents']; + return bases.some( + (base) => pathname === base || pathname.startsWith(`${base}/`) ); } From 7fd6ae9c6cd7e5df3bc91fe291c4dfdc41cb166e Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Tue, 19 May 2026 11:12:53 +0800 Subject: [PATCH 17/25] fix: review Co-authored-by: Cursor --- CONTRIBUTING.md | 4 +- VISION.md | 2 +- ...t-driven-development-workflow-doc.test.mjs | 10 +++++ __tests__/morph-dapp-workflow-skill.test.mjs | 12 ++++++ __tests__/morph-doc-agent.test.mjs | 7 ++++ __tests__/vision-md.test.mjs | 2 +- agents/morph-dapp-agent.md | 3 +- agents/morph-doc-agent.md | 1 + .../7-agent-driven-development-workflow.md | 38 ++++++++++++++----- skills/morph-dapp-codegen/SKILL.md | 3 +- skills/morph-dapp-workflow/SKILL.md | 28 ++++++++++++-- 11 files changed, 93 insertions(+), 17 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 28bbb6789..93db8f6ed 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,6 +11,7 @@ This repository is the Morph documentation site (Docusaurus) and the **source of | [`VISION.md`](./VISION.md) | Documentation-as-SKILL vision, pairing policy, freshness metadata | | [`skills/README.md`](./skills/README.md) | `skills/` conventions, symlinks (`npm run skill-ln`), optional trigger-eval workflow | | [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md) | How to author or revise one Skill from a single goal | +| [`agents/morph-dapp-agent.md`](./agents/morph-dapp-agent.md) | End-to-end dApp delivery — routes to harness Skills (`morph-dapp-workflow`, etc.) | ## Working with Claude Code @@ -18,8 +19,9 @@ Claude Code reads root [`CLAUDE.md`](./CLAUDE.md) when this repository is the ac - **Workspace root**: Open the **morph-doc** clone as the project root so paths (`docs/`, `skills/`, `__tests__/`) and `npm test` match CI and the guards described in `CLAUDE.md`. - **Global skills (optional)**: Run `npm run skill-ln` so `skills//` are symlinked into your global Claude skills directory (paths vary by install; see [`skills/README.md`](./skills/README.md)). Then other projects’ Claude Code sessions can load Morph skills without opening this repo. -- **Global agents (optional)**: `npm run agent-ln` symlinks `agents/*.md` for tools that read global agent definitions. +- **Global agents (optional)**: `npm run agent-ln` symlinks `agents/*.md` for tools that read global agent definitions. Agent frontmatter should include `name`, `description`, and `model` (see `__tests__/morph-dapp-agent.test.mjs`). - **Single-topic Skill work**: Follow [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md); `CLAUDE.md` already routes the common “new or revise a Skill” loop there. +- **dApp harness planning output**: `planning/.md` is gitignored by default — local workflow state; commit only when the team wants planning docs in the PR. - **Personal overrides**: Add a git-ignored `CLAUDE.local.md` at the repo root for machine-specific notes (see “Optional personal overrides” in [`CLAUDE.md`](./CLAUDE.md)). - **Verify before merge**: Run `npm test` after doc or skill edits (same expectation as `CLAUDE.md`). diff --git a/VISION.md b/VISION.md index 8bb262f97..f93dc90ad 100644 --- a/VISION.md +++ b/VISION.md @@ -1,5 +1,5 @@ --- -name: morph-vision +name: morph-doc-vision description: "Morph documentation as the external brain for Morph-facing agents: docs-as-SKILL, developer toolchain (docs/, skills/, IDE agents, OpenClaw workspace), and how to write MDX so models instantiate reliable behavior. Use when defining or explaining the doc–skill contract, onboarding contributors to agent-ready documentation, or aligning Cursor / Claude Code / OpenClaw with this repository." --- diff --git a/__tests__/agent-driven-development-workflow-doc.test.mjs b/__tests__/agent-driven-development-workflow-doc.test.mjs index f7ac3f40c..ef1970659 100644 --- a/__tests__/agent-driven-development-workflow-doc.test.mjs +++ b/__tests__/agent-driven-development-workflow-doc.test.mjs @@ -26,6 +26,7 @@ assert.match( ); for (const heading of [ + '## Agent definitions', '## Pick your entry Skill', '## Quick decision tree', '## The end-to-end path: morph-dapp-workflow', @@ -57,7 +58,16 @@ for (const link of DISPATCH_TARGETS) { ); } +for (const agentLink of ['/agents/morph-dapp-agent', '/agents/morph-doc-agent']) { + assert.ok( + content.includes(agentLink), + `dispatcher doc must link to agent definitions; missing ${agentLink}`, + ); +} + for (const anchor of [ + 'WORKFLOW_REVIEW_BASE', + 'gitignore', 'morph-dapp-workflow', 'feeTokenID', 'feeLimit', diff --git a/__tests__/morph-dapp-workflow-skill.test.mjs b/__tests__/morph-dapp-workflow-skill.test.mjs index a7a87dac4..82fb99554 100644 --- a/__tests__/morph-dapp-workflow-skill.test.mjs +++ b/__tests__/morph-dapp-workflow-skill.test.mjs @@ -53,4 +53,16 @@ assert.ok( 'workflow must explicitly forbid auto commit/push' ); +assert.match( + content, + /WORKFLOW_REVIEW_BASE|git rev-parse HEAD/i, + 'workflow should document review baseline recording (Step 0)', +); + +assert.match( + content, + /planning\/.*gitignore|\.gitignore.*planning/i, + 'workflow should note that planning/ is gitignored by default', +); + console.log('morph-dapp-workflow-skill: ok'); diff --git a/__tests__/morph-doc-agent.test.mjs b/__tests__/morph-doc-agent.test.mjs index f1cc0b213..9bea8bc1c 100644 --- a/__tests__/morph-doc-agent.test.mjs +++ b/__tests__/morph-doc-agent.test.mjs @@ -23,9 +23,16 @@ function field(name) { } assert.equal(field('name'), 'morph-doc-agent', 'frontmatter name'); +const model = field('model'); +assert.ok(model && model.length > 0, 'frontmatter should declare a default model'); const desc = field('description'); assert.ok(desc && desc.length > 20, 'description should be non-empty and substantive'); assert.match(desc, /SKILL|skill/i, 'description should mention SKILL/skill'); +assert.match( + desc, + /Use when|when the user/i, + 'description should include trigger phrasing so IDE routing can match it', +); assert.match(content, /frontmatter|YAML/i, 'body should stress frontmatter/YAML'); assert.match(content, /skills\/<.*>\/SKILL\.md|skills\/morph-/i, 'should point to skills//SKILL.md path'); assert.match( diff --git a/__tests__/vision-md.test.mjs b/__tests__/vision-md.test.mjs index fe13bfac0..3ae0b65f6 100644 --- a/__tests__/vision-md.test.mjs +++ b/__tests__/vision-md.test.mjs @@ -29,7 +29,7 @@ function parseFrontmatter(raw) { const fm = parseFrontmatter(content); assert.ok(fm, 'VISION.md frontmatter parseable'); -assert.equal(fm.name, 'morph-vision', 'VISION.md name is morph-vision'); +assert.equal(fm.name, 'morph-doc-vision', 'VISION.md name is morph-doc-vision'); assert.ok(fm.description && fm.description.length > 20, 'VISION.md description is non-trivial'); const headings = [ diff --git a/agents/morph-dapp-agent.md b/agents/morph-dapp-agent.md index 2cb93cb14..57f548820 100644 --- a/agents/morph-dapp-agent.md +++ b/agents/morph-dapp-agent.md @@ -1,7 +1,8 @@ --- name: morph-dapp-agent title: Morph dApp Agent -description: "Morph dApp end-to-end delivery agent: receives a Morph feature request (product brief / API doc / Figma link / verbal description) and drives it through planning → TDD implementation → multi-dimension review for Morph contracts, the JS SDK, and Morph-facing frontends. Use when the user wants to take a Morph requirement from idea to mergeable code, asks for an end-to-end planning-to-review run, requests TDD implementation against an existing planning document, or wants a Morph diff reviewed across security / performance / quality / planning compliance. Routes single-step requests directly to the matching child SKILL." +model: composer-2.5-fast +description: "Morph dApp delivery agent (orchestration layer): routes a Morph feature request to the right harness Skill — full pipeline via morph-dapp-workflow, or atomic planning / TDD codegen / diff review — with pointer-only handoffs and wrap-up artifacts. Use when the user wants IDE-level routing and gates across planning → implementation → review, an end-to-end run from idea to mergeable code, TDD against an existing planning document, or a Morph diff reviewed across security / performance / quality / planning compliance. Prefer this agent over loading morph-dapp-workflow alone when you need explicit routing and three-artifact wrap-up." --- You are **morph-dapp-agent**: a delivery role scoped to the `morph-doc` repository that takes **one Morph dApp goal** from intake to mergeable code by orchestrating four existing SKILLs. You never inline SKILL content — you **route** to the SKILLs and honor their gates. diff --git a/agents/morph-doc-agent.md b/agents/morph-doc-agent.md index 872a469d6..13aa884e9 100644 --- a/agents/morph-doc-agent.md +++ b/agents/morph-doc-agent.md @@ -1,6 +1,7 @@ --- name: morph-doc-agent title: Morph Doc Agent +model: composer-2.5-fast description: "Dedicated to the Morph doc repository: given a single goal/topic from the user, generates a loadable, executable Agent Skill (skills//SKILL.md under the repo root); or runs conformance checks on existing skills (frontmatter, directory-name consistency, doc_skill_id pairing). Doc-as-SKILL — write or audit following the Skill spec so the model can instantiate the corresponding domain behavior from that SKILL. Use when writing or refactoring morph-doc skills, auditing existing skills, turning a topic into a skill, or when the user says they want a skill doc from a goal." --- diff --git a/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md b/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md index d4e1efe78..6bf871664 100644 --- a/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md +++ b/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md @@ -17,6 +17,21 @@ Both humans and Morph-facing agents (Cursor, Claude Code, OpenClaw, Windsurf, Co from the same source: this page plus the SKILL files under [`skills/`](https://github.com/morph-l2/morph-doc/tree/main/skills). +## Agent definitions (IDE sub-agents) + +Skills are the **executable playbooks**; **agents** are pointer-only roles that route to +them without copying SKILL bodies. Install agent files with `npm run agent-ln` (see +[`morph-skill-ln`](/skills/morph-skill-ln/SKILL) — **Linking agents**). + +| Role | Agent | When to use | +|---|---|---| +| End-to-end dApp delivery (routing + wrap-up) | [`morph-dapp-agent`](/agents/morph-dapp-agent) | Prefer in Cursor / Claude Code when you want explicit stage routing, gates, and three wrap-up artifacts (planning path, changed files, review report). | +| Author or audit a Skill | [`morph-doc-agent`](/agents/morph-doc-agent) | One goal → `skills//SKILL.md`, or inventory / `doc_skill_id` pairing audit. | + +For the staged pipeline body (Step 0 baseline commit, per-stage gates), load +[`morph-dapp-workflow`](/skills/morph-dapp-workflow/SKILL) — usually via `morph-dapp-agent` +for full runs. + ## Pick your entry Skill Scan the left column and pick the first row that matches your task. Each row points to a @@ -24,7 +39,7 @@ single Skill — the Skill then self-describes its own steps. | If the task is… | Invoke this Skill | Notes | |---|---|---| -| End-to-end: product brief / Figma / API doc → merge-ready code | [`morph-dapp-workflow`](/skills/morph-dapp-workflow/SKILL) | Orchestrator. Chains the three stages below with a gate after each. | +| End-to-end: product brief / Figma / API doc → merge-ready code | [`morph-dapp-agent`](/agents/morph-dapp-agent) → [`morph-dapp-workflow`](/skills/morph-dapp-workflow/SKILL) | Agent routes; workflow SKILL runs staged gates (records review base at Step 0). | | Turn requirements into planning output | [`morph-dapp-planning`](/skills/morph-dapp-planning/SKILL) | Outputs `planning/.md` with Goals / Test Cases / Target Files / Morph Constraints. | | Implement an approved planning document (Red → Green TDD) | [`morph-dapp-codegen`](/skills/morph-dapp-codegen/SKILL) | Requires a planning file. Never auto-commits. | | Review a diff / PR / working tree | [`morph-dapp-code-review`](/skills/morph-dapp-code-review/SKILL) | Four-dimension review (Security / Performance / Code Quality / Planning compliance), P0/P1/P2. | @@ -36,8 +51,11 @@ single Skill — the Skill then self-describes its own steps. | Run a Morph full node on a host | [`morph-full-node-run-in-docker`](/skills/morph-full-node-run-in-docker/SKILL) | Node operations, not dApp dev. | Rule of thumb: **if there is no planning document yet and the task spans multiple files across -contract / SDK / frontend, start from `morph-dapp-workflow`. Otherwise go to a single -Skill.** +contract / SDK / frontend, start from [`morph-dapp-agent`](/agents/morph-dapp-agent) (or invoke +`morph-dapp-workflow` directly). Otherwise go to a single Skill.** + +**Planning files:** `planning/.md` is gitignored by default — local workflow +state unless your team commits it for review. ## Quick decision tree @@ -93,8 +111,9 @@ When you do invoke the orchestrator, the three stages wire together like this: ``` Each arrow is a **gate**: blocking items must be cleared before the next stage runs. -Resuming is implicit — the presence of `planning/.md` (and later, landed tests) tells -the orchestrator where to pick up. +At workflow **Step 0**, record `WORKFLOW_REVIEW_BASE=$(git rev-parse HEAD)` so Stage 3 +reviews `git diff $WORKFLOW_REVIEW_BASE...HEAD`. Resuming is implicit — the presence of +`planning/.md` (and later, landed tests) tells the orchestrator where to pick up. ### Stage 1 — Planning @@ -160,8 +179,7 @@ Two ways to make them available to your agent: 1. **Inside `morph-doc`** — open this repo in Cursor / Claude Code / OpenClaw / Windsurf and the agent loads `skills/*/SKILL.md` automatically. -2. **From any other project** — symlink them into your tool's global skills directory - using the [`morph-skill-ln`](/skills/morph-skill-ln/SKILL) script: +2. **From any other project** — symlink skills and agents into your tool's global directories: ```bash ./scripts/morph-skill-ln \ @@ -172,12 +190,13 @@ Two ways to make them available to your agent: morph-js-sdk \ morph-contracts \ morph-tx-cost + ./scripts/morph-agent-ln morph-dapp-agent morph-doc-agent ``` Once installed, phrase your request so the router can route: -- Whole feature: *"Use morph-dapp-workflow to take this requirement from planning to review-ready - code."* +- Whole feature: *"Use morph-dapp-agent to take this requirement from planning to review-ready + code."* (or invoke `morph-dapp-workflow` directly) - Single stage: *"Use morph-dapp-codegen against `planning/reward-claim.md`."* - Fact lookup: *"Use morph-contracts to list the L2-side bridge addresses on Hoodi."* @@ -197,6 +216,7 @@ your own scripts. ## See also +- Agents: [`morph-dapp-agent`](/agents/morph-dapp-agent), [`morph-doc-agent`](/agents/morph-doc-agent) - Planning: [`morph-dapp-planning`](/skills/morph-dapp-planning/SKILL) - TDD implementation: [`morph-dapp-codegen`](/skills/morph-dapp-codegen/SKILL) - Multi-dimension review: [`morph-dapp-code-review`](/skills/morph-dapp-code-review/SKILL) diff --git a/skills/morph-dapp-codegen/SKILL.md b/skills/morph-dapp-codegen/SKILL.md index 4532baa24..8ece99491 100644 --- a/skills/morph-dapp-codegen/SKILL.md +++ b/skills/morph-dapp-codegen/SKILL.md @@ -1,11 +1,12 @@ --- name: morph-dapp-codegen description: "Morph dApp TDD codegen: take a planning document produced by morph-dapp-planning, write failing tests first, then implementation, looping tests + lint to green for Solidity / JS SDK / frontend code. Use ONLY when planning/.md already exists on disk — never use this skill for a fresh requirement that has no planning document yet (run morph-dapp-planning or morph-dapp-workflow first). Use when the user has an approved planning file and wants to run the Red→Green loop, land code against it, or backfill tests." -last_verified: 2026-05-14 +last_verified: 2026-05-19 verified_against: - docs/build-on-morph/sdk/js-sdk.mdx - docs/build-on-morph/developer-resources/1-contracts.md - skills/morph-js-sdk/SKILL.md + - skills/morph-contracts/SKILL.md - skills/morph-tx-cost/SKILL.md --- diff --git a/skills/morph-dapp-workflow/SKILL.md b/skills/morph-dapp-workflow/SKILL.md index 6b09340d1..b589416db 100644 --- a/skills/morph-dapp-workflow/SKILL.md +++ b/skills/morph-dapp-workflow/SKILL.md @@ -1,7 +1,7 @@ --- name: morph-dapp-workflow -description: "Morph dApp end-to-end workflow orchestrator: chain planning → TDD implementation → multi-dimension review for Morph contract / JS SDK / frontend changes. Use when the user asks to take a Morph feature from idea to merge-ready code, runs the full planning-to-review pipeline, or wants a single command that walks through planning output, implementation, and review. Trigger when the user wants to push a Morph requirement straight from product description to mergeable code, or wants an end-to-end pipeline. For atomic tasks, call the matching child skill directly instead of this workflow." -last_verified: 2026-04-30 +description: "Morph dApp end-to-end workflow SKILL (stage orchestrator): chain planning → TDD implementation → multi-dimension review for Morph contract / JS SDK / frontend changes. Use when the user explicitly invokes this workflow skill to run staged gates from idea to merge-ready code. For IDE agent routing, wrap-up artifacts, and single-step dispatch, prefer morph-dapp-agent. For atomic tasks (planning-only, codegen-only, review-only), call the matching child skill directly instead of this workflow." +last_verified: 2026-05-19 verified_against: - skills/morph-dapp-planning/SKILL.md - skills/morph-dapp-codegen/SKILL.md @@ -46,6 +46,19 @@ Any missing → stop and point the user at `skills/README.md` to symlink via > then **stop and wait for explicit user confirmation** before advancing. Never chain > stages in a single reply. +### Step 0 — Record review baseline (fresh run) + +At the **start** of a new workflow run (before Stage 1 edits), in a git checkout: + +1. Run `git status` and surface any unexpected dirty state to the user. +2. Record `WORKFLOW_REVIEW_BASE=$(git rev-parse HEAD)` and tell the user the SHA in one line + (this is the diff base for Stage 3). +3. If not a git repo or `git rev-parse` fails, note that Stage 3 will use + `morph-dapp-code-review`'s built-in fallbacks (`origin/main...HEAD`, then working tree). + +When **resuming** mid-pipeline, confirm with the user whether to keep the original +`WORKFLOW_REVIEW_BASE` or re-record after `git pull`. + ### Stage 1 — Planning 1. Read `skills/morph-dapp-planning/SKILL.md` and execute its full flow verbatim. @@ -71,7 +84,10 @@ Any missing → stop and point the user at `skills/README.md` to symlink via ### Stage 3 — Review -1. Read `skills/morph-dapp-code-review/SKILL.md` and execute its full flow verbatim, using the commit recorded at the start of this workflow as the base. +1. Read `skills/morph-dapp-code-review/SKILL.md` and execute its full flow verbatim. Pass + `WORKFLOW_REVIEW_BASE` from Step 0 as the review base (`git diff + $WORKFLOW_REVIEW_BASE...HEAD` or equivalent). If Step 0 was skipped or the variable is + unset, follow that skill's **Input identification** fallbacks in order. 2. Pass the Stage 1 planning document path so the planning-compliance dimension is enabled. 3. **Output to user**: emit the full review report inline. 4. Proceed directly to Stage 4 (no user gate needed between Review and Wrap-up). @@ -90,6 +106,10 @@ Simple rule: each stage's output file IS the state. When resuming, **always conf feature-id with the user first** — do not infer it from whatever planning file happens to exist on disk. +**Planning artifacts (`planning/`):** `planning/.md` is local workflow state. +The repo `.gitignore` excludes `planning/` by default — commit a planning doc only when the +team wants it in a PR; otherwise keep it locally or attach it to the ticket. + | Existing artifact | Inferred phase | Suggested entry | |---|---|---| | Only a requirement description | Fresh start | Stage 1 | @@ -111,9 +131,11 @@ before starting. - Does the final output include all three: the planning document path, the changed-file list, and the review report? - Was auto-commit / auto-push avoided? +- Was `WORKFLOW_REVIEW_BASE` recorded at Step 0 (or a fallback documented for Stage 3)? ## Related Skills +- `morph-dapp-agent`: IDE agent entry — routes to this workflow or atomic child skills - `morph-dapp-planning` / `morph-dapp-codegen` / `morph-dapp-code-review`: the three atomic flows orchestrated by this workflow - `morph-js-sdk` / `morph-contracts` / `morph-tx-cost`: Morph domain fact-tables, From a99b355484838e1e4f745f85e303302e28463848 Mon Sep 17 00:00:00 2001 From: Joey Date: Tue, 19 May 2026 18:29:38 +0800 Subject: [PATCH 18/25] feat: mirror morph-l2/morph-skill as 'Morph Skill (external pack)' subcategory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add 9 pages under skills/morph-skill/ mirroring the 8 runtime CLI skills from github.com/morph-l2/morph-skill (wallet, explorer, identity, dex, bridge, altfee, 7702, x402) plus an overview index.md with role boundary, routing table, and BGW handoff guidance. - New nested category in sidebars-skills.js (under Skill playbooks) - Whitelist morph-skill/ in skills-sidebar.test.mjs and morph-doc-skill-inventory.test.mjs (flat .md pattern, not /SKILL.md) - Add see-also disambiguation between L1↔L2 native bridge and the new cross-chain swap mirror (both named morph-bridge upstream) - All facts (addresses, commands, tx types, formulas) verbatim-checked against upstream SKILL.md files; first BGW mention links to the social-wallet-integration doc on each page --- __tests__/morph-doc-skill-inventory.test.mjs | 6 +- __tests__/skills-sidebar.test.mjs | 4 +- sidebars-skills.js | 16 +++ skills/morph-bridge/SKILL.md | 5 + skills/morph-skill/index.md | 115 +++++++++++++++++++ skills/morph-skill/morph-7702.md | 82 +++++++++++++ skills/morph-skill/morph-altfee.md | 98 ++++++++++++++++ skills/morph-skill/morph-bridge.md | 96 ++++++++++++++++ skills/morph-skill/morph-dex.md | 71 ++++++++++++ skills/morph-skill/morph-explorer.md | 72 ++++++++++++ skills/morph-skill/morph-identity.md | 94 +++++++++++++++ skills/morph-skill/morph-wallet.md | 93 +++++++++++++++ skills/morph-skill/morph-x402.md | 95 +++++++++++++++ 13 files changed, 845 insertions(+), 2 deletions(-) create mode 100644 skills/morph-skill/index.md create mode 100644 skills/morph-skill/morph-7702.md create mode 100644 skills/morph-skill/morph-altfee.md create mode 100644 skills/morph-skill/morph-bridge.md create mode 100644 skills/morph-skill/morph-dex.md create mode 100644 skills/morph-skill/morph-explorer.md create mode 100644 skills/morph-skill/morph-identity.md create mode 100644 skills/morph-skill/morph-wallet.md create mode 100644 skills/morph-skill/morph-x402.md diff --git a/__tests__/morph-doc-skill-inventory.test.mjs b/__tests__/morph-doc-skill-inventory.test.mjs index 9c9cda0b6..f197ae131 100644 --- a/__tests__/morph-doc-skill-inventory.test.mjs +++ b/__tests__/morph-doc-skill-inventory.test.mjs @@ -65,7 +65,11 @@ assert.equal(parseIsoDate('2026-13-01'), null, 'parseIsoDate rejects invalid mon assert.equal(parseIsoDate('2026/05/14'), null, 'parseIsoDate rejects non-ISO separators'); const entries = fs.readdirSync(SKILLS_DIR, { withFileTypes: true }); -const skillDirs = entries.filter((e) => e.isDirectory()).map((e) => e.name); +// `morph-skill/` mirrors github.com/morph-l2/morph-skill as flat .md siblings +// (index.md + per-skill .md), not the /SKILL.md convention enforced here. +const skillDirs = entries + .filter((e) => e.isDirectory() && e.name !== 'morph-skill') + .map((e) => e.name); assert.ok(skillDirs.length > 0, 'skills/ should contain at least one skill directory'); diff --git a/__tests__/skills-sidebar.test.mjs b/__tests__/skills-sidebar.test.mjs index e0bd4b601..eb50d5b63 100644 --- a/__tests__/skills-sidebar.test.mjs +++ b/__tests__/skills-sidebar.test.mjs @@ -24,7 +24,9 @@ const expectedIds = entries const sidebarSrc = fs.readFileSync(SIDEBAR_FILE, 'utf8'); const listed = [...sidebarSrc.matchAll(/id:\s*['"]([^'"]+)['"]/g)] .map((m) => m[1]) - .filter((id) => id !== 'README'); + // README and the morph-skill/* mirror pages (flat .md files, not /SKILL.md + // dirs) are excluded from the directory-sync check. + .filter((id) => id !== 'README' && !id.startsWith('morph-skill/')); listed.sort(); const sortedExpected = [...expectedIds].sort(); diff --git a/sidebars-skills.js b/sidebars-skills.js index 0a17c7e94..7f262b604 100644 --- a/sidebars-skills.js +++ b/sidebars-skills.js @@ -43,6 +43,22 @@ const SkillsSidebar = [ { type: 'doc', id: 'morph-skill-ln/SKILL', label: 'morph-skill-ln (symlink script)' }, { type: 'doc', id: 'morph-tx-cost/SKILL', label: 'Morph Transaction Fees' }, { type: 'doc', id: 'morph-verify-contracts/SKILL', label: 'Verify Smart Contracts' }, + { + type: 'category', + label: 'Morph Skill (external pack)', + link: { type: 'doc', id: 'morph-skill/index' }, + collapsed: true, + items: [ + { type: 'doc', id: 'morph-skill/morph-wallet', label: 'Wallet' }, + { type: 'doc', id: 'morph-skill/morph-explorer', label: 'Explorer' }, + { type: 'doc', id: 'morph-skill/morph-identity', label: 'Identity (EIP-8004)' }, + { type: 'doc', id: 'morph-skill/morph-dex', label: 'DEX' }, + { type: 'doc', id: 'morph-skill/morph-bridge', label: 'Bridge (cross-chain swap)' }, + { type: 'doc', id: 'morph-skill/morph-7702', label: 'EIP-7702 Delegation' }, + { type: 'doc', id: 'morph-skill/morph-x402', label: 'x402 Payment' }, + { type: 'doc', id: 'morph-skill/morph-altfee', label: 'Alt-fee Gas' }, + ], + }, ], }, ]; diff --git a/skills/morph-bridge/SKILL.md b/skills/morph-bridge/SKILL.md index 024870b8e..ca619dc8a 100644 --- a/skills/morph-bridge/SKILL.md +++ b/skills/morph-bridge/SKILL.md @@ -8,6 +8,11 @@ verified_against: # Morph Bridge (Execution Playbook) +> **Looking for cross-chain swap (Bulbaswap, 6 chains)?** This page covers the +> **native L1↔L2 bridge** (deposit / withdraw via the canonical gateway). +> For multi-chain swap with JWT order management, see +> [morph-skill · Bridge (cross-chain swap)](/skills/morph-skill/morph-bridge). + ## Authoritative Documentation (single source of truth) `docs/build-on-morph/build-on-morph/3-bridge-between-morph-and-ethereum.md` diff --git a/skills/morph-skill/index.md b/skills/morph-skill/index.md new file mode 100644 index 000000000..e5de7df83 --- /dev/null +++ b/skills/morph-skill/index.md @@ -0,0 +1,115 @@ +--- +title: Morph Skill +sidebar_label: Overview +slug: /morph-skill +description: AI Agent skill pack for the Morph L2 protocol layer — wallet, explorer, DEX, bridge, alt-fee, identity, EIP-7702, and x402 — wrapping `morph_api.py` from the morph-l2/morph-skill repo. +--- + +# Morph Skill + +Mirrored documentation for the AI Agent skill pack at +[`morph-l2/morph-skill`](https://github.com/morph-l2/morph-skill). Each page +below is a routable summary; the upstream `SKILL.md` files remain the single +source of truth (linked at the top of every page). + +## What this is + +`morph-skill` is the **Morph protocol and business layer** for AI agents — a +Python CLI (`scripts/morph_api.py`) that lets agents like Claude Code, Cursor, +Windsurf, and Cline interact with Morph L2 through natural language. All +commands output JSON; all amounts are human-readable (`0.1` ETH, not wei). + +It is **not** a wallet product. The wallet product / signing layer is +[BGW ↗](https://github.com/bitget-wallet-ai-lab/bitget-wallet-skill) — Bitget +Wallet's Social Login Wallet skill pack (TEE-backed signing). See +[Role boundary](#role-boundary) below for how to decide which side handles +what. + +## Skills in this pack + +| Skill | What it does | +|---|---| +| [morph-wallet](/skills/morph-skill/morph-wallet) | Local key wallet — create, balance, transfer, tx receipt | +| [morph-explorer](/skills/morph-skill/morph-explorer) | On-chain reads via Blockscout — address / tx / token / contract | +| [morph-identity](/skills/morph-skill/morph-identity) | EIP-8004 agent identity & reputation | +| [morph-dex](/skills/morph-skill/morph-dex) | Swap on Morph via Bulbaswap aggregator | +| [morph-bridge](/skills/morph-skill/morph-bridge) | Cross-chain swap across 6 chains (Bulbaswap) | +| [morph-7702](/skills/morph-skill/morph-7702) | EIP-7702 EOA delegation, atomic batch (tx `0x04`) | +| [morph-x402](/skills/morph-skill/morph-x402) | x402 HTTP payment protocol — pay / receive USDC | +| [morph-altfee](/skills/morph-skill/morph-altfee) | Pay gas in non-ETH tokens (tx `0x7f`) | + +## Role boundary + +> Before executing any Morph workflow, decide whether the user is asking for: +> a **Morph protocol/business** task, a **wallet / Social Login Wallet** task, +> or a **combined** flow that needs both. +> +> This repo is the **Morph protocol and business layer**. BGW should be +> treated as the **wallet product and signing layer**. + +`morph-skill` owns: wallet RPC operations, explorer queries, DEX quotes, +bridge quotes/orders, alt-fee, EIP-8004 identity & reputation, EIP-7702 +delegation, x402 pay/receive. + +BGW owns: Social Login Wallet (TEE signing — keys never leave the TEE), swap +execution across chains (including Morph) for Social Login Wallet users, +token discovery, market data, security audits. + +This repo **does not** call BGW scripts, embed BGW tooling, or manage BGW +sessions at runtime. + +For combined Morph + BGW flows, see +[`docs/social-wallet-integration.md` ↗](https://github.com/morph-l2/morph-skill/blob/main/docs/social-wallet-integration.md). + +## Routing table + +| User need | Use | +|---|---| +| Local private-key wallet on Morph | Morph skills | +| Explorer, swap, bridge, alt-fee, identity, reputation on Morph (with local key) | Morph skills | +| EIP-7702 delegation, batch calls (with local key) | Morph skills | +| x402 payment (pay or receive USDC, with local key) | Morph skills | +| x402 discover / verify / settle / server (no signing needed) | Morph skills | +| Social Login Wallet, TEE signing, market data, token discovery | BGW skills | +| Swap / bridge execution with Social Login Wallet (incl. on Morph) | **BGW skills** — BGW supports Morph chain natively with TEE signing | +| Social Login Wallet + Morph protocol reads | BGW for address, then Morph for reads | +| x402 pay with Social Login Wallet | Agent orchestration: Morph `x402-discover` → BGW signs EIP-3009 → Agent replays with `PAYMENT-SIGNATURE` header | +| EIP-7702 batch with Social Login Wallet | Agent orchestration: Morph computes hashes → BGW signs via TEE → Agent assembles and broadcasts | + +**Single-pass rule:** pick one mode at task start and stay in it. Do not +bounce between BGW and Morph more than once for the same task. + +## Install + +```bash +git clone https://github.com/morph-l2/morph-skill.git +cd morph-skill +pip install requests eth_account eth_abi eth_utils +python3 scripts/morph_api.py [options] +``` + +No API keys required for queries. Bridge order management requires JWT +authentication via `bridge-login`. + +For Claude Code, Cursor, Windsurf, Cline, and Dify integration, see the +[upstream README ↗](https://github.com/morph-l2/morph-skill#readme). + +## Data sources + +| Source | URL | +|---|---| +| Morph RPC | `https://rpc.morph.network/` | +| Explorer API (Blockscout) | `https://explorer-api.morph.network/api/v2` | +| DEX / Bridge API (Bulbaswap) | `https://api.bulbaswap.io` | +| x402 Facilitator | `https://morph-rails.morph.network/x402` | +| Hoodi testnet RPC | `https://rpc-hoodi.morph.network` | + +ABIs for `IdentityRegistry` and `ReputationRegistry` are bundled locally in +the repo at `contracts/`. + +## See also + +- Native L1↔L2 bridge (deposit / withdraw via `L1GatewayRouter`, + `proveAndRelayMessage`): [Morph Bridge (L1↔L2)](/skills/morph-bridge/SKILL) +- [Morph Skills overview](/skills/) — the full skill catalog for this site +- Upstream changelog: [`CHANGELOG.md` ↗](https://github.com/morph-l2/morph-skill/blob/main/CHANGELOG.md) diff --git a/skills/morph-skill/morph-7702.md b/skills/morph-skill/morph-7702.md new file mode 100644 index 000000000..e02e322de --- /dev/null +++ b/skills/morph-skill/morph-7702.md @@ -0,0 +1,82 @@ +--- +name: morph-7702 +version: 1.0.0 +description: "EIP-7702 EOA delegation on Morph L2 — check delegation status, sign offline authorization, send single calls or atomic batches via tx type 0x04, and revoke delegation. Use when the user asks about EIP-7702, atomic multi-call (e.g. approve + swap), or delegating an EOA. Mutually exclusive with alt-fee." +last_verified: 2026-05-19 +verified_against: + - https://github.com/morph-l2/morph-skill/blob/main/skills/morph-7702/SKILL.md +upstream_repo: https://github.com/morph-l2/morph-skill +--- + +# Morph EIP-7702 + +EIP-7702 EOA delegation and atomic batch calls on Morph L2 via tx type `0x04`. + +## Canonical reference + +[`skills/morph-7702/SKILL.md` ↗](https://github.com/morph-l2/morph-skill/blob/main/skills/morph-7702/SKILL.md) + +## When to use + +- Check whether an EOA is delegated +- Sign a 7702 authorization offline (no tx sent) +- Send a single delegated call +- Execute an atomic batch of calls (e.g. approve + swap in one tx) +- Revoke a delegation (return EOA to normal) + +## Capability summary + +| Command | Flags | Purpose | +|---|---|---| +| `7702-delegate` | `--address 0xEOA` | Check whether an EOA has been delegated | +| `7702-authorize` | `--private-key 0x… --delegate 0xDelegateContract` | Sign authorization offline (no tx) | +| `7702-send` | `--delegate 0x… --to 0x… --data 0x… [--value ] [--gas ] --private-key 0x…` | Single delegated call | +| `7702-batch` | `--delegate 0x… --calls '[{"to":"0x…","value":"0","data":"0x…"}, …]' --private-key 0x…` | Atomic batch of calls | +| `7702-revoke` | `--private-key 0x…` | Revoke delegation (sets delegate to `address(0)`) | + +`--calls` is a JSON array of `{to, value, data}` objects. + +## Delegation detection + +Delegated EOAs have on-chain code starting with `0xef0100` followed by the +20-byte delegate address. Authorization hash format: + +``` +keccak256(0x05 || RLP([chainId, contract, nonce])) +``` + +For self-delegation, the auth `nonce` must be `tx_nonce + 1` (geth rule). + +## Critical caveats (from upstream) + +- **EIP-7702 and alt-fee are mutually exclusive** — cannot use both in a + single transaction (tx type `0x04` vs `0x7f`) +- This skill **does not assume a default Morph delegate contract** — the user + / agent supplies `--delegate` +- `7702-revoke` clears delegation — the EOA returns to a normal EOA until + re-delegated +- `7702-authorize` is offline — returns a signed authorization without sending + any tx +- [BGW ↗](https://github.com/morph-l2/morph-skill/blob/main/docs/social-wallet-integration.md) + (Social Login Wallet) users cannot sign 7702 transactions through this skill + directly + +## Safety rules + +1. Always confirm with the user before executing `7702-send`, `7702-batch`, + or `7702-revoke` — display target, calls, values before signing +2. EIP-7702 and alt-fee (`0x7f`) are mutually exclusive +3. `7702-revoke` clears delegation +4. Private keys are used locally for signing only — never sent to any API +5. `7702-authorize` is offline + +## Cross-skill integration + +- [morph-dex](./morph-dex) — get swap calldata from `dex-quote --recipient + `, then pass to `7702-batch` for atomic approve + swap +- [morph-altfee](./morph-altfee) — **mutually exclusive** with this skill; + pick one tx type per transaction +- [morph-identity](./morph-identity) — `agent-register` calldata can be + bundled into a `7702-batch` to combine registration with other operations +- [morph-x402](./morph-x402) — note that EIP-7702 delegated EOAs using legacy + SimpleDelegation may fail x402 settlement; check with `7702-delegate` first diff --git a/skills/morph-skill/morph-altfee.md b/skills/morph-skill/morph-altfee.md new file mode 100644 index 000000000..f0b75fcd4 --- /dev/null +++ b/skills/morph-skill/morph-altfee.md @@ -0,0 +1,98 @@ +--- +name: morph-altfee +version: 1.0.0 +description: "Alt-fee gas payment on Morph L2 — pay gas with alternative ERC-20 tokens (USDT, USDC, BGB, etc.) via tx type 0x7f. Use when the user has no ETH for gas and wants to pay with another token, or wants to estimate gas in token units. Mutually exclusive with EIP-7702." +last_verified: 2026-05-19 +verified_against: + - https://github.com/morph-l2/morph-skill/blob/main/skills/morph-altfee/SKILL.md +upstream_repo: https://github.com/morph-l2/morph-skill +--- + +# Morph Alt-Fee + +Pay gas in non-ETH tokens on Morph L2 via tx type `0x7f`. Use when the user has +no ETH but holds USDT / USDC / BGB / etc. + +## Canonical reference + +[`skills/morph-altfee/SKILL.md` ↗](https://github.com/morph-l2/morph-skill/blob/main/skills/morph-altfee/SKILL.md) + +## When to use + +- List supported fee tokens +- Get details (scale, rate, decimals) for a fee token +- Estimate gas cost in an alt token +- Send a transaction paying gas with a non-ETH token + +## Capability summary + +| Command | Flags | Purpose | +|---|---|---| +| `altfee-tokens` | (no flags) | List supported fee tokens | +| `altfee-token-info` | `--id ` | Token details (contract, scale, feeRate, decimals, active) | +| `altfee-estimate` | `--id [--gas-limit ]` | Estimate gas cost in token units (10% safety margin) | +| `altfee-send` | `--to --value --data --fee-token-id --fee-limit --gas-limit --private-key` | Send tx, pay gas with alt token | + +`--fee-limit` defaults to `0` (no limit — uses available balance, unused +portion is refunded). + +## Fee tokens + +Supported IDs (from upstream): + +| ID | Token | +|---|---| +| 1 | USDT.e | +| 2 | USDC.e | +| 3 | BGB (old) | +| 4 | BGB | +| 5 | USDT (`0xe7cd86e13AC4309349F30B3435a9d337750fC82D`) | +| 6 | USDC | + +`TokenRegistry`: `0x5300000000000000000000000000000000000021`. + +## Fee formula + +``` +feeLimit >= (gasFeeCap × gasLimit + L1DataFee) × tokenScale / feeRate +``` + +`altfee-token-info --id ` returns `tokenScale` and `feeRate` per token. +`altfee-estimate` includes a 10% safety margin. + +## Critical caveats (from upstream) + +- **Alt-fee and EIP-7702 are mutually exclusive** — cannot use both in one + transaction (tx type `0x7f` vs `0x04`) +- **L1 Data Fee** depends on calldata size and L1 gas price; not estimable + upfront +- `altfee-send` requires `--private-key` (local signing only) +- [BGW ↗](https://github.com/morph-l2/morph-skill/blob/main/docs/social-wallet-integration.md) + (Social Login Wallet) users **cannot** use alt-fee through this skill + +## Safety rules + +1. Always confirm with the user before executing `altfee-send` — show + recipient, amount, fee token, and fee limit before signing +2. Private keys are used locally for signing only — never sent to any API +3. Default `feeLimit=0` means no limit — unused portion is refunded; confirm + this with the user + +## Alt-fee support matrix + +| Command | `--fee-token-id` | +|---|---| +| `altfee-send` | Yes (required) | +| `agent-register` ([morph-identity](./morph-identity)) | Yes (optional) | +| `agent-feedback` ([morph-identity](./morph-identity)) | Yes (optional) | +| `transfer` ([morph-wallet](./morph-wallet)) | No | +| `transfer-token` ([morph-wallet](./morph-wallet)) | No | +| `dex-send` ([morph-dex](./morph-dex)) | No | + +## Cross-skill integration + +- [morph-dex](./morph-dex) — pass `dex-quote` calldata into `altfee-send` to + pay swap gas in alt tokens +- [morph-wallet](./morph-wallet) — `token-balance` to check fee-token balance + before sending; `balance` to detect zero-ETH situations and suggest alt-fee +- BGW: for TEE-signed gasless flows, use BGW's `no_gas` mode instead diff --git a/skills/morph-skill/morph-bridge.md b/skills/morph-skill/morph-bridge.md new file mode 100644 index 000000000..6e13a2b68 --- /dev/null +++ b/skills/morph-skill/morph-bridge.md @@ -0,0 +1,96 @@ +--- +name: morph-bridge +version: 1.3.0 +description: "Cross-chain swap with JWT auth — quote prices, create orders, submit transactions, and track order status across 6 chains via the Bulbaswap Cross-Chain Swap API. Use when the user asks to bridge tokens between chains, get a cross-chain quote, search tokens on multiple chains, or manage cross-chain orders. NOT the L1↔L2 native bridge — for that, see Morph Bridge (L1↔L2)." +last_verified: 2026-05-19 +verified_against: + - https://github.com/morph-l2/morph-skill/blob/main/skills/morph-bridge/SKILL.md +upstream_repo: https://github.com/morph-l2/morph-skill +--- + +# Morph Bridge (Cross-chain Swap) + +> **Looking for the L1↔L2 native bridge?** This page covers Bulbaswap-based +> cross-chain swap across **6 chains** with JWT order management. For Morph's +> canonical L1↔L2 deposit / withdraw via `L1GatewayRouter` and +> `proveAndRelayMessage`, see [Morph Bridge (L1↔L2)](/skills/morph-bridge/SKILL). + +Cross-chain swap via the Bulbaswap Cross-Chain Swap API. Stateful orders +require JWT auth obtained from `bridge-login`. + +## Canonical reference + +[`skills/morph-bridge/SKILL.md` ↗](https://github.com/morph-l2/morph-skill/blob/main/skills/morph-bridge/SKILL.md) + +## Supported chains + +| Chain ID | Name | +|---|---| +| `morph` | Morph | +| `eth` | Ethereum | +| `base` | Base | +| `bnb` | BNB Chain | +| `arbitrum` | Arbitrum | +| `matic` | Polygon | + +## When to use + +- Bridge tokens across the 6 supported chains +- Get a cross-chain swap quote +- Search tokens on multiple chains; check balance + USD price on any chain +- Create, sign, submit, or track cross-chain swap orders + +## Capability summary + +### No-auth (read-only) + +| Command | Flags | Purpose | +|---|---|---| +| `bridge-chains` | (no flags) | List supported chains | +| `bridge-tokens` | `[--chain ]` | List tokens (optionally on a single chain) | +| `bridge-token-search` | `--keyword [--chain ]` | Search tokens by keyword | +| `bridge-quote` | `--from-chain --from-token --amount --to-chain --to-token --from-address` | Cross-chain swap quote | +| `bridge-balance` | `--chain --token --address` | Token balance + USD price on any chain | + +### Auth setup + +| Command | Flags | Purpose | +|---|---|---| +| `bridge-login` | `--private-key` | EIP-191 sign → 24h JWT | + +### JWT-required + +| Command | Flags | Purpose | +|---|---|---| +| `bridge-make-order` | `--jwt --from-chain --from-contract --from-amount --to-chain --to-contract --to-address --market [--slippage] [--feature]` | Create an order (returns unsigned txs) | +| `bridge-submit-order` | `--jwt --order-id --signed-txs` | Submit signed txs to the API | +| `bridge-swap` | `--jwt --from-chain --from-contract --from-amount --to-chain --to-contract [--to-address] --market [--slippage] [--feature] --private-key` | One-step: make + sign + submit | +| `bridge-order` | `--jwt --order-id` | Track an order by ID | +| `bridge-history` | `--jwt [--page] [--page-size] [--status]` | List user's order history | + +`--to-address` defaults to sender address if omitted on `bridge-swap`. + +## Safety rules (from upstream) + +- Private keys are only used locally for EIP-191 message signing in + `bridge-login`. They are never sent to the API. +- JWT tokens are sent as `Authorization: Bearer ` headers. They expire + after 24 hours. +- Always confirm with the user before executing `bridge-make-order` or + `bridge-swap`. +- Always confirm with the user before executing `bridge-submit-order`. +- JWT expiry: re-authenticate via `bridge-login` if you hit auth errors. +- Native token format: the Bridge API uses empty string `""` for native + tokens; the CLI handles this automatically. + +## Cross-skill integration + +- Pair `bridge-token-search` with `dex-quote` ([morph-dex](./morph-dex)) when + the user wants on-Morph swap as well as cross-chain +- Pair `bridge-balance` with `balance` / `token-balance` + ([morph-wallet](./morph-wallet)) for full multi-chain portfolio view +- Compare `bridge-quote` rates against `dex-quote` rates before deciding + same-chain vs cross-chain +- [BGW ↗](https://github.com/morph-l2/morph-skill/blob/main/docs/social-wallet-integration.md): + Social Login Wallet users should route execution through BGW's swap flow; + this skill still provides quotes and route reasoning diff --git a/skills/morph-skill/morph-dex.md b/skills/morph-skill/morph-dex.md new file mode 100644 index 000000000..18c3167b8 --- /dev/null +++ b/skills/morph-skill/morph-dex.md @@ -0,0 +1,71 @@ +--- +name: morph-dex +version: 1.0.0 +description: "DEX swap execution on Morph L2 only — quote and send swaps via the Bulbaswap aggregator. Use when the user asks for a swap quote, a token price, or to execute a swap on Morph. For cross-chain swaps, use the morph-bridge skill instead." +last_verified: 2026-05-19 +verified_against: + - https://github.com/morph-l2/morph-skill/blob/main/skills/morph-dex/SKILL.md +upstream_repo: https://github.com/morph-l2/morph-skill +--- + +# Morph DEX + +Swap quotes and execution **on Morph chain only** via the Bulbaswap +aggregator (API at `https://api.bulbaswap.io`). For cross-chain swaps, see +[morph-bridge](./morph-bridge). + +## Canonical reference + +[`skills/morph-dex/SKILL.md` ↗](https://github.com/morph-l2/morph-skill/blob/main/skills/morph-dex/SKILL.md) + +## When to use + +- Get a swap quote (output amount, price impact) +- Check a token's price +- Execute a swap on Morph +- For swaps on other chains or cross-chain transfers, use + [morph-bridge](./morph-bridge) + +## Capability summary + +| Command | Flags | Purpose | +|---|---|---| +| `dex-quote` | `--amount --token-in --token-out [--recipient] [--slippage 0.5] [--deadline 300] [--protocols v2,v3]` | Quote (output, price impact). Pass `--recipient` to include `methodParameters` (calldata) | +| `dex-send` | `--to --value --data --private-key` | Sign and broadcast using calldata from `dex-quote --recipient` | +| `dex-approve` | `--token --spender --amount --private-key` | Approve ERC-20 spending by a router (required before swapping ERC-20s) | +| `dex-allowance` | `--token --owner --spender` | Check current allowance | + +**Defaults**: `--slippage` 1%, `--deadline` 300 seconds. Supported protocols: +`v2,v3`. Returned amounts are in human-readable units. + +## Critical notes (from upstream) + +- **Morph chain only** — `dex-quote` and `dex-send` only work for tokens on + Morph +- Always use `--slippage` to protect against price movement +- `dex-quote` returns amounts in human-readable units +- `dex-send` requires `methodParameters` from a quote with `--recipient` + +## Safety rules + +1. Always confirm with the user before executing `dex-send` or `dex-approve` — + show swap details (token pair, amount, slippage, router) before signing +2. Private keys are used locally for signing only — never sent to any API +3. DEX quotes expire quickly — get a fresh quote and send immediately + +API: `https://api.bulbaswap.io`. No API keys required. +Install: see [overview](/skills/morph-skill#install). + +## Cross-skill integration + +- [morph-explorer](./morph-explorer) — `token-search` to find token contract + addresses before quoting +- [morph-wallet](./morph-wallet) — `balance` / `token-balance` to verify funds + before swapping +- [morph-altfee](./morph-altfee) — use `altfee-send` instead of `dex-send` to + pay gas with an alt token +- [morph-7702](./morph-7702) — pass `dex-quote --recipient 0xEOA` calldata + inside `7702-batch` for atomic approve + swap in a single tx +- [BGW ↗](https://github.com/morph-l2/morph-skill/blob/main/docs/social-wallet-integration.md): + Social Login Wallet users should use BGW's swap flow for execution; + `dex-quote` is still useful for price comparison diff --git a/skills/morph-skill/morph-explorer.md b/skills/morph-skill/morph-explorer.md new file mode 100644 index 000000000..c05eb6e0f --- /dev/null +++ b/skills/morph-skill/morph-explorer.md @@ -0,0 +1,72 @@ +--- +name: morph-explorer +version: 1.0.0 +description: "On-chain data queries on Morph L2 — address info, transactions, tokens, contracts via the Blockscout API. Use when the user asks to look up an address, view tx history, check token holdings, search tokens, get token details (holders, supply, transfers), or investigate a transaction. All commands are read-only; no private key required." +last_verified: 2026-05-19 +verified_against: + - https://github.com/morph-l2/morph-skill/blob/main/skills/morph-explorer/SKILL.md +upstream_repo: https://github.com/morph-l2/morph-skill +--- + +# Morph Explorer + +Read-only on-chain queries on Morph L2 (Chain ID 2818) backed by the Blockscout +explorer API. Outputs JSON; no API keys or private keys required. + +## Canonical reference + +[`skills/morph-explorer/SKILL.md` ↗](https://github.com/morph-l2/morph-skill/blob/main/skills/morph-explorer/SKILL.md) + +## When to use + +- Look up an address, view its tx history or token holdings +- Search for tokens by name/symbol; get supply, holders, recent transfers +- Investigate a single transaction in detail +- Check whether a contract is verified and pull its source / ABI / proxy info + +## Capability summary + +| Command | Flags | Purpose | +|---|---|---| +| `address-info` | `--address 0xAddr` | Address overview (balance, tx count, …) | +| `address-txs` | `--address 0xAddr [--limit 5]` | List transactions for an address | +| `address-tokens` | `--address 0xAddr` | All ERC-20 holdings of an address | +| `tx-detail` | `--hash 0xTxHash` | Decoded tx detail (explorer view) | +| `token-search` | `--query "USDC"` | Find token by name or symbol | +| `contract-info` | `--address 0x…` | Verified contract source, ABI, proxy info | +| `token-transfers` | `--token USDT` *or* `--address 0x…` | Recent transfer history | +| `token-info` | `--token USDT` *or* `--token 0x…` | Token details (supply, holders, transfers) | +| `token-list` | (no flags) | Single-page token list | + +API endpoint: `https://explorer-api.morph.network/api/v2`. No API keys required. +Install: see [overview](/skills/morph-skill#install). + +## Caveats (from upstream) + +- All commands output JSON. All commands are **read-only**. +- `contract-info` only works for **verified contracts**. +- `token-info` is for **ERC-20 tokens only** — for native ETH use `address-info`. +- `token-list` returns a **single page** response. +- [BGW ↗](https://github.com/morph-l2/morph-skill/blob/main/docs/social-wallet-integration.md) + (Social Login Wallet) users: resolve the address via BGW first, then run + these commands normally. + +## Common workflows + +- **Investigate a tx:** `tx-detail` (explorer view) → `tx-receipt` + ([morph-wallet](./morph-wallet)) for RPC-level logs +- **Research an address:** `address-info` → `address-txs` → `address-tokens` +- **Token dashboard:** `token-search` → `token-info` → `token-transfers` +- **Analyze a contract:** `contract-info` (source, ABI, proxy type) → + `address-txs` (recent interactions) + +## Cross-skill integration + +- Pair `address-tokens` with `balance` / `token-balance` from + [morph-wallet](./morph-wallet) for precise balance + broad portfolio view +- Use `token-search` to find token addresses before `dex-quote` + ([morph-dex](./morph-dex)) or `bridge-quote` ([morph-bridge](./morph-bridge)) +- Use `tx-receipt` ([morph-wallet](./morph-wallet)) alongside `tx-detail` for + log-level vs explorer-level views +- Use `7702-delegate` ([morph-7702](./morph-7702)) to check whether an address + has EIP-7702 delegation diff --git a/skills/morph-skill/morph-identity.md b/skills/morph-skill/morph-identity.md new file mode 100644 index 000000000..4cebca2e7 --- /dev/null +++ b/skills/morph-skill/morph-identity.md @@ -0,0 +1,94 @@ +--- +name: morph-identity +version: 1.4.0 +description: "EIP-8004 agent identity and reputation on Morph — register agents, query metadata, submit and read feedback. Agents are represented as ERC-721 NFTs (numeric agent_id). Use when the user asks to register an agent, query an agent's wallet/metadata/reputation, leave feedback, or manage agent settings." +last_verified: 2026-05-19 +verified_against: + - https://github.com/morph-l2/morph-skill/blob/main/skills/morph-identity/SKILL.md +upstream_repo: https://github.com/morph-l2/morph-skill +--- + +# Morph Identity (EIP-8004) + +On-chain agent identity and reputation on Morph L2 via EIP-8004. Each agent is +an ERC-721 token; `agent_id` is a numeric token ID (e.g. `1`, `42`). + +## Canonical reference + +[`skills/morph-identity/SKILL.md` ↗](https://github.com/morph-l2/morph-skill/blob/main/skills/morph-identity/SKILL.md) + +## When to use + +- Register an agent identity on-chain (`agent-register`) +- Query an agent's wallet, metadata, reputation, or full review history +- Submit / revoke feedback for an agent; append an owner response +- Manage an agent's metadata, URI, or operational wallet binding + +## Capability summary + +### Reads (no private key) + +| Command | Flags | Purpose | +|---|---|---| +| `agent-wallet` | `--agent-id ` | Read the agent's payment wallet | +| `agent-metadata` | `--agent-id --key name` | Read a metadata value by key | +| `agent-reputation` | `--agent-id --tag1 quality` | Aggregate reputation summary | +| `agent-reviews` | `--agent-id [--include-revoked]` | All recorded feedback entries | + +### Writes (require `--private-key`) + +| Command | Flags | Purpose | +|---|---|---| +| `agent-register` | `--name "MorphBot" --agent-uri "https://…" --metadata role=assistant,team=research --private-key 0x…` | Register an agent identity (mints ERC-721 NFT) | +| `agent-feedback` | `--agent-id --value 4.5 --tag1 quality --feedback-uri "https://…" --private-key 0x…` | Submit feedback for an agent | +| `agent-set-metadata` | `--agent-id --key "role" --value "assistant" --private-key 0x…` | Set a metadata key=value | +| `agent-set-uri` | `--agent-id --uri "https://…" --private-key 0x…` | Update the agent URI | +| `agent-set-wallet` | `--agent-id --new-wallet-key 0xNewKey --private-key 0xOwnerKey` | Bind a new operational wallet | +| `agent-unset-wallet` | `--agent-id --private-key 0x…` | Unbind the operational wallet | +| `agent-revoke-feedback` | `--agent-id --feedback-index 0 --private-key 0x…` | Revoke previously submitted feedback | +| `agent-append-response` | `--agent-id --client 0xClientAddr --feedback-index 0 --response-uri "https://…" --private-key 0x…` | Append owner response to a feedback entry | + +`agent-register` and `agent-feedback` accept `--fee-token-id` to pay gas in an +alt token (see [morph-altfee](./morph-altfee)). + +## Contracts (Morph Mainnet) + +| Contract | Default address | Override env var | +|---|---|---| +| IdentityRegistry | `0x8004A169FB4a3325136EB29fA0ceB6D2e539a432` | `MORPH_IDENTITY_REGISTRY` | +| ReputationRegistry | `0x8004BAa17C55a88189AE136b182e5fdA19dE9b63` | `MORPH_REPUTATION_REGISTRY` | + +Network env overrides: `MORPH_RPC_URL`, `MORPH_CHAIN_ID`. ABIs bundled at +`contracts/IdentityRegistry.json` and `contracts/ReputationRegistry.json`. +Hoodi testnet supported via the env overrides. + +## Safety rules (from upstream) + +1. Always confirm with the user before executing `agent-register` — display + name, URI, and metadata before signing. +2. Always confirm with the user before executing `agent-feedback` — display + agentId, score, tags before signing. +3. Always confirm before executing any other write command — display agentId + and the updated fields before signing. +4. Private keys are used locally for signing only — never sent to any API. +5. Read-only commands (`agent-wallet`, `agent-metadata`, `agent-reputation`, + `agent-reviews`) require no private key. + +## EIP-712 caveat (`agent-set-wallet`) + +The signed payload must match `AgentWalletSet(agentId,newWallet,owner,deadline)` +on `ERC8004IdentityRegistry`, and the deadline must stay within the contract's +**5 minute window**. + +## Cross-skill integration + +- [morph-wallet](./morph-wallet) — `balance` to check ETH for gas; + `tx-receipt` to inspect logs if `agent-register` times out +- [morph-altfee](./morph-altfee) — `--fee-token-id` on `agent-register` / + `agent-feedback` +- [morph-x402](./morph-x402) — after `agent-register`, run + `x402-register --save` to make the agent wallet a payment recipient; + `x402-server` exposes a paid endpoint +- [BGW ↗](https://github.com/morph-l2/morph-skill/blob/main/docs/social-wallet-integration.md) + (Social Login Wallet) users can do reads after resolving their address from + BGW, but **cannot execute identity writes through this skill today** diff --git a/skills/morph-skill/morph-wallet.md b/skills/morph-skill/morph-wallet.md new file mode 100644 index 000000000..eda024e2d --- /dev/null +++ b/skills/morph-skill/morph-wallet.md @@ -0,0 +1,93 @@ +--- +name: morph-wallet +version: 1.0.0 +description: "Generate a local ETH key pair, query native and ERC-20 balances, send ETH or tokens, and look up tx receipts on Morph (Chain ID 2818). Use when the user asks to create a wallet, check balances, transfer ETH or ERC-20 tokens, or inspect a transaction. Local private key only — for Social Login Wallet flows (TEE-signed), route to BGW instead." +last_verified: 2026-05-19 +verified_against: + - https://github.com/morph-l2/morph-skill/blob/main/skills/morph-wallet/SKILL.md +upstream_repo: https://github.com/morph-l2/morph-skill +--- + +# Morph Wallet + +Wallet operations on Morph L2 via the `morph_api.py` CLI from the +[`morph-l2/morph-skill`](https://github.com/morph-l2/morph-skill) repo. +Outputs JSON; amounts are human-readable (pass `0.1` for 0.1 ETH, not wei). + +## Canonical reference (single source of truth) + +[`skills/morph-wallet/SKILL.md` ↗](https://github.com/morph-l2/morph-skill/blob/main/skills/morph-wallet/SKILL.md) + +This page is a routable summary for human readers. The full command spec, error +codes, and platform-specific install notes live in the upstream repo. + +## When to use + +- "Create a new wallet" → `create-wallet` (offline) +- "How much ETH do I have?" / "What's my USDT balance?" → `balance` / `token-balance` +- "Send 0.1 ETH to 0x…" / "Send 10 USDT to 0x…" → `transfer` / `transfer-token` +- "What happened in this tx?" → `tx-receipt` + +For a **Social Login Wallet** (no local private key, signed inside Bitget Wallet +TEE), route to BGW skills instead — see +[social-wallet-integration ↗](https://github.com/morph-l2/morph-skill/blob/main/docs/social-wallet-integration.md). + +## Capability summary + +| Command | Flags | Purpose | +|---|---|---| +| `create-wallet` | (no flags) | Generate ETH key pair locally (offline) | +| `balance` | `--address 0xAddr` | Native ETH balance | +| `token-balance` | `--address 0xAddr --token USDT` | ERC-20 balance by symbol or contract address | +| `transfer` | `--to 0xRecipient --amount 0.01 --private-key 0xKey` | Send ETH | +| `transfer-token` | `--token USDT --to 0xRecipient --amount 10 --private-key 0xKey` | Send ERC-20 (token units) | +| `tx-receipt` | `--hash 0xTxHash` | Receipt: status, gas used, logs | + +## Known token addresses (Morph Mainnet) + +The CLI accepts either a known symbol or a contract address for `--token`. Pass +`""` or `ETH` for native ETH. + +| Symbol | Name | Address | +|---|---|---| +| USDT | USDT | `0xe7cd86e13AC4309349F30B3435a9d337750fC82D` | +| USDT.e | Tether Morph Bridged | `0xc7D67A9cBB121b3b0b9c053DD9f469523243379A` | +| USDC | USD Coin | `0xCfb1186F4e93D60E60a8bDd997427D1F33bc372B` | +| USDC.e | USD Coin Morph Bridged | `0xe34c91815d7fc18A9e2148bcD4241d0a5848b693` | +| WETH | Wrapped Ether | `0x5300000000000000000000000000000000000011` | +| BGB | BitgetToken | `0x389C08Bc23A7317000a1FD76c7c5B0cb0b4640b5` | +| BGB (old) | BitgetToken (old) | `0x55d1f1879969bdbB9960d269974564C58DBc3238` | + +For other tokens, use `token-search` from the [morph-explorer](./morph-explorer) +skill. + +## Safety rules (from upstream) + +1. Always confirm `transfer` / `transfer-token` with the user before signing — + show recipient, amount, and token. +2. Amounts are human-readable. `0.1` means 0.1 ETH, not 0.1 wei. +3. Private keys are used locally for signing only — never sent to any API. +4. `create-wallet` runs offline. +5. For large transfers, verify the recipient address character-by-character. + +## Common workflows + +- **Portfolio check:** `balance` → `token-balance` per token of interest → + `address-tokens` from [morph-explorer](./morph-explorer) for the full list. +- **Safe send:** `balance` (verify funds + gas) → `transfer` / `transfer-token` + → `tx-receipt` (confirm). + +## Pay gas in alt tokens + +`transfer` / `transfer-token` do not accept `--fee-token-id`. To pay gas in +USDT / USDC / etc., use `altfee-send` from the +[morph-altfee](./morph-altfee) skill with the same `--to`, `--value`, or +`--data`. + +## Cross-skill integration + +- [morph-altfee](./morph-altfee) — pay gas in non-ETH tokens +- [morph-explorer](./morph-explorer) — `address-tokens`, `token-search`, + full portfolio queries +- [morph-7702](./morph-7702) — atomic batch (e.g. approve + swap in one tx) +- [morph-x402](./morph-x402) — pay for HTTP-protected resources in USDC diff --git a/skills/morph-skill/morph-x402.md b/skills/morph-skill/morph-x402.md new file mode 100644 index 000000000..28a57ec86 --- /dev/null +++ b/skills/morph-skill/morph-x402.md @@ -0,0 +1,95 @@ +--- +name: morph-x402 +version: 1.0.0 +description: "x402 HTTP payment protocol on Morph L2 — pay for and receive USDC payments for API resources. Client side: discover, pay. Merchant side: register, verify, settle, run a paid HTTP server. Uses EIP-3009 gasless USDC transfer authorization." +last_verified: 2026-05-19 +verified_against: + - https://github.com/morph-l2/morph-skill/blob/main/skills/morph-x402/SKILL.md +upstream_repo: https://github.com/morph-l2/morph-skill +--- + +# Morph x402 + +x402 HTTP payment protocol on Morph L2. Pay for or receive USDC for any HTTP +resource. Built on EIP-3009 (gasless USDC transfer authorization, signed by +payer; Facilitator calls `receiveWithAuthorization` on the USDC contract). + +## Canonical reference + +[`skills/morph-x402/SKILL.md` ↗](https://github.com/morph-l2/morph-skill/blob/main/skills/morph-x402/SKILL.md) + +## When to use + +- Check x402 support / discover whether a URL requires payment (no signing) +- Pay for an x402-protected resource with USDC +- Register as a merchant to receive payments +- Verify a payment signature; settle a payment on-chain +- Run a local x402 merchant test server + +## Capability summary + +### Client (payer) side + +| Command | Flags | Purpose | +|---|---|---| +| `x402-supported` | (no flags) | Query Facilitator for supported schemes/networks | +| `x402-discover` | `--url ` | Probe URL for payment requirements (no pay) | +| `x402-pay` | `--url --private-key 0x… [--max-payment 5.0]` | Pay an x402-protected resource (default max **1.0 USDC**) | + +### Merchant (receiver) side + +| Command | Flags | Purpose | +|---|---|---| +| `x402-register` | `--private-key 0x… [--save] [--name myagent]` | Register wallet → HMAC credentials | +| `x402-verify` | `--payload '{…}' --requirements '{…}' --name myagent` | Verify payment signature (no on-chain action) | +| `x402-settle` | `--payload '…' --requirements '…' --name myagent` | Settle on-chain (USDC transfer) | +| `x402-server` | `--pay-to 0x… --price 0.001 [--port 9000] [--path /api/data] [--dev | --name myagent]` | Run a paid HTTP server | + +`x402-server` exposes: +- `/api/free` — free, returns 200 +- `` — 402 → verify payment → 200 + +## Protocol references + +| Item | Value | +|---|---| +| Facilitator URL | `https://morph-rails.morph.network/x402` | +| USDC (Morph) | `0xCfb1186F4e93D60E60a8bDd997427D1F33bc372B` (6 decimals, FiatTokenV2.2) | +| Chain | Morph Mainnet (Chain ID `2818`) | +| Protocol | x402 v2 (`"x402Version":2`) — Coinbase open standard for HTTP 402 payment | +| Scheme | `"scheme":"exact"` | +| Auth type | EIP-3009 gasless USDC transfer authorization | +| HMAC headers | `MORPH-ACCESS-KEY` / `MORPH-ACCESS-SIGN` / `MORPH-ACCESS-TIMESTAMP` | +| Credential storage | `~/.morph-agent/x402-credentials/` (encrypted with AES-256-GCM) | + +## Safety rules (from upstream) + +1. `x402-pay` enforces `--max-payment` (default **1.0 USDC**). Amounts + exceeding the limit are rejected before signing. +2. Always confirm with the user before executing `x402-pay` — show amount, + recipient, and URL. +3. `x402-register` only shows `secretKey` on first creation. **If `--save` is + not used, the key is lost.** +4. Private keys are used locally for signing only — never sent to any API. +5. EIP-7702 delegated EOAs using legacy SimpleDelegation may fail during x402 + settlement (USDC contract `isValidSignature` checks). Verify with + `7702-delegate` ([morph-7702](./morph-7702)) first. + +## Which commands need a private key + +- **Require** `--private-key`: `x402-pay`, `x402-register` +- **Do not** require `--private-key` (work with any wallet type): + `x402-discover`, `x402-supported`, `x402-verify`, `x402-settle`, `x402-server` + +## Cross-skill integration + +- [morph-identity](./morph-identity) — `agent-register` creates the agent + identity; `x402-register` makes its wallet a payment recipient +- [morph-wallet](./morph-wallet) — `token-balance --token USDC` to check USDC + balance before paying +- [morph-7702](./morph-7702) — check with `7702-delegate` first; legacy + SimpleDelegation EOAs may break x402 settlement +- [BGW ↗](https://github.com/morph-l2/morph-skill/blob/main/docs/social-wallet-integration.md): + x402 pay with Social Login Wallet uses agent orchestration + (`x402-discover` here → BGW signs EIP-3009 → agent replays with + `PAYMENT-SIGNATURE` header) From 9d19267f58d0d754b6c96f53414bdf9e87e488b8 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Tue, 19 May 2026 19:22:00 +0800 Subject: [PATCH 19/25] fix: review skill --- AGENTS.md | 2 +- CONTRIBUTING.md | 7 +- ...t-driven-development-workflow-doc.test.mjs | 16 ++++ __tests__/contributing-md.test.mjs | 3 + __tests__/skills-readme.test.mjs | 50 +++++++++++ agents/morph-dapp-agent.md | 2 +- agents/morph-doc-agent.md | 4 +- .../7-agent-driven-development-workflow.md | 27 +++--- scripts/run-tests.mjs | 1 + skills/README.md | 82 +++++++++---------- 10 files changed, 134 insertions(+), 60 deletions(-) create mode 100644 __tests__/skills-readme.test.mjs diff --git a/AGENTS.md b/AGENTS.md index 582b6e6a9..0d63ccfcd 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -13,7 +13,7 @@ This is the Morph Documentation website (Docusaurus 3.1.1). Morph is an optimist - **Vision (docs-as-SKILL, external brain, toolchain):** [`VISION.md`](./VISION.md) — write and review MDX/SKILL pairs against this contract so models can instantiate behavior reliably. - **Human-readable docs:** `docs/` (MDX). Prefer linking to the authoritative page instead of duplicating long specs in chat. - **Executable topic summaries:** `skills//SKILL.md` (see [`skills/README.md`](./skills/README.md)). Use these for routing and concise procedures. -- **Agent sub-definition:** `agents/*.md` (also published under `/agents/` on the doc site; navbar **Agents**). Start with [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md) for skill authoring from a single goal. Canonical skill path is **`skills//`** at repo root; see [`skills/README.md`](./skills/README.md) to symlink into Cursor / Claude Code / OpenClaw global dirs. When in doubt, treat `docs/` + `skills/` as the product source of truth. +- **Agent sub-definition:** `agents/*.md` (also published under `/agents/` on the doc site; navbar **Agents**). Start with [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md) for skill authoring from a single goal. Canonical skill path is **`skills//`** at repo root; see [`skills/README.md`](./skills/README.md) for in-repo IDE mirrors (`npm run skill-ln`) and optional user-level symlinks for other workspaces. When in doubt, treat `docs/` + `skills/` as the product source of truth. ### Three-layer model (knowledge base, brain, connector) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 93db8f6ed..251c133bb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,8 +18,9 @@ This repository is the Morph documentation site (Docusaurus) and the **source of Claude Code reads root [`CLAUDE.md`](./CLAUDE.md) when this repository is the active project. Use it together with this document: `CLAUDE.md` carries commands and the skill loop; **Morph knowledge base: Skills as connectors** (above) is the team contract for `docs/` / `skills/` / tests. - **Workspace root**: Open the **morph-doc** clone as the project root so paths (`docs/`, `skills/`, `__tests__/`) and `npm test` match CI and the guards described in `CLAUDE.md`. -- **Global skills (optional)**: Run `npm run skill-ln` so `skills//` are symlinked into your global Claude skills directory (paths vary by install; see [`skills/README.md`](./skills/README.md)). Then other projects’ Claude Code sessions can load Morph skills without opening this repo. -- **Global agents (optional)**: `npm run agent-ln` symlinks `agents/*.md` for tools that read global agent definitions. Agent frontmatter should include `name`, `description`, and `model` (see `__tests__/morph-dapp-agent.test.mjs`). +- **In-repo skill mirrors (optional)**: Run `npm run skill-ln` so `skills//` are symlinked into **`.cursor/skills`**, **`.claude/skills`**, etc. under this repo (see [`skills/README.md`](./skills/README.md)). Use that when your editor expects mirror paths; opening morph-doc often already loads `skills/` directly. +- **Skills in other workspaces (optional)**: To load Morph skills without opening morph-doc, symlink into your tool’s **user-level** skills directory (e.g. `~/.cursor/skills`); `morph-skill-ln` does not write there — see **Using Morph skills from another repository** in [`skills/README.md`](./skills/README.md). +- **In-repo agent mirrors (optional)**: `npm run agent-ln` symlinks `agents/*.md` into **`.cursor/agents`**, **`.claude/agents`**, etc. under this repo. Agent frontmatter should include `name`, `description`, and `model` (see `__tests__/morph-dapp-agent.test.mjs`). - **Single-topic Skill work**: Follow [`agents/morph-doc-agent.md`](./agents/morph-doc-agent.md); `CLAUDE.md` already routes the common “new or revise a Skill” loop there. - **dApp harness planning output**: `planning/.md` is gitignored by default — local workflow state; commit only when the team wants planning docs in the PR. - **Personal overrides**: Add a git-ignored `CLAUDE.local.md` at the repo root for machine-specific notes (see “Optional personal overrides” in [`CLAUDE.md`](./CLAUDE.md)). @@ -42,7 +43,7 @@ These items are **mandatory self-check bullets** in root [`CLAUDE.md`](./CLAUDE. - For **actionable** or **fact-table** topics, follow the pairing policy in `VISION.md`: keep `skills//SKILL.md` in sync, with `doc_skill_id` matching the Skill `name` and directory name (enforced by `__tests__/doc-skill-pairing.test.mjs` and related guards). - Skill bodies follow the **connector contract**: execution steps + pointers to specific `docs/` sections + optional Related Skills; large tables may live under `references/` with guidance in the Skill on when to open them. - When changing on-chain facts, contract addresses, RPC endpoints, or package versions, update `last_verified` / `verified_against` on affected Skills in the same PR (see `VISION.md`). -- Register new skill directories in `sidebars-skills.js`. To load skills globally in an IDE across clones, use `npm run skill-ln` (see `skills/README.md`). +- Register new skill directories in `sidebars-skills.js`. For in-repo IDE mirror paths on a fresh clone, use `npm run skill-ln` (see `skills/README.md`). - To tighten or relax how often a Skill is selected, see **Tuning description trigger rates** in `skills/README.md` and maintain an eval JSON modeled on `scripts/skill-trigger-evals.*.example.json`. ### Mnemonic diff --git a/__tests__/agent-driven-development-workflow-doc.test.mjs b/__tests__/agent-driven-development-workflow-doc.test.mjs index ef1970659..513934c9d 100644 --- a/__tests__/agent-driven-development-workflow-doc.test.mjs +++ b/__tests__/agent-driven-development-workflow-doc.test.mjs @@ -65,6 +65,22 @@ for (const agentLink of ['/agents/morph-dapp-agent', '/agents/morph-doc-agent']) ); } +assert.match( + content, + /npm run skill-ln/, + 'dispatcher doc should document in-repo skill-ln alias', +); +assert.match( + content, + /user-level/i, + 'dispatcher doc should distinguish user-level symlinks for other workspaces', +); +assert.doesNotMatch( + content, + /morph-skill-ln \\\s*\n\s*morph-dapp-planning/, + 'morph-skill-ln accepts at most one skill-id positional argument', +); + for (const anchor of [ 'WORKFLOW_REVIEW_BASE', 'gitignore', diff --git a/__tests__/contributing-md.test.mjs b/__tests__/contributing-md.test.mjs index 9ca105ed0..f5f24c65c 100644 --- a/__tests__/contributing-md.test.mjs +++ b/__tests__/contributing-md.test.mjs @@ -34,6 +34,9 @@ const requiredSubstrings = [ 'Three layers', 'Working with Claude Code', 'mandatory self-check bullets', + 'npm run skill-ln', + 'In-repo skill mirrors', + 'user-level', ]; for (const s of requiredSubstrings) { assert.ok( diff --git a/__tests__/skills-readme.test.mjs b/__tests__/skills-readme.test.mjs new file mode 100644 index 000000000..9b1b9b40a --- /dev/null +++ b/__tests__/skills-readme.test.mjs @@ -0,0 +1,50 @@ +/** + * skills/README.md: symlink docs stay aligned with morph-skill-ln behavior. + * @see scripts/morph-skill-ln + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const README = path.join(ROOT, 'skills', 'README.md'); +const SCRIPT = path.join(ROOT, 'scripts', 'morph-skill-ln'); + +const content = fs.readFileSync(README, 'utf8'); +const help = fs.readFileSync(SCRIPT, 'utf8'); + +assert.match(content, /## IDE discovery paths \(in-repo mirrors\)/); +assert.match(content, /project-local/i); +assert.match(content, /npm run skill-ln/); +assert.match(content, /npm run agent-ln/); +assert.match( + content, + /at least \*\*8\*\* `should_trigger: true` and \*\*8\*\* `false`/i, + 'eval set minimum should match skill-trigger-eval-examples.test.mjs', +); +assert.match(content, /skill-trigger-eval-examples\.test\.mjs/); +assert.match(content, /Using Morph skills from another repository/); +assert.match(content, /\$\{HOME\}\/\.cursor\/skills/); + +assert.doesNotMatch( + content, + /symlink the corresponding directory to the global skills path/i, + 'removed misleading global-only symlink instruction', +); +assert.doesNotMatch( + content, + /## Correspondence with `doc_skill_id`/, + 'doc_skill_id is documented once under What is skills/', +); + +assert.match(help, /inside the morph-doc repo/i, 'script help should say project-local'); + +assert.match( + content, + /defaults to \*\*cursor \+ claude \+ openclaw \+ windsurf\*\*/, +); +assert.match(content, /morph-\*\//); + +console.log('skills-readme: ok'); diff --git a/agents/morph-dapp-agent.md b/agents/morph-dapp-agent.md index 57f548820..936e54231 100644 --- a/agents/morph-dapp-agent.md +++ b/agents/morph-dapp-agent.md @@ -28,7 +28,7 @@ Child SKILLs the workflow hands off to: Fact-table SKILLs are **already referenced by the four child SKILLs above via their `verified_against` and `Related Skills` sections** — do not re-list them here; load them transitively only when the executing child SKILL tells you to. -If any of the four files above is missing from the current IDE, stop and point the user at [`skills/README.md`](https://github.com/morph-l2/morph-doc/blob/main/skills/README.md) (use `scripts/morph-skill-ln` to symlink into Cursor / Claude Code / OpenClaw global dirs). +If any of the four files above is missing from the current IDE, stop and point the user at [`skills/README.md`](https://github.com/morph-l2/morph-doc/blob/main/skills/README.md) (use `npm run skill-ln` for in-repo mirrors, or user-level symlinks when working outside morph-doc). ## Routing rules diff --git a/agents/morph-doc-agent.md b/agents/morph-doc-agent.md index 13aa884e9..8dcf720a2 100644 --- a/agents/morph-doc-agent.md +++ b/agents/morph-doc-agent.md @@ -24,7 +24,7 @@ You are **morph-doc-agent**: in the `morph-doc` repository, you turn a user's ** User provides one goal (topic, scenario, type of questions to cover) → you derive a **skill directory name** (e.g. `morph-`) and produce a **complete** `SKILL.md`. 4. **Runnable immediately after writing** - Any reader (or model) who places the skill in **`skills//`** in the repo (or symlinks it to Cursor / Claude / OpenClaw global skills per [`skills/README.md`](https://github.com/morph-l2/morph-doc/blob/main/skills/README.md)) should be able to trigger it by matching the `description` in conversation — and the model should execute per the SKILL body. Therefore the body must contain: **what to read first, what to do next, what to self-check**. + Any reader (or model) who places the skill in **`skills//`** in the repo (or symlinks it per [`skills/README.md`](https://github.com/morph-l2/morph-doc/blob/main/skills/README.md) — in-repo mirrors via `morph-skill-ln`, or user-level paths for other workspaces) should be able to trigger it by matching the `description` in conversation — and the model should execute per the SKILL body. Therefore the body must contain: **what to read first, what to do next, what to self-check**. ## Alignment with this repo @@ -56,7 +56,7 @@ You are **morph-doc-agent**: in the `morph-doc` repository, you turn a user's ** 3–7 checkable items so the model can verify key facts before delivering (addresses, mutual exclusions, chain IDs, etc.). 7. **Destination path** - Explicitly tell the user the file should land at: **`skills//SKILL.md`** (and optionally reference the global symlink instructions in [`skills/README.md`](https://github.com/morph-l2/morph-doc/blob/main/skills/README.md)). + Explicitly tell the user the file should land at: **`skills//SKILL.md`** (and optionally reference symlink instructions in [`skills/README.md`](https://github.com/morph-l2/morph-doc/blob/main/skills/README.md)). ## Auditing Existing Skills diff --git a/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md b/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md index 6bf871664..75f72bb63 100644 --- a/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md +++ b/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md @@ -178,21 +178,26 @@ All Skills live in Two ways to make them available to your agent: 1. **Inside `morph-doc`** — open this repo in Cursor / Claude Code / OpenClaw / Windsurf - and the agent loads `skills/*/SKILL.md` automatically. -2. **From any other project** — symlink skills and agents into your tool's global directories: + and the agent loads `skills/*/SKILL.md` automatically. If your editor only reads + `.cursor/skills` (etc.), run once from the repo root: `npm run skill-ln` and + `npm run agent-ln` (see [`skills/README.md`](https://github.com/morph-l2/morph-doc/blob/main/skills/README.md)). +2. **From any other project** — symlink each needed skill into your tool's **user-level** + skills directory (paths vary by install), or open morph-doc as the workspace. Example + for one skill (repeat per id or use a shell loop): ```bash - ./scripts/morph-skill-ln \ - morph-dapp-planning \ - morph-dapp-codegen \ - morph-dapp-code-review \ - morph-dapp-workflow \ - morph-js-sdk \ - morph-contracts \ - morph-tx-cost - ./scripts/morph-agent-ln morph-dapp-agent morph-doc-agent + MORPH_DOC_ROOT="/absolute/path/to/morph-doc" + for id in morph-dapp-planning morph-dapp-codegen morph-dapp-code-review \ + morph-dapp-workflow morph-js-sdk morph-contracts morph-tx-cost; do + ln -sfn "${MORPH_DOC_ROOT}/skills/${id}" "${HOME}/.cursor/skills/${id}" + done + ln -sfn "${MORPH_DOC_ROOT}/agents/morph-dapp-agent.md" "${HOME}/.cursor/agents/morph-dapp-agent.md" + ln -sfn "${MORPH_DOC_ROOT}/agents/morph-doc-agent.md" "${HOME}/.cursor/agents/morph-doc-agent.md" ``` + Adjust `~/.cursor/skills` / `~/.cursor/agents` for Claude Code, OpenClaw, or Windsurf + per [`skills/README.md`](https://github.com/morph-l2/morph-doc/blob/main/skills/README.md). + Once installed, phrase your request so the router can route: - Whole feature: *"Use morph-dapp-agent to take this requirement from planning to review-ready diff --git a/scripts/run-tests.mjs b/scripts/run-tests.mjs index 760b9abce..87af6223d 100644 --- a/scripts/run-tests.mjs +++ b/scripts/run-tests.mjs @@ -19,6 +19,7 @@ export const TEST_FILES = [ 'doc-skill-pairing.test.mjs', 'morph-doc-skill-inventory.test.mjs', 'skill-trigger-eval-examples.test.mjs', + 'skills-readme.test.mjs', 'morph-contracts-skill-tokenlist.test.mjs', 'skills-sidebar.test.mjs', 'vision-md.test.mjs', diff --git a/skills/README.md b/skills/README.md index 1b1ac3b92..865b72fe1 100644 --- a/skills/README.md +++ b/skills/README.md @@ -6,11 +6,11 @@ title: Morph Skills # morph-doc Skills -This page is the entry point for the **Agent Skill system in the morph-doc repository**: it explains the **division of responsibility between `skills/` and `docs/`**, the **conventions and validation**, and how to **one-click or manually** symlink skill directories into the global loading paths for IDE/agent runtimes that support project-local skills (e.g. Claude Code, OpenClaw, Cursor, Windsurf). +This page is the entry point for the **Agent Skill system in the morph-doc repository**: it explains the **division of responsibility between `skills/` and `docs/`**, the **conventions and validation**, and how to **mirror** canonical `skills//` directories into **in-repo** IDE discovery paths (e.g. `.cursor/skills/`) or, when needed, into **user-level** skill directories for other workspaces. - **Vision & contract (doc-as-SKILL, `doc_skill_id`):** [`VISION.md`](https://github.com/morph-l2/morph-doc/blob/main/VISION.md) (repo root) - **Generate or audit a Skill from a single target:** [`agents/morph-doc-agent.md`](https://github.com/morph-l2/morph-doc/blob/main/agents/morph-doc-agent.md) -- **Only care about "how to link globally":** see [One-click Script `morph-skill-ln`](#one-click-script-morph-skill-ln) and [Manual Commands](#manual-symlink-commands) below; topic skill **[morph-skill-ln](/skills/morph-skill-ln/SKILL)**. +- **Only care about symlinks / `morph-skill-ln`:** see [IDE discovery paths (in-repo mirrors)](#ide-discovery-paths-in-repo-mirrors) and [One-click script `morph-skill-ln`](#one-click-script-morph-skill-ln); topic skill **[morph-skill-ln](/skills/morph-skill-ln/SKILL)**. --- @@ -19,13 +19,15 @@ This page is the entry point for the **Agent Skill system in the morph-doc repos - **Canonical path**: **`skills//`** under the repo root, with **`SKILL.md`** as the main file (e.g. `skills/morph-js-sdk/SKILL.md`). **Do not** treat per-IDE symlink mirrors inside the repo (hidden config trees created by your editor) as the authoritative copy — edit **`skills//`** only. - **Relationship to human docs**: Long-form content, tables, and demos live in **`docs/`** as the source of truth; Skills provide **routable summaries, execution steps, and pointers** — avoiding full duplication of MDX pages. When binding to a specific page, use **`doc_skill_id`** in the MDX frontmatter; its value must match the `skills//` directory name and the **`name`** field in `SKILL.md` (validation: `__tests__/doc-skill-pairing.test.mjs`). - **Inventory & frontmatter checks**: `__tests__/morph-doc-skill-inventory.test.mjs` runs basic consistency checks on `skills/*/SKILL.md`. -- **Tuning `description` (trigger rate)**: If a Skill is under-used in the IDE, use the **skill-creator** *Description Optimization* loop (eval set → optional HTML review → `run_loop` → merge `best_description`). See [Tuning description trigger rates](#tuning-description-trigger-rates). +- **Tuning `description` (trigger rate)**: If a Skill is under-used in the IDE, build a morph-doc eval JSON, run **skill-creator** *Description Optimization*, then merge `best_description`. See [Tuning description trigger rates](#tuning-description-trigger-rates). --- ## Using within this repo -When you open **morph-doc** directly in your IDE, the model reads the **`skills/`** directory from the project, so **no additional symlinks** to other local directories are usually needed. +When **morph-doc** is the workspace root, many agents already load **`skills//SKILL.md`** from the canonical tree — **symlinks are optional** in that case. + +Run **`npm run skill-ln`** (or `./scripts/morph-skill-ln`) when your tool only discovers skills under **`.cursor/skills`**, **`.claude/skills`**, **`.openclaw/skills`**, or **`.windsurf/skills`** inside the repo. Those paths are **mirrors** of `skills//`, not a second source of truth. Typical first-time setup on a fresh clone: link once if your editor expects the mirror paths. --- @@ -33,40 +35,29 @@ When you open **morph-doc** directly in your IDE, the model reads the **`skills/ IDE routing depends mainly on the YAML **`description`** in `skills//SKILL.md` (plus `name`). If a Skill should fire more often (or less often for near-miss prompts), follow the **Description Optimization** section in the **skill-creator** skill (see that skill's `SKILL.md`; the install location is defined by your IDE or agent product — use its docs to find the checkout that contains `scripts/run_loop.py`): build a **trigger eval set**, optionally review it with `assets/eval_review.html` from that skill, run the automated loop, then land the winning text here. +**Prerequisites:** the **skill-creator** skill installed on your machine (separate from morph-doc); the automated loop additionally requires the **Claude Code / `claude` CLI**. Without those, hand-edit `description` and run **`npm test`**. + ### 1. Trigger eval set (JSON) - Format: a JSON **array** of objects `{ "query": "...", "should_trigger": true|false }`. -- Target about **20 rows**: roughly half **should_trigger** (real user prompts that *should* load this Skill) and half **near-miss negatives** (share vocabulary but should route elsewhere — e.g. `morph-contracts` for address-only tables, `morph-tx-cost` for fee formula without SDK packages). +- **Minimum 16 rows** for checked-in examples: at least **8** `should_trigger: true` and **8** `false` (`__tests__/skill-trigger-eval-examples.test.mjs`). **~20 rows** (roughly half positive, half near-miss negatives) is a good target — positives are real user prompts that *should* load this Skill; negatives share vocabulary but should route elsewhere (e.g. `morph-contracts` for address-only tables, `morph-tx-cost` for fee formula without SDK packages). - Queries should be **concrete** (paths, chain IDs, error messages, package names); avoid toy prompts like "read a file" — models may not consult a Skill for trivial one-step tasks. - **Example file** checked into this repo (copy and edit for another Skill id): `scripts/skill-trigger-evals.morph-js-sdk.example.json`. -### 2. Optional human review +### 2. Run the loop (skill-creator) -From the skill-creator directory, open `assets/eval_review.html`, substitute the placeholders for your eval JSON / Skill name / current `description`, export the reviewed set (see skill-creator `SKILL.md` Step 2). +Steps 2–3 (optional HTML review, `python -m scripts.run_loop`, flags, and reports) live in **skill-creator** → **Description Optimization** — do not duplicate that CLI here; it changes with the upstream skill. -### 3. Optimization loop (requires Claude Code / `claude` CLI) +When you run it against morph-doc, point: -Run from your **skill-creator** checkout — the directory that contains the `scripts/` package next to `SKILL.md` (your IDE or agent docs explain where skills are installed on disk), not from morph-doc's Python env: +- **`--eval-set`** at `scripts/skill-trigger-evals..example.json` (copy from the `morph-js-sdk` example) +- **`--skill-path`** at `skills//` -```bash -cd /path/to/skill-creator # must contain scripts/run_loop.py; see skill-creator install docs - -python -m scripts.run_loop \ - --eval-set /ABS/PATH/TO/morph-doc/scripts/skill-trigger-evals.YOUR_SKILL.example.json \ - --skill-path /ABS/PATH/TO/morph-doc/skills/YOUR_SKILL_ID \ - --model sonnet \ - --max-iterations 5 \ - --runs-per-query 3 \ - --holdout 0.4 \ - --verbose \ - --results-dir /ABS/PATH/TO/morph-doc/.local/skill-desc-opt -``` +`--results-dir` is optional (see skill-creator). If you want reports under this clone, pick any writable path under **`.local/`** (e.g. `.local/skill-desc-opt`) — that folder is **not in git** (`.gitignore` ignores `.local/`) and is **created by the loop on first run**, so you will not see it until you actually run description optimization. -- Adjust `--model` to the model you actually use in the IDE so trigger scores match reality. -- The command prints JSON including **`best_description`** and can write `report.html` under `--results-dir`. -- **Headless / CI:** pass `--report none` if you cannot open a browser. +Merge the loop’s **`best_description`** into the Skill below. -### 4. Land changes in morph-doc +### 3. Land changes in morph-doc 1. Replace the `description:` field in `skills//SKILL.md` (keep `name` and directory aligned; do not paste the full Skill body into `description`). 2. Run **`npm test`**; fix `morph-doc-skill-inventory` if `description` no longer matches trigger-phrase heuristics. @@ -74,18 +65,31 @@ python -m scripts.run_loop \ --- -## Reusing in any project (symlink into each tool's skills directory) +## IDE discovery paths (in-repo mirrors) -If you want a Skill to be available in conversations **without opening morph-doc**, symlink the corresponding directory to the global skills path of each tool (macOS / Linux). +`morph-skill-ln` and `morph-agent-ln` write **project-local** symlinks under the **morph-doc repo root** — for example `/.cursor/skills/` → `/skills/`. They do **not** install into `~/.cursor/skills` or other user-home paths. -### One-click Script `morph-skill-ln` +### Using Morph skills from another repository -Run from the **morph-doc repo root**. When no repo root is provided, the default is the parent directory of the script; you can also specify it with **`-r` / `--root`** or the environment variable **`MORPH_DOC_ROOT`** (priority: `-r` > `MORPH_DOC_ROOT` > default). +To load Morph skills while a **different** folder is the workspace, symlink into that tool's **user-level** skills directory (paths vary by install; see each product's docs): + +```bash +MORPH_DOC_ROOT="/absolute/path/to/morph-doc" +SKILL_ID="morph-js-sdk" +mkdir -p "${HOME}/.cursor/skills" +ln -sfn "${MORPH_DOC_ROOT}/skills/${SKILL_ID}" "${HOME}/.cursor/skills/${SKILL_ID}" +``` -**Selecting target agents**: use **`-a` / `--agent`** (repeatable). Built-in names **`cursor`**, **`claude`**, **`openclaw`**, **`windsurf`**, **`codex`** map to **`/.cursor/skills`**, **`.claude/skills`**, **`.openclaw/skills`**, **`.windsurf/skills`**, **`.codex/skills`** respectively (all pointing to `/skills/`). When no `--agent` is specified, defaults to **cursor + claude + openclaw + windsurf**. Other tools can be specified with a **repo-relative path** (must contain `/` or start with `.`), e.g. **`--agent .windsurf/skills`** is equivalent to built-in **`windsurf`**, or **`--agent mytool/skills`** for a custom directory. +Repeat for other tools (`~/.claude/skills`, etc.) as needed. Alternatively, open **morph-doc** as the workspace or include it in a multi-root setup. + +### One-click script `morph-skill-ln` + +Run from the **morph-doc repo root** (`npm run skill-ln` is equivalent). When no repo root is provided, the default is the parent directory of the script; you can also specify it with **`-r` / `--root`** or the environment variable **`MORPH_DOC_ROOT`** (priority: `-r` > `MORPH_DOC_ROOT` > default). + +**Selecting target agents**: use **`-a` / `--agent`** (repeatable). Built-in names **`cursor`**, **`claude`**, **`openclaw`**, **`windsurf`**, **`codex`** map to **`/.cursor/skills`**, **`.claude/skills`**, **`.openclaw/skills`**, **`.windsurf/skills`**, **`.codex/skills`** respectively (all pointing to `/skills/`). When no `--agent` is specified, defaults to **cursor + claude + openclaw + windsurf**. Other tools can be specified with a **repo-relative path** (must contain `/` or start with `.`), e.g. **`--agent .windsurf/skills`** is equivalent to built-in **`windsurf`**, or **`--agent mytool/skills`** for a custom directory under `/`. ```bash -./scripts/morph-skill-ln # batch; default root + four agents above +npm run skill-ln # batch; default root + four agents above ./scripts/morph-skill-ln morph-js-sdk # single skill id ./scripts/morph-skill-ln -a cursor -a claude # only link Cursor and Claude Code ./scripts/morph-skill-ln -r /path/to/morph-doc -a windsurf @@ -99,7 +103,7 @@ To specify the path via environment variable: ```bash export MORPH_DOC_ROOT="/absolute/path/to/morph-doc" -./scripts/morph-skill-ln +npm run skill-ln ``` For equivalent manual commands and tool notes, see the next two sections; for behavior details and troubleshooting, see **`skills/morph-skill-ln/SKILL.md`**. @@ -165,10 +169,10 @@ Other directories can be added with **`--agent `** (must con Agent definitions (files under `agents/.md`, e.g. `morph-doc-agent`, `morph-dapp-agent`) are symlinked separately from skills, because they live as **single `.md` files** rather than directories, and they land in **`.cursor/agents/`** / **`.claude/agents/`** (not `…/skills/`). -Use the parallel script `scripts/morph-agent-ln` — same flag surface as `morph-skill-ln`: +Use the parallel script `scripts/morph-agent-ln` (`npm run agent-ln`) — same flag surface as `morph-skill-ln`: ```bash -./scripts/morph-agent-ln # batch; default root + cursor/claude/openclaw/windsurf +npm run agent-ln # batch; default root + cursor/claude/openclaw/windsurf ./scripts/morph-agent-ln morph-dapp-agent # single agent name (with or without .md) ./scripts/morph-agent-ln -a cursor -a claude # only link Cursor and Claude Code ./scripts/morph-agent-ln --dry-run # only print mkdir/ln, no writes @@ -185,10 +189,4 @@ Built-in `--agent` names map to repo-relative paths: | **Windsurf** | `.windsurf/agents/.md` | | **Codex compatible** | `.codex/agents/.md` | -Skills and agents are linked independently — running only `morph-skill-ln` will not expose `agents/*.md` to your IDE, and vice versa. Typical first-time setup: run both once. - ---- - -## Correspondence with `doc_skill_id` - -Docs paired with MDX use `doc_skill_id` in their frontmatter; its value must match both the `skills//` directory name and the `name` field in `SKILL.md`. Validation: `__tests__/doc-skill-pairing.test.mjs` in the repo root. +Skills and agents are linked independently — running only `morph-skill-ln` will not expose `agents/*.md` to your IDE, and vice versa. Typical first-time setup on a fresh clone: run **`npm run skill-ln`** and **`npm run agent-ln`** once if your editor expects the in-repo mirror paths. From a9722cbb40fbbb5fc39842bca120c2ebf4235f60 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Wed, 20 May 2026 14:23:31 +0800 Subject: [PATCH 20/25] feat: update freshness --- .github/workflows/skill-freshness-bot.yml | 143 +++++++++++++ .gitignore | 3 +- __tests__/morph-doc-skill-inventory.test.mjs | 80 +------ __tests__/skill-freshness-report.test.mjs | 67 ++++++ package.json | 1 + scripts/lib/skill-freshness.mjs | 151 ++++++++++++++ scripts/run-tests.mjs | 1 + scripts/skill-freshness-bot.DESIGN.md | 206 +++++++++++++++++++ scripts/skill-freshness-report.mjs | 74 +++++++ 9 files changed, 654 insertions(+), 72 deletions(-) create mode 100644 .github/workflows/skill-freshness-bot.yml create mode 100644 __tests__/skill-freshness-report.test.mjs create mode 100644 scripts/lib/skill-freshness.mjs create mode 100644 scripts/skill-freshness-bot.DESIGN.md create mode 100644 scripts/skill-freshness-report.mjs diff --git a/.github/workflows/skill-freshness-bot.yml b/.github/workflows/skill-freshness-bot.yml new file mode 100644 index 000000000..8e28aa5ef --- /dev/null +++ b/.github/workflows/skill-freshness-bot.yml @@ -0,0 +1,143 @@ +# Skill freshness bot (Phase 1) — see scripts/skill-freshness-bot.DESIGN.md +# +# - Does NOT run on pull_request (freshness stays warn-only in npm test). +# - Opens or updates a single tracking Issue on default branch when warnings exist. + +name: skill-freshness-bot + +on: + schedule: + # Mondays 09:00 UTC + - cron: '0 9 * * 1' + workflow_dispatch: + +permissions: + contents: read + issues: write + +jobs: + report: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: npm + + - name: Generate freshness report + run: | + mkdir -p .local + node scripts/skill-freshness-report.mjs --json --out .local/skill-freshness-report.json + + - name: Upload report artifact + uses: actions/upload-artifact@v4 + with: + name: skill-freshness-report + path: .local/skill-freshness-report.json + retention-days: 30 + + - name: Sync tracking issue + uses: actions/github-script@v7 + env: + REPORT_PATH: .local/skill-freshness-report.json + with: + script: | + const fs = require('fs'); + const report = JSON.parse(fs.readFileSync(process.env.REPORT_PATH, 'utf8')); + const owner = context.repo.owner; + const repo = context.repo.repo; + const titlePrefix = '[skill-freshness] Weekly re-verify queue'; + const botLabel = 'skill-freshness'; + + const list = await github.rest.issues.listForRepo({ + owner, + repo, + state: 'all', + labels: botLabel, + per_page: 100, + }); + const existing = list.data.find((i) => i.title.startsWith(titlePrefix)); + + if (report.warningCount === 0) { + if (existing) { + await github.rest.issues.createComment({ + owner, + repo, + issue_number: existing.number, + body: [ + '✅ **skill-freshness-bot**: no warnings in the latest scan.', + '', + `- Generated: \`${report.generatedAt}\``, + `- Skills scanned: ${report.skillCount}`, + '', + 'Closing this tracking issue. It will reopen on the next scheduled run if warnings return.', + ].join('\n'), + }); + await github.rest.issues.update({ + owner, + repo, + issue_number: existing.number, + state: 'closed', + }); + } + core.info('No freshness warnings; tracking issue closed or none needed.'); + return; + } + + const tableHeader = + '| Skill | Code | last_verified | Age (days) |\n|-------|------|---------------|------------|'; + const tableRows = report.warnings.map((w) => { + const lv = w.lastVerified ?? '—'; + const age = w.ageDays ?? '—'; + return `| \`${w.skillId}\` | ${w.code} | ${lv} | ${age} |`; + }); + + const body = [ + '## Skill freshness report', + '', + 'Automated scan from [`skill-freshness-bot`](.github/workflows/skill-freshness-bot.yml).', + 'Human-reported factual errors should still use the **skill-drift** issue template.', + '', + `**Threshold:** ${report.thresholdDays} days — see [VISION.md § Skill Verification Metadata](https://github.com/${owner}/${repo}/blob/main/VISION.md#skill-verification-metadata-freshness-contract)`, + '', + tableHeader, + ...tableRows, + '', + '### Maintainer checklist', + '', + '- [ ] Re-read each listed Skill against its `verified_against` paths', + '- [ ] Update `last_verified` to today (UTC `YYYY-MM-DD`) in the same PR as any fact fix', + '- [ ] Run `npm test`', + '', + `**Run:** ${context.serverUrl}/${owner}/${repo}/actions/runs/${context.runId}`, + `**Generated:** \`${report.generatedAt}\``, + `**Warnings:** ${report.warningCount} (${report.staleCount} stale)`, + ].join('\n'); + + const title = `${titlePrefix} (${report.warningCount} warning${report.warningCount === 1 ? '' : 's'})`; + + if (existing) { + await github.rest.issues.update({ + owner, + repo, + issue_number: existing.number, + title, + body, + state: 'open', + }); + core.info(`Updated issue #${existing.number}`); + return; + } + + const created = await github.rest.issues.create({ + owner, + repo, + title, + body, + labels: [botLabel, 'bot'], + }); + core.info(`Created issue #${created.data.number}`); diff --git a/.gitignore b/.gitignore index bfcfa0ba7..a9dcb85ad 100644 --- a/.gitignore +++ b/.gitignore @@ -53,4 +53,5 @@ planning research # skill-creator description optimization (--results-dir); see skills/README.md -.local \ No newline at end of file +.local +vendor/skill-creator \ No newline at end of file diff --git a/__tests__/morph-doc-skill-inventory.test.mjs b/__tests__/morph-doc-skill-inventory.test.mjs index f197ae131..c0dfdbf7a 100644 --- a/__tests__/morph-doc-skill-inventory.test.mjs +++ b/__tests__/morph-doc-skill-inventory.test.mjs @@ -9,73 +9,30 @@ import assert from 'node:assert/strict'; import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; +import { + collectFreshnessWarnings, + parseFrontmatter, + parseIsoDate, +} from '../scripts/lib/skill-freshness.mjs'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const ROOT = path.join(__dirname, '..'); const SKILLS_DIR = path.join(ROOT, 'skills'); -const DECAY_THRESHOLD_DAYS = 90; -const MS_PER_DAY = 24 * 60 * 60 * 1000; - -function parseFrontmatter(content) { - const m = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); - if (!m) return null; - const block = m[1]; - function field(name) { - const line = new RegExp(`^${name}:\\s*(.+)$`, 'm').exec(block); - if (!line) return null; - let v = line[1].trim(); - if ( - (v.startsWith('"') && v.endsWith('"')) || - (v.startsWith("'") && v.endsWith("'")) - ) { - v = v.slice(1, -1); - } - return v; - } - return { block, field }; -} - -function parseIsoDate(value) { - if (!value) return null; - const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value); - if (!match) return null; - const [, y, mo, d] = match; - const year = Number(y); - const month = Number(mo); - const day = Number(d); - const dt = new Date(Date.UTC(year, month - 1, day)); - if (Number.isNaN(dt.getTime())) return null; - // Reject normalized overflow dates (e.g. 2026-02-31 → 2026-03-03) - if ( - dt.getUTCFullYear() !== year || - dt.getUTCMonth() + 1 !== month || - dt.getUTCDate() !== day - ) { - return null; - } - return dt; -} - assert.equal(parseIsoDate('2026-02-31'), null, 'parseIsoDate rejects overflow calendar day'); assert.equal(parseIsoDate('2026-02-29'), null, 'parseIsoDate rejects non-leap Feb 29'); assert.ok(parseIsoDate('2024-02-29'), 'parseIsoDate accepts leap-day when valid'); assert.ok(parseIsoDate('2026-05-14'), 'parseIsoDate accepts valid YYYY-MM-DD'); -assert.equal(parseIsoDate('2026-13-01'), null, 'parseIsoDate rejects invalid month'); assert.equal(parseIsoDate('2026/05/14'), null, 'parseIsoDate rejects non-ISO separators'); +assert.equal(parseIsoDate('2026-13-01'), null, 'parseIsoDate rejects invalid month'); const entries = fs.readdirSync(SKILLS_DIR, { withFileTypes: true }); -// `morph-skill/` mirrors github.com/morph-l2/morph-skill as flat .md siblings -// (index.md + per-skill .md), not the /SKILL.md convention enforced here. const skillDirs = entries .filter((e) => e.isDirectory() && e.name !== 'morph-skill') .map((e) => e.name); assert.ok(skillDirs.length > 0, 'skills/ should contain at least one skill directory'); -const freshnessWarnings = []; -const now = Date.now(); - for (const id of skillDirs) { const skillPath = path.join(SKILLS_DIR, id, 'SKILL.md'); assert.ok( @@ -104,33 +61,14 @@ for (const id of skillDirs) { /use when|when the user|当用户|用于|适用于/i, `skills/${id}/SKILL.md description should include trigger phrasing (e.g. "Use when…")` ); - - const lastVerifiedRaw = fm.field('last_verified'); - if (!lastVerifiedRaw) { - freshnessWarnings.push( - `skills/${id}/SKILL.md missing last_verified (see VISION.md § Skill Verification Metadata)` - ); - continue; - } - const lastVerified = parseIsoDate(lastVerifiedRaw); - if (!lastVerified) { - freshnessWarnings.push( - `skills/${id}/SKILL.md last_verified is not an ISO date (YYYY-MM-DD): ${lastVerifiedRaw}` - ); - continue; - } - const ageDays = Math.floor((now - lastVerified.getTime()) / MS_PER_DAY); - if (ageDays > DECAY_THRESHOLD_DAYS) { - freshnessWarnings.push( - `skills/${id}/SKILL.md last_verified is ${ageDays} days old (threshold ${DECAY_THRESHOLD_DAYS}); re-verify against sources` - ); - } } +const { warnings: freshnessWarnings } = collectFreshnessWarnings(SKILLS_DIR); + if (freshnessWarnings.length > 0) { console.warn('morph-doc-skill-inventory: freshness warnings (non-fatal)'); for (const w of freshnessWarnings) { - console.warn(' ⚠️', w); + console.warn(' ⚠️', w.message); } } diff --git a/__tests__/skill-freshness-report.test.mjs b/__tests__/skill-freshness-report.test.mjs new file mode 100644 index 000000000..ce7711e04 --- /dev/null +++ b/__tests__/skill-freshness-report.test.mjs @@ -0,0 +1,67 @@ +/** + * Locks skill-freshness-report JSON schema and shared date parsing. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import os from 'node:os'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { + buildFreshnessReport, + collectFreshnessWarnings, + parseIsoDate, +} from '../scripts/lib/skill-freshness.mjs'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); + +assert.equal(parseIsoDate('not-a-date'), null); + +const fixedNow = Date.UTC(2026, 4, 20); // 2026-05-20 +const report = buildFreshnessReport(ROOT, { now: fixedNow }); + +assert.equal(report.schema, 'morph-doc/skill-freshness-report/v1'); +assert.equal(typeof report.generatedAt, 'string'); +assert.equal(report.thresholdDays, 90); +assert.ok(report.skillCount > 0); +assert.equal(report.skillIds.length, report.skillCount); +assert.equal(report.warningCount, report.warnings.length); +assert.equal( + report.staleCount, + report.warnings.filter((w) => w.code === 'stale').length +); + +for (const w of report.warnings) { + assert.ok(w.skillId && typeof w.skillId === 'string'); + assert.ok(['missing_last_verified', 'invalid_last_verified', 'stale'].includes(w.code)); + assert.ok(w.message.includes(w.skillId)); +} + +// Synthetic temp skill dir: stale last_verified +const tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'morph-freshness-')); +const tmpSkills = path.join(tmpRoot, 'skills', 'tmp-stale-skill'); +fs.mkdirSync(tmpSkills, { recursive: true }); +fs.writeFileSync( + path.join(tmpSkills, 'SKILL.md'), + `--- +name: tmp-stale-skill +description: "Use when testing skill freshness bot stale detection in CI." +last_verified: 2026-01-01 +--- +# tmp +`, + 'utf8' +); + +const { warnings } = collectFreshnessWarnings(path.join(tmpRoot, 'skills'), { + now: fixedNow, + thresholdDays: 90, +}); +assert.equal(warnings.length, 1); +assert.equal(warnings[0].code, 'stale'); +assert.equal(warnings[0].skillId, 'tmp-stale-skill'); +assert.ok(warnings[0].ageDays > 90); + +fs.rmSync(tmpRoot, { recursive: true, force: true }); + +console.log('skill-freshness-report: ok'); diff --git a/package.json b/package.json index 6360b5080..7c6bbb18c 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "private": true, "scripts": { "test": "node scripts/run-tests.mjs", + "skill-freshness:report": "node scripts/skill-freshness-report.mjs", "skill-ln": "bash scripts/morph-skill-ln", "agent-ln": "bash scripts/morph-agent-ln", "docusaurus": "docusaurus", diff --git a/scripts/lib/skill-freshness.mjs b/scripts/lib/skill-freshness.mjs new file mode 100644 index 000000000..bb87fd2b1 --- /dev/null +++ b/scripts/lib/skill-freshness.mjs @@ -0,0 +1,151 @@ +/** + * Shared Skill freshness checks (VISION.md § Skill Verification Metadata). + * Used by __tests__/morph-doc-skill-inventory.test.mjs and scripts/skill-freshness-report.mjs. + */ +import fs from 'node:fs'; +import path from 'node:path'; + +export const DECAY_THRESHOLD_DAYS = 90; +const MS_PER_DAY = 24 * 60 * 60 * 1000; + +/** Directories under skills/ excluded from inventory-style checks. */ +export const SKILLS_EXCLUDE_DIRS = new Set(['morph-skill']); + +/** @typedef {'missing_last_verified' | 'invalid_last_verified' | 'stale'} FreshnessCode */ + +/** + * @typedef {object} FreshnessWarning + * @property {string} skillId + * @property {FreshnessCode} code + * @property {string} message + * @property {number | null} ageDays + * @property {string | null} lastVerified + */ + +export function parseFrontmatter(content) { + const m = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); + if (!m) return null; + const block = m[1]; + function field(name) { + const line = new RegExp(`^${name}:\\s*(.+)$`, 'm').exec(block); + if (!line) return null; + let v = line[1].trim(); + if ( + (v.startsWith('"') && v.endsWith('"')) || + (v.startsWith("'") && v.endsWith("'")) + ) { + v = v.slice(1, -1); + } + return v; + } + return { block, field }; +} + +export function parseIsoDate(value) { + if (!value) return null; + const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value); + if (!match) return null; + const [, y, mo, d] = match; + const year = Number(y); + const month = Number(mo); + const day = Number(d); + const dt = new Date(Date.UTC(year, month - 1, day)); + if (Number.isNaN(dt.getTime())) return null; + if ( + dt.getUTCFullYear() !== year || + dt.getUTCMonth() + 1 !== month || + dt.getUTCDate() !== day + ) { + return null; + } + return dt; +} + +/** + * @param {string} skillsDir Absolute path to skills/ + * @param {{ now?: number, thresholdDays?: number }} [options] + * @returns {{ skillIds: string[], warnings: FreshnessWarning[] }} + */ +export function collectFreshnessWarnings(skillsDir, options = {}) { + const now = options.now ?? Date.now(); + const thresholdDays = options.thresholdDays ?? DECAY_THRESHOLD_DAYS; + + const entries = fs.readdirSync(skillsDir, { withFileTypes: true }); + const skillIds = entries + .filter((e) => e.isDirectory() && !SKILLS_EXCLUDE_DIRS.has(e.name)) + .map((e) => e.name) + .sort(); + + /** @type {FreshnessWarning[]} */ + const warnings = []; + + for (const skillId of skillIds) { + const skillPath = path.join(skillsDir, skillId, 'SKILL.md'); + if (!fs.existsSync(skillPath)) { + continue; + } + const content = fs.readFileSync(skillPath, 'utf8'); + const fm = parseFrontmatter(content); + if (!fm) { + continue; + } + + const lastVerifiedRaw = fm.field('last_verified'); + if (!lastVerifiedRaw) { + warnings.push({ + skillId, + code: 'missing_last_verified', + message: `skills/${skillId}/SKILL.md missing last_verified (see VISION.md § Skill Verification Metadata)`, + ageDays: null, + lastVerified: null, + }); + continue; + } + + const lastVerified = parseIsoDate(lastVerifiedRaw); + if (!lastVerified) { + warnings.push({ + skillId, + code: 'invalid_last_verified', + message: `skills/${skillId}/SKILL.md last_verified is not an ISO date (YYYY-MM-DD): ${lastVerifiedRaw}`, + ageDays: null, + lastVerified: lastVerifiedRaw, + }); + continue; + } + + const ageDays = Math.floor((now - lastVerified.getTime()) / MS_PER_DAY); + if (ageDays > thresholdDays) { + warnings.push({ + skillId, + code: 'stale', + message: `skills/${skillId}/SKILL.md last_verified is ${ageDays} days old (threshold ${thresholdDays}); re-verify against sources`, + ageDays, + lastVerified: lastVerifiedRaw, + }); + } + } + + return { skillIds, warnings }; +} + +/** + * @param {string} root Repo root (parent of skills/) + * @param {{ now?: number, thresholdDays?: number }} [options] + */ +export function buildFreshnessReport(root, options = {}) { + const skillsDir = path.join(root, 'skills'); + const { skillIds, warnings } = collectFreshnessWarnings(skillsDir, options); + const generatedAt = new Date(options.now ?? Date.now()).toISOString(); + + return { + schema: 'morph-doc/skill-freshness-report/v1', + generatedAt, + thresholdDays: options.thresholdDays ?? DECAY_THRESHOLD_DAYS, + skillCount: skillIds.length, + warningCount: warnings.length, + staleCount: warnings.filter((w) => w.code === 'stale').length, + warnings, + skillIds, + }; +} diff --git a/scripts/run-tests.mjs b/scripts/run-tests.mjs index 87af6223d..7e9c52187 100644 --- a/scripts/run-tests.mjs +++ b/scripts/run-tests.mjs @@ -18,6 +18,7 @@ export const TEST_FILES = [ 'contributing-md.test.mjs', 'doc-skill-pairing.test.mjs', 'morph-doc-skill-inventory.test.mjs', + 'skill-freshness-report.test.mjs', 'skill-trigger-eval-examples.test.mjs', 'skills-readme.test.mjs', 'morph-contracts-skill-tokenlist.test.mjs', diff --git a/scripts/skill-freshness-bot.DESIGN.md b/scripts/skill-freshness-bot.DESIGN.md new file mode 100644 index 000000000..552328439 --- /dev/null +++ b/scripts/skill-freshness-bot.DESIGN.md @@ -0,0 +1,206 @@ +# skill-freshness-bot — CI design sketch + +Elevate **Skill Verification Metadata** from `VISION.md` (`last_verified` / `verified_against` / 90-day decay) from a **non-blocking `npm test` warn** to **auditable, deduplicated GitHub automation**, while keeping a clear split from the existing human `skill-drift` feedback loop. + +--- + +## 1. Goals and non-goals + +### Goals + +| # | Goal | +|---|------| +| G1 | **Same source as existing tests**: The bot and `__tests__/morph-doc-skill-inventory.test.mjs` share the same freshness logic (`scripts/lib/skill-freshness.mjs`) so thresholds and parsing do not drift. | +| G2 | **Do not block ordinary PRs**: `npm test` still fails only on inventory frontmatter hard asserts; freshness overage remains **warn-only** (per `VISION.md`). | +| G3 | **Scheduled visibility**: On `main`, scheduled runs produce a report and **open/update** a single tracking Issue (not one spam Issue per Skill). | +| G4 | **Evolvable**: Report JSON schema is versioned; later you can attach `verified_against` file hashes, on-chain probes, etc., without changing the bot entrypoint. | + +### Non-goals (this phase) + +- Do not auto-update `last_verified` or auto-merge PRs (human re-verify required). +- Do not add freshness failure to PR required checks (avoid blocking unrelated PRs). +- Do not replace the `skill-drift` template (factual errors found by humans still use `.github/ISSUE_TEMPLATE/skill-feedback.yaml`). + +--- + +## 2. Relationship to existing components + +```text +┌─────────────────────────────────────────────────────────────────┐ +│ PR / local: npm test │ +│ morph-doc-skill-inventory.test.mjs │ +│ • frontmatter / name / description → assert (fatal) │ +│ • last_verified decay → console.warn (non-fatal) │ +│ ▲ │ +│ │ scripts/lib/skill-freshness.mjs (shared) │ +│ ▼ │ +│ Scheduled / manual: skill-freshness-bot (GitHub Actions) │ +│ scripts/skill-freshness-report.mjs --json --out report.json │ +│ → artifact + single tracking Issue (label: skill-freshness) │ +└─────────────────────────────────────────────────────────────────┘ + +Human drift reports ──► skill-drift label (skill-feedback.yaml) +Bot staleness rollup ──► skill-freshness label (bot-managed Issue) +``` + +| Component | Role | +|-----------|------| +| `scripts/lib/skill-freshness.mjs` | Single source of truth: parse `last_verified`, 90-day threshold, exclude `morph-skill/` | +| `scripts/skill-freshness-report.mjs` | CI entry: emit `morph-doc/skill-freshness-report/v1` JSON | +| `__tests__/skill-freshness-report.test.mjs` | Lock schema and boundary date parsing | +| `.github/workflows/skill-freshness-bot.yml` | Scheduled / `workflow_dispatch` run report + Issue | +| `skill-drift` | Human: wrong facts, routing failures, snippets that do not run | +| `skill-freshness` | Machine: batch “time to re-verify” queue | + +--- + +## 3. Report JSON schema (v1) + +Output from `skill-freshness-report.mjs`: + +```json +{ + "schema": "morph-doc/skill-freshness-report/v1", + "generatedAt": "2026-05-20T12:00:00.000Z", + "thresholdDays": 90, + "skillCount": 18, + "warningCount": 3, + "staleCount": 2, + "warnings": [ + { + "skillId": "morph-contracts", + "code": "stale", + "message": "skills/morph-contracts/SKILL.md last_verified is 95 days old ...", + "ageDays": 95, + "lastVerified": "2026-04-20" + } + ], + "skillIds": ["morph-bridge", "..."] +} +``` + +**`code` enum** + +| code | Meaning | Maintainer action | +|------|---------|-------------------| +| `missing_last_verified` | Field missing | Add YAML + `verified_against` | +| `invalid_last_verified` | Not `YYYY-MM-DD` | Fix the date | +| `stale` | Exceeds `thresholdDays` | Re-read against `verified_against` and re-stamp | + +--- + +## 4. GitHub Actions workflow (Phase 1) + +File: `.github/workflows/skill-freshness-bot.yml` + +### Triggers + +| Event | Purpose | +|-------|---------| +| `schedule: cron '0 9 * * 1'` | Scan `main` every Monday 09:00 UTC | +| `workflow_dispatch` | Maintainer manual re-run | + +**Do not run the bot on `pull_request`** (avoid noise; PRs still rely on local/CI `npm test` warns). + +### Job steps + +1. `checkout` (`main`) +2. `setup-node` (align with repo `.nvmrc` / package engines; LTS recommended) +3. `node scripts/skill-freshness-report.mjs --json --out .local/skill-freshness-report.json` +4. `actions/upload-artifact` — retain report for 30 days +5. **Issue sync** (`actions/github-script` or `peter-evans/create-or-update-issue`): + - If `warningCount === 0`: close the matching open Issue (if any) + - If `warningCount > 0`: create or update **one** Issue: + - Title: `[skill-freshness] Weekly re-verify queue (N warnings)` + - Labels: `skill-freshness`, `bot` + - Body: table of `skillId | code | lastVerified | ageDays | message`, link to re-stamp guidance in `VISION.md` and `CONTRIBUTING.md` + +### Permissions + +```yaml +permissions: + contents: read + issues: write +``` + +Uses `GITHUB_TOKEN`; no PAT unless Phase 2 reads sibling app paths inside `verified_against` across repos. + +--- + +## 5. Issue body template (example) + +```markdown +## Skill freshness report + +| Skill | Code | last_verified | Age (days) | +|-------|------|---------------|------------| +| morph-contracts | stale | 2026-04-20 | 95 | + +**Threshold:** 90 days (`VISION.md` § Skill Verification Metadata) + +### Maintainer checklist + +- [ ] Re-read each Skill against `verified_against` paths +- [ ] Update `last_verified` to today (UTC date) in the same PR as any fact fix +- [ ] Run `npm test` + +Report artifact: run #${RUN_ID} +Generated: ${generatedAt} +``` + +--- + +## 6. Phase 2+ (optional evolution) + +| Phase | Capability | Notes | +|-------|------------|-------| +| **2a** | `verified_against` existence check | Report adds `missing_source` (path does not exist in repo) | +| **2b** | In-repo file hash | Record `sha256` for in-repo paths; source changed but Skill not re-stamped → `source_changed` warning | +| **2c** | External canonical | Like `morph-contracts-skill-tokenlist.test.mjs`, CI fetches `morph-bridge/.../tokenList.json` for comparison (needs multi-repo checkout or submodule) | +| **3** | Draft PR bot | Only update checkboxes in Issue body / assign CODEOWNERS; do not auto-edit YAML | + +**Principle:** Phase 2+ extends via `skill-freshness-report/v2` schema; do not casually expand `npm test` hard-failure scope. + +--- + +## 7. Local commands + +```bash +# Human-readable warn list (same as inventory test) +node scripts/skill-freshness-report.mjs + +# JSON for CI / bot +node scripts/skill-freshness-report.mjs --json --out .local/skill-freshness-report.json + +# Full test suite (includes schema lock) +npm test +``` + +--- + +## 8. Operations and deduplication + +- **Repo labels (one-time)**: Create `skill-freshness` and `bot` labels in GitHub (or create manually on first bot failure); the Issues API does not create unknown labels automatically. +- **Single tracking Issue**: Search by title prefix `[skill-freshness] Weekly` + label `skill-freshness` (including closed); if found, `update` and `reopen` instead of opening a new Issue each week. +- **Merge strategy with skill-drift**: Bot Issue lists only “stale”; factual errors are fixed via human `skill-drift` PRs. You do not need to clear all stale items before closing the bot Issue (re-verify in batches). +- **CODEOWNERS**: Optional owners on `skills/**/SKILL.md`; bot Issue can @ the team. + +--- + +## 9. Acceptance criteria (Phase 1 done) + +- [ ] `npm test` passes, and inventory vs report warning counts match for the same repo snapshot +- [ ] `workflow_dispatch` produces artifact + Issue (or update) on GitHub +- [ ] When `warningCount === 0`, bot leaves no open freshness Issue +- [ ] Docs: optional small PR adding one sentence in `VISION.md` Feedback Loop pointing to this bot + +--- + +## 10. Risks + +| Risk | Mitigation | +|------|------------| +| Timezone shifts `ageDays` by 1 day | Use UTC calendar-day parsing everywhere (already implemented) | +| Issue noise | Single Issue rollup + filter by `skill-freshness` label | +| Logic diverges from inventory | Mandatory shared `scripts/lib/skill-freshness.mjs` | +| Fork PR abuse of `issues: write` | Workflow only on `schedule` + `workflow_dispatch` on default branch | diff --git a/scripts/skill-freshness-report.mjs b/scripts/skill-freshness-report.mjs new file mode 100644 index 000000000..f9e14111b --- /dev/null +++ b/scripts/skill-freshness-report.mjs @@ -0,0 +1,74 @@ +#!/usr/bin/env node +/** + * Emit a machine-readable Skill freshness report for CI (skill-freshness-bot). + * + * Usage: + * node scripts/skill-freshness-report.mjs [--json] [--out ] + * + * Exit codes: + * 0 — report written (warnings do not fail; see morph-doc-skill-inventory.test.mjs) + * 1 — unexpected error + * + * Design: scripts/skill-freshness-bot.DESIGN.md + */ +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { buildFreshnessReport } from './lib/skill-freshness.mjs'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); + +function parseArgs(argv) { + let json = false; + let outPath = null; + for (let i = 2; i < argv.length; i++) { + const a = argv[i]; + if (a === '--json') { + json = true; + } else if (a === '--out' && argv[i + 1]) { + outPath = argv[++i]; + } else if (a === '-h' || a === '--help') { + console.log(`Usage: node scripts/skill-freshness-report.mjs [--json] [--out ]`); + process.exit(0); + } else { + console.error(`Unknown argument: ${a}`); + process.exit(1); + } + } + return { json, outPath }; +} + +function main() { + const { json, outPath } = parseArgs(process.argv); + const report = buildFreshnessReport(ROOT); + const text = JSON.stringify(report, null, 2); + + if (outPath) { + const abs = path.isAbsolute(outPath) ? outPath : path.join(ROOT, outPath); + fs.mkdirSync(path.dirname(abs), { recursive: true }); + fs.writeFileSync(abs, `${text}\n`, 'utf8'); + if (!json) { + console.log(`Wrote ${abs} (${report.warningCount} warning(s))`); + } + } + + if (json) { + process.stdout.write(`${text}\n`); + } else if (!outPath) { + if (report.warningCount === 0) { + console.log('skill-freshness-report: ok (%d skills)', report.skillCount); + } else { + console.warn( + 'skill-freshness-report: %d warning(s) (%d stale)', + report.warningCount, + report.staleCount + ); + for (const w of report.warnings) { + console.warn(' ⚠️', w.message); + } + } + } +} + +main(); From b8253550913c7415e4c084bdcfdb4e68156c1701 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Wed, 20 May 2026 15:22:13 +0800 Subject: [PATCH 21/25] feat: freshness & skill test trigger --- __tests__/morph-skill-creator-agent.test.mjs | 35 ++ __tests__/morph-skill-creator.test.mjs | 82 ++++ agents/morph-skill-creator-agent.md | 57 +++ .../7-agent-driven-development-workflow.md | 2 + package.json | 5 + scripts/lib/skill-creator-path.mjs | 80 ++++ scripts/lib/skill-creator-python.mjs | 78 ++++ scripts/morph-skill-creator-install.sh | 28 ++ scripts/morph-skill-creator.mjs | 381 ++++++++++++++++++ scripts/run-tests.mjs | 2 + scripts/skill-behavior-evals.template.json | 17 + scripts/skill-creator-requirements.txt | 2 + ...ll-trigger-evals.morph-bridge.example.json | 82 ++++ sidebars-agents.js | 1 + sidebars-skills.js | 2 + skills/README.md | 20 +- skills/morph-skill-creator/SKILL.md | 123 ++++++ 17 files changed, 995 insertions(+), 2 deletions(-) create mode 100644 __tests__/morph-skill-creator-agent.test.mjs create mode 100644 __tests__/morph-skill-creator.test.mjs create mode 100644 agents/morph-skill-creator-agent.md create mode 100644 scripts/lib/skill-creator-path.mjs create mode 100644 scripts/lib/skill-creator-python.mjs create mode 100755 scripts/morph-skill-creator-install.sh create mode 100644 scripts/morph-skill-creator.mjs create mode 100644 scripts/skill-behavior-evals.template.json create mode 100644 scripts/skill-creator-requirements.txt create mode 100644 scripts/skill-trigger-evals.morph-bridge.example.json create mode 100644 skills/morph-skill-creator/SKILL.md diff --git a/__tests__/morph-skill-creator-agent.test.mjs b/__tests__/morph-skill-creator-agent.test.mjs new file mode 100644 index 000000000..7d6a98f57 --- /dev/null +++ b/__tests__/morph-skill-creator-agent.test.mjs @@ -0,0 +1,35 @@ +/** + * agents/morph-skill-creator-agent.md frontmatter and routing pointers. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); +const AGENT_PATH = path.join(ROOT, 'agents/morph-skill-creator-agent.md'); + +assert.ok(fs.existsSync(AGENT_PATH), AGENT_PATH); + +const content = fs.readFileSync(AGENT_PATH, 'utf8'); +const fm = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); +assert.ok(fm, 'YAML frontmatter'); + +const block = fm[1]; +function field(name) { + const m = new RegExp(`^${name}:\\s*(.+)$`, 'm').exec(block); + return m ? m[1].trim() : null; +} + +assert.equal(field('name'), 'morph-skill-creator-agent'); +assert.ok(field('model')?.length > 0); +const desc = field('description'); +assert.ok(desc && desc.length > 20); +assert.match(desc, /skill-creator|eval/i); +assert.match(desc, /Use when|when the user/i); +assert.match(content, /morph-skill-creator\/SKILL\.md|skills\/morph-skill-creator/); +assert.match(content, /morph-doc-agent/); +assert.match(content, /npm test/); + +console.log('morph-skill-creator-agent: ok'); diff --git a/__tests__/morph-skill-creator.test.mjs b/__tests__/morph-skill-creator.test.mjs new file mode 100644 index 000000000..24157b1be --- /dev/null +++ b/__tests__/morph-skill-creator.test.mjs @@ -0,0 +1,82 @@ +/** + * morph-skill-creator bridge: path resolution and CLI smoke. + */ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import os from 'node:os'; +import path from 'node:path'; +import { spawnSync } from 'node:child_process'; +import { fileURLToPath } from 'node:url'; +import { + resolveSkillCreatorInstall, + resolveTriggerEvalSetPath, +} from '../scripts/lib/skill-creator-path.mjs'; +import { + skillCreatorRequirementsPath, + skillCreatorVenvDir, +} from '../scripts/lib/skill-creator-python.mjs'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); + +const requirementsPath = skillCreatorRequirementsPath(ROOT); +assert.ok(fs.existsSync(requirementsPath), 'skill-creator-requirements.txt should exist'); +assert.match( + fs.readFileSync(requirementsPath, 'utf8'), + /PyYAML/i, + 'skill-creator Python requirements should include PyYAML', +); +assert.equal( + skillCreatorVenvDir(ROOT), + path.join(ROOT, '.local', 'skill-creator-venv'), + 'skill-creator venv lives under .local/', +); + +const evalPath = resolveTriggerEvalSetPath(ROOT, 'morph-js-sdk'); +assert.ok(evalPath, 'morph-js-sdk trigger eval example should resolve'); +assert.ok(evalPath.includes('skill-trigger-evals.morph-js-sdk'), evalPath); + +const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'morph-skill-creator-')); +const fakeCreator = path.join(tmp, 'skill-creator'); +fs.mkdirSync(path.join(fakeCreator, 'scripts'), { recursive: true }); +fs.writeFileSync(path.join(fakeCreator, 'SKILL.md'), '---\nname: skill-creator\n---\n', 'utf8'); +fs.writeFileSync(path.join(fakeCreator, 'scripts', 'run_loop.py'), '# stub\n', 'utf8'); +fs.writeFileSync(path.join(fakeCreator, 'scripts', 'run_eval.py'), '# stub\n', 'utf8'); + +const prev = process.env.MORPH_SKILL_CREATOR_ROOT; +process.env.MORPH_SKILL_CREATOR_ROOT = fakeCreator; +assert.equal(resolveSkillCreatorInstall()?.root, fakeCreator); +if (prev === undefined) delete process.env.MORPH_SKILL_CREATOR_ROOT; +else process.env.MORPH_SKILL_CREATOR_ROOT = prev; + +const help = spawnSync(process.execPath, ['scripts/morph-skill-creator.mjs', '--help'], { + cwd: ROOT, + encoding: 'utf8', +}); +assert.equal(help.status, 0, help.stderr || help.stdout); +assert.match(help.stdout, /desc-loop/); +assert.match(help.stdout, /run-eval/); + +const missingEval = spawnSync( + process.execPath, + ['scripts/morph-skill-creator.mjs', 'run-eval', 'morph-bridge'], + { + cwd: ROOT, + encoding: 'utf8', + env: { ...process.env, MORPH_SKILL_CREATOR_ROOT: fakeCreator }, + }, +); +assert.notEqual(missingEval.status, 0, 'run-eval should fail without trigger eval set'); +assert.match( + `${missingEval.stdout}${missingEval.stderr}`, + /No trigger eval set/i, +); + +const validate = spawnSync( + process.execPath, + ['scripts/morph-skill-creator.mjs', 'validate', 'morph-js-sdk'], + { cwd: ROOT, encoding: 'utf8' }, +); +assert.equal(validate.status, 0, validate.stderr || validate.stdout); + +console.log('morph-skill-creator: ok'); diff --git a/agents/morph-skill-creator-agent.md b/agents/morph-skill-creator-agent.md new file mode 100644 index 000000000..0c477f9cf --- /dev/null +++ b/agents/morph-skill-creator-agent.md @@ -0,0 +1,57 @@ +--- +name: morph-skill-creator-agent +title: Morph Skill Creator Agent +model: composer-2.5-fast +description: "Morph Skill testing and improvement agent: wires morph-doc skills to Anthropic skill-creator (trigger evals, description optimization loop, behavioral benchmarks) plus morph-doc-agent for content fixes. Use when the user wants to test Skill routing, run eval loops, improve a Skill description, benchmark Skill outputs, or fix stale Morph Skills after skill-drift — not for shipping dApp code (see morph-dapp-agent) or writing MDX (see morph-doc-agent for one-off SKILL authoring)." +--- + +You are **morph-skill-creator-agent**: improve and verify **morph-doc** `skills//SKILL.md` files using the upstream **[skill-creator](https://github.com/anthropics/skills/tree/main/skills/skill-creator)** toolkit, with Morph guards from **`npm test`**. + +## Core Principles + +1. **Two validators.** Morph metadata (`last_verified`, `verified_against`, `doc_skill_id`, trigger phrasing) → **`npm test`**. Anthropic frontmatter shape → upstream `quick_validate.py` (may false-negative on Morph fields — defer to inventory). +2. **Pointer-only.** Load `skills/morph-skill-creator/SKILL.md` for CLI paths; load upstream skill-creator `SKILL.md` for behavioral eval / viewer steps — do not duplicate their bodies here. +3. **Human merge.** Never auto-commit `best_description` or SKILL body changes; surface diffs and run `npm test` before the user opens a PR. +4. **Facts stay in docs.** If evals fail because content is wrong, route fact fixes through **`docs/`** + **`morph-doc-agent`**, not invented addresses in the Skill. + +## Default stack + +| Layer | Artifact | +|-------|----------| +| Bridge playbook | `skills/morph-skill-creator/SKILL.md` | +| CLI | `scripts/morph-skill-creator.mjs` | +| Upstream | `MORPH_SKILL_CREATOR_ROOT` or `vendor/skill-creator` after `npm run skill-creator:install` | +| Authoring sibling | `agents/morph-doc-agent.md` | + +## Routing + +| User intent | Action | +|-------------|--------| +| "Test / improve Skill routing / description" | `npm run skill-creator:check` → trigger eval JSON → `npm run skill-creator:run-eval -- ` (one shot) or `desc-loop` (optimize) | +| "Validate Skill before PR" | `npm run skill-creator:validate -- ` then `npm test` | +| "Benchmark Skill outputs / assertions" | Upstream skill-creator eval workflow + `skills//evals/evals.json` | +| "Write a new Skill from scratch" | Hand off to **morph-doc-agent**; return here for evals after draft exists | +| "Skill gave wrong chainId / address" | **skill-drift** issue path + morph-doc-agent; optional desc-loop only if routing was wrong | + +## Execution protocol + +1. **Identify ``** (directory name under `skills/`). +2. Run **`npm run skill-creator:check`**; if missing upstream, run **`npm run skill-creator:install`** once. +3. **`npm run skill-creator:validate -- `** for static guards. +4. For **description** work: confirm trigger eval file exists (see morph-skill-creator SKILL § Step 2); run **`npm run skill-creator:run-eval -- `** for a one-shot LLM trigger benchmark, then **`npm run skill-creator:desc-loop -- `** when the user wants automated description optimization (both need `claude` CLI). +5. For **behavioral** work: scaffold `evals/evals.json` from `scripts/skill-behavior-evals.template.json`; follow upstream skill-creator test-case flow. +6. Apply edits to `skills//SKILL.md`; re-stamp freshness metadata when sources were re-read; **`npm test`**. +7. Report: eval scores, `best_description` candidate, files changed, remaining `skill-drift`-style risks. + +## What Not To Do + +- Do not skip `npm test` after Skill edits. +- Do not treat upstream `quick_validate` failure on `last_verified` as blocking. +- Do not run `desc-loop` without user consent when it invokes paid `claude` CLI runs. +- Do not use this agent for full dApp delivery — use **morph-dapp-agent**. + +## Related Skills + +- `morph-skill-creator` — CLI and step-by-step bridge to Anthropic skill-creator. +- `morph-doc-agent` — single-goal SKILL authoring and pairing audit. +- `morph-skill-ln` — IDE symlink setup before manual routing tests. diff --git a/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md b/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md index 75f72bb63..af92ff73f 100644 --- a/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md +++ b/docs/build-on-morph/build-on-morph/7-agent-driven-development-workflow.md @@ -27,6 +27,7 @@ them without copying SKILL bodies. Install agent files with `npm run agent-ln` ( |---|---|---| | End-to-end dApp delivery (routing + wrap-up) | [`morph-dapp-agent`](/agents/morph-dapp-agent) | Prefer in Cursor / Claude Code when you want explicit stage routing, gates, and three wrap-up artifacts (planning path, changed files, review report). | | Author or audit a Skill | [`morph-doc-agent`](/agents/morph-doc-agent) | One goal → `skills//SKILL.md`, or inventory / `doc_skill_id` pairing audit. | +| Test / improve Skill routing & benchmarks | [`morph-skill-creator-agent`](/agents/morph-skill-creator-agent) → [`morph-skill-creator`](/skills/morph-skill-creator/SKILL) | [skill-creator](https://github.com/anthropics/skills/tree/main/skills/skill-creator) bridge: `npm run skill-creator:*`, trigger evals, `desc-loop`, `evals/evals.json`. | For the staged pipeline body (Step 0 baseline commit, per-stage gates), load [`morph-dapp-workflow`](/skills/morph-dapp-workflow/SKILL) — usually via `morph-dapp-agent` @@ -48,6 +49,7 @@ single Skill — the Skill then self-describes its own steps. | Compute or display transaction fees (L1 + L2) | [`morph-tx-cost`](/skills/morph-tx-cost/SKILL) | Explains `GasPriceOracle.getL1Fee` and gas math. | | Route to Morph Rails (Alt Fee, Reference Key, …) | [`morph-rails`](/skills/morph-rails/SKILL) | Product-level rails overview. | | Install Skills into Cursor / Claude Code / OpenClaw | [`morph-skill-ln`](/skills/morph-skill-ln/SKILL) | Symlink script. | +| Test or improve a Skill (routing / benchmarks) | [`morph-skill-creator`](/skills/morph-skill-creator/SKILL) | Requires `npm run skill-creator:install`; `desc-loop` needs `claude` CLI. | | Run a Morph full node on a host | [`morph-full-node-run-in-docker`](/skills/morph-full-node-run-in-docker/SKILL) | Node operations, not dApp dev. | Rule of thumb: **if there is no planning document yet and the task spans multiple files across diff --git a/package.json b/package.json index 7c6bbb18c..51edc835d 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,11 @@ "scripts": { "test": "node scripts/run-tests.mjs", "skill-freshness:report": "node scripts/skill-freshness-report.mjs", + "skill-creator:check": "node scripts/morph-skill-creator.mjs check", + "skill-creator:install": "node scripts/morph-skill-creator.mjs install", + "skill-creator:validate": "node scripts/morph-skill-creator.mjs validate", + "skill-creator:run-eval": "node scripts/morph-skill-creator.mjs run-eval", + "skill-creator:desc-loop": "node scripts/morph-skill-creator.mjs desc-loop", "skill-ln": "bash scripts/morph-skill-ln", "agent-ln": "bash scripts/morph-agent-ln", "docusaurus": "docusaurus", diff --git a/scripts/lib/skill-creator-path.mjs b/scripts/lib/skill-creator-path.mjs new file mode 100644 index 000000000..095182711 --- /dev/null +++ b/scripts/lib/skill-creator-path.mjs @@ -0,0 +1,80 @@ +/** + * Resolve the upstream anthropics/skill-creator checkout on the local machine. + * @see https://github.com/anthropics/skills/tree/main/skills/skill-creator + */ +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const MORPH_DOC_ROOT = path.join(__dirname, '../..'); + +/** @returns {string[]} */ +export function skillCreatorCandidateRoots() { + const env = process.env.MORPH_SKILL_CREATOR_ROOT; + const home = process.env.HOME || process.env.USERPROFILE || ''; + return [ + env, + path.join(MORPH_DOC_ROOT, 'vendor', 'skill-creator'), + home && path.join(home, '.claude', 'skills', 'skill-creator'), + home && path.join(home, '.cursor', 'skills', 'skill-creator'), + home && path.join(home, '.codex', 'skills', 'skill-creator'), + ].filter(Boolean); +} + +/** + * @returns {{ root: string, runLoop: string, runEval: string, quickValidate: string, aggregateBenchmark: string } | null} + */ +export function resolveSkillCreatorInstall() { + for (const root of skillCreatorCandidateRoots()) { + const runLoop = path.join(root, 'scripts', 'run_loop.py'); + const runEval = path.join(root, 'scripts', 'run_eval.py'); + const skillMd = path.join(root, 'SKILL.md'); + if (fs.existsSync(runLoop) && fs.existsSync(skillMd)) { + return { + root, + runLoop, + runEval, + quickValidate: path.join(root, 'scripts', 'quick_validate.py'), + aggregateBenchmark: path.join(root, 'scripts', 'aggregate_benchmark.py'), + }; + } + } + return null; +} + +/** + * Trigger-eval JSON for description optimization (skill-creator run_loop). + * @param {string} morphDocRoot + * @param {string} skillId + * @returns {string | null} + */ +export function resolveTriggerEvalSetPath(morphDocRoot, skillId) { + const scripts = path.join(morphDocRoot, 'scripts'); + const candidates = [ + path.join(scripts, `skill-trigger-evals.${skillId}.json`), + path.join(scripts, `skill-trigger-evals.${skillId}.example.json`), + path.join(morphDocRoot, 'skills', skillId, 'evals', 'trigger.json'), + ]; + for (const p of candidates) { + if (fs.existsSync(p)) return p; + } + return null; +} + +/** + * Behavioral eval set (skill-creator full eval loop). + * @param {string} morphDocRoot + * @param {string} skillId + * @returns {string | null} + */ +export function resolveBehaviorEvalSetPath(morphDocRoot, skillId) { + const candidates = [ + path.join(morphDocRoot, 'skills', skillId, 'evals', 'evals.json'), + path.join(morphDocRoot, 'scripts', `skill-behavior-evals.${skillId}.json`), + ]; + for (const p of candidates) { + if (fs.existsSync(p)) return p; + } + return null; +} diff --git a/scripts/lib/skill-creator-python.mjs b/scripts/lib/skill-creator-python.mjs new file mode 100644 index 000000000..3fea0561d --- /dev/null +++ b/scripts/lib/skill-creator-python.mjs @@ -0,0 +1,78 @@ +/** + * Python interpreter for vendor/skill-creator (PEP 668–safe venv under .local/). + */ +import { spawnSync } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const MORPH_DOC_ROOT = path.join(__dirname, '../..'); + +export function skillCreatorRequirementsPath(root = MORPH_DOC_ROOT) { + return path.join(root, 'scripts', 'skill-creator-requirements.txt'); +} + +export function skillCreatorVenvDir(root = MORPH_DOC_ROOT) { + return path.join(root, '.local', 'skill-creator-venv'); +} + +export function skillCreatorVenvPython(root = MORPH_DOC_ROOT) { + return path.join(skillCreatorVenvDir(root), 'bin', 'python3'); +} + +export function pythonCanImportYaml(pythonExe) { + const r = spawnSync(pythonExe, ['-c', 'import yaml'], { encoding: 'utf8' }); + return r.status === 0; +} + +/** + * Return a python3 that can `import yaml` (project venv or system). + * Creates `.local/skill-creator-venv` when needed (Homebrew PEP 668). + * @param {string} [root] + * @param {{ quiet?: boolean }} [options] + * @returns {string} + */ +export function ensureSkillCreatorPython(root = MORPH_DOC_ROOT, options = {}) { + const { quiet = false } = options; + const log = quiet ? () => {} : (...args) => console.log(...args); + + const venvPy = skillCreatorVenvPython(root); + if (fs.existsSync(venvPy) && pythonCanImportYaml(venvPy)) { + return venvPy; + } + + const systemPy = 'python3'; + if (pythonCanImportYaml(systemPy)) { + return systemPy; + } + + const venvDir = skillCreatorVenvDir(root); + const reqFile = skillCreatorRequirementsPath(root); + if (!fs.existsSync(reqFile)) { + throw new Error(`Missing ${reqFile}`); + } + + fs.mkdirSync(path.dirname(venvDir), { recursive: true }); + if (!fs.existsSync(venvPy)) { + log(`Creating skill-creator venv at ${venvDir} …`); + const venv = spawnSync(systemPy, ['-m', 'venv', venvDir], { stdio: quiet ? 'pipe' : 'inherit' }); + if (venv.status !== 0) { + throw new Error('python3 -m venv failed'); + } + } + + log('Installing Python deps into skill-creator venv (PyYAML)…'); + const pip = spawnSync(venvPy, ['-m', 'pip', 'install', '-q', '-r', reqFile], { + stdio: quiet ? 'pipe' : 'inherit', + }); + if (pip.status !== 0) { + throw new Error('pip install skill-creator-requirements.txt failed'); + } + + if (!pythonCanImportYaml(venvPy)) { + throw new Error('PyYAML not available in skill-creator venv after install'); + } + + return venvPy; +} diff --git a/scripts/morph-skill-creator-install.sh b/scripts/morph-skill-creator-install.sh new file mode 100755 index 000000000..eb22e0c27 --- /dev/null +++ b/scripts/morph-skill-creator-install.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +# Shallow-install anthropics/skill-creator into vendor/skill-creator (gitignored). +# Upstream: https://github.com/anthropics/skills/tree/main/skills/skill-creator +set -euo pipefail + +ROOT="$(cd "$(dirname "$0")/.." && pwd)" +DEST="${ROOT}/vendor/skill-creator" +TMP="$(mktemp -d)" +trap 'rm -rf "$TMP"' EXIT + +echo "Cloning anthropics/skills (sparse: skills/skill-creator) …" +git clone --depth 1 --filter=blob:none --sparse https://github.com/anthropics/skills.git "$TMP/repo" +( + cd "$TMP/repo" + git sparse-checkout set skills/skill-creator +) + +rm -rf "$DEST" +mkdir -p "$(dirname "$DEST")" +cp -R "$TMP/repo/skills/skill-creator" "$DEST" + +VENV="${ROOT}/.local/skill-creator-venv" +echo "Creating skill-creator Python venv (PyYAML for quick_validate.py) …" +python3 -m venv "$VENV" +"${VENV}/bin/python3" -m pip install -q -r "${ROOT}/scripts/skill-creator-requirements.txt" + +echo "Installed skill-creator at: $DEST" +echo "Export: export MORPH_SKILL_CREATOR_ROOT=\"$DEST\"" diff --git a/scripts/morph-skill-creator.mjs b/scripts/morph-skill-creator.mjs new file mode 100644 index 000000000..d14985dd2 --- /dev/null +++ b/scripts/morph-skill-creator.mjs @@ -0,0 +1,381 @@ +#!/usr/bin/env node +/** + * Bridge morph-doc Skills to anthropics/skill-creator (eval, description loop, validate). + * + * Usage: + * node scripts/morph-skill-creator.mjs check + * node scripts/morph-skill-creator.mjs install + * node scripts/morph-skill-creator.mjs validate + * node scripts/morph-skill-creator.mjs run-eval [-- ...run_eval.py flags] + * node scripts/morph-skill-creator.mjs desc-loop [-- ...run_loop.py flags] + * + * Requires Python 3 for upstream scripts; run-eval and desc-loop need `claude` CLI (see skill-creator SKILL.md). + */ +import { spawnSync } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { + resolveBehaviorEvalSetPath, + resolveSkillCreatorInstall, + resolveTriggerEvalSetPath, + skillCreatorCandidateRoots, +} from './lib/skill-creator-path.mjs'; +import { + ensureSkillCreatorPython, + pythonCanImportYaml, + skillCreatorVenvDir, +} from './lib/skill-creator-python.mjs'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT = path.join(__dirname, '..'); + +function resolvePython() { + try { + return ensureSkillCreatorPython(ROOT); + } catch (err) { + console.error(err.message); + process.exit(1); + } +} + +function usage() { + console.log(`Usage: + node scripts/morph-skill-creator.mjs check + node scripts/morph-skill-creator.mjs install + node scripts/morph-skill-creator.mjs validate + node scripts/morph-skill-creator.mjs run-eval [-- extra run_eval.py args] + node scripts/morph-skill-creator.mjs desc-loop [-- extra run_loop.py args] + +Environment: + MORPH_SKILL_CREATOR_ROOT Path to anthropics skill-creator checkout + MORPH_SKILL_CREATOR_MODEL Model for claude -p (default: claude-sonnet-4-20250514) + MORPH_SKILL_CREATOR_RUN_EVAL_OUT Optional JSON output path for run-eval + +Upstream: https://github.com/anthropics/skills/tree/main/skills/skill-creator +`); +} + +function run(cmd, args, options = {}) { + const r = spawnSync(cmd, args, { stdio: 'inherit', cwd: options.cwd ?? ROOT, env: process.env }); + if (r.error) { + console.error(r.error.message); + process.exit(1); + } + if (r.status !== 0) { + process.exit(r.status ?? 1); + } +} + +function cmdCheck() { + const install = resolveSkillCreatorInstall(); + if (!install) { + console.error('skill-creator not found. Candidates:'); + for (const c of skillCreatorCandidateRoots()) { + console.error(` - ${c}`); + } + console.error('\nRun: npm run skill-creator:install'); + console.error('Or clone https://github.com/anthropics/skills/tree/main/skills/skill-creator'); + process.exit(1); + } + console.log('skill-creator: ok'); + console.log(` root: ${install.root}`); + console.log(` run_loop: ${install.runLoop}`); + console.log(` run_eval: ${install.runEval}`); + + const claude = spawnSync('claude', ['--version'], { encoding: 'utf8' }); + if (claude.status === 0) { + console.log(` claude CLI: ${(claude.stdout || '').trim()}`); + } else { + console.warn( + ' claude CLI: not found (run-eval and desc-loop need it; use hand-edits + npm test otherwise)', + ); + } + + const py = spawnSync('python3', ['--version'], { encoding: 'utf8' }); + if (py.status === 0) { + console.log(` python3: ${(py.stdout || '').trim()}`); + } else { + console.error(' python3: not found'); + process.exit(1); + } + + const venvPy = path.join(skillCreatorVenvDir(ROOT), 'bin', 'python3'); + if (pythonCanImportYaml(venvPy)) { + console.log(` PyYAML: ok (venv ${skillCreatorVenvDir(ROOT)})`); + } else if (pythonCanImportYaml('python3')) { + console.log(' PyYAML: ok (system python3)'); + } else { + console.warn( + ` PyYAML: not ready — run: npm run skill-creator:install (creates ${skillCreatorVenvDir(ROOT)})`, + ); + } +} + +function cmdInstall() { + const script = path.join(ROOT, 'scripts', 'morph-skill-creator-install.sh'); + run('bash', [script]); + const dest = path.join(ROOT, 'vendor', 'skill-creator'); + if (resolveSkillCreatorInstall()) { + console.log(`\nAdd to your shell profile (optional):\n export MORPH_SKILL_CREATOR_ROOT="${dest}"`); + } +} + +function assertSkillId(skillId) { + const skillDir = path.join(ROOT, 'skills', skillId); + const skillMd = path.join(skillDir, 'SKILL.md'); + if (!fs.existsSync(skillMd)) { + console.error(`No skills/${skillId}/SKILL.md`); + process.exit(1); + } + return skillDir; +} + +function requireSkillCreatorInstall() { + const install = resolveSkillCreatorInstall(); + if (!install) { + console.error('skill-creator not installed. Run: npm run skill-creator:install'); + process.exit(1); + } + if (!fs.existsSync(install.runEval)) { + console.error(`skill-creator run_eval.py not found at ${install.runEval}`); + process.exit(1); + } + return install; +} + +function resolveTriggerEvalOrExit(skillId) { + const skillDir = assertSkillId(skillId); + const evalSet = resolveTriggerEvalSetPath(ROOT, skillId); + if (!evalSet) { + console.error( + `No trigger eval set for ${skillId}. Add one of:\n` + + ` scripts/skill-trigger-evals.${skillId}.json\n` + + ` scripts/skill-trigger-evals.${skillId}.example.json (copy from morph-js-sdk example)\n` + + ` skills/${skillId}/evals/trigger.json`, + ); + process.exit(1); + } + return { skillDir, evalSet }; +} + +function requireClaudeCli() { + const claude = spawnSync('claude', ['--version'], { encoding: 'utf8' }); + if (claude.status !== 0) { + console.error( + 'claude CLI is required (runs `claude -p` per eval query). Install Claude Code and ensure `claude` is on PATH.', + ); + process.exit(1); + } +} + +function defaultSkillCreatorModel() { + return process.env.MORPH_SKILL_CREATOR_MODEL || 'claude-sonnet-4-20250514'; +} + +function cmdValidate(skillId) { + assertSkillId(skillId); + console.log('Running morph-doc guards (npm test subset via inventory + pairing)…'); + run(process.execPath, [ + path.join(ROOT, '__tests__', 'morph-doc-skill-inventory.test.mjs'), + ]); + run(process.execPath, [path.join(ROOT, '__tests__', 'doc-skill-pairing.test.mjs')]); + + const install = resolveSkillCreatorInstall(); + if (!install) { + console.warn('\nSkipping upstream quick_validate.py (skill-creator not installed).'); + return; + } + + const python = resolvePython(); + + console.log('\nRunning upstream quick_validate.py (Anthropic frontmatter rules)…'); + const r = spawnSync(python, [install.quickValidate, path.join(ROOT, 'skills', skillId)], { + encoding: 'utf8', + cwd: install.root, + }); + if (r.stdout) process.stdout.write(r.stdout); + if (r.stderr) process.stderr.write(r.stderr); + if (r.status !== 0) { + console.warn( + '\nNote: morph-doc Skills use last_verified / verified_against — upstream quick_validate may reject them.', + '\nTreat morph inventory + npm test as authoritative for Morph metadata.', + ); + } else { + console.log('upstream quick_validate: ok'); + } +} + +function cmdRunEval(skillId, extraArgs) { + const { skillDir, evalSet } = resolveTriggerEvalOrExit(skillId); + const install = requireSkillCreatorInstall(); + requireClaudeCli(); + const python = resolvePython(); + const model = defaultSkillCreatorModel(); + + const hasOutFlag = extraArgs.some((a) => a === '--out' || a.startsWith('--out=')); + const outPath = + process.env.MORPH_SKILL_CREATOR_RUN_EVAL_OUT || + (!hasOutFlag + ? path.join(ROOT, '.local', 'skill-run-eval', skillId, 'results.json') + : null); + + const args = [ + '-m', + 'scripts.run_eval', + '--eval-set', + evalSet, + '--skill-path', + skillDir, + '--model', + model, + '--verbose', + ...extraArgs, + ]; + + console.log('Running description trigger eval (claude -p per query)…'); + console.log(` eval-set: ${evalSet}`); + console.log(` skill-path: ${skillDir}`); + console.log(` model: ${model}`); + if (outPath) { + console.log(` out: ${outPath}`); + } + + let stdout = ''; + const r = spawnSync(python, args, { + cwd: install.root, + encoding: 'utf8', + env: process.env, + }); + if (r.stdout) { + process.stdout.write(r.stdout); + stdout = r.stdout; + } + if (r.stderr) process.stderr.write(r.stderr); + if (r.error) { + console.error(r.error.message); + process.exit(1); + } + + if (outPath && stdout.trim()) { + const abs = path.isAbsolute(outPath) ? outPath : path.join(ROOT, outPath); + fs.mkdirSync(path.dirname(abs), { recursive: true }); + fs.writeFileSync(abs, `${stdout.trim()}\n`, 'utf8'); + console.log(`\nWrote ${abs}`); + } + + if (r.status !== 0) { + process.exit(r.status ?? 1); + } +} + +function cmdDescLoop(skillId, extraArgs) { + const { skillDir, evalSet } = resolveTriggerEvalOrExit(skillId); + const install = requireSkillCreatorInstall(); + requireClaudeCli(); + const python = resolvePython(); + + const resultsDir = + process.env.MORPH_SKILL_CREATOR_RESULTS_DIR || + path.join(ROOT, '.local', 'skill-desc-opt', skillId); + + fs.mkdirSync(resultsDir, { recursive: true }); + + const model = defaultSkillCreatorModel(); + + const args = [ + install.runLoop, + '--eval-set', + evalSet, + '--skill-path', + skillDir, + '--model', + model, + '--results-dir', + resultsDir, + '--verbose', + ...extraArgs, + ]; + + console.log('Running description optimization loop…'); + console.log(` eval-set: ${evalSet}`); + console.log(` skill-path: ${skillDir}`); + console.log(` results-dir: ${resultsDir}`); + console.log(` model: ${model}`); + + run(python, args, { cwd: install.root }); + + const runDirs = fs + .readdirSync(resultsDir, { withFileTypes: true }) + .filter((e) => e.isDirectory()) + .map((e) => e.name) + .sort(); + const latestRun = runDirs.at(-1); + const resultsFile = latestRun + ? path.join(resultsDir, latestRun, 'results.json') + : path.join(resultsDir, 'results.json'); + if (fs.existsSync(resultsFile)) { + const data = JSON.parse(fs.readFileSync(resultsFile, 'utf8')); + if (data.best_description) { + console.log('\n--- best_description (merge into SKILL.md manually, then npm test) ---\n'); + console.log(data.best_description); + } + } + + const behaviorEval = resolveBehaviorEvalSetPath(ROOT, skillId); + if (!behaviorEval) { + console.log( + `\nTip: add skills/${skillId}/evals/evals.json for behavioral evals (see scripts/skill-behavior-evals.template.json).`, + ); + } +} + +function main() { + const [command, skillId, ...rest] = process.argv.slice(2); + if (!command || command === '-h' || command === '--help') { + usage(); + process.exit(command ? 0 : 1); + } + + switch (command) { + case 'check': + cmdCheck(); + break; + case 'install': + cmdInstall(); + break; + case 'validate': + if (!skillId) { + usage(); + process.exit(1); + } + cmdValidate(skillId); + break; + case 'run-eval': { + if (!skillId) { + usage(); + process.exit(1); + } + const sep = rest.indexOf('--'); + const extra = sep >= 0 ? rest.slice(sep + 1) : []; + cmdRunEval(skillId, extra); + break; + } + case 'desc-loop': { + if (!skillId) { + usage(); + process.exit(1); + } + const sep = rest.indexOf('--'); + const extra = sep >= 0 ? rest.slice(sep + 1) : []; + cmdDescLoop(skillId, extra); + break; + } + default: + console.error(`Unknown command: ${command}`); + usage(); + process.exit(1); + } +} + +main(); diff --git a/scripts/run-tests.mjs b/scripts/run-tests.mjs index 7e9c52187..335559519 100644 --- a/scripts/run-tests.mjs +++ b/scripts/run-tests.mjs @@ -19,6 +19,8 @@ export const TEST_FILES = [ 'doc-skill-pairing.test.mjs', 'morph-doc-skill-inventory.test.mjs', 'skill-freshness-report.test.mjs', + 'morph-skill-creator.test.mjs', + 'morph-skill-creator-agent.test.mjs', 'skill-trigger-eval-examples.test.mjs', 'skills-readme.test.mjs', 'morph-contracts-skill-tokenlist.test.mjs', diff --git a/scripts/skill-behavior-evals.template.json b/scripts/skill-behavior-evals.template.json new file mode 100644 index 000000000..8b3e80d44 --- /dev/null +++ b/scripts/skill-behavior-evals.template.json @@ -0,0 +1,17 @@ +{ + "skill_name": "REPLACE_WITH_SKILL_ID", + "evals": [ + { + "id": 1, + "prompt": "Realistic user prompt that should exercise this Morph Skill (include chainId, package names, or doc paths as appropriate).", + "expected_output": "What a correct agent response must include (e.g. cites docs/build-on-morph/... section, uses morph-contracts for addresses, lists Execution Steps).", + "files": [] + }, + { + "id": 2, + "prompt": "Second prompt — edge case or common failure mode.", + "expected_output": "Success criteria; add assertions in eval_metadata.json during the skill-creator run.", + "files": [] + } + ] +} diff --git a/scripts/skill-creator-requirements.txt b/scripts/skill-creator-requirements.txt new file mode 100644 index 000000000..0160fec62 --- /dev/null +++ b/scripts/skill-creator-requirements.txt @@ -0,0 +1,2 @@ +# Python deps for vendor/skill-creator (quick_validate.py, etc.) +PyYAML>=6.0 diff --git a/scripts/skill-trigger-evals.morph-bridge.example.json b/scripts/skill-trigger-evals.morph-bridge.example.json new file mode 100644 index 000000000..8cdf71adb --- /dev/null +++ b/scripts/skill-trigger-evals.morph-bridge.example.json @@ -0,0 +1,82 @@ +[ + { + "query": "our backend needs to deposit 2 ETH from Ethereum mainnet to Morph L2 via L1GatewayRouter — what payable depositETH args and gasLimit should we use, and where is the canonical gateway address for chain 2818?", + "should_trigger": true + }, + { + "query": "withdraw USDC from Morph hoodi testnet 2910 back to L1: user already called withdrawERC20 on L2 gateway — walk proveAndRelayMessage and GET /getProof?nonce= steps from morph docs", + "should_trigger": true + }, + { + "query": "after L1 deposit of our custom ERC-20, how do we resolve the L2 token address with getL2ERC20Address on L1GatewayRouter — don't pick the gateway manually", + "should_trigger": true + }, + { + "query": "batch indexer stuck: L2→L1 withdrawal finalized in Rollup but frontend can't relay — need withdrawalRoots check + proof fields index leaf proof root from morph bridge API", + "should_trigger": true + }, + { + "query": "PM wants programmatic bridge script: depositERC20 on L1 then wait for sequencer — not bulbaswap, native morph canonical bridge only", + "should_trigger": true + }, + { + "query": "how much ETH to attach on withdrawETH for L1 fee when bridging from Morph — docs say 0.005 ETH suggested, confirm before we ship automation", + "should_trigger": true + }, + { + "query": "add our ERC-20 to Morph Bridge token list UI — what gateway listing flow and L1/L2 gateway pairing does morph-doc describe for custom tokens?", + "should_trigger": true + }, + { + "query": "solidity integration test: call depositETH on L1GatewayRouter then assert L2 balance — point me to morph bridge playbook not generic optimism tutorial", + "should_trigger": true + }, + { + "query": "user confused native L1↔L2 bridge vs cross-chain swap — they want deposit/withdraw via gateway routers only, which morph skill covers that?", + "should_trigger": true + }, + { + "query": "finalize pending L2 withdrawal to ethereum: challenge period passed, have batch index — need morph prove relay message calldata shape from official bridge doc", + "should_trigger": true + }, + { + "query": "list morph mainnet L1GatewayRouter L2 gateway and messenger addresses for security questionnaire — addresses only, no deposit flow", + "should_trigger": false + }, + { + "query": "configure viem @morph-network/viem Alt Fee tx type 0x7f feeTokenID on morph 2818 — sdk packages not bridge routers", + "should_trigger": false + }, + { + "query": "why total fee on morph is l1Fee plus l2Fee for a simple transfer — gas price oracle math without bridging", + "should_trigger": false + }, + { + "query": "bulbaswap JWT order API swap ETH across six chains including morph — cross-chain swap not canonical gateway", + "should_trigger": false + }, + { + "query": "run morph full node docker prune state on aws — node operator doc not bridge", + "should_trigger": false + }, + { + "query": "verify smart contract on morphscan from hardhat — etherscan plugin only", + "should_trigger": false + }, + { + "query": "morph rails x402 facilitator payment middleware — payfi not L1 deposit", + "should_trigger": false + }, + { + "query": "eth_getBlockByNumber batching limits for morph json-rpc — rpc api skill not bridge", + "should_trigger": false + }, + { + "query": "write a new morph-doc SKILL for morph-tx-cost fee display — skill authoring workflow", + "should_trigger": false + }, + { + "query": "uniswap v3 swap on ethereum mainnet chainId 1 with ethers — unrelated L1 only dex", + "should_trigger": false + } +] diff --git a/sidebars-agents.js b/sidebars-agents.js index 290a43665..de03711fb 100644 --- a/sidebars-agents.js +++ b/sidebars-agents.js @@ -9,6 +9,7 @@ const AgentsSidebar = [ { type: 'doc', id: 'morph-doc-agent', label: 'Morph Doc Agent' }, { type: 'doc', id: 'morph-dapp-agent', label: 'Morph dApp Agent' }, + { type: 'doc', id: 'morph-skill-creator-agent', label: 'Morph Skill Creator Agent' }, ]; module.exports = { diff --git a/sidebars-skills.js b/sidebars-skills.js index 7f262b604..c638224f7 100644 --- a/sidebars-skills.js +++ b/sidebars-skills.js @@ -16,6 +16,7 @@ const SkillsSidebar = [ items: [ { type: 'link', label: 'Morph Doc Agent', href: '/agents/morph-doc-agent' }, { type: 'link', label: 'Morph dApp Agent', href: '/agents/morph-dapp-agent' }, + { type: 'link', label: 'Morph Skill Creator Agent', href: '/agents/morph-skill-creator-agent' }, ], }, { @@ -41,6 +42,7 @@ const SkillsSidebar = [ { type: 'doc', id: 'morph-rails/SKILL', label: 'Morph Rails' }, { type: 'doc', id: 'morph-rpc-api/SKILL', label: 'Morph JSON-RPC API' }, { type: 'doc', id: 'morph-skill-ln/SKILL', label: 'morph-skill-ln (symlink script)' }, + { type: 'doc', id: 'morph-skill-creator/SKILL', label: 'Skill testing (skill-creator)' }, { type: 'doc', id: 'morph-tx-cost/SKILL', label: 'Morph Transaction Fees' }, { type: 'doc', id: 'morph-verify-contracts/SKILL', label: 'Verify Smart Contracts' }, { diff --git a/skills/README.md b/skills/README.md index 865b72fe1..eb145cd56 100644 --- a/skills/README.md +++ b/skills/README.md @@ -31,11 +31,27 @@ Run **`npm run skill-ln`** (or `./scripts/morph-skill-ln`) when your tool only d --- +## Skill testing & improvement (skill-creator bridge) + +Morph-doc ships a bridge Skill and CLI so you do not hand-wire paths to upstream [Anthropic skill-creator](https://github.com/anthropics/skills/tree/main/skills/skill-creator): + +| Step | Command | +|------|---------| +| Install upstream into `vendor/skill-creator` | `npm run skill-creator:install` | +| Verify Python / path / optional `claude` CLI | `npm run skill-creator:check` | +| Static Morph guards for one Skill | `npm run skill-creator:validate -- ` | +| LLM trigger eval (`claude -p`, one shot) | `npm run skill-creator:run-eval -- ` | +| Description trigger optimization loop | `npm run skill-creator:desc-loop -- ` | + +Playbook: **[`skills/morph-skill-creator/SKILL.md`](./morph-skill-creator/SKILL.md)** · Agent: **[Morph Skill Creator Agent](/agents/morph-skill-creator-agent)** + +Behavioral evals (outputs + assertions + viewer) still follow the upstream skill-creator `SKILL.md`; add `skills//evals/evals.json` from `scripts/skill-behavior-evals.template.json`. + ## Tuning description trigger rates -IDE routing depends mainly on the YAML **`description`** in `skills//SKILL.md` (plus `name`). If a Skill should fire more often (or less often for near-miss prompts), follow the **Description Optimization** section in the **skill-creator** skill (see that skill's `SKILL.md`; the install location is defined by your IDE or agent product — use its docs to find the checkout that contains `scripts/run_loop.py`): build a **trigger eval set**, optionally review it with `assets/eval_review.html` from that skill, run the automated loop, then land the winning text here. +IDE routing depends mainly on the YAML **`description`** in `skills//SKILL.md` (plus `name`). After you have a trigger eval JSON, run **`npm run skill-creator:run-eval -- `** (one-shot LLM trigger test via upstream `run_eval.py`) or **`npm run skill-creator:desc-loop -- `** (iterative description optimization via `run_loop.py`) — see **Skill testing & improvement** above. Manual path: follow the **Description Optimization** section in the upstream **skill-creator** `SKILL.md`. -**Prerequisites:** the **skill-creator** skill installed on your machine (separate from morph-doc); the automated loop additionally requires the **Claude Code / `claude` CLI**. Without those, hand-edit `description` and run **`npm test`**. +**Prerequisites:** skill-creator installed (`npm run skill-creator:install` or user-level checkout); description loop requires the **Claude Code / `claude` CLI**. Without those, hand-edit `description` and run **`npm test`**. ### 1. Trigger eval set (JSON) diff --git a/skills/morph-skill-creator/SKILL.md b/skills/morph-skill-creator/SKILL.md new file mode 100644 index 000000000..c4b708c6f --- /dev/null +++ b/skills/morph-skill-creator/SKILL.md @@ -0,0 +1,123 @@ +--- +name: morph-skill-creator +description: "Morph-doc bridge to Anthropic skill-creator: install upstream, validate Morph Skills (inventory + pairing), run description trigger eval loops, and drive behavioral eval/improve cycles for skills//SKILL.md. Use when testing Skill routing, fixing stale descriptions, benchmarking Skill outputs, or iteratively improving a Morph Skill after drift reports — not for authoring long-form docs (see morph-doc-agent)." +last_verified: 2026-05-20 +verified_against: + - scripts/morph-skill-creator.mjs + - scripts/lib/skill-creator-path.mjs + - skills/README.md + - https://github.com/anthropics/skills/tree/main/skills/skill-creator +--- + +# morph-skill-creator + +Connect **morph-doc** Skills to the upstream **[skill-creator](https://github.com/anthropics/skills/tree/main/skills/skill-creator)** toolkit (eval loops, description optimization, benchmark viewer). Morph-specific metadata (`last_verified`, `verified_against`, `doc_skill_id`) stays governed by **`npm test`** — upstream `quick_validate.py` does not know those fields. + +## Single Source of Truth + +| Topic | Path | +|-------|------| +| Trigger-eval JSON format & copy-paste example | `scripts/skill-trigger-evals.morph-js-sdk.example.json`, `skills/README.md` § Tuning description trigger rates | +| Morph Skill authoring / audit | `agents/morph-doc-agent.md` | +| Freshness bot (scheduled stale queue) | `scripts/skill-freshness-bot.DESIGN.md` | +| Upstream skill-creator playbook | Install root → `SKILL.md` (Anthropic) | + +## When to Use + +| Goal | Tool | +|------|------| +| Check install (Python, skill-creator path, optional `claude` CLI) | `npm run skill-creator:check` | +| Install upstream into `vendor/skill-creator` | `npm run skill-creator:install` | +| Static Morph guards for one Skill | `npm run skill-creator:validate -- ` | +| **LLM trigger eval** (one-shot `claude -p` per query; needs `claude` CLI) | `npm run skill-creator:run-eval -- ` | +| Optimize YAML **`description`** routing (needs `claude` CLI) | `npm run skill-creator:desc-loop -- ` | +| Fix facts / execution steps / pairing | `morph-doc-agent` + PR + `npm test` | +| Behavioral eval (outputs, assertions, viewer) | Upstream skill-creator § Running and evaluating test cases + `skills//evals/evals.json` | + +## Prerequisites + +1. **Node** — `npm test` from morph-doc root after any Skill edit. +2. **Python 3** + **PyYAML** — `npm run skill-creator:install` creates `.local/skill-creator-venv` (PEP 668–safe); `validate` / `desc-loop` auto-bootstrap the venv if needed. +3. **skill-creator checkout** — one of: + - `npm run skill-creator:install` → `vendor/skill-creator` (gitignored) + - User-level: `~/.claude/skills/skill-creator` ([anthropics/skills](https://github.com/anthropics/skills/tree/main/skills/skill-creator)) + - `export MORPH_SKILL_CREATOR_ROOT=/path/to/skill-creator` +4. **`run-eval` / `desc-loop`:** `claude` CLI (see upstream skill-creator). Without it, hand-edit `description` using trigger evals + `npm test`. + +## Execution Steps + +### Step 0 — Install & check + +```bash +npm run skill-creator:install # once per clone +npm run skill-creator:check +``` + +### Step 1 — Static validate (always) + +```bash +npm run skill-creator:validate -- morph-js-sdk +``` + +Runs `morph-doc-skill-inventory` + `doc-skill-pairing` for the repo, then optional upstream `quick_validate.py` (may warn on `last_verified` — ignore; trust Morph inventory). + +### Step 2 — Trigger eval set (description routing) + +Ensure a JSON **array** of `{ "query", "should_trigger" }` exists (≥20 rows, ≥8 true / ≥8 false): + +| Priority | Path | +|----------|------| +| 1 | `scripts/skill-trigger-evals..json` | +| 2 | `scripts/skill-trigger-evals..example.json` | +| 3 | `skills//evals/trigger.json` | + +Copy from `scripts/skill-trigger-evals.morph-js-sdk.example.json` and tailor queries. + +### Step 3 — LLM trigger eval (one shot) + +```bash +npm run skill-creator:run-eval -- morph-js-sdk +# optional: pass through run_eval.py flags after -- +# npm run skill-creator:run-eval -- morph-js-sdk -- --runs-per-query 1 --num-workers 4 +``` + +Calls upstream `run_eval.py` via `claude -p` (default 3 runs per query). JSON goes to stdout; a copy is saved under `.local/skill-run-eval//results.json` unless you pass `--out` or set `MORPH_SKILL_CREATOR_RUN_EVAL_OUT`. + +### Step 4 — Description optimization loop + +```bash +npm run skill-creator:desc-loop -- morph-js-sdk +# optional extra flags after -- +# npm run skill-creator:desc-loop -- morph-js-sdk -- --max-iterations 3 --holdout 0.3 +``` + +Results under `.local/skill-desc-opt//`. Merge printed **`best_description`** into `skills//SKILL.md`, then: + +1. Re-stamp **`last_verified`** if you re-read sources. +2. Run **`npm test`**. + +### Step 5 — Behavioral evals (fix Skill body / outputs) + +1. Add `skills//evals/evals.json` from `scripts/skill-behavior-evals.template.json`. +2. Follow upstream skill-creator **Running and evaluating test cases** (with-skill vs baseline, grader, `aggregate_benchmark`, `eval-viewer/generate_review.py`). +3. Apply fixes via **`morph-doc-agent`** or direct SKILL edits; never paste full `docs/` MDX into the Skill. + +### Step 6 — Land in Git + +- Same PR: SKILL + optional eval JSON + `last_verified` / `verified_against` if facts changed. +- Register new skill ids in `sidebars-skills.js`. +- Human drift: `.github/ISSUE_TEMPLATE/skill-feedback.yaml` (`skill-drift`). + +## Related Skills + +- `morph-doc-agent` — create or audit a Skill from one goal; use after behavioral eval shows content gaps. +- `morph-skill-ln` — symlink skills into IDE discovery paths before testing routing in Cursor/Claude. +- `morph-dapp-workflow` — dApp delivery harness; not for Skill meta-testing. + +## Self-Check + +- [ ] Did `npm run skill-creator:check` pass before spending API credits on loops? +- [ ] Is the trigger eval set realistic (chain IDs, package names, near-miss negatives)? +- [ ] After merging `best_description`, does `morph-doc-skill-inventory` still accept trigger phrasing in `description`? +- [ ] Did you run full **`npm test`** before opening the PR? +- [ ] For fact changes, are **`last_verified`** and **`verified_against`** updated in the same change set? From a1e79e21ba3042f2aaa19b565fabe1687bc39a3f Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Wed, 20 May 2026 15:25:38 +0800 Subject: [PATCH 22/25] fix: skill test --runs-per-query --- scripts/morph-skill-creator.mjs | 4 ++++ skills/morph-skill-creator/SKILL.md | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/morph-skill-creator.mjs b/scripts/morph-skill-creator.mjs index d14985dd2..b78bb999c 100644 --- a/scripts/morph-skill-creator.mjs +++ b/scripts/morph-skill-creator.mjs @@ -229,6 +229,8 @@ function cmdRunEval(skillId, extraArgs) { skillDir, '--model', model, + '--runs-per-query', + '1', '--verbose', ...extraArgs, ]; @@ -291,6 +293,8 @@ function cmdDescLoop(skillId, extraArgs) { skillDir, '--model', model, + '--runs-per-query', + '1', '--results-dir', resultsDir, '--verbose', diff --git a/skills/morph-skill-creator/SKILL.md b/skills/morph-skill-creator/SKILL.md index c4b708c6f..aa38ae1e4 100644 --- a/skills/morph-skill-creator/SKILL.md +++ b/skills/morph-skill-creator/SKILL.md @@ -78,20 +78,20 @@ Copy from `scripts/skill-trigger-evals.morph-js-sdk.example.json` and tailor que ```bash npm run skill-creator:run-eval -- morph-js-sdk # optional: pass through run_eval.py flags after -- -# npm run skill-creator:run-eval -- morph-js-sdk -- --runs-per-query 1 --num-workers 4 +# npm run skill-creator:run-eval -- morph-js-sdk -- --runs-per-query 3 --num-workers 4 ``` -Calls upstream `run_eval.py` via `claude -p` (default 3 runs per query). JSON goes to stdout; a copy is saved under `.local/skill-run-eval//results.json` unless you pass `--out` or set `MORPH_SKILL_CREATOR_RUN_EVAL_OUT`. +Calls upstream `run_eval.py` via `claude -p` (**1 run per query** by default; pass `--runs-per-query 3` after `--` for higher confidence). JSON goes to stdout; a copy is saved under `.local/skill-run-eval//results.json` unless you pass `--out` or set `MORPH_SKILL_CREATOR_RUN_EVAL_OUT`. ### Step 4 — Description optimization loop ```bash npm run skill-creator:desc-loop -- morph-js-sdk # optional extra flags after -- -# npm run skill-creator:desc-loop -- morph-js-sdk -- --max-iterations 3 --holdout 0.3 +# npm run skill-creator:desc-loop -- morph-js-sdk -- --max-iterations 3 --holdout 0.3 --runs-per-query 3 ``` -Results under `.local/skill-desc-opt//`. Merge printed **`best_description`** into `skills//SKILL.md`, then: +Uses upstream `run_loop.py` with **1 `claude -p` run per eval query** by default (same as `run-eval`). Results under `.local/skill-desc-opt//`. Merge printed **`best_description`** into `skills//SKILL.md`, then: 1. Re-stamp **`last_verified`** if you re-read sources. 2. Run **`npm test`**. From e06190ddde37e9a673caf46a1c1001dfd67bcbe0 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Wed, 20 May 2026 15:54:23 +0800 Subject: [PATCH 23/25] fix: skill test --runs-per-query --- __tests__/morph-skill-creator.test.mjs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/__tests__/morph-skill-creator.test.mjs b/__tests__/morph-skill-creator.test.mjs index 24157b1be..539e05a69 100644 --- a/__tests__/morph-skill-creator.test.mjs +++ b/__tests__/morph-skill-creator.test.mjs @@ -36,6 +36,16 @@ const evalPath = resolveTriggerEvalSetPath(ROOT, 'morph-js-sdk'); assert.ok(evalPath, 'morph-js-sdk trigger eval example should resolve'); assert.ok(evalPath.includes('skill-trigger-evals.morph-js-sdk'), evalPath); +const bridgeEval = resolveTriggerEvalSetPath(ROOT, 'morph-bridge'); +assert.ok(bridgeEval, 'morph-bridge trigger eval example should resolve'); +assert.ok(bridgeEval.includes('skill-trigger-evals.morph-bridge'), bridgeEval); + +assert.equal( + resolveTriggerEvalSetPath(ROOT, 'morph-tx-cost'), + null, + 'morph-tx-cost should have no trigger eval until added', +); + const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'morph-skill-creator-')); const fakeCreator = path.join(tmp, 'skill-creator'); fs.mkdirSync(path.join(fakeCreator, 'scripts'), { recursive: true }); @@ -59,7 +69,7 @@ assert.match(help.stdout, /run-eval/); const missingEval = spawnSync( process.execPath, - ['scripts/morph-skill-creator.mjs', 'run-eval', 'morph-bridge'], + ['scripts/morph-skill-creator.mjs', 'run-eval', 'morph-tx-cost'], { cwd: ROOT, encoding: 'utf8', From cc64d36449efac0bb946f697f67f8fc74bfe6717 Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Wed, 27 May 2026 10:42:27 +0800 Subject: [PATCH 24/25] fix(docs): address PR #145 CodeRabbit review feedback - Require last_verified/verified_against in morph-doc-agent; add Related Skills handoffs across core skills and morph-skill-ln (incl. morph-agent-ln). - Refactor morph-skill/morph-bridge.md to pointer-first; fix mirror MD lint. - Harden tests and scripts (freshness future dates, skill-creator paths, CLI --out, subprocess timeouts); pin skill-freshness-bot actions to SHAs. Co-authored-by: Cursor --- .github/workflows/skill-freshness-bot.yml | 10 +- __tests__/examples-viem-alt-fee.test.mjs | 2 + __tests__/markdown-actions-routes.test.mjs | 10 +- .../morph-dapp-code-review-skill.test.mjs | 8 +- __tests__/morph-doc-agent.test.mjs | 10 ++ __tests__/morph-rails-skill.test.mjs | 30 +++--- __tests__/morph-skill-creator-agent.test.mjs | 1 + __tests__/morph-skill-creator.test.mjs | 23 +++- __tests__/morph-skill-ln.test.mjs | 2 + __tests__/skill-freshness-report.test.mjs | 38 ++++++- agents/morph-doc-agent.md | 3 +- agents/morph-skill-creator-agent.md | 1 + scripts/lib/skill-creator-path.mjs | 15 ++- scripts/lib/skill-freshness.mjs | 10 ++ scripts/morph-skill-creator.mjs | 17 ++- scripts/skill-freshness-report.mjs | 7 +- skills/morph-contracts/SKILL.md | 6 ++ skills/morph-dapp-codegen/SKILL.md | 5 +- skills/morph-js-sdk/SKILL.md | 6 ++ skills/morph-rails/SKILL.md | 7 ++ skills/morph-skill-ln/SKILL.md | 6 +- skills/morph-skill/morph-7702.md | 2 +- skills/morph-skill/morph-altfee.md | 2 +- skills/morph-skill/morph-bridge.md | 101 +++++------------- skills/morph-skill/morph-identity.md | 2 +- skills/morph-skill/morph-x402.md | 2 +- skills/morph-tx-cost/SKILL.md | 7 ++ skills/morph-verify-contracts/SKILL.md | 6 ++ 28 files changed, 218 insertions(+), 121 deletions(-) diff --git a/.github/workflows/skill-freshness-bot.yml b/.github/workflows/skill-freshness-bot.yml index 8e28aa5ef..e246bd7ef 100644 --- a/.github/workflows/skill-freshness-bot.yml +++ b/.github/workflows/skill-freshness-bot.yml @@ -20,10 +20,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + with: + persist-credentials: false - name: Setup Node - uses: actions/setup-node@v4 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: '20' cache: npm @@ -34,14 +36,14 @@ jobs: node scripts/skill-freshness-report.mjs --json --out .local/skill-freshness-report.json - name: Upload report artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: skill-freshness-report path: .local/skill-freshness-report.json retention-days: 30 - name: Sync tracking issue - uses: actions/github-script@v7 + uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7 env: REPORT_PATH: .local/skill-freshness-report.json with: diff --git a/__tests__/examples-viem-alt-fee.test.mjs b/__tests__/examples-viem-alt-fee.test.mjs index a29273242..4253bf0fb 100644 --- a/__tests__/examples-viem-alt-fee.test.mjs +++ b/__tests__/examples-viem-alt-fee.test.mjs @@ -21,6 +21,7 @@ for (const f of ["package.json", "send-alt-fee.mjs", ".env.example"]) { const check = spawnSync(process.execPath, ["--check", SCRIPT], { encoding: "utf8", + timeout: 15000, }); assert.equal(check.status, 0, check.stderr || "node --check send-alt-fee.mjs"); @@ -31,6 +32,7 @@ const dry = spawnSync( cwd: EXAMPLE_DIR, encoding: "utf8", env: { ...process.env, MORPH_DRY_RUN: "1" }, + timeout: 15000, } ); assert.equal(dry.status, 0, dry.stderr || dry.stdout); diff --git a/__tests__/markdown-actions-routes.test.mjs b/__tests__/markdown-actions-routes.test.mjs index 221c60cab..0e0f092ed 100644 --- a/__tests__/markdown-actions-routes.test.mjs +++ b/__tests__/markdown-actions-routes.test.mjs @@ -29,12 +29,14 @@ const dropdownSrc = fs.readFileSync( path.join(ROOT, 'src/components/MarkdownActionsDropdown/index.js'), 'utf8' ); -assert.ok( - rootSrc.includes("from '../utils/isMarkdownActionsPathname'"), +assert.match( + rootSrc, + /from\s+['"]\.\.\/utils\/isMarkdownActionsPathname(?:\.js)?['"]/, 'Root.js should use isMarkdownActionsPathname' ); -assert.ok( - dropdownSrc.includes("from '../../utils/isMarkdownActionsPathname'"), +assert.match( + dropdownSrc, + /from\s+['"]\.\.\/\.\.\/utils\/isMarkdownActionsPathname(?:\.js)?['"]/, 'MarkdownActionsDropdown should use isMarkdownActionsPathname' ); assert.ok( diff --git a/__tests__/morph-dapp-code-review-skill.test.mjs b/__tests__/morph-dapp-code-review-skill.test.mjs index e3628300b..293da409c 100644 --- a/__tests__/morph-dapp-code-review-skill.test.mjs +++ b/__tests__/morph-dapp-code-review-skill.test.mjs @@ -13,9 +13,11 @@ const SKILL_PATH = path.join(ROOT, 'skills/morph-dapp-code-review/SKILL.md'); const content = fs.readFileSync(SKILL_PATH, 'utf8'); -assert.match(content, /^---\r?\n[\s\S]*?\r?\n---/, 'should have YAML frontmatter'); -assert.match(content, /^name:\s*morph-dapp-code-review\s*$/m, 'name must equal directory'); -assert.match(content, /Use when|当用户/i, 'description should include trigger phrasing'); +const fm = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); +assert.ok(fm, 'should have YAML frontmatter'); +const frontmatter = fm[1]; +assert.match(frontmatter, /^name:\s*morph-dapp-code-review\s*$/m, 'name must equal directory'); +assert.match(frontmatter, /Use when|当用户/i, 'description should include trigger phrasing'); for (const heading of [ '## When to use', diff --git a/__tests__/morph-doc-agent.test.mjs b/__tests__/morph-doc-agent.test.mjs index 9bea8bc1c..f46619acd 100644 --- a/__tests__/morph-doc-agent.test.mjs +++ b/__tests__/morph-doc-agent.test.mjs @@ -34,6 +34,16 @@ assert.match( 'description should include trigger phrasing so IDE routing can match it', ); assert.match(content, /frontmatter|YAML/i, 'body should stress frontmatter/YAML'); +assert.match( + content, + /last_verified.*verified_against|verified_against.*last_verified/i, + 'should require last_verified and verified_against in frontmatter guidance', +); +assert.doesNotMatch( + content, + /Recommended frontmatter.*last_verified/i, + 'last_verified should not be labeled optional/recommended only', +); assert.match(content, /skills\/<.*>\/SKILL\.md|skills\/morph-/i, 'should point to skills//SKILL.md path'); assert.match( content, diff --git a/__tests__/morph-rails-skill.test.mjs b/__tests__/morph-rails-skill.test.mjs index f0ea69330..2f1d73e68 100644 --- a/__tests__/morph-rails-skill.test.mjs +++ b/__tests__/morph-rails-skill.test.mjs @@ -18,22 +18,20 @@ assert.match( 'frontmatter name should be morph-rails' ); assert.ok(content.includes('description:'), 'should include description field'); -assert.ok( - content.includes('docs/morph-rails/0-overview.md'), - 'should cite 0-overview as source of truth' -); -assert.ok( - content.includes('docs/about-morph/morph-rails.md'), - 'should cite about-morph morph-rails' -); -assert.ok( - content.includes('docs/morph-rails/agentic-payment/1-x402-facilitator.md'), - 'should route x402 details to 1-x402-facilitator doc' -); -assert.ok( - content.includes('docs/about-morph/10-altfeetx.md'), - 'should route AltFee signing to 10-altfeetx doc' -); +const REQUIRED_DOC_PATHS = [ + 'docs/morph-rails/0-overview.md', + 'docs/about-morph/morph-rails.md', + 'docs/morph-rails/agentic-payment/1-x402-facilitator.md', + 'docs/about-morph/10-altfeetx.md', +]; + +for (const relPath of REQUIRED_DOC_PATHS) { + assert.ok(content.includes(relPath), `should reference ${relPath}`); + assert.ok( + fs.existsSync(path.join(ROOT, relPath)), + `referenced doc is missing: ${relPath}`, + ); +} assert.ok( content.includes('morph-js-sdk'), 'should route to morph-js-sdk' diff --git a/__tests__/morph-skill-creator-agent.test.mjs b/__tests__/morph-skill-creator-agent.test.mjs index 7d6a98f57..67db83709 100644 --- a/__tests__/morph-skill-creator-agent.test.mjs +++ b/__tests__/morph-skill-creator-agent.test.mjs @@ -30,6 +30,7 @@ assert.match(desc, /skill-creator|eval/i); assert.match(desc, /Use when|when the user/i); assert.match(content, /morph-skill-creator\/SKILL\.md|skills\/morph-skill-creator/); assert.match(content, /morph-doc-agent/); +assert.match(content, /skills\/README\.md|skill-ln/i); assert.match(content, /npm test/); console.log('morph-skill-creator-agent: ok'); diff --git a/__tests__/morph-skill-creator.test.mjs b/__tests__/morph-skill-creator.test.mjs index 539e05a69..200d93ca2 100644 --- a/__tests__/morph-skill-creator.test.mjs +++ b/__tests__/morph-skill-creator.test.mjs @@ -41,9 +41,9 @@ assert.ok(bridgeEval, 'morph-bridge trigger eval example should resolve'); assert.ok(bridgeEval.includes('skill-trigger-evals.morph-bridge'), bridgeEval); assert.equal( - resolveTriggerEvalSetPath(ROOT, 'morph-tx-cost'), + resolveTriggerEvalSetPath(ROOT, '__nonexistent-skill-for-test__'), null, - 'morph-tx-cost should have no trigger eval until added', + 'unknown skill id should resolve to no trigger eval set', ); const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'morph-skill-creator-')); @@ -52,10 +52,29 @@ fs.mkdirSync(path.join(fakeCreator, 'scripts'), { recursive: true }); fs.writeFileSync(path.join(fakeCreator, 'SKILL.md'), '---\nname: skill-creator\n---\n', 'utf8'); fs.writeFileSync(path.join(fakeCreator, 'scripts', 'run_loop.py'), '# stub\n', 'utf8'); fs.writeFileSync(path.join(fakeCreator, 'scripts', 'run_eval.py'), '# stub\n', 'utf8'); +fs.writeFileSync(path.join(fakeCreator, 'scripts', 'quick_validate.py'), '# stub\n', 'utf8'); +fs.writeFileSync( + path.join(fakeCreator, 'scripts', 'aggregate_benchmark.py'), + '# stub\n', + 'utf8', +); const prev = process.env.MORPH_SKILL_CREATOR_ROOT; process.env.MORPH_SKILL_CREATOR_ROOT = fakeCreator; assert.equal(resolveSkillCreatorInstall()?.root, fakeCreator); + +const incomplete = path.join(tmp, 'skill-creator-incomplete'); +fs.mkdirSync(path.join(incomplete, 'scripts'), { recursive: true }); +fs.writeFileSync(path.join(incomplete, 'SKILL.md'), '---\nname: skill-creator\n---\n', 'utf8'); +fs.writeFileSync(path.join(incomplete, 'scripts', 'run_loop.py'), '# stub\n', 'utf8'); +fs.writeFileSync(path.join(incomplete, 'scripts', 'run_eval.py'), '# stub\n', 'utf8'); +process.env.MORPH_SKILL_CREATOR_ROOT = incomplete; +assert.throws( + () => resolveSkillCreatorInstall(), + /incomplete|missing/i, + 'resolveSkillCreatorInstall should throw when helper scripts are missing', +); +process.env.MORPH_SKILL_CREATOR_ROOT = fakeCreator; if (prev === undefined) delete process.env.MORPH_SKILL_CREATOR_ROOT; else process.env.MORPH_SKILL_CREATOR_ROOT = prev; diff --git a/__tests__/morph-skill-ln.test.mjs b/__tests__/morph-skill-ln.test.mjs index 604d233fe..2b2c3e9df 100644 --- a/__tests__/morph-skill-ln.test.mjs +++ b/__tests__/morph-skill-ln.test.mjs @@ -22,6 +22,8 @@ function run(args, env = {}) { cwd: ROOT, encoding: 'utf8', env: { ...process.env, ...env }, + timeout: 15000, + maxBuffer: 1024 * 1024, }); return { status: r.status, stdout: r.stdout ?? '', stderr: r.stderr ?? '' }; } diff --git a/__tests__/skill-freshness-report.test.mjs b/__tests__/skill-freshness-report.test.mjs index ce7711e04..d1bbac267 100644 --- a/__tests__/skill-freshness-report.test.mjs +++ b/__tests__/skill-freshness-report.test.mjs @@ -2,6 +2,7 @@ * Locks skill-freshness-report JSON schema and shared date parsing. */ import assert from 'node:assert/strict'; +import { spawnSync } from 'node:child_process'; import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; @@ -33,7 +34,11 @@ assert.equal( for (const w of report.warnings) { assert.ok(w.skillId && typeof w.skillId === 'string'); - assert.ok(['missing_last_verified', 'invalid_last_verified', 'stale'].includes(w.code)); + assert.ok( + ['missing_last_verified', 'invalid_last_verified', 'future_last_verified', 'stale'].includes( + w.code, + ), + ); assert.ok(w.message.includes(w.skillId)); } @@ -62,6 +67,37 @@ assert.equal(warnings[0].code, 'stale'); assert.equal(warnings[0].skillId, 'tmp-stale-skill'); assert.ok(warnings[0].ageDays > 90); +const tmpFuture = fs.mkdtempSync(path.join(os.tmpdir(), 'morph-freshness-future-')); +const tmpFutureSkill = path.join(tmpFuture, 'skills', 'tmp-future-skill'); +fs.mkdirSync(tmpFutureSkill, { recursive: true }); +fs.writeFileSync( + path.join(tmpFutureSkill, 'SKILL.md'), + `--- +name: tmp-future-skill +description: "Use when testing skill freshness future last_verified detection in CI." +last_verified: 2099-01-01 +--- +# tmp +`, + 'utf8', +); +const { warnings: futureWarnings } = collectFreshnessWarnings(path.join(tmpFuture, 'skills'), { + now: fixedNow, +}); +assert.equal(futureWarnings.length, 1); +assert.equal(futureWarnings[0].code, 'future_last_verified'); +assert.equal(futureWarnings[0].skillId, 'tmp-future-skill'); +assert.ok(futureWarnings[0].ageDays < 0); +fs.rmSync(tmpFuture, { recursive: true, force: true }); + +const badOut = spawnSync( + process.execPath, + ['scripts/skill-freshness-report.mjs', '--out', '--json'], + { cwd: ROOT, encoding: 'utf8' }, +); +assert.notEqual(badOut.status, 0, '--out without a path should fail'); +assert.match(`${badOut.stdout}${badOut.stderr}`, /--out requires/i); + fs.rmSync(tmpRoot, { recursive: true, force: true }); console.log('skill-freshness-report: ok'); diff --git a/agents/morph-doc-agent.md b/agents/morph-doc-agent.md index 8dcf720a2..4f4298131 100644 --- a/agents/morph-doc-agent.md +++ b/agents/morph-doc-agent.md @@ -15,8 +15,7 @@ You are **morph-doc-agent**: in the `morph-doc` repository, you turn a user's ** The output is an **Agent Skill**: the main file is `SKILL.md`, with optional `references/`, `scripts/`, `assets/`. Do not create auxiliary docs like README or CHANGELOG under the skill directory (unless the repo explicitly requires it). 2. **Write "docs" to the SKILL spec** - - **Required YAML frontmatter**: `name` (matches directory name, lowercase + hyphens) and `description` (third-person, clearly states capability boundary and **trigger scenarios** to help the model route). - - **Recommended frontmatter**: `last_verified` (ISO date) and `verified_against` (list of source paths). See [`VISION.md`](https://github.com/morph-l2/morph-doc/blob/main/VISION.md) § Skill Verification Metadata for semantics and the 90-day decay rule. + - **Required YAML frontmatter**: `name` (matches directory name, lowercase + hyphens), `description` (third-person, clearly states capability boundary and **trigger scenarios** to help the model route), `last_verified` (ISO date `YYYY-MM-DD`), and `verified_against` (list of source paths cross-checked for facts). See [`VISION.md`](https://github.com/morph-l2/morph-doc/blob/main/VISION.md) § Skill Verification Metadata for semantics and the **90-day decay** rule — missing or stale `last_verified` emits warnings in `npm test`. - **Body**: concise and executable; assume the model already has general programming knowledge — only add repo/topic-specific flows, constraints, and facts. - **Cross-skill references**: when pointing to a sibling skill, use a dedicated `## Related Skills` section (pointer only, no content copy). See [`VISION.md`](https://github.com/morph-l2/morph-doc/blob/main/VISION.md) § Cross-Skill References. diff --git a/agents/morph-skill-creator-agent.md b/agents/morph-skill-creator-agent.md index 0c477f9cf..9da1ee1e4 100644 --- a/agents/morph-skill-creator-agent.md +++ b/agents/morph-skill-creator-agent.md @@ -21,6 +21,7 @@ You are **morph-skill-creator-agent**: improve and verify **morph-doc** `skills/ | Bridge playbook | `skills/morph-skill-creator/SKILL.md` | | CLI | `scripts/morph-skill-creator.mjs` | | Upstream | `MORPH_SKILL_CREATOR_ROOT` or `vendor/skill-creator` after `npm run skill-creator:install` | +| IDE mirrors / symlink | [`skills/README.md`](https://github.com/morph-l2/morph-doc/blob/main/skills/README.md) — `npm run skill-ln` / `morph-skill-ln` | | Authoring sibling | `agents/morph-doc-agent.md` | ## Routing diff --git a/scripts/lib/skill-creator-path.mjs b/scripts/lib/skill-creator-path.mjs index 095182711..c05f18147 100644 --- a/scripts/lib/skill-creator-path.mjs +++ b/scripts/lib/skill-creator-path.mjs @@ -31,12 +31,23 @@ export function resolveSkillCreatorInstall() { const runEval = path.join(root, 'scripts', 'run_eval.py'); const skillMd = path.join(root, 'SKILL.md'); if (fs.existsSync(runLoop) && fs.existsSync(skillMd)) { + const quickValidate = path.join(root, 'scripts', 'quick_validate.py'); + const aggregateBenchmark = path.join(root, 'scripts', 'aggregate_benchmark.py'); + const required = { runLoop, runEval, quickValidate, aggregateBenchmark }; + const missing = Object.entries(required) + .filter(([, p]) => !fs.existsSync(p)) + .map(([key]) => key); + if (missing.length > 0) { + throw new Error( + `skill-creator install at ${root} is incomplete; missing: ${missing.join(', ')}`, + ); + } return { root, runLoop, runEval, - quickValidate: path.join(root, 'scripts', 'quick_validate.py'), - aggregateBenchmark: path.join(root, 'scripts', 'aggregate_benchmark.py'), + quickValidate, + aggregateBenchmark, }; } } diff --git a/scripts/lib/skill-freshness.mjs b/scripts/lib/skill-freshness.mjs index bb87fd2b1..3048a61f2 100644 --- a/scripts/lib/skill-freshness.mjs +++ b/scripts/lib/skill-freshness.mjs @@ -115,6 +115,16 @@ export function collectFreshnessWarnings(skillsDir, options = {}) { } const ageDays = Math.floor((now - lastVerified.getTime()) / MS_PER_DAY); + if (ageDays < 0) { + warnings.push({ + skillId, + code: 'future_last_verified', + message: `skills/${skillId}/SKILL.md last_verified is in the future: ${lastVerifiedRaw}`, + ageDays, + lastVerified: lastVerifiedRaw, + }); + continue; + } if (ageDays > thresholdDays) { warnings.push({ skillId, diff --git a/scripts/morph-skill-creator.mjs b/scripts/morph-skill-creator.mjs index b78bb999c..8d3c85952 100644 --- a/scripts/morph-skill-creator.mjs +++ b/scripts/morph-skill-creator.mjs @@ -197,10 +197,19 @@ function cmdValidate(skillId) { if (r.stdout) process.stdout.write(r.stdout); if (r.stderr) process.stderr.write(r.stderr); if (r.status !== 0) { - console.warn( - '\nNote: morph-doc Skills use last_verified / verified_against — upstream quick_validate may reject them.', - '\nTreat morph inventory + npm test as authoritative for Morph metadata.', - ); + const detail = [r.stderr, r.stdout].filter(Boolean).join('\n').trim(); + const morphMetadataOnly = + /last_verified/i.test(detail) && /verified_against/i.test(detail); + if (morphMetadataOnly) { + console.warn( + '\nNote: upstream quick_validate rejects Morph `last_verified` / `verified_against`.', + '\nTreat morph inventory + npm test as authoritative for Morph metadata.', + ); + } else { + throw new Error( + `upstream quick_validate failed (exit ${r.status ?? 'unknown'})${detail ? `:\n${detail}` : ''}`, + ); + } } else { console.log('upstream quick_validate: ok'); } diff --git a/scripts/skill-freshness-report.mjs b/scripts/skill-freshness-report.mjs index f9e14111b..812e2ef1f 100644 --- a/scripts/skill-freshness-report.mjs +++ b/scripts/skill-freshness-report.mjs @@ -26,7 +26,12 @@ function parseArgs(argv) { const a = argv[i]; if (a === '--json') { json = true; - } else if (a === '--out' && argv[i + 1]) { + } else if (a === '--out') { + const next = argv[i + 1]; + if (!next || next.startsWith('-')) { + console.error('Error: --out requires a file path (not another flag).'); + process.exit(1); + } outPath = argv[++i]; } else if (a === '-h' || a === '--help') { console.log(`Usage: node scripts/skill-freshness-report.mjs [--json] [--out ]`); diff --git a/skills/morph-contracts/SKILL.md b/skills/morph-contracts/SKILL.md index 099862c35..881beb937 100644 --- a/skills/morph-contracts/SKILL.md +++ b/skills/morph-contracts/SKILL.md @@ -120,6 +120,12 @@ export MORPH_IDENTITY_REGISTRY="0x8004A818BFB912233c491871b3d84c89A494BD9e" export MORPH_REPUTATION_REGISTRY="0x8004B663056A597Dffe9eCcC1965A193B7388713" ``` +## Related Skills + +- `morph-bridge` — L1↔L2 native bridge deposit/withdraw flows +- `morph-js-sdk` — client adapters and chain presets +- `morph-tx-cost` — L2 + L1 fee estimation and RPC errors + ## Self-Check - [ ] Are general contract addresses deferred to `1-contracts.md` as the authoritative source? diff --git a/skills/morph-dapp-codegen/SKILL.md b/skills/morph-dapp-codegen/SKILL.md index 8ece99491..ae90e9f5a 100644 --- a/skills/morph-dapp-codegen/SKILL.md +++ b/skills/morph-dapp-codegen/SKILL.md @@ -1,9 +1,10 @@ --- name: morph-dapp-codegen description: "Morph dApp TDD codegen: take a planning document produced by morph-dapp-planning, write failing tests first, then implementation, looping tests + lint to green for Solidity / JS SDK / frontend code. Use ONLY when planning/.md already exists on disk — never use this skill for a fresh requirement that has no planning document yet (run morph-dapp-planning or morph-dapp-workflow first). Use when the user has an approved planning file and wants to run the Red→Green loop, land code against it, or backfill tests." -last_verified: 2026-05-19 +last_verified: 2026-05-27 verified_against: - docs/build-on-morph/sdk/js-sdk.mdx + - docs/about-morph/10-altfeetx.md - docs/build-on-morph/developer-resources/1-contracts.md - skills/morph-js-sdk/SKILL.md - skills/morph-contracts/SKILL.md @@ -88,7 +89,7 @@ run the full suite → wrap up**. - Files changed - Tests added / updated - Diffs from the planning document, if any -4. **Do not auto commit in any phase** (including Red) unless the user explicitly asks. +4. **Do not auto-commit in any phase** (including Red) unless the user explicitly asks. ## Morph-specific codegen checklist diff --git a/skills/morph-js-sdk/SKILL.md b/skills/morph-js-sdk/SKILL.md index 0ffda00b4..3aab15982 100644 --- a/skills/morph-js-sdk/SKILL.md +++ b/skills/morph-js-sdk/SKILL.md @@ -76,6 +76,12 @@ await signer.sendTransaction({ 4. **Site Demo**: The React Demo referenced in `js-sdk.mdx` only runs inside the Docusaurus site; when helping users in IDE, use the static code blocks from the doc — do not assume `@site/...` components can be imported. 5. **Do not fabricate exports**: Function names, types, and re-exported chain objects follow the doc and installed package `d.ts`; when uncertain, ask the user to paste their `package.json` version or copy the API table from the doc themselves. +## Related Skills + +- `morph-contracts` — chain IDs, RPC URLs, predeploy and bridge contract addresses +- `morph-tx-cost` — total fee (L2 execution + L1 data) before Alt Fee token payment +- `morph-rails` — PayFi / x402 / Reference Key routing when the question is payment rails, not raw SDK API + ## Self-Check - Is the answer backed by `js-sdk.mdx`? diff --git a/skills/morph-rails/SKILL.md b/skills/morph-rails/SKILL.md index 0f28d3ac9..414960226 100644 --- a/skills/morph-rails/SKILL.md +++ b/skills/morph-rails/SKILL.md @@ -56,6 +56,13 @@ Skill Hub / discovery endpoint → HTTP `402 Payment Required` → **x402 Facili | Merchant order reconciliation, on-chain reference lookup | `docs/morph-rails/infra-solutions/2-reference-key.md` (check the page for mainnet availability timeline) | | Agent-side Skill list, `morph-wallet` / `morph-altfee` etc. | `docs/morph-rails/agentic-payment/2-morph-skill.md`, [morph-skill GitHub](https://github.com/morph-l2/morph-skill) | +## Related Skills + +- `morph-js-sdk` — JS/TS client, chain preset, Alt Fee signing helpers +- `morph-tx-cost` — ETH-denominated L2+L1 fee model (before token gas) +- `morph-contracts` — contract addresses and chain IDs for Rails demos +- External pack: `skills/morph-skill/morph-x402.md`, `skills/morph-skill/morph-altfee.md` — CLI/runtime mirrors (see `docs/morph-rails/agentic-payment/2-morph-skill.md`) + ## Common Boundary Confusion - **Morph Rails ≠ x402 only**: x402 is one key protocol for **Agent-to-Agent micropayments** within the Rails ecosystem; use this skill when discussing the full payment stack, and open **`1-x402-facilitator.md`** for verify/settle/HMAC/CLI details. diff --git a/skills/morph-skill-ln/SKILL.md b/skills/morph-skill-ln/SKILL.md index 8bd2a8f04..01f387805 100644 --- a/skills/morph-skill-ln/SKILL.md +++ b/skills/morph-skill-ln/SKILL.md @@ -68,8 +68,10 @@ This SKILL only describes **how to use the script to create symlinks**; conventi ## Related Skills -- `morph-dapp-workflow` — orchestrated dApp flow; points here when child skills are not symlinked yet (`skills/README.md` + `scripts/morph-skill-ln`) -- `morph-js-sdk` / `morph-contracts` — common Morph topic skills users link for chain/SDK work (parallel **agent** definitions use `scripts/morph-agent-ln`; see **`skills/README.md`** → *Linking agents*) +- `skills/README.md` ([Skills overview](/skills/)) — IDE mirror paths and `npm run skill-ln` / `morph-skill-ln` usage +- `morph-agent-ln` — symlink `agents/.md` into `.cursor/.claude/.openclaw/.windsurf/agents` (pair with skill links above) +- `morph-dapp-workflow` — orchestrated dApp flow; points here when child skills are not symlinked yet +- `morph-js-sdk` / `morph-contracts` — common Morph topic skills users link for chain/SDK work ## Self-Check diff --git a/skills/morph-skill/morph-7702.md b/skills/morph-skill/morph-7702.md index e02e322de..b9c89e913 100644 --- a/skills/morph-skill/morph-7702.md +++ b/skills/morph-skill/morph-7702.md @@ -41,7 +41,7 @@ EIP-7702 EOA delegation and atomic batch calls on Morph L2 via tx type `0x04`. Delegated EOAs have on-chain code starting with `0xef0100` followed by the 20-byte delegate address. Authorization hash format: -``` +```text keccak256(0x05 || RLP([chainId, contract, nonce])) ``` diff --git a/skills/morph-skill/morph-altfee.md b/skills/morph-skill/morph-altfee.md index f0b75fcd4..1b37a323c 100644 --- a/skills/morph-skill/morph-altfee.md +++ b/skills/morph-skill/morph-altfee.md @@ -53,7 +53,7 @@ Supported IDs (from upstream): ## Fee formula -``` +```text feeLimit >= (gasFeeCap × gasLimit + L1DataFee) × tokenScale / feeRate ``` diff --git a/skills/morph-skill/morph-bridge.md b/skills/morph-skill/morph-bridge.md index 6e13a2b68..68c456095 100644 --- a/skills/morph-skill/morph-bridge.md +++ b/skills/morph-skill/morph-bridge.md @@ -10,87 +10,40 @@ upstream_repo: https://github.com/morph-l2/morph-skill # Morph Bridge (Cross-chain Swap) -> **Looking for the L1↔L2 native bridge?** This page covers Bulbaswap-based -> cross-chain swap across **6 chains** with JWT order management. For Morph's -> canonical L1↔L2 deposit / withdraw via `L1GatewayRouter` and -> `proveAndRelayMessage`, see [Morph Bridge (L1↔L2)](/skills/morph-bridge/SKILL). +> **L1↔L2 native bridge?** Use [Morph Bridge (L1↔L2)](/skills/morph-bridge/SKILL) — `L1GatewayRouter`, deposits, withdrawals, and `proveAndRelayMessage`. This page is the **Bulbaswap cross-chain swap** mirror only. -Cross-chain swap via the Bulbaswap Cross-Chain Swap API. Stateful orders -require JWT auth obtained from `bridge-login`. +## Prompt triggers -## Canonical reference +| Trigger | CLI / flow | +|---------|------------| +| List chains or tokens | `bridge-chains`, `bridge-tokens`, `bridge-token-search` | +| Quote or balance (no JWT) | `bridge-quote`, `bridge-balance` | +| Authenticate for orders | `bridge-login` (EIP-191 → 24h JWT) | +| Create / submit / one-shot swap | `bridge-make-order`, `bridge-submit-order`, `bridge-swap` | +| Track orders | `bridge-order`, `bridge-history` | -[`skills/morph-bridge/SKILL.md` ↗](https://github.com/morph-l2/morph-skill/blob/main/skills/morph-bridge/SKILL.md) +## Execution Steps -## Supported chains +1. **Disambiguate bridge type** — cross-chain swap (this page) vs Morph L1↔L2 native bridge ([`skills/morph-bridge/SKILL.md`](/skills/morph-bridge/SKILL)). +2. **Read-only path** — run `bridge-chains` / `bridge-tokens` / `bridge-quote` / `bridge-balance` without JWT. +3. **Stateful swap path** — `bridge-login` → `bridge-make-order` (unsigned txs) → sign locally → `bridge-submit-order`; or use `bridge-swap` for make+sign+submit when the user approves one-shot execution. +4. **Confirm before writes** — get explicit user approval before `bridge-make-order`, `bridge-submit-order`, or `bridge-swap`. +5. **On auth errors** — JWT expires after 24h; re-run `bridge-login`. -| Chain ID | Name | -|---|---| -| `morph` | Morph | -| `eth` | Ethereum | -| `base` | Base | -| `bnb` | BNB Chain | -| `arbitrum` | Arbitrum | -| `matic` | Polygon | +## Deep links -## When to use +- Upstream playbook: [`github.com/morph-l2/morph-skill` — morph-bridge SKILL](https://github.com/morph-l2/morph-skill/blob/main/skills/morph-bridge/SKILL.md) +- L1↔L2 native bridge (this repo): [`skills/morph-bridge/SKILL.md`](/skills/morph-bridge/SKILL) +- BGW social wallet handoff: [social-wallet-integration](https://github.com/morph-l2/morph-skill/blob/main/docs/social-wallet-integration.md) -- Bridge tokens across the 6 supported chains -- Get a cross-chain swap quote -- Search tokens on multiple chains; check balance + USD price on any chain -- Create, sign, submit, or track cross-chain swap orders +## Safety (short) -## Capability summary +- Private keys stay local (EIP-191 in `bridge-login` only); never send keys to the API. +- JWT in `Authorization: Bearer` headers; re-auth on expiry. +- Native tokens use `""` in the API; CLI normalizes this. -### No-auth (read-only) +## Related Skills -| Command | Flags | Purpose | -|---|---|---| -| `bridge-chains` | (no flags) | List supported chains | -| `bridge-tokens` | `[--chain ]` | List tokens (optionally on a single chain) | -| `bridge-token-search` | `--keyword [--chain ]` | Search tokens by keyword | -| `bridge-quote` | `--from-chain --from-token --amount --to-chain --to-token --from-address` | Cross-chain swap quote | -| `bridge-balance` | `--chain --token --address` | Token balance + USD price on any chain | - -### Auth setup - -| Command | Flags | Purpose | -|---|---|---| -| `bridge-login` | `--private-key` | EIP-191 sign → 24h JWT | - -### JWT-required - -| Command | Flags | Purpose | -|---|---|---| -| `bridge-make-order` | `--jwt --from-chain --from-contract --from-amount --to-chain --to-contract --to-address --market [--slippage] [--feature]` | Create an order (returns unsigned txs) | -| `bridge-submit-order` | `--jwt --order-id --signed-txs` | Submit signed txs to the API | -| `bridge-swap` | `--jwt --from-chain --from-contract --from-amount --to-chain --to-contract [--to-address] --market [--slippage] [--feature] --private-key` | One-step: make + sign + submit | -| `bridge-order` | `--jwt --order-id` | Track an order by ID | -| `bridge-history` | `--jwt [--page] [--page-size] [--status]` | List user's order history | - -`--to-address` defaults to sender address if omitted on `bridge-swap`. - -## Safety rules (from upstream) - -- Private keys are only used locally for EIP-191 message signing in - `bridge-login`. They are never sent to the API. -- JWT tokens are sent as `Authorization: Bearer ` headers. They expire - after 24 hours. -- Always confirm with the user before executing `bridge-make-order` or - `bridge-swap`. -- Always confirm with the user before executing `bridge-submit-order`. -- JWT expiry: re-authenticate via `bridge-login` if you hit auth errors. -- Native token format: the Bridge API uses empty string `""` for native - tokens; the CLI handles this automatically. - -## Cross-skill integration - -- Pair `bridge-token-search` with `dex-quote` ([morph-dex](./morph-dex)) when - the user wants on-Morph swap as well as cross-chain -- Pair `bridge-balance` with `balance` / `token-balance` - ([morph-wallet](./morph-wallet)) for full multi-chain portfolio view -- Compare `bridge-quote` rates against `dex-quote` rates before deciding - same-chain vs cross-chain -- [BGW ↗](https://github.com/morph-l2/morph-skill/blob/main/docs/social-wallet-integration.md): - Social Login Wallet users should route execution through BGW's swap flow; - this skill still provides quotes and route reasoning +- [morph-dex](./morph-dex) — on-Morph swap quotes (`dex-quote`) +- [morph-wallet](./morph-wallet) — balances across chains +- [Morph Bridge (L1↔L2)](/skills/morph-bridge/SKILL) — canonical L1↔L2 deposit/withdraw diff --git a/skills/morph-skill/morph-identity.md b/skills/morph-skill/morph-identity.md index 4cebca2e7..1e5704af3 100644 --- a/skills/morph-skill/morph-identity.md +++ b/skills/morph-skill/morph-identity.md @@ -78,7 +78,7 @@ Hoodi testnet supported via the env overrides. The signed payload must match `AgentWalletSet(agentId,newWallet,owner,deadline)` on `ERC8004IdentityRegistry`, and the deadline must stay within the contract's -**5 minute window**. +**5-minute window**. ## Cross-skill integration diff --git a/skills/morph-skill/morph-x402.md b/skills/morph-skill/morph-x402.md index 28a57ec86..d521c7374 100644 --- a/skills/morph-skill/morph-x402.md +++ b/skills/morph-skill/morph-x402.md @@ -43,7 +43,7 @@ payer; Facilitator calls `receiveWithAuthorization` on the USDC contract). | `x402-register` | `--private-key 0x… [--save] [--name myagent]` | Register wallet → HMAC credentials | | `x402-verify` | `--payload '{…}' --requirements '{…}' --name myagent` | Verify payment signature (no on-chain action) | | `x402-settle` | `--payload '…' --requirements '…' --name myagent` | Settle on-chain (USDC transfer) | -| `x402-server` | `--pay-to 0x… --price 0.001 [--port 9000] [--path /api/data] [--dev | --name myagent]` | Run a paid HTTP server | +| `x402-server` | `--pay-to 0x… --price 0.001 [--port 9000] [--path /api/data] [--dev or --name myagent]` | Run a paid HTTP server | `x402-server` exposes: - `/api/free` — free, returns 200 diff --git a/skills/morph-tx-cost/SKILL.md b/skills/morph-tx-cost/SKILL.md index d75d7ea77..0d8ccf9ba 100644 --- a/skills/morph-tx-cost/SKILL.md +++ b/skills/morph-tx-cost/SKILL.md @@ -59,6 +59,13 @@ When transferring as much ETH as possible from a user's balance, you must subtra | Viem/Ethers client, chain preset, SDK package names | **`skills/morph-js-sdk/SKILL.md`** + `docs/build-on-morph/sdk/js-sdk.mdx` | | Mainnet / Hoodi contract and RPC quick reference | **`skills/morph-contracts/SKILL.md`** (if installed) | +## Related Skills + +- `morph-js-sdk` — RPC/client usage for `eth_gasPrice`, `eth_estimateGas`, adapters +- `morph-contracts` — `GasPriceOracle` and network constants +- `morph-bridge` — L1↔L2 bridge fees (distinct from per-tx L1 data fee on L2) +- Alt Fee signing: `docs/about-morph/10-altfeetx.md` (not duplicated here) + ## Common Boundary Confusion - **This skill**: explains **ETH-denominated** L2+L1 fee structure, display, and RPC errors. diff --git a/skills/morph-verify-contracts/SKILL.md b/skills/morph-verify-contracts/SKILL.md index 2d32586f9..278163dc2 100644 --- a/skills/morph-verify-contracts/SKILL.md +++ b/skills/morph-verify-contracts/SKILL.md @@ -79,6 +79,12 @@ For all methods: **Compiler version and Optimization settings must exactly match - Flattened Solidity: imported files must be inlined; use `forge flatten --output Flat.sol ./contracts/X.sol`. - Multi-part files: adjust import paths to same-level references; submit all dependency files together. +## Related Skills + +- `morph-contracts` — deployed addresses and explorer base URLs +- `morph-js-sdk` — chain objects when verification scripts use the Morph SDK +- `morph-bridge` — gateway contracts if verifying bridge-related deployments + ## Self-Check - [ ] Chain ID matches the target network (2818 mainnet / 2910 Hoodi). From 86a687a1d786e919017fc1c32f3694056b47eabc Mon Sep 17 00:00:00 2001 From: Danny Fu Date: Wed, 27 May 2026 10:55:33 +0800 Subject: [PATCH 25/25] fix: nav link --- docusaurus.config.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index b3663aadf..2ae554073 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -380,6 +380,13 @@ const config = { sidebarId: 'MorphChainSidebar', label: 'Morph Chain', }, + { + type: 'docSidebar', + position: 'left', + sidebarId: 'SkillsSidebar', + docsPluginId: 'skills', + label: 'Agent Skills', + }, { type: 'docSidebar', position: 'left', @@ -397,13 +404,6 @@ const config = { position: 'left', sidebarId: 'LearnSidebar', label: 'Learn', - }, - { - type: 'docSidebar', - position: 'left', - sidebarId: 'SkillsSidebar', - docsPluginId: 'skills', - label: 'Agent Skills', } ], },