diff --git a/ts/docs/plans/structured-output/PLAN.md b/ts/docs/plans/structured-output/PLAN.md index 92740edc5e..4c2bdda914 100644 --- a/ts/docs/plans/structured-output/PLAN.md +++ b/ts/docs/plans/structured-output/PLAN.md @@ -370,6 +370,23 @@ derived fallback (no throw, no regression): Client-side sort / filter on `TableBlock` in `chat-ui`, honoring `readonly` / `sortable` / `filterable`. chat-ui clients only. +**Phase 4b — client-side pagination (done).** Optional +`TableBlock.pageSize`: when set (and `rows.length > pageSize`), `chat-ui` +renders the first `pageSize` rows and reveals the rest in batches via a +"Show more" control. All rows still ship in one payload — this is a pure +rendering concern, so replay/DisplayLog stay unchanged and the +markdown/text fallbacks render every row. Pagination composes with sort +(re-caps after reorder) and filter (a live query suspends the cap and +shows all matches). No agent-driven/server-side paging: fetching more +rows on demand needs the same round-trip channel as row-actions and is +deferred with open question #3. + +**Pinned columns — reserved, not built.** `TableColumn.pinned?: "left" | +"right"` is carried in the type for forward-compat (like `cell.href` / +`block.action`) but no client wires up sticky rendering yet. Sticky +columns only pay off for wide, horizontally-scrolling tables, which no +adopter emits today; wire the `position: sticky` CSS when one does. + ### Phase 5 — First adopter: `github-cli` _(after 1; visually validated by 3)_ Rewrite `formatListResults` and the list/view actions in @@ -384,6 +401,27 @@ Example — the `prList` table: an `#id` **link** column → `url`, a **text** title column, a **badge** state column (`DRAFT`/`OPEN` colored by tone), a **code** branch column; `sortable: true`. +**Status: complete.** All display-producing paths now emit +`StructuredContent`: + +- List actions (`prList`, `issueList`, `myAssignedIssues`, `searchRepos`) + → `buildStructuredListResult` (heading + interactive table). +- `repoView` → `buildStructuredRepoView` (heading + `keyValue`). +- Dependabot alerts → `buildStructuredDependabotResult` (badge severity + table). +- Contributors → `buildStructuredContributorsResult` (ranked table). +- Single `prView` / `issueView` → `buildStructuredPrView` / + `buildStructuredIssueView` (heading + `keyValue` metadata + optional + body text block). +- Focused field answers (stars / forks / language / watchers / + description) → `buildStructuredField` (heading + single `keyValue` + pair + natural-language summary; `rawData` carries `{ repo, field, +value }`). + +Remaining markdown/text paths are intentional: mutation/create success +messages, `statusPrint`, and the raw-output fallback carry no structured +data. `githubCliStructuredResults.spec.ts` covers all builders. + ### Phase 6 — Programmatic "or otherwise" _(after 1 + 5)_ - `packages/commandExecutor/src/commandServer.ts` forwards `rawData` as @@ -393,6 +431,140 @@ by tone), a **code** branch column; `sortable: true`. to read `rawData` directly, dropping the `extractText` + `tryParseJson` workaround. +### Phase 7 — Broader agent rollout _(after 5; per-agent, parallelizable)_ + +`github-cli` is the reference adopter, but every list-, table-, or +record-shaped agent result throws away structure today. Convert the rest +in the order below. The order is driven by (a) how naturally the output +maps to blocks, (b) user-facing value, and (c) conversion cost. Each +agent follows the `github-cli` template: emit `StructuredContent` via +`createStructuredContent` / `createTable` / `fromRecords` with `rawData`, +keep the derived markdown/text fallback at parity, and update the +handler's unit tests. + +Agents already committed to custom HTML/iframe or a WebSocket/RPC bridge +(`image`, `video`, `settings`, `chat`, `code`, `visualStudio`, +`browser`, `markdown`, `montage`, `turtle`, `player`, `playerLocal`) are +**out of scope** for v1 — they render their own UI and don't flow through +the block-document fallback path. Short status/confirmation agents +(`timer`, `windowsClock`, `greeting`, `desktop`, `vampire`, +`androidMobile`, `powershell`, `utility`, `studio`) are **low value** and +deferred until a clear need appears. + +**Wave A — high fit (clear list/table/record output):** + +| # | Agent | Shape today | Target blocks | +| --- | ---------- | ---------------------------------- | --------------------------------------------------------------- | +| 1 | `list` | markdown bullet lists | `heading` + `list` | +| 2 | `calendar` | HTML event views (`appendDisplay`) | `heading` + `table` (agenda) + `card`/`keyValue` (event detail) | +| 3 | `email` | HTML message lists + threads | `heading` + `table` (inbox/list) + `keyValue` (message detail) | +| 4 | `weather` | text forecast | `keyValue` (current) + `table` (multi-day forecast) | +| 5 | `ipconfig` | markdown key/values | `heading` + `keyValue` (per-adapter sections) | + +**Wave B — medium fit (structured data mixed with text):** + +| # | Agent | Shape today | Target blocks | +| --- | --------------- | -------------------------- | ------------------------------------- | +| 6 | `discord` | text channel/message lists | `heading` + `list`/`table` | +| 7 | `taskflow` | text task listings | `table` (name / description / usage) | +| 8 | `onboarding` | markdown wizard status | `heading` + `keyValue` (phase status) | +| 9 | `screencapture` | image + markdown metadata | `image` + `heading`/`keyValue` | + +`osNotifications` was initially a Wave B candidate but is **out of scope**: +each notification is an individual toast/inline event pushed via +`context.notify` (single-line, intentionally plain text for clean CLI +rendering), not a list-shaped action result. Its action results are +short status confirmations. + +**Out of scope (v1):** `image`, `video`, `settings`, `chat`, `code`, +`visualStudio`, `browser`, `markdown`, `montage`, `turtle`, `player`, +`playerLocal` (custom UI / RPC bridge). + +**Deferred (low value):** `timer`, `windowsClock`, `greeting`, +`desktop`, `vampire`, `androidMobile`, `powershell`, `utility`, `studio` +(short text/status confirmations). + +### Phase 8 — RPC / custom-UI agents _(after 7; mostly out of scope)_ + +These are the twelve agents Wave A/B set aside as "custom UI / RPC +bridge." The distinguishing property is **where the display is produced**: +their user-facing output does not flow through +`ActionResult.displayContent` as flattened list/record text, so the +block-document model has nothing to convert. Three architectures: + +- **WebSocket/RPC bridge to an external process** — the agent forwards a + command and the _external_ client renders the result; the + `displayContent` path carries only status/error text. + - `code` → Coda VS Code extension (`codeAgentWebSocketServer.ts`; + display goes straight to the socket via + `actionIO.setDisplay(data.result)`). + - `visualStudio` → VS C# extension (`VisualStudioBridge`); only bridge + error text uses `createActionResultFromTextDisplay`. + - `player` (Spotify) / `playerLocal` — imperative playback commands; + results are errors + HTML player widgets, no list results on the + `displayContent` path. +- **Custom webapp (forked view process + Yjs/HTTP)** — a separate web + app owns rendering; agent results are "opening / updated" status text. + - `markdown`, `montage`, `turtle` (each forks a `site/` viewer). +- **Bespoke interactive HTML/JS** via + `createActionResultFromHtmlDisplayWithScript` / iframe — the payload is + a _pre-rendered_ stateful widget (forms, carousels, players), not + structured data + fallback. + - `image` (carousel), `video` (polling player), `settings` (forms), + `chat` (freeform LLM text + HTML-embedded images). + +**Verdict: only `browser` has a genuinely convertible result.** Its web +**search results** are produced by `generateWebSearchMarkdown()` and +returned through the normal `createActionResultFromMarkdownDisplay` path +(`browserActionHandler.mts` ~L1771) — a list of `{ title, url, domain, +snippet, relevanceScore }`. The browser's page-interaction actions +(navigate, screenshot, follow-link) stay on the extension-RPC path. + +#### Phase 8a — `browser` web-search → structured _(the one adopter)_ + +Convert `generateWebSearchMarkdown()`'s output to a `StructuredContent` +document: a heading (`Found N results for "query"`) + a **table** (or +`list`) with a link title column, domain, snippet, and a right-aligned +relevance column; `sortable: true`, `pageSize: 10`; carry the raw +`websites` array as `rawData`. Keep the existing entity creation +untouched. The knowledge-preview path +(`generateLiveKnowledgePreview`, ~L1521) emits HTML into the extension +and is **not** in scope here. + +- **Client caveat:** `browser` search results can surface in the Chrome/ + Edge extension, which has its **own** renderer and does not understand + `type: "structured"`. The SDK-derived markdown `alternates` (via + `getStructuredFallback`) cover it, but this must be **visually + verified in the extension** before shipping — if the extension renders + raw JSON instead of the markdown alternate, either update the + extension to prefer the alternate or keep this conversion behind the + shell/vscode surfaces only. + +#### Phase 8b — the rest: prerequisites, not work items + +The remaining eleven agents are **out of scope until their external +renderer understands `StructuredContent` (or reliably falls back to the +markdown/text alternate).** No agent-side change is worthwhile before +then, because the block document would either never reach a +block-capable renderer or would replace a richer bespoke widget with a +plain table. Concretely, a future effort would need: + +- **Extension/bridge renderers** (`code`, `visualStudio`, `browser` + extension) to consume `DisplayContent` and call `getContentForType` / + `getStructuredFallback` like `chat-ui` and `vscode-chat` do today. +- **Webapp viewers** (`markdown`, `montage`, `turtle`) — no change; their + content is documents/graphics, not tabular data. Leave as-is + permanently. +- **Widget agents** (`image`, `video`, `settings`, `chat`, `playerLocal`, + `player`) — would each need a redesign to separate _data_ from + _pre-rendered widget_ (e.g. `image` emitting `ImageBlock[]` instead of + a carousel iframe). Only pursue per-agent if a concrete UX need + arises; not a batch conversion. + +**Recommendation:** do **Phase 8a** (browser search) as an isolated, +visually-validated change; treat **8b** as documentation of +prerequisites, not a backlog to burn down. + ## Verification - `pnpm --filter agent-sdk test` + `pnpm run build agent-sdk` — @@ -434,6 +606,73 @@ by tone), a **code** branch column; `sortable: true`. 4. **Naming** — `StructuredContent` / `type: "structured"` vs `RichContent` / `"rich"`. Current lean: `structured`. +## Future enhancements (backlog) + +Ideas beyond the shipped scope (block document + sort/filter/pagination + +`rawData`). Not scheduled; pull into a phase when a concrete agent needs +it. Ordered roughly by value-to-effort within each group. + +### Interactivity (largest remaining feature) + +- **Row actions** (open question #3) — wire the reserved `cell.href` / + `block.action` fields so a row click can trigger an agent action + (merge a PR, reply to an email, delete a calendar event). Requires a + **client → agent transport** (a response channel back into the agent, + the same prerequisite as agent-driven paging). This is the natural + "v2" and unlocks a whole class of interactive agents. +- **Column visibility / reorder** — let the user hide or reorder columns + on wide tables (chat-ui only; pure client state). +- **Pinned columns** — `TableColumn.pinned` is already reserved; wire the + `position: sticky` CSS when a wide, horizontally-scrolling table + actually ships. + +### New block / cell types + +- **`progress` block** — determinate bar or spinner for long-running + agents (screencapture build, onboarding phases, calendar sign-in), + replacing today's streamed `kind: "status"` text. +- **`chart` block** — minimal bar/line/sparkline derived from `rawData` + (weather forecast, github contributor counts, dependabot severity). + Currently the iframe escape hatch is the only option (explicit v1 + non-goal). +- **Richer cell types** — `boolean` (checkmark), `duration`, + `relative-date` ("3 days ago"), `percent` (inline bar), `currency`. +- **Nested / expandable rows** — a row expands to a detail block (email → + body, PR → description); hooks into the reserved `block.action`. + +### Consistency & developer experience + +- **Extract remaining inline builders** — `email`, `discord`, `taskflow`, + `onboarding`, `screencapture` still build blocks inline. Pull them into + pure exported functions + unit tests, matching the + github-cli / calendar / weather / ipconfig / list pattern. Closes the + last test-coverage gap. +- **Shared column-spec DSL** — a typed `{ field, header, type, format }` + spec on top of `fromRecords` to cut per-adopter cell-mapping + boilerplate and standardize date/badge/number rendering. +- **`validateStructuredContent(blocks)` helper** — catch malformed tables + (ragged rows, unknown column ids, bad cell shapes) at build/test time. + +### Client / rendering reach + +- **CLI table rendering** — `enhancedConsole.ts` gets the plain-text + fallback today; a box-drawing table would improve the terminal. +- **MCP `outputSchema`** — Phase 6 carries `rawData` but not + `dataSchema`; derive JSON Schema from the block document so MCP / + Claude clients can validate typed output. +- **Browser-extension fallback** — teach the Chrome/Edge extension to + prefer the markdown alternate (`getStructuredFallback`); this is the + prerequisite that unblocks Phase 8a (browser search results). +- **Accessibility pass** — ARIA sort states, `scope`, and live-region + announcements for sort / filter / pagination in `setContent.ts`. + +### Data-scale + +- **Virtualized tables** — render-on-scroll for very large `rawData` + tables instead of pagination (chat-ui only). +- **Agent-driven / server-side paging** — fetch page N on demand; shares + the client → agent transport prerequisite with row actions. + ## Key files | Area | Path | diff --git a/ts/docs/plans/structured-output/STATUS.md b/ts/docs/plans/structured-output/STATUS.md index e8b7e5fb76..6c4cd4bb0b 100644 --- a/ts/docs/plans/structured-output/STATUS.md +++ b/ts/docs/plans/structured-output/STATUS.md @@ -4,7 +4,7 @@ Working tracker for the plan in [PLAN.md](./PLAN.md). Update whenever a phase item is started, completed, or a follow-up surfaces. Keep entries terse — one line per item where possible. -_Last updated: 2026-07-11 — plan drafted, not yet started._ +_Last updated: 2026-07-13 — Phase 7 Wave B: `discord`, `taskflow`, `onboarding`, `screencapture` converted; `osNotifications` reclassified out-of-scope (toast-event stream, not list-shaped). Phase 8 (RPC/custom-UI agents) plan added. Agent builder unit tests added for calendar/weather/ipconfig/list (78 structured tests total incl. github-cli)._ ## Progress by phase @@ -12,50 +12,119 @@ _Last updated: 2026-07-11 — plan drafted, not yet started._ | Item | Description | Status | | ---- | ------------------------------------------------------------------------------------------ | ------ | -| 1a | `StructuredContent` + block types in `agentSdk/src/display.ts` | todo | -| 1b | Builders: `createStructuredResult`, `createTable`, `fromRecords` | todo | -| 1c | Fallback derivation: `structuredToMarkdown` / `structuredToText` / `getStructuredFallback` | todo | -| 1d | Exports from `agentSdk/src/index.ts` | todo | -| 1e | Unit tests (derivation + builders) | todo | +| 1a | `StructuredContent` + block types in `agentSdk/src/display.ts` | done | +| 1b | Builders: `createStructuredResult`, `createTable`, `fromRecords` | done | +| 1c | Fallback derivation: `structuredToMarkdown` / `structuredToText` / `getStructuredFallback` | done | +| 1d | Exports from `agentSdk/src/index.ts` | done | +| 1e | Unit tests (derivation + builders) | done | ### Phase 2 — Renderer safety net _(after 1)_ | Item | Description | Status | | ---- | ------------------------------------------------------------------------ | ------ | -| 2a | `chat-ui/setContent.ts` — detect `"structured"`, use fallback (no throw) | todo | -| 2b | `vscode-chat/displayRender.ts` — fallback | todo | -| 2c | `cli/enhancedConsole.ts` — fallback | todo | -| 2d | `commandExecutor/commandServer.ts` — fallback | todo | -| 2e | `copilot-plugin/message-formatter.ts` — fallback | todo | +| 2a | `chat-ui/setContent.ts` — detect `"structured"`, use fallback (no throw) | done | +| 2b | `vscode-chat/displayRender.ts` — fallback | done | +| 2c | `cli/enhancedConsole.ts` — fallback | done | +| 2d | `commandExecutor/commandServer.ts` — fallback | done | +| 2e | `copilot-plugin/message-formatter.ts` — fallback | done | ### Phase 3 — Rich rendering _(after 1)_ | Item | Description | Status | | ---- | ---------------------------------------------------------------------------------------------- | ------ | -| 3a | `chat-ui/setContent.ts` blocks → HTML (table/badge/link/image/card/list/keyValue) + `chat.css` | todo | -| 3b | `vscode-chat/displayRender.ts` blocks → markdown | todo | +| 3a | `chat-ui/setContent.ts` blocks → HTML (table/badge/link/image/card/list/keyValue) + `chat.css` | done | +| 3b | `vscode-chat/displayRender.ts` blocks → markdown | done | ### Phase 4 — Interactivity _(after 3a)_ -| Item | Description | Status | -| ---- | ----------------------------------------------------------------------------------- | ------ | -| 4a | Client-side sort/filter on `TableBlock` honoring `readonly`/`sortable`/`filterable` | todo | +| Item | Description | Status | +| ---- | ---------------------------------------------------------------------------------------------------- | -------- | +| 4a | Client-side sort/filter on `TableBlock` honoring `readonly`/`sortable`/`filterable` | done | +| 4b | Client-side pagination: `TableBlock.pageSize` + "Show more" in `chat-ui` (composes with sort/filter) | done | +| 4c | `TableColumn.pinned` reserved in type (sticky rendering not wired) | reserved | ### Phase 5 — First adopter: github-cli _(after 1)_ -| Item | Description | Status | -| ---- | ---------------------------------------------------------------------------------- | ------ | -| 5a | `prList` / `issueList` / `myPullRequests` / `searchRepos` → table blocks + rawData | todo | -| 5b | `dependabotAlerts` + contributors → table blocks | todo | -| 5c | `repoView` → keyValue block | todo | -| 5d | Update handler unit tests | todo | +| Item | Description | Status | +| ---- | ------------------------------------------------------------------------------------ | ------ | +| 5a | `prList` / `issueList` / `myAssignedIssues` / `searchRepos` → table blocks + rawData | done | +| 5b | `dependabotAlerts` + contributors → table blocks | done | +| 5c | `repoView` → keyValue block | done | +| 5d | Update handler unit tests | done | +| 5e | `prView` / `issueView` → heading + keyValue + body text block | done | +| 5f | Focused field answers → `buildStructuredField` (keyValue + rawData) | done | ### Phase 6 — Programmatic "or otherwise" _(after 1 + 5)_ | Item | Description | Status | | ---- | ------------------------------------------------------------------- | ------ | -| 6a | `commandExecutor` forwards `rawData` as MCP `structuredContent` | todo | -| 6b | `taskflow` reads `rawData` directly (drop extractText+tryParseJson) | todo | +| 6a | `commandExecutor` forwards `rawData` as MCP `structuredContent` | done | +| 6b | `taskflow` reads `rawData` directly (drop extractText+tryParseJson) | done | + +### Phase 7 — Broader agent rollout _(after 5; per-agent)_ + +Wave A — high fit: + +| Item | Agent | Target blocks | Status | +| ---- | ---------- | --------------------------------------- | ------ | +| 7a | `list` | heading + list | done | +| 7b | `calendar` | table (agenda) + card/keyValue (detail) | done | +| 7c | `email` | table (list) + keyValue (message) | done | +| 7d | `weather` | keyValue (current) + table (forecast) | done | +| 7e | `ipconfig` | heading + keyValue (per-adapter) | done | + +Wave B — medium fit: + +| Item | Agent | Target blocks | Status | +| ---- | ----------------- | --------------------------------- | ------------------------------------------------------------------------------- | +| 7f | `discord` | heading + list/table | done | +| 7g | `taskflow` | table (name/description/usage) | done | +| 7h | `onboarding` | heading + keyValue (phase status) | done | +| 7i | `screencapture` | image + heading/keyValue | done | +| 7j | `osNotifications` | list/card (event stream) | out of scope — single toast/inline events via `context.notify`, not list-shaped | + +Out of scope (v1, custom UI / RPC bridge): `image`, `video`, `settings`, +`chat`, `code`, `visualStudio`, `browser`, `markdown`, `montage`, +`turtle`, `player`, `playerLocal`. + +Deferred (low value, short text/status): `timer`, `windowsClock`, +`greeting`, `desktop`, `vampire`, `androidMobile`, `powershell`, +`utility`, `studio`. + +### Phase 8 — RPC / custom-UI agents _(mostly out of scope; see PLAN Phase 8)_ + +| Item | Agent | Plan | Status | +| ---- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | +| 8a | `browser` | web-search results (`generateWebSearchMarkdown`) → heading + table (`pageSize: 10`) + rawData; **verify markdown fallback in Chrome/Edge extension** | not started | +| 8b | `code`, `visualStudio`, `player`, `playerLocal`, `markdown`, `montage`, `turtle`, `image`, `video`, `settings`, `chat` | out of scope — display lives in external bridge/webapp/widget, not on the `displayContent` path; blocked on external renderers understanding `StructuredContent` / its fallback | deferred | + +### Agent builder unit tests + +Structured-output builders extracted to pure exported functions and +covered by per-agent specs (in addition to the 16 SDK derivation tests): + +| Agent | Spec | Builder(s) | Tests | +| ---------- | ------------------------------------ | ------------------------------------------------------------ | ----- | +| github-cli | `githubCliStructuredResults.spec.ts` | list / repo / dependabot / contributors / pr / issue / field | 46 | +| calendar | `calendarStructured.spec.ts` | `buildStructuredEventList` | 9 | +| weather | `weatherStructured.spec.ts` | `buildCurrentConditionsResult`, `buildForecastResult` | 10 | +| ipconfig | `ipconfigStructured.spec.ts` | `buildStructuredOutput` | 7 | +| list | `listStructured.spec.ts` | `buildListResult` | 6 | + +Covers all core block shapes: table, keyValue, list, heading, badge, +link cells, pagination, and rawData. New jest harnesses were scaffolded +for `weather`, `ipconfig`, and `list` (calendar already had one). +`email`, `discord`, `taskflow`, `onboarding`, `screencapture` builders +remain inline (validated by build/typecheck); their block shapes are +covered transitively by the specs above. + +## Future enhancements (backlog) + +Not scheduled. Full list in [PLAN.md](./PLAN.md) → "Future enhancements". +Highest-leverage items: **row actions** (needs a client → agent +transport; the "v2"), extracting the 5 remaining inline builders into +tested pure functions, and a `progress` / `chart` block. Pull into a +phase when a concrete agent needs it. ## Open questions diff --git a/ts/packages/agentSdk/README.AUTOGEN.md b/ts/packages/agentSdk/README.AUTOGEN.md index 48e75bb62c..e91990d5a3 100644 --- a/ts/packages/agentSdk/README.AUTOGEN.md +++ b/ts/packages/agentSdk/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # @typeagent/agent-sdk — AI-generated documentation @@ -12,68 +12,85 @@ ## Overview -The `@typeagent/agent-sdk` package provides the foundational interfaces and utilities required to build Dispatcher Agents within the TypeAgent ecosystem. It serves as a core library for developers to create agents that interact with the TypeAgent Dispatcher, handle user commands and actions, and manage agent-specific contexts and lifecycles. +The `@typeagent/agent-sdk` package provides the foundational interfaces, types, and utilities for building Dispatcher Agents within the TypeAgent ecosystem. It is a core library that enables developers to create agents capable of handling user commands, executing actions, and managing their lifecycle and context. This package is widely used across the TypeAgent ecosystem, serving as a critical dependency for various tools and agents. ## What it does -The `@typeagent/agent-sdk` package enables developers to implement Dispatcher Agents with the following key capabilities: +The `@typeagent/agent-sdk` package facilitates the development of Dispatcher Agents by providing a comprehensive set of features and utilities: -- **Manifest and Instantiation**: Define an agent's manifest (`AppAgentManifest`) and specify an instantiation entry point. The manifest includes metadata such as the agent's emoji, description, and translator configuration. The instantiation entry point provides the `AppAgent` implementation. -- **Lifecycle Management**: Implement lifecycle methods such as: +### Manifest and Instantiation - - `initializeAgentContext`: Sets up the agent's runtime context. - - `updateAgentContext`: Updates the agent's context, e.g., when actions are enabled or disabled. - - `closeAgentContext`: Cleans up resources when the agent is no longer needed. +- **Manifest**: The `AppAgentManifest` defines metadata about the agent, such as its emoji, description, and translator configuration. This manifest is the first point of interaction between the Dispatcher and the agent. +- **Instantiation Entry Point**: The `AppAgent` interface is the core contract that agents implement. The Dispatcher uses the `instantiate` function exported from the `./agent/handlers` module to create an instance of the agent. -- **Command Handling**: Define and handle commands using: +### Lifecycle Management - - `getCommands`: Returns a list of commands (`CommandDescriptors`) supported by the agent. - - `executeCommand`: Executes commands based on parsed parameters. +The package provides lifecycle APIs to manage the initialization, update, and cleanup of an agent's context: -- **Action Execution**: Handle user-triggered actions with: +- `initializeAgentContext`: Sets up the agent's runtime context, which is passed back in subsequent API calls. +- `updateAgentContext`: Updates the agent's context, such as enabling or disabling specific actions or sub-schemas. +- `closeAgentContext`: Cleans up resources when the agent is no longer needed. - - `executeAction`: Processes actions routed by the Dispatcher. +### Command and Action Handling + +- **Command APIs**: + + - `getCommands`: Returns a list of commands (`CommandDescriptors`) that the agent supports. + - `executeCommand`: Executes commands based on parsed parameters provided by the Dispatcher. + +- **Action APIs**: + - `executeAction`: Handles user-triggered actions routed by the Dispatcher. The agent is responsible for further routing to specific handlers. - `streamPartialAction`: Supports streaming partial results for actions, such as generating responses incrementally. -- **Readiness and Setup**: Ensure the agent is operational with: +### Readiness and Setup - - `checkReadiness`: Reports whether the agent is ready, requires setup, or is unsupported. - - `setup`: Guides users through configuration steps to make the agent operational. +- **checkReadiness**: Reports the agent's readiness state, indicating whether it is ready, requires setup, or is unsupported. +- **setup**: Provides an optional in-chat configuration flow to guide users through the setup process and transition the agent to a ready state. -- **Display Management**: Manage how information is presented to users with support for dynamic and periodic updates. This includes utilities for creating and managing display content. +### Display and Choice Management -The package is widely used across the TypeAgent ecosystem, including in the Shell, CLI, and other agents, making it a critical component for building and integrating agents. +- **Dynamic and Periodic Updates**: Utilities for managing how information is displayed to users, including support for dynamic and periodic updates. +- **handleChoice**: Routes user responses to the agent's `ChoiceManager`, enabling interactive workflows. ## Setup -To create a Dispatcher Agent using the `@typeagent/agent-sdk`, you need to configure the following in your project: +To create a Dispatcher Agent using the `@typeagent/agent-sdk`, follow these steps: -1. **Manifest**: +1. **Define the Manifest**: - Create a JSON file that adheres to the `AppAgentManifest` type. This file should include metadata about the agent, such as its emoji, description, and translator configuration. - Specify the path to this file in your `package.json` under the `./agent/manifest` export path. -2. **Instantiation Entry Point**: - - Implement the `AppAgent` interface in a TypeScript or JavaScript file. +2. **Implement the Instantiation Entry Point**: + + - Create a TypeScript or JavaScript file that implements the `AppAgent` interface. - Export an `instantiate` function from this file, which returns an instance of the `AppAgent`. - Specify the path to this file in your `package.json` under the `./agent/handlers` export path. -For more detailed instructions, refer to the hand-written README or the [List agent](../agents/list/) as a practical example. +3. **Refer to Examples**: + - Use the [List agent](../agents/list/) as a practical example of building a Dispatcher Agent. + - Consult the Dispatcher README for instructions on registering your agent with the TypeAgent Dispatcher. ## Key Files -The `@typeagent/agent-sdk` package is organized into several key files, each serving a specific purpose: +The `@typeagent/agent-sdk` package is organized into several key files, each with a specific role in the development of Dispatcher Agents: - **[index.ts](./src/index.ts)**: The main entry point, exporting core interfaces, types, and utilities for building agents. - **[action.ts](./src/action.ts)**: Defines the structure and types for actions, including `AppAction`, `ActionResult`, and `PendingChoice`. These are essential for implementing action-related methods like `executeAction`. - **[agentInterface.ts](./src/agentInterface.ts)**: Contains the primary interfaces for agents, such as `AppAgent`, `SessionContext`, and `ActionContext`. These define the contract between the agent and the Dispatcher. - **[command.ts](./src/command.ts)**: Provides types and interfaces for command handling, including `CommandDescriptor` and `CommandDescriptors`. These are used to define and execute commands. - **[display.ts](./src/display.ts)**: Defines types for managing display content, such as `DisplayType` and `DynamicDisplay`. These are used to control how information is presented to users. -- **Helpers**: - - **[actionHelpers.ts](./src/helpers/actionHelpers.ts)**: Utilities for creating and managing action results. - - **[commandHelpers.ts](./src/helpers/commandHelpers.ts)**: Functions for handling commands and their parameters. - - **[displayHelpers.ts](./src/helpers/displayHelpers.ts)**: Tools for managing display content and formatting. - - **[choiceManager.ts](./src/helpers/choiceManager.ts)**: Manages user choices and callbacks, enabling interactive workflows. + +### Helper Modules + +- **[actionHelpers.ts](./src/helpers/actionHelpers.ts)**: Utilities for creating and managing action results. +- **[commandHelpers.ts](./src/helpers/commandHelpers.ts)**: Functions for handling commands and their parameters. +- **[displayHelpers.ts](./src/helpers/displayHelpers.ts)**: Tools for managing display content and formatting. +- **[choiceManager.ts](./src/helpers/choiceManager.ts)**: Manages user choices and callbacks, enabling interactive workflows. + +### Node-Specific Utilities + +- **[cliPath.ts](./src/node/cliPath.ts)**: Node.js-specific helpers for resolving CLI paths, re-exported from `@typeagent/common-utils`. ## How to extend @@ -137,17 +154,17 @@ External: `debug`, `type-fest` ### Used by +- [@typeagent/action-browser](../../tools/actionBrowser/README.md) - [@typeagent/agent-rpc](../../packages/agentRpc/README.md) +- [@typeagent/agent-server-client](../../packages/agentServer/client/README.md) +- [@typeagent/agent-server-protocol](../../packages/agentServer/protocol/README.md) - [@typeagent/copilot-plugin](../../packages/copilot-plugin/README.md) - [@typeagent/dispatcher-rpc](../../packages/dispatcher/rpc/README.md) - [@typeagent/dispatcher-types](../../packages/dispatcher/types/README.md) - [@typeagent/echo](../../examples/agentExamples/echo/README.md) - [agent-api](../../packages/api/README.md) - [agent-cache](../../packages/cache/README.md) -- [agent-cli](../../packages/cli/README.md) -- [agent-dispatcher](../../packages/dispatcher/dispatcher/README.md) -- [agent-shell](../../packages/shell/README.md) -- _…and 47 more workspace consumers._ +- _…and 51 more workspace consumers._ ### Files of interest @@ -165,6 +182,6 @@ External: `debug`, `type-fest` --- -_Auto-generated against commit `defc71271dc68db47e0d376be7aa9f755da0ac91` on `2026-07-14T08:47:00.044Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter @typeagent/agent-sdk docs:verify-links` to spot-check._ +_Auto-generated against commit `c97eb42726a9196c7ac72138faa0777c5cbc1aab` on `2026-07-18T09:48:36.613Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter @typeagent/agent-sdk docs:verify-links` to spot-check._ diff --git a/ts/packages/agentSdk/jest.config.cjs b/ts/packages/agentSdk/jest.config.cjs new file mode 100644 index 0000000000..4560001c3f --- /dev/null +++ b/ts/packages/agentSdk/jest.config.cjs @@ -0,0 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +module.exports = { + ...require("../../jest.config.js"), +}; diff --git a/ts/packages/agentSdk/package.json b/ts/packages/agentSdk/package.json index 2177711c1d..5dc0b1238c 100644 --- a/ts/packages/agentSdk/package.json +++ b/ts/packages/agentSdk/package.json @@ -22,8 +22,11 @@ "scripts": { "build": "npm run tsc", "clean": "rimraf --glob dist *.tsbuildinfo *.done.build.log", + "jest-esm": "node --no-warnings --experimental-vm-modules ./node_modules/jest/bin/jest.js", "prettier": "prettier --check . --ignore-path ../../.prettierignore", "prettier:fix": "prettier --write . --ignore-path ../../.prettierignore", + "test": "npm run test:local", + "test:local": "pnpm run jest-esm --testPathPattern=\".*[.]spec[.]js\"", "tsc": "tsc -b" }, "dependencies": { diff --git a/ts/packages/agentSdk/src/display.ts b/ts/packages/agentSdk/src/display.ts index 5228dfa2ae..787413bd37 100644 --- a/ts/packages/agentSdk/src/display.ts +++ b/ts/packages/agentSdk/src/display.ts @@ -30,9 +30,157 @@ export interface TypedDisplayContent { alternates?: Array<{ type: DisplayType; content: MessageContent }>; } +// --------------------------------------------------------------------------- +// Structured content — a document of typed blocks (see +// docs/plans/structured-output/PLAN.md). Agents author a semantic view-model +// once; each client renders it at the highest fidelity it supports and falls +// back to the SDK-derived markdown/text `alternates` otherwise. +// --------------------------------------------------------------------------- + +// Tone for a badge cell / list badge. Clients map these to colors. +export type BadgeTone = "neutral" | "info" | "success" | "warning" | "error"; + +// Semantic type of a table cell. Controls how a rich client renders it. +export type TableCellType = + | "text" + | "link" + | "badge" + | "number" + | "date" + | "code"; + +export interface TableColumn { + id: string; + header: string; + type?: TableCellType; // default "text" + align?: "left" | "right" | "center"; + sortable?: boolean; // per-column override of table.sortable + // Reserved for future sticky columns. Carried in the type for + // forward-compat; no client wires up sticky rendering yet. + pinned?: "left" | "right"; +} + +// A table cell is either a bare scalar (rendered per the column type) or a +// rich object carrying a link target, badge tone, and/or tooltip. +export type TableCell = + | string + | number + | { + text: string; + href?: string; // link target (cell type "link", or any cell) + badge?: BadgeTone; // badge tone (cell type "badge") + tooltip?: string; + }; + +export interface TableBlock { + kind: "table"; + columns: TableColumn[]; + rows: TableCell[][]; + caption?: string; + // Affordances — interactive by default. + sortable?: boolean; // default: true + filterable?: boolean; // default: false + readonly?: boolean; // lock order + content exactly as sent + // Client-side pagination: render at most `pageSize` rows initially and + // reveal the rest via a "Show more" control. All rows still ship in one + // payload; this only affects rendering. Omit / <= 0 to show all rows. + pageSize?: number; + // Reserved for v2 row-actions (open question #3). Carried, not wired up. + action?: unknown; +} + +export interface HeadingBlock { + kind: "heading"; + text: string; + level?: 1 | 2 | 3; +} + +export interface TextBlock { + kind: "text"; + text: MessageContent; + format?: "text" | "markdown"; // default "markdown" +} + +export interface ListItem { + text: string; + href?: string; + subtitle?: string; + badges?: BadgeTone[]; +} + +export interface ListBlock { + kind: "list"; + ordered?: boolean; + items: ListItem[]; +} + +export interface KeyValuePair { + label: string; + value: TableCell; +} + +export interface KeyValueBlock { + kind: "keyValue"; + pairs: KeyValuePair[]; +} + +export interface CardBlock { + kind: "card"; + title?: string; + subtitle?: string; + fields?: KeyValuePair[]; + href?: string; +} + +export interface ImageBlock { + kind: "image"; + src: string; // URL or dataURI; the agent rehydrates file paths + alt?: string; + caption?: string; + width?: number; + height?: number; +} + +export interface CodeBlock { + kind: "code"; + code: string; + language?: string; +} + +export interface DividerBlock { + kind: "divider"; +} + +export type StructuredBlock = + | HeadingBlock + | TextBlock + | TableBlock + | ListBlock + | KeyValueBlock + | CardBlock + | ImageBlock + | CodeBlock + | DividerBlock; + +// An ordered document of typed blocks plus an optional machine-readable +// `rawData` payload. Added to the DisplayContent union so it rides the +// existing display plumbing with no new transport. +export interface StructuredContent { + type: "structured"; + blocks: StructuredBlock[]; + rawData?: unknown; // machine-readable payload ("or otherwise" clients) + dataSchema?: unknown; // optional JSON Schema describing rawData (carried, not enforced) + kind?: DisplayMessageKind; + speak?: boolean; + // The SDK auto-derives a markdown/text alternate so clients that don't + // understand `type: "structured"` degrade gracefully via getContentForType. + alternates?: Array<{ type: DisplayType; content: MessageContent }>; +} + export type DisplayContent = | MessageContent // each string in the MessageContent is treated as DisplayType "text" - | TypedDisplayContent; + | TypedDisplayContent + | StructuredContent; // Optional message kind for client specific styling export type DisplayMessageKind = diff --git a/ts/packages/agentSdk/src/helpers/actionHelpers.ts b/ts/packages/agentSdk/src/helpers/actionHelpers.ts index 9b0afe78bf..826d33e449 100644 --- a/ts/packages/agentSdk/src/helpers/actionHelpers.ts +++ b/ts/packages/agentSdk/src/helpers/actionHelpers.ts @@ -8,8 +8,9 @@ import { ActionResultSuccessNoDisplay, } from "../action.js"; import { ActionContext } from "../agentInterface.js"; -import { DisplayMessageKind } from "../display.js"; +import { DisplayMessageKind, StructuredBlock } from "../display.js"; import { Entity } from "../memory.js"; +import { createStructuredContent, structuredToText } from "./displayHelpers.js"; import { ChoiceManager, PickRememberResponse } from "./choiceManager.js"; export { ChoiceManager }; @@ -227,6 +228,39 @@ export function createActionResultFromError(error: string): ActionResultError { }; } +/** + * Create an ActionResultSuccess whose display is a structured block document. + * The SDK derives markdown/text `alternates` (for clients that don't + * understand `type: "structured"`) and, unless overridden, a plain-text + * `historyText` for memory/TTS. `rawData` carries the machine-readable payload + * for "or otherwise" (non-UI) clients. + */ +export function createStructuredResult( + blocks: StructuredBlock[], + options?: { + rawData?: unknown; + dataSchema?: unknown; + kind?: DisplayMessageKind; + speak?: boolean; + historyText?: string; + entities?: Entity[]; + resultEntity?: Entity; + }, +): ActionResultSuccess { + const displayContent = createStructuredContent(blocks, { + rawData: options?.rawData, + dataSchema: options?.dataSchema, + kind: options?.kind, + speak: options?.speak, + }); + return { + historyText: options?.historyText ?? structuredToText(blocks), + entities: options?.entities ?? [], + resultEntity: options?.resultEntity, + displayContent, + }; +} + function entitiesToString(entities: Entity[], indent = ""): string { // entities in the format "name (type1, type2)" return entities diff --git a/ts/packages/agentSdk/src/helpers/displayHelpers.ts b/ts/packages/agentSdk/src/helpers/displayHelpers.ts index b84f86df2f..69c5738dab 100644 --- a/ts/packages/agentSdk/src/helpers/displayHelpers.ts +++ b/ts/packages/agentSdk/src/helpers/displayHelpers.ts @@ -8,6 +8,11 @@ import { DisplayMessageKind, DisplayType, MessageContent, + StructuredBlock, + StructuredContent, + TableBlock, + TableCell, + TableColumn, TypedDisplayContent, } from "../display.js"; @@ -104,3 +109,358 @@ export async function displayResult( ) { displayMessage(message, context); } + +// --------------------------------------------------------------------------- +// Structured content — builders + fallback derivation. +// See docs/plans/structured-output/PLAN.md. +// --------------------------------------------------------------------------- + +// Options shared by the table builders. +export interface TableBuildOptions { + caption?: string; + sortable?: boolean; + filterable?: boolean; + readonly?: boolean; + pageSize?: number; +} + +// A column definition for `fromRecords` — a `TableColumn` plus a `value` +// accessor that maps a record to its cell for this column. +export interface ColumnSpec extends TableColumn { + value: (record: T) => TableCell; +} + +/** + * Build a `TableBlock` from explicit columns and rows. + */ +export function createTable( + columns: TableColumn[], + rows: TableCell[][], + options?: TableBuildOptions, +): TableBlock { + return { + kind: "table", + columns, + rows, + ...options, + }; +} + +/** + * Build a single-table `StructuredContent` from an array of domain records + * and a column spec, stashing the records as `rawData` in the same call so the + * rendered table and the machine-readable payload can't drift apart. + */ +export function fromRecords( + objects: T[], + columnSpec: ColumnSpec[], + options?: TableBuildOptions & { + rawData?: unknown; // override the default rawData (the objects) + dataSchema?: unknown; + kind?: DisplayMessageKind | undefined; + speak?: boolean | undefined; + }, +): StructuredContent { + const columns: TableColumn[] = columnSpec.map( + ({ value: _value, ...column }) => column, + ); + const rows: TableCell[][] = objects.map((object) => + columnSpec.map((column) => column.value(object)), + ); + const { rawData, dataSchema, kind, speak, ...tableOptions } = options ?? {}; + const table = createTable(columns, rows, tableOptions); + return createStructuredContent([table], { + rawData: rawData ?? objects, + dataSchema, + kind, + speak, + }); +} + +/** + * Assemble a `StructuredContent` from blocks, auto-deriving markdown + text + * `alternates` so clients that don't understand `type: "structured"` degrade + * gracefully via `getContentForType`. + */ +export function createStructuredContent( + blocks: StructuredBlock[], + options?: { + rawData?: unknown; + dataSchema?: unknown; + kind?: DisplayMessageKind | undefined; + speak?: boolean | undefined; + }, +): StructuredContent { + const content: StructuredContent = { + type: "structured", + blocks, + alternates: [ + { type: "markdown", content: structuredToMarkdown(blocks) }, + { type: "text", content: structuredToText(blocks) }, + ], + }; + if (options?.rawData !== undefined) { + content.rawData = options.rawData; + } + if (options?.dataSchema !== undefined) { + content.dataSchema = options.dataSchema; + } + if (options?.kind !== undefined) { + content.kind = options.kind; + } + if (options?.speak !== undefined) { + content.speak = options.speak; + } + return content; +} + +// Flatten a MessageContent (string | string[] | string[][]) to a single +// string for derivation purposes. +function messageContentToString(content: MessageContent): string { + if (typeof content === "string") { + return content; + } + return content + .map((row) => (Array.isArray(row) ? row.join(" | ") : row)) + .join("\n"); +} + +// The display text of a cell, ignoring link/badge decoration. +function cellText(cell: TableCell): string { + if (cell === null || cell === undefined) { + return ""; + } + if (typeof cell === "object") { + return cell.text; + } + return String(cell); +} + +// The markdown rendering of a cell, honoring an optional link target. +function cellMarkdown(cell: TableCell): string { + const text = cellText(cell); + if (typeof cell === "object" && cell.href) { + return `[${text}](${cell.href})`; + } + return text; +} + +/** + * Derive a markdown representation of a block document. Used to build the + * `alternates` a rich client falls back to, and for history/TTS text. + */ +export function structuredToMarkdown(blocks: StructuredBlock[]): string { + const sections: string[] = []; + for (const block of blocks) { + switch (block.kind) { + case "heading": + sections.push(`${"#".repeat(block.level ?? 1)} ${block.text}`); + break; + case "text": + sections.push(messageContentToString(block.text)); + break; + case "table": { + const header = `| ${block.columns + .map((c) => c.header) + .join(" | ")} |`; + const separator = `| ${block.columns + .map(() => "---") + .join(" | ")} |`; + const rows = block.rows.map( + (row) => `| ${row.map(cellMarkdown).join(" | ")} |`, + ); + const lines = [header, separator, ...rows]; + if (block.caption) { + lines.unshift(`**${block.caption}**`); + } + sections.push(lines.join("\n")); + break; + } + case "list": { + const items = block.items.map((item, index) => { + const marker = block.ordered ? `${index + 1}.` : "-"; + const label = item.href + ? `[${item.text}](${item.href})` + : item.text; + const subtitle = item.subtitle ? ` — ${item.subtitle}` : ""; + return `${marker} ${label}${subtitle}`; + }); + sections.push(items.join("\n")); + break; + } + case "keyValue": + sections.push( + block.pairs + .map( + (pair) => + `- **${pair.label}:** ${cellMarkdown(pair.value)}`, + ) + .join("\n"), + ); + break; + case "card": { + const lines: string[] = []; + if (block.title) { + lines.push( + block.href + ? `### [${block.title}](${block.href})` + : `### ${block.title}`, + ); + } + if (block.subtitle) { + lines.push(`*${block.subtitle}*`); + } + if (block.fields) { + lines.push( + ...block.fields.map( + (pair) => + `- **${pair.label}:** ${cellMarkdown(pair.value)}`, + ), + ); + } + sections.push(lines.join("\n")); + break; + } + case "image": { + let image = `![${block.alt ?? ""}](${block.src})`; + if (block.caption) { + image += `\n\n*${block.caption}*`; + } + sections.push(image); + break; + } + case "code": + sections.push( + `\`\`\`${block.language ?? ""}\n${block.code}\n\`\`\``, + ); + break; + case "divider": + sections.push("---"); + break; + } + } + return sections.join("\n\n"); +} + +/** + * Derive a plain-text representation of a block document, for clients (CLI, + * MCP, copilot) that render text only. + */ +export function structuredToText(blocks: StructuredBlock[]): string { + const sections: string[] = []; + for (const block of blocks) { + switch (block.kind) { + case "heading": + sections.push(block.text); + break; + case "text": + sections.push(messageContentToString(block.text)); + break; + case "table": + sections.push(tableToText(block)); + break; + case "list": { + const items = block.items.map((item, index) => { + const marker = block.ordered ? `${index + 1}.` : "-"; + const subtitle = item.subtitle ? ` — ${item.subtitle}` : ""; + return `${marker} ${item.text}${subtitle}`; + }); + sections.push(items.join("\n")); + break; + } + case "keyValue": + sections.push( + block.pairs + .map((pair) => `${pair.label}: ${cellText(pair.value)}`) + .join("\n"), + ); + break; + case "card": { + const lines: string[] = []; + if (block.title) { + lines.push(block.title); + } + if (block.subtitle) { + lines.push(block.subtitle); + } + if (block.fields) { + lines.push( + ...block.fields.map( + (pair) => `${pair.label}: ${cellText(pair.value)}`, + ), + ); + } + sections.push(lines.join("\n")); + break; + } + case "image": + sections.push( + `[image: ${block.alt ?? block.caption ?? block.src}]`, + ); + break; + case "code": + sections.push(block.code); + break; + case "divider": + sections.push("----"); + break; + } + } + return sections.join("\n\n"); +} + +// Render a table block as a monospace-friendly aligned text table. +function tableToText(block: TableBlock): string { + const headers = block.columns.map((c) => c.header); + const rows = block.rows.map((row) => row.map(cellText)); + const widths = headers.map((header, index) => + Math.max( + header.length, + ...rows.map((row) => (row[index] ?? "").length), + ), + ); + const pad = (cells: string[]) => + cells.map((cell, index) => cell.padEnd(widths[index])).join(" "); + const lines = [pad(headers), widths.map((w) => "-".repeat(w)).join(" ")]; + for (const row of rows) { + lines.push(pad(headers.map((_, index) => row[index] ?? ""))); + } + if (block.caption) { + lines.unshift(block.caption); + } + return lines.join("\n"); +} + +/** + * Given a `StructuredContent`, return a fallback representation for a preferred + * display type. Prefers an existing alternate; otherwise derives on demand. + */ +export function getStructuredFallback( + content: StructuredContent, + preferredType: "markdown" | "text" = "markdown", +): MessageContent { + if (content.alternates) { + for (const alt of content.alternates) { + if (alt.type === preferredType) { + return alt.content; + } + } + } + return preferredType === "text" + ? structuredToText(content.blocks) + : structuredToMarkdown(content.blocks); +} + +/** + * Type guard: is a DisplayContent a StructuredContent block document? + */ +export function isStructuredContent( + content: DisplayContent, +): content is StructuredContent { + return ( + typeof content === "object" && + content !== null && + !Array.isArray(content) && + (content as StructuredContent).type === "structured" + ); +} diff --git a/ts/packages/agentSdk/src/index.ts b/ts/packages/agentSdk/src/index.ts index 86bef72a01..071f4f9759 100644 --- a/ts/packages/agentSdk/src/index.ts +++ b/ts/packages/agentSdk/src/index.ts @@ -61,6 +61,23 @@ export { TypedDisplayContent, DisplayAppendMode, DisplayMessageKind, + BadgeTone, + TableCellType, + TableColumn, + TableCell, + TableBlock, + HeadingBlock, + TextBlock, + ListItem, + ListBlock, + KeyValuePair, + KeyValueBlock, + CardBlock, + ImageBlock, + CodeBlock, + DividerBlock, + StructuredBlock, + StructuredContent, } from "./display.js"; export { diff --git a/ts/packages/agentSdk/test/structuredContent.spec.ts b/ts/packages/agentSdk/test/structuredContent.spec.ts new file mode 100644 index 0000000000..e0dbd6842a --- /dev/null +++ b/ts/packages/agentSdk/test/structuredContent.spec.ts @@ -0,0 +1,280 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { + StructuredBlock, + StructuredContent, + TableColumn, + TableCell, +} from "../src/display.js"; +import { + ColumnSpec, + createStructuredContent, + createTable, + fromRecords, + getStructuredFallback, + isStructuredContent, + structuredToMarkdown, + structuredToText, +} from "../src/helpers/displayHelpers.js"; +import { createStructuredResult } from "../src/helpers/actionHelpers.js"; + +describe("structured content builders", () => { + it("createTable builds a table block with defaults", () => { + const columns: TableColumn[] = [ + { id: "n", header: "N" }, + { id: "t", header: "Title" }, + ]; + const rows: TableCell[][] = [[1, "one"]]; + const table = createTable(columns, rows); + expect(table).toEqual({ kind: "table", columns, rows }); + }); + + it("createTable carries affordance options", () => { + const table = createTable([{ id: "a", header: "A" }], [["x"]], { + caption: "cap", + readonly: true, + filterable: true, + }); + expect(table.caption).toBe("cap"); + expect(table.readonly).toBe(true); + expect(table.filterable).toBe(true); + }); + + it("fromRecords builds a table + stashes rawData together", () => { + type PR = { number: number; title: string; url: string }; + const prs: PR[] = [ + { number: 1, title: "First", url: "https://x/1" }, + { number: 2, title: "Second", url: "https://x/2" }, + ]; + const spec: ColumnSpec[] = [ + { + id: "number", + header: "#", + type: "link", + value: (pr) => ({ text: `#${pr.number}`, href: pr.url }), + }, + { id: "title", header: "Title", value: (pr) => pr.title }, + ]; + const content = fromRecords(prs, spec); + expect(content.type).toBe("structured"); + expect(content.blocks).toHaveLength(1); + const table = content.blocks[0]; + expect(table.kind).toBe("table"); + if (table.kind === "table") { + // value accessor stripped from column definition + expect(table.columns).toEqual([ + { id: "number", header: "#", type: "link" }, + { id: "title", header: "Title" }, + ]); + expect(table.rows).toEqual([ + [{ text: "#1", href: "https://x/1" }, "First"], + [{ text: "#2", href: "https://x/2" }, "Second"], + ]); + } + // rawData defaults to the original objects + expect(content.rawData).toBe(prs); + }); + + it("fromRecords allows overriding rawData", () => { + const content = fromRecords( + [{ a: 1 }], + [{ id: "a", header: "A", value: (o) => o.a }], + { rawData: { custom: true } }, + ); + expect(content.rawData).toEqual({ custom: true }); + }); + + it("createStructuredContent attaches markdown + text alternates", () => { + const content = createStructuredContent([ + { kind: "heading", text: "Hi" }, + ]); + expect(content.alternates).toEqual([ + { type: "markdown", content: "# Hi" }, + { type: "text", content: "Hi" }, + ]); + }); + + it("createStructuredContent omits undefined optional fields", () => { + const content = createStructuredContent([{ kind: "divider" }]); + expect("rawData" in content).toBe(false); + expect("kind" in content).toBe(false); + expect("speak" in content).toBe(false); + }); +}); + +describe("createStructuredResult", () => { + it("wraps blocks into an ActionResultSuccess with derived history text", () => { + const result = createStructuredResult( + [{ kind: "heading", text: "Report" }], + { rawData: [1, 2, 3] }, + ); + expect(result.entities).toEqual([]); + expect(result.historyText).toBe("Report"); + const display = result.displayContent as StructuredContent; + expect(display.type).toBe("structured"); + expect(display.rawData).toEqual([1, 2, 3]); + }); + + it("honors an explicit historyText and entities", () => { + const result = createStructuredResult([{ kind: "divider" }], { + historyText: "custom", + entities: [{ name: "e", type: ["t"] }], + }); + expect(result.historyText).toBe("custom"); + expect(result.entities).toEqual([{ name: "e", type: ["t"] }]); + }); +}); + +describe("isStructuredContent", () => { + it("detects structured content and rejects other display content", () => { + const content = createStructuredContent([{ kind: "divider" }]); + expect(isStructuredContent(content)).toBe(true); + expect(isStructuredContent("plain")).toBe(false); + expect(isStructuredContent(["a", "b"])).toBe(false); + expect(isStructuredContent({ type: "text", content: "x" })).toBe(false); + }); +}); + +describe("structuredToMarkdown", () => { + it("renders a table with link cells", () => { + const blocks: StructuredBlock[] = [ + { + kind: "table", + columns: [ + { id: "n", header: "#" }, + { id: "t", header: "Title" }, + ], + rows: [ + [{ text: "#1", href: "https://x/1" }, "First"], + [2, "Second"], + ], + }, + ]; + expect(structuredToMarkdown(blocks)).toBe( + [ + "| # | Title |", + "| --- | --- |", + "| [#1](https://x/1) | First |", + "| 2 | Second |", + ].join("\n"), + ); + }); + + it("renders headings, lists, images, code, and dividers", () => { + const blocks: StructuredBlock[] = [ + { kind: "heading", text: "Title", level: 2 }, + { + kind: "list", + items: [ + { text: "one", href: "https://x/1", subtitle: "sub" }, + { text: "two" }, + ], + }, + { kind: "image", src: "https://x/i.png", alt: "pic", caption: "c" }, + { kind: "code", code: "x=1", language: "python" }, + { kind: "divider" }, + ]; + expect(structuredToMarkdown(blocks)).toBe( + [ + "## Title", + "", + "- [one](https://x/1) — sub\n- two", + "", + "![pic](https://x/i.png)\n\n*c*", + "", + "```python\nx=1\n```", + "", + "---", + ].join("\n"), + ); + }); + + it("renders an ordered list and keyValue block", () => { + const blocks: StructuredBlock[] = [ + { + kind: "list", + ordered: true, + items: [{ text: "first" }, { text: "second" }], + }, + { + kind: "keyValue", + pairs: [ + { label: "Owner", value: "octocat" }, + { + label: "Repo", + value: { text: "typeagent", href: "https://x" }, + }, + ], + }, + ]; + expect(structuredToMarkdown(blocks)).toBe( + [ + "1. first\n2. second", + "", + "- **Owner:** octocat\n- **Repo:** [typeagent](https://x)", + ].join("\n"), + ); + }); +}); + +describe("structuredToText", () => { + it("renders an aligned text table", () => { + const blocks: StructuredBlock[] = [ + { + kind: "table", + columns: [ + { id: "n", header: "#" }, + { id: "t", header: "Title" }, + ], + rows: [ + [{ text: "#1", href: "https://x/1" }, "First"], + ["#22", "Second"], + ], + }, + ]; + expect(structuredToText(blocks)).toBe( + ["# Title ", "--- ------", "#1 First ", "#22 Second"].join( + "\n", + ), + ); + }); + + it("strips link/badge decoration and renders plain lines", () => { + const blocks: StructuredBlock[] = [ + { kind: "heading", text: "H" }, + { + kind: "keyValue", + pairs: [ + { + label: "Repo", + value: { text: "typeagent", href: "https://x" }, + }, + ], + }, + { kind: "image", src: "https://x/i.png", alt: "pic" }, + ]; + expect(structuredToText(blocks)).toBe( + ["H", "", "Repo: typeagent", "", "[image: pic]"].join("\n"), + ); + }); +}); + +describe("getStructuredFallback", () => { + it("prefers an existing alternate", () => { + const content = createStructuredContent([ + { kind: "heading", text: "Hi" }, + ]); + expect(getStructuredFallback(content, "markdown")).toBe("# Hi"); + expect(getStructuredFallback(content, "text")).toBe("Hi"); + }); + + it("derives on demand when no alternate is present", () => { + const content: StructuredContent = { + type: "structured", + blocks: [{ kind: "heading", text: "Hi" }], + }; + expect(getStructuredFallback(content, "markdown")).toBe("# Hi"); + expect(getStructuredFallback(content, "text")).toBe("Hi"); + }); +}); diff --git a/ts/packages/agentSdk/test/tsconfig.json b/ts/packages/agentSdk/test/tsconfig.json new file mode 100644 index 0000000000..0e71ed8c2d --- /dev/null +++ b/ts/packages/agentSdk/test/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "composite": true, + "rootDir": ".", + "outDir": "../dist/test", + "types": ["node", "jest"] + }, + "include": ["./**/*"], + "ts-node": { + "esm": true + }, + "references": [{ "path": "../src" }] +} diff --git a/ts/packages/agentSdk/tsconfig.json b/ts/packages/agentSdk/tsconfig.json index b6e1577e45..cdf483e0d6 100644 --- a/ts/packages/agentSdk/tsconfig.json +++ b/ts/packages/agentSdk/tsconfig.json @@ -4,7 +4,7 @@ "composite": true }, "include": [], - "references": [{ "path": "./src" }], + "references": [{ "path": "./src" }, { "path": "./test" }], "ts-node": { "esm": true } diff --git a/ts/packages/agents/browser/README.AUTOGEN.md b/ts/packages/agents/browser/README.AUTOGEN.md index 9acb788391..541da6ecde 100644 --- a/ts/packages/agents/browser/README.AUTOGEN.md +++ b/ts/packages/agents/browser/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # browser-typeagent — AI-generated documentation @@ -16,7 +16,7 @@ The `browser-typeagent` package is a TypeAgent application agent designed for br ## What it does -The `browser-typeagent` package provides a wide range of browser automation capabilities, including: +The `browser-typeagent` package provides a range of browser automation capabilities, allowing users to interact with web pages and manage browser sessions programmatically. Key features include: - **Web Navigation**: Actions such as `openWebPage`, `goBack`, `goForward`, and `reloadPage` allow users to navigate between web pages and control browser tabs. - **User Interaction**: Users can interact with web content using actions like `clickOn`, `followLinkByText`, `scrollDown`, and `scrollUp`. @@ -190,6 +190,6 @@ _2 environment variables referenced from `./src/` (set in `ts/.env` or your shel --- -_Auto-generated against commit `b1b5bcafdde8ba2387d669eec198eb70e8fa5986` on `2026-07-17T23:52:55.795Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter browser-typeagent docs:verify-links` to spot-check._ +_Auto-generated against commit `c97eb42726a9196c7ac72138faa0777c5cbc1aab` on `2026-07-18T09:48:36.613Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter browser-typeagent docs:verify-links` to spot-check._ diff --git a/ts/packages/agents/browser/src/agent/browserActionHandler.mts b/ts/packages/agents/browser/src/agent/browserActionHandler.mts index 862d740042..417ef13c6a 100644 --- a/ts/packages/agents/browser/src/agent/browserActionHandler.mts +++ b/ts/packages/agents/browser/src/agent/browserActionHandler.mts @@ -2897,6 +2897,7 @@ export async function handleWebsiteLibraryStats( responseText = statsResult.displayContent.join("\n"); } else if ( typeof statsResult.displayContent === "object" && + statsResult.displayContent.type !== "structured" && statsResult.displayContent.content ) { // Handle DisplayMessage type diff --git a/ts/packages/agents/calendar/README.AUTOGEN.md b/ts/packages/agents/calendar/README.AUTOGEN.md index 1d28a7e3f3..2a82a59847 100644 --- a/ts/packages/agents/calendar/README.AUTOGEN.md +++ b/ts/packages/agents/calendar/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # calendar — AI-generated documentation @@ -16,7 +16,7 @@ The `calendar` package is a TypeAgent application agent designed to manage calen ## What it does -The calendar agent provides a set of actions to manage and manipulate calendar events. These actions are grouped into two main categories: +The calendar agent provides a range of actions to manage and manipulate calendar events. These actions are grouped into two main categories: ### Event Management @@ -147,6 +147,6 @@ External: `chalk`, `date-fns`, `debug` --- -_Auto-generated against commit `defc71271dc68db47e0d376be7aa9f755da0ac91` on `2026-07-14T08:47:00.044Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter calendar docs:verify-links` to spot-check._ +_Auto-generated against commit `f928ce70269b7d0f8942977c29147b2c8832b722` on `2026-07-15T22:42:29.947Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter calendar docs:verify-links` to spot-check._ diff --git a/ts/packages/agents/calendar/src/calendarActionHandlerV3.ts b/ts/packages/agents/calendar/src/calendarActionHandlerV3.ts index bbff3ff9a7..5fb6caa320 100644 --- a/ts/packages/agents/calendar/src/calendarActionHandlerV3.ts +++ b/ts/packages/agents/calendar/src/calendarActionHandlerV3.ts @@ -6,9 +6,11 @@ import { AppAgent, ActionContext, ActionResult, + ActionResultSuccess, ReadinessReport, SessionContext, ParsedCommandParams, + StructuredBlock, } from "@typeagent/agent-sdk"; import { CommandHandler, @@ -25,6 +27,7 @@ import { createActionResultFromHtmlDisplay, createActionResultFromError, createActionResultFromTextDisplay, + createStructuredResult, createYesNoChoiceResult, createMultiChoiceResult, ChoiceManager, @@ -335,41 +338,6 @@ function emptyStateHtml(message: string): string { return `
${escapeHtml(message)}
`; } -// Helper function to format events as HTML -function formatEventsAsHtml(events: any[]): string { - if (!events || events.length === 0) { - return "

No events found.

"; - } - - const items = events.map((event) => { - const subject = escapeHtml(event.subject || "Untitled"); - const datePart = event.start?.dateTime - ? formatEventDate(event.start.dateTime) - : ""; - const timePart = - event.start?.dateTime && event.end?.dateTime - ? formatEventTimeRange(event.start.dateTime, event.end.dateTime) - : ""; - const location = escapeHtml(getEventLocation(event)); - - const subjectHtml = event.htmlLink - ? `${subject}` - : `${subject}`; - - const metaParts = [datePart, timePart].filter(Boolean); - const metaLine = metaParts.length - ? `
${metaParts.join("  ·  ")}
` - : ""; - const locationLine = location - ? `
${location}
` - : ""; - - return `
${subjectHtml}${metaLine}${locationLine}
`; - }); - - return `
${items.join("")}
`; -} - // Helper function to format events as professional plain text function formatEventsAsText(events: any[]): string { if (!events || events.length === 0) { @@ -406,6 +374,58 @@ function formatEventsAsText(events: any[]): string { return lines.join("\n"); } +// Build a structured agenda result: an optional heading + a table of events +// (Subject as a link, When, Location) plus a machine-readable rawData payload. +// The SDK derives the markdown/text fallback for clients that can't render +// blocks. +// +// Exported for unit tests. +export function buildStructuredEventList( + events: any[], + heading?: string, +): ActionResultSuccess { + const rows = events.map((event) => { + const subject = event.subject || "Untitled"; + const datePart = event.start?.dateTime + ? formatEventDate(event.start.dateTime) + : ""; + const timePart = + event.start?.dateTime && event.end?.dateTime + ? formatEventTimeRange(event.start.dateTime, event.end.dateTime) + : ""; + const when = [datePart, timePart].filter(Boolean).join(" · "); + const location = getEventLocation(event); + return [ + event.htmlLink ? { text: subject, href: event.htmlLink } : subject, + when, + location, + ]; + }); + + const blocks: StructuredBlock[] = []; + if (heading) { + blocks.push({ kind: "heading", level: 3, text: heading }); + } + blocks.push({ + kind: "table", + columns: [ + { id: "subject", header: "Event", type: "link" }, + { id: "when", header: "When", type: "date" }, + { id: "location", header: "Location" }, + ], + rows, + sortable: true, + pageSize: 15, + }); + + return createStructuredResult(blocks, { + historyText: heading + ? `${heading}\n\n${formatEventsAsText(events)}` + : formatEventsAsText(events), + rawData: events, + }); +} + // HH:MM timestamp prefix for setup status updates — same convention used by // screencapture / desktop runInstall + runDotnetBuild so progress reads // consistently across agents. @@ -947,10 +967,7 @@ export class CalendarActionHandlerV3 implements AppAgent { ); } - return createActionResultFromHtmlDisplay( - formatEventsAsHtml(events), - formatEventsAsText(events), - ); + return buildStructuredEventList(events); } catch (error: any) { debugError(chalk.red(`Error finding events: ${error.message}`)); return createActionResultFromError( @@ -1057,12 +1074,8 @@ export class CalendarActionHandlerV3 implements AppAgent { month: "long", day: "numeric", }); - const heading = `Today's Schedule \u2014 ${todayLabel}`; - const textResult = `${heading}\n${"=".repeat(heading.length)}\n\n${formatEventsAsText(events)}`; - return createActionResultFromHtmlDisplay( - `
Today's Schedule \u2014 ${todayLabel}
${formatEventsAsHtml(events)}
`, - textResult, - ); + const heading = `Today's Schedule \u2014 ${todayLabel}`; + return buildStructuredEventList(events, heading); } catch (error: any) { debugError( chalk.red(`Error finding today's events: ${error.message}`), @@ -1096,12 +1109,8 @@ export class CalendarActionHandlerV3 implements AppAgent { const weekStart = new Date(dateRange.startDateTime); const weekEnd = new Date(dateRange.endDateTime); const weekRangeLabel = `${weekStart.toLocaleDateString(undefined, { month: "short", day: "numeric" })} \u2013 ${weekEnd.toLocaleDateString(undefined, { month: "short", day: "numeric" })}`; - const weekHeading = `This Week's Schedule \u2014 ${weekRangeLabel}`; - const textResult = `${weekHeading}\n${"=".repeat(weekHeading.length)}\n\n${formatEventsAsText(events)}`; - return createActionResultFromHtmlDisplay( - `
This Week's Schedule \u2014 ${weekRangeLabel}
${formatEventsAsHtml(events)}
`, - textResult, - ); + const weekHeading = `This Week's Schedule \u2014 ${weekRangeLabel}`; + return buildStructuredEventList(events, weekHeading); } catch (error: any) { debugError( chalk.red(`Error finding this week's events: ${error.message}`), diff --git a/ts/packages/agents/calendar/test/calendarStructured.spec.ts b/ts/packages/agents/calendar/test/calendarStructured.spec.ts new file mode 100644 index 0000000000..ad2575fc9f --- /dev/null +++ b/ts/packages/agents/calendar/test/calendarStructured.spec.ts @@ -0,0 +1,96 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/** + * Unit tests for the structured-content agenda builder in + * calendarActionHandlerV3. buildStructuredEventList converts a list of raw + * calendar events into an ActionResultSuccess whose displayContent is a + * StructuredContent document (optional heading + table). + */ + +import { buildStructuredEventList } from "../src/calendarActionHandlerV3.js"; + +function blocks(result: ReturnType) { + return (result.displayContent as any).blocks; +} + +function tableBlock(result: ReturnType) { + return blocks(result).find((b: any) => b.kind === "table"); +} + +const events = [ + { + subject: "Team sync", + start: { dateTime: "2026-07-13T09:00:00" }, + end: { dateTime: "2026-07-13T09:30:00" }, + location: { displayName: "Room 1" }, + htmlLink: "https://calendar.example/e/1", + }, + { + subject: "1:1", + start: { dateTime: "2026-07-13T11:00:00" }, + end: { dateTime: "2026-07-13T11:30:00" }, + location: "Cafe", + }, +]; + +describe("buildStructuredEventList", () => { + test("returns a structured displayContent", () => { + const result = buildStructuredEventList(events); + expect((result.displayContent as any).type).toBe("structured"); + }); + + test("no heading when omitted", () => { + const result = buildStructuredEventList(events); + expect(blocks(result).some((b: any) => b.kind === "heading")).toBe( + false, + ); + }); + + test("adds a heading block when provided", () => { + const result = buildStructuredEventList(events, "Today"); + expect(blocks(result)[0]).toMatchObject({ + kind: "heading", + text: "Today", + }); + }); + + test("table has Event / When / Location columns", () => { + const t = tableBlock(buildStructuredEventList(events)); + expect(t.columns.map((c: any) => c.id)).toEqual([ + "subject", + "when", + "location", + ]); + }); + + test("subject cell is a link when htmlLink is present", () => { + const t = tableBlock(buildStructuredEventList(events)); + expect(t.rows[0][0]).toMatchObject({ + text: "Team sync", + href: "https://calendar.example/e/1", + }); + }); + + test("subject cell is plain text without htmlLink", () => { + const t = tableBlock(buildStructuredEventList(events)); + expect(t.rows[1][0]).toBe("1:1"); + }); + + test("location resolves both object and string forms", () => { + const t = tableBlock(buildStructuredEventList(events)); + expect(t.rows[0][2]).toBe("Room 1"); + expect(t.rows[1][2]).toBe("Cafe"); + }); + + test("table is sortable and paginated", () => { + const t = tableBlock(buildStructuredEventList(events)); + expect(t.sortable).toBe(true); + expect(t.pageSize).toBe(15); + }); + + test("rawData carries the original events", () => { + const result = buildStructuredEventList(events); + expect((result.displayContent as any).rawData).toBe(events); + }); +}); diff --git a/ts/packages/agents/discord/README.AUTOGEN.md b/ts/packages/agents/discord/README.AUTOGEN.md index a857732ef9..1c0bd51a5e 100644 --- a/ts/packages/agents/discord/README.AUTOGEN.md +++ b/ts/packages/agents/discord/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # discord-agent — AI-generated documentation @@ -12,30 +12,31 @@ ## Overview -The `discord-agent` package is a TypeAgent application agent that facilitates interaction with Discord servers using natural language commands. It integrates with the Discord REST API v10 to perform tasks such as sending messages, managing channels, creating invites, and more. This agent is designed to simplify server management and communication by interpreting user commands and executing the appropriate actions. +The `discord-agent` package is a TypeAgent application agent that enables interaction with Discord servers through natural language commands. By leveraging the Discord REST API v10, this agent allows users to perform various tasks such as sending messages, managing channels, creating invites, and more. It simplifies server management and communication by interpreting user commands and executing corresponding actions. ## What it does -The `discord-agent` provides a range of actions to interact with Discord servers. These actions are grouped into several categories: +The `discord-agent` provides a set of actions that allow users to interact with Discord servers. These actions are grouped into the following categories: -- **Message Management**: +### Message Management - - `createMessage`: Sends a specific message to a channel. - - `craftMessage`: Uses an LLM to generate a message based on a high-level intent and posts it to a channel. - - `getChannelMessages`: Retrieves messages from a specified channel. +- **`createMessage`**: Sends a specific message to a channel. For example, "Send a message to the general channel saying 'Hello everyone!'". +- **`craftMessage`**: Uses an LLM to generate a message based on a high-level intent and posts it to a channel. For example, "Send a message to #general that welcomes everyone to the discord". +- **`getChannelMessages`**: Retrieves messages from a specified channel. For example, "Can you show me the latest messages from the channel with ID 12345?". -- **User and Server Management**: +### User and Server Management - - `getCurrentUser`: Fetches details about the bot's account. - - `setGuild`: Sets the default Discord server (guild) for all operations. +- **`getCurrentUser`**: Fetches details about the bot's account, such as username, discriminator, and ID. +- **`setGuild`**: Sets the default Discord server (guild) for all operations. For example, "Set my Discord server to YOUR_SERVER_ID". -- **Channel Management**: +### Channel Management - - `listChannels`: Lists all channels in the current Discord server. - - `refreshChannels`: Refreshes the cached list of channels from the server. +- **`listChannels`**: Lists all channels in the current Discord server, grouped by categories. +- **`refreshChannels`**: Refreshes the cached list of channels from the server. -- **Invite Management**: - - `createChannelInvite`: Creates a new invite link for a specific channel. +### Invite Management + +- **`createChannelInvite`**: Creates a new invite link for a specific channel. For example, "Create an invite for #general that never expires". These actions allow users to perform common Discord tasks without directly interacting with the Discord interface. The agent also supports natural language processing to interpret user commands and map them to the appropriate actions. @@ -43,78 +44,82 @@ These actions allow users to perform common Discord tasks without directly inter To use the `discord-agent`, you need to configure a Discord bot and set up the required environment variables. Follow these steps: -1. **Prerequisites**: +### Prerequisites + +- Install **Node.js** (version 20 or higher) and **pnpm** (version 10 or higher). +- Create a Discord account and have access to a Discord server (guild) that you manage. - - Install Node.js (version 20 or higher) and pnpm (version 10 or higher). - - Create a Discord account and have access to a Discord server (guild) that you manage. +### Create and Configure a Discord Bot -2. **Create and Configure a Discord Bot**: +1. Visit the Discord Developer Portal at `https://discord.com/developers/applications` and create a new application. +2. Navigate to the **Bot** tab, create a bot, and reset its token. Copy the token for later use. +3. Add the token to the `ts/.env` file in the project root: + ```env + DISCORD_BOT_TOKEN=your_token_here + ``` +4. Enable the **Message Content Intent** in the **Bot → Privileged Gateway Intents** section of the Developer Portal. +5. Use the **OAuth2 URL Generator** in the Developer Portal to create an invite link for your bot: + - Select the **bot** scope. + - Grant the bot permissions such as **Send Messages** and **Read Message History**. + - Add a redirect URL (e.g., `https://localhost`) in the **OAuth2 > General > Redirects** section before generating the invite link. + - Open the generated URL in your browser, select your server, and click **Authorize**. - - Visit the Discord Developer Portal at `https://discord.com/developers/applications` and create a new application. - - Navigate to the **Bot** tab, create a bot, and reset its token. Copy the token for later use. - - Add the token to the `ts/.env` file in the project root: - ```env - DISCORD_BOT_TOKEN=your_token_here - ``` - - Enable the **Message Content Intent** in the **Bot → Privileged Gateway Intents** section of the Developer Portal. - - Use the **OAuth2 URL Generator** in the Developer Portal to create an invite link for your bot: - - Select the **bot** scope. - - Grant the bot permissions such as **Send Messages** and **Read Message History**. - - Add a redirect URL (e.g., `https://localhost`) in the **OAuth2 > General > Redirects** section before generating the invite link. - - Open the generated URL in your browser, select your server, and click **Authorize**. +### Enable Developer Mode in Discord -3. **Enable Developer Mode in Discord**: +- In Discord, go to **Settings → Advanced → Developer Mode** and enable it. +- Right-click your server name in the sidebar and select **Copy Server ID** to obtain your server's ID. - - In Discord, go to **Settings → Advanced → Developer Mode** and enable it. - - Right-click your server name in the sidebar and select **Copy Server ID** to obtain your server's ID. +### First-Time Setup in TypeAgent -4. **First-Time Setup in TypeAgent**: - - Restart TypeAgent with the bot token configured. - - Set your Discord server ID using the following command: - ```bash - set my discord server to YOUR_SERVER_ID - ``` - - The agent will automatically fetch and cache all channels in the server. +- Restart TypeAgent with the bot token configured. +- Set your Discord server ID using the following command: + ```bash + set my discord server to YOUR_SERVER_ID + ``` +- The agent will automatically fetch and cache all channels in the server. ## Key Files -The `discord-agent` package is organized into several key files that define its functionality: +The `discord-agent` package is structured around key files that define its functionality: -- [src/discordActionHandler.ts](./src/discordActionHandler.ts): Contains the implementation of the action handlers, including logic for sending messages, creating invites, and managing channels. -- [src/discordManifest.json](./src/discordManifest.json): Defines the agent's metadata, including its description, schema, and default settings. -- [src/discordSchema.ts](./src/discordSchema.ts): Specifies the TypeScript types and structures for the actions supported by the agent. -- [src/discordSchema.agr](./src/discordSchema.agr): Contains the grammar definitions for parsing natural language commands into actionable intents. +- **[src/discordActionHandler.ts](./src/discordActionHandler.ts)**: Implements the logic for handling actions such as sending messages, creating invites, and managing channels. +- **[src/discordManifest.json](./src/discordManifest.json)**: Contains metadata about the agent, including its description, schema, and default settings. +- **[src/discordSchema.ts](./src/discordSchema.ts)**: Defines the TypeScript types and structures for the actions supported by the agent. +- **[src/discordSchema.agr](./src/discordSchema.agr)**: Specifies the grammar rules for parsing natural language commands into actionable intents. + +These files work together to enable the agent's functionality, from understanding user commands to executing the corresponding actions via the Discord API. ## How to extend To extend the `discord-agent` package, you can add new actions, update the grammar, and implement the corresponding handlers. Here’s how: -1. **Define New Actions**: +### 1. Define New Actions + +- Add the new action's type definition to [discordSchema.ts](./src/discordSchema.ts). +- Specify the action's parameters and expected behavior. - - Add the new action's type definition to [discordSchema.ts](./src/discordSchema.ts). - - Specify the action's parameters and expected behavior. +### 2. Update the Grammar -2. **Update the Grammar**: +- Modify [discordSchema.agr](./src/discordSchema.agr) to include new natural language patterns for the action. +- Ensure the grammar maps user commands to the new action and its parameters. - - Modify [discordSchema.agr](./src/discordSchema.agr) to include new natural language patterns for the action. - - Ensure the grammar maps user commands to the new action and its parameters. +### 3. Implement the Action Handler -3. **Implement the Action Handler**: +- Add the logic for the new action in [discordActionHandler.ts](./src/discordActionHandler.ts). +- Use the Discord REST API to perform the desired operation. - - Add the logic for the new action in [discordActionHandler.ts](./src/discordActionHandler.ts). - - Use the Discord REST API to perform the desired operation. +### 4. Test the New Functionality -4. **Test the New Functionality**: +- Write unit tests for the new action and its handler. +- Run the tests using: + ```bash + pnpm run test + ``` - - Write unit tests for the new action and its handler. - - Run the tests using: - ```bash - pnpm run test - ``` +### 5. Update Documentation -5. **Update Documentation**: - - Document the new action in the hand-written README or other relevant documentation files. - - Ensure the grammar and schema changes are reflected in the auto-generated documentation. +- Document the new action in the hand-written README or other relevant documentation files. +- Ensure the grammar and schema changes are reflected in the auto-generated documentation. By following these steps, you can enhance the `discord-agent` package to support additional Discord functionalities or customize it for specific use cases. @@ -125,7 +130,7 @@ By following these steps, you can enhance the `discord-agent` package to support ### Entry points - `./agent/manifest` → [./src/discordManifest.json](./src/discordManifest.json) -- `./agent/handlers` → `./dist/discordActionHandler.js` _(not found on disk)_ +- `./agent/handlers` → [./dist/discordActionHandler.js](./dist/discordActionHandler.js) ### Dependencies @@ -176,6 +181,6 @@ _8 actions implemented by this agent, parsed deterministically from `./src/disco --- -_Auto-generated against commit `44b34a9ac8794b6f90489ff7e55fe57283c34960` on `2026-07-13T09:04:14.089Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter discord-agent docs:verify-links` to spot-check._ +_Auto-generated against commit `f928ce70269b7d0f8942977c29147b2c8832b722` on `2026-07-15T22:42:29.947Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter discord-agent docs:verify-links` to spot-check._ diff --git a/ts/packages/agents/discord/src/discordActionHandler.ts b/ts/packages/agents/discord/src/discordActionHandler.ts index 5ae68c504f..71847b7844 100644 --- a/ts/packages/agents/discord/src/discordActionHandler.ts +++ b/ts/packages/agents/discord/src/discordActionHandler.ts @@ -7,10 +7,13 @@ import { TypeAgentAction, ActionResult, SessionContext, + StructuredBlock, + ListItem, } from "@typeagent/agent-sdk"; import { createActionResultFromTextDisplay, createActionResultFromError, + createStructuredResult, } from "@typeagent/agent-sdk/helpers/action"; import { ChatModel, openai } from "@typeagent/aiclient"; import { DiscordActions } from "./discordSchema.js"; @@ -496,7 +499,8 @@ async function executeAction( `4. Save and restart the bot`, ); } - const display = messages.slice(0, 10).map((m) => { + const shown = messages.slice(0, 10); + const rows = shown.map((m) => { let content = m.content?.trim() ?? ""; if (!content) { content = SYSTEM_MESSAGE_TYPES[m.type] @@ -512,12 +516,35 @@ async function executeAction( minute: "2-digit", hour12: true, }); - return `[${ts}] ${m.author?.username ?? "unknown"}: ${content}`; + return [ts, m.author?.username ?? "unknown", content]; }); - return createActionResultFromTextDisplay( - display.length > 0 - ? display.join("\n") - : "No messages found.", + if (rows.length === 0) { + return createActionResultFromTextDisplay( + "No messages found.", + ); + } + return createStructuredResult( + [ + { + kind: "table", + columns: [ + { id: "time", header: "Time", type: "date" }, + { id: "author", header: "Author" }, + { id: "message", header: "Message" }, + ], + rows, + sortable: true, + }, + ], + { + rawData: shown.map((m) => ({ + id: m.id, + timestamp: m.timestamp, + author: m.author?.username, + content: m.content, + type: m.type, + })), + }, ); } case "getCurrentUser": { @@ -576,29 +603,56 @@ async function executeAction( group.sort((a, b) => (a.position ?? 0) - (b.position ?? 0)); } - const lines: string[] = []; + const blocks: StructuredBlock[] = []; + const totalNonCategory = all.filter( + (ch) => ch.type !== 4, + ).length; + blocks.push({ + kind: "heading", + level: 3, + text: `Channels (${totalNonCategory})`, + }); + + const toItems = (chans: DiscordChannel[]): ListItem[] => + chans.map((ch) => ({ + text: ch.name ?? ch.id, + subtitle: TYPE_LABELS[ch.type] ?? `type-${ch.type}`, + })); + // Uncategorized channels first - for (const ch of byParent.get(undefined) ?? []) { - const label = TYPE_LABELS[ch.type] ?? `type-${ch.type}`; - lines.push(` • ${ch.name} (${label})`); + const uncategorized = byParent.get(undefined) ?? []; + if (uncategorized.length > 0) { + blocks.push({ + kind: "list", + items: toItems(uncategorized), + }); } // Each category and its children for (const cat of categories) { - lines.push(`\n ${cat.name?.toUpperCase() ?? cat.id}`); - for (const ch of byParent.get(cat.id) ?? []) { - const label = TYPE_LABELS[ch.type] ?? `type-${ch.type}`; - lines.push(` • ${ch.name} (${label})`); - } + const children = byParent.get(cat.id) ?? []; + if (children.length === 0) continue; + blocks.push({ + kind: "heading", + level: 3, + text: cat.name?.toUpperCase() ?? cat.id, + }); + blocks.push({ kind: "list", items: toItems(children) }); } - const totalNonCategory = all.filter( - (ch) => ch.type !== 4, - ).length; - return createActionResultFromTextDisplay( - lines.length > 0 - ? `Channels (${totalNonCategory}):\n${lines.join("\n")}` - : "No channels found.", - ); + if (totalNonCategory === 0) { + return createActionResultFromTextDisplay( + "No channels found.", + ); + } + return createStructuredResult(blocks, { + rawData: all.map((ch) => ({ + id: ch.id, + name: ch.name, + type: ch.type, + parent_id: ch.parent_id, + position: ch.position, + })), + }); } case "refreshChannels": { await fetchAndCacheChannels( diff --git a/ts/packages/agents/email/README.AUTOGEN.md b/ts/packages/agents/email/README.AUTOGEN.md index b0af7dc2fe..d6573f88e9 100644 --- a/ts/packages/agents/email/README.AUTOGEN.md +++ b/ts/packages/agents/email/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # email — AI-generated documentation @@ -12,18 +12,18 @@ ## Overview -The Email agent is a TypeAgent application agent designed to facilitate email management through the Microsoft Graph API. It enables users to perform common email operations such as sending, replying to, forwarding, and searching for emails. By leveraging structured prompting and large language models (LLMs), the agent interprets user requests and interacts with the Outlook mail client via the Microsoft Graph API. +The Email agent is a TypeAgent application agent that facilitates email management by integrating with the Microsoft Graph API. It enables users to perform common email operations such as sending, replying to, forwarding, and searching for emails. The agent leverages structured prompting and large language models (LLMs) to interpret user requests and execute email-related actions via the Outlook mail client. ## What it does -The Email agent provides functionality for managing email communication through the following actions: +The Email agent supports the following actions, which are implemented using the Microsoft Graph API: -- **`sendEmail`**: Allows users to send an email with a subject, body, and recipients. Additional options include CC, BCC, and attachments (file paths or URLs). The `genContent` parameter can be used to generate email content dynamically. -- **`forwardEmail`**: Enables forwarding an existing email to specified recipients, with an optional additional message. -- **`replyEmail`**: Facilitates replying to an existing email, with options to include a body, CC, BCC, and attachments. +- **`sendEmail`**: Sends an email with a subject, body, and recipients. Additional options include CC, BCC, and attachments (file paths or URLs). The `genContent` parameter allows dynamic content generation for the email body. +- **`forwardEmail`**: Forwards an existing email to specified recipients, with an optional additional message. +- **`replyEmail`**: Replies to an existing email, with options to include a body, CC, BCC, and attachments. - **`findEmail`**: Searches for an email message using a `messageRef` parameter, which identifies the email to be retrieved. -These actions are implemented using the Microsoft Graph API, which provides access to email accounts and related operations. The agent also integrates with the `graph-utils` library for email-specific functionality and supports advanced features like content generation using LLMs. +These actions are implemented in [emailActionHandler.ts](./src/emailActionHandler.ts) and rely on the `graph-utils` library for email-specific functionality. The agent also integrates with the `@microsoft/microsoft-graph-client` library to interact with the Microsoft Graph API. ## Setup @@ -100,7 +100,7 @@ By following this process, you can extend the Email agent to support additional ### Entry points - `./agent/manifest` → [./src/emailManifest.json](./src/emailManifest.json) -- `./agent/handlers` → `./dist/emailActionHandler.js` _(not found on disk)_ +- `./agent/handlers` → [./dist/emailActionHandler.js](./dist/emailActionHandler.js) ### Dependencies @@ -143,6 +143,6 @@ _4 actions implemented by this agent, parsed deterministically from `./src/email --- -_Auto-generated against commit `44b34a9ac8794b6f90489ff7e55fe57283c34960` on `2026-07-13T09:04:14.089Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter email docs:verify-links` to spot-check._ +_Auto-generated against commit `f928ce70269b7d0f8942977c29147b2c8832b722` on `2026-07-15T22:42:29.947Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter email docs:verify-links` to spot-check._ diff --git a/ts/packages/agents/email/src/emailActionHandler.ts b/ts/packages/agents/email/src/emailActionHandler.ts index 1405138d22..ced3e708ed 100644 --- a/ts/packages/agents/email/src/emailActionHandler.ts +++ b/ts/packages/agents/email/src/emailActionHandler.ts @@ -40,9 +40,10 @@ import { createActionResultFromError, createActionResultFromHtmlDisplay, createActionResultFromTextDisplay, + createStructuredResult, createYesNoChoiceResult, } from "@typeagent/agent-sdk/helpers/action"; -import { ActionResultSuccess } from "@typeagent/agent-sdk"; +import { ActionResultSuccess, BadgeTone } from "@typeagent/agent-sdk"; import { CommandHandler, CommandHandlerNoParams, @@ -881,54 +882,66 @@ async function trySilentEmailSignIn( } } -function formatEmailListHtml( +function formatEmailListPlain( messages: EmailMessage[], heading: string, ): string { - const rows = messages.map((msg) => { - const from = msg.from - ? escapeHtml(msg.from.name || msg.from.address) - : "Unknown"; - const subject = escapeHtml(msg.subject); + const lines: string[] = [heading + "\n"]; + for (const msg of messages) { + lines.push(formatMessageSummary(msg)); + } + return lines.join("\n"); +} + +// Build a structured email-list result: a heading + a list block (one item +// per message, with the subject as a link, a "From · date" subtitle, and an +// unread badge) plus a machine-readable rawData payload. The SDK derives the +// markdown/text fallback for clients that can't render blocks. +function buildStructuredEmailList( + messages: EmailMessage[], + heading: string, +): ActionResultSuccess { + const items = messages.map((msg) => { + const from = msg.from ? msg.from.name || msg.from.address : "Unknown"; const date = msg.receivedDateTime ? new Date(msg.receivedDateTime).toLocaleDateString() : ""; const preview = msg.bodyPreview - ? escapeHtml( - msg.bodyPreview.replace(/\s+/g, " ").trim().slice(0, 120), - ) + ? msg.bodyPreview.replace(/\s+/g, " ").trim().slice(0, 120) : ""; + const subtitleParts = [`From ${from}`]; + if (date) subtitleParts.push(date); + if (preview) subtitleParts.push(preview); const unread = msg.isRead === false; - const borderColor = unread ? "#4a9eda" : "#ccc"; - const subjectWeight = unread ? "font-weight:bold;" : ""; - - // Wrap subject in a link if webLink is available - const subjectHtml = msg.webLink - ? `${subject}` - : `${subject}`; - - return `
-
${subjectHtml} · ${date}
-
From: ${from}
- ${preview ? `
${preview}
` : ""} -
`; + return { + text: msg.subject || "(no subject)", + ...(msg.webLink ? { href: msg.webLink } : {}), + subtitle: subtitleParts.join(" · "), + badges: unread ? (["info"] as BadgeTone[]) : [], + }; }); - return `
-
${escapeHtml(heading)}
-${rows.join("\n")} -
`; -} + const rawData = messages.map((msg) => ({ + subject: msg.subject, + from: msg.from + ? { name: msg.from.name, address: msg.from.address } + : undefined, + receivedDateTime: msg.receivedDateTime, + isRead: msg.isRead, + webLink: msg.webLink, + bodyPreview: msg.bodyPreview, + })); -function formatEmailListPlain( - messages: EmailMessage[], - heading: string, -): string { - const lines: string[] = [heading + "\n"]; - for (const msg of messages) { - lines.push(formatMessageSummary(msg)); - } - return lines.join("\n"); + return createStructuredResult( + [ + { kind: "heading", level: 3, text: heading }, + { kind: "list", items }, + ], + { + rawData, + historyText: formatEmailListPlain(messages, heading), + }, + ); } const SELF_TERMS = new Set(["myself", "me", "my email", "i", "my", "s"]); @@ -1116,10 +1129,7 @@ async function handleFindEmailAction( return "No emails found in inbox."; } const heading = `Inbox (${messages.length} messages):`; - return createActionResultFromHtmlDisplay( - formatEmailListHtml(messages, heading), - formatEmailListPlain(messages, heading), - ); + return buildStructuredEmailList(messages, heading); } // Provider search — primary path for all queries @@ -1207,10 +1217,7 @@ ${sourceLinksHtml} // Metadata-only query or RAG fallback: show email list const heading = `Found ${messages.length} email(s):`; - return createActionResultFromHtmlDisplay( - formatEmailListHtml(messages, heading), - formatEmailListPlain(messages, heading), - ); + return buildStructuredEmailList(messages, heading); } /** diff --git a/ts/packages/agents/github-cli/README.AUTOGEN.md b/ts/packages/agents/github-cli/README.AUTOGEN.md index 09bfa62242..ff46a1eff7 100644 --- a/ts/packages/agents/github-cli/README.AUTOGEN.md +++ b/ts/packages/agents/github-cli/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # github-cli-agent — AI-generated documentation @@ -12,16 +12,16 @@ ## Overview -The `github-cli-agent` is a TypeAgent application agent designed to interact with GitHub through the GitHub CLI (`gh`). It enables users to perform a wide range of GitHub operations, such as managing repositories, issues, pull requests, workflows, and more, using natural language commands. By leveraging the GitHub CLI, this agent provides a streamlined interface for automating and simplifying common GitHub tasks. +The `github-cli-agent` is a TypeAgent application agent that integrates with the GitHub CLI (`gh`) to enable natural language-driven interactions with GitHub. It provides a wide range of actions for managing repositories, issues, pull requests, workflows, and other GitHub features. By leveraging the GitHub CLI, the agent simplifies complex GitHub operations into intuitive commands. ## What it does -The `github-cli-agent` supports 65 actions, categorized into several functional areas: +The `github-cli-agent` supports 65 actions, grouped into the following categories: -- **Authentication**: Actions like `authLogin`, `authLogout`, and `authStatus` allow users to manage their GitHub authentication, including logging in, logging out, and checking the current authentication status. -- **Issues**: Manage GitHub issues with actions such as `issueCreate`, `issueClose`, `issueDelete`, `issueReopen`, `issueList`, and `issueView`. These actions enable users to create, modify, delete, and view issues across repositories. -- **Pull Requests**: Handle pull request workflows with actions like `prCreate`, `prClose`, `prMerge`, `prList`, `prView`, and `prCheckout`. These actions cover the entire lifecycle of pull requests, from creation to merging. -- **Repositories**: Perform repository-related tasks with actions such as `repoCreate`, `repoClone`, `repoDelete`, `repoView`, `repoFork`, `starRepo`, and `searchRepos`. These actions allow users to create, clone, delete, and explore repositories. +- **Authentication**: Manage GitHub authentication with actions like `authLogin`, `authLogout`, and `authStatus`. These actions allow users to log in, log out, and check their authentication status. +- **Issues**: Create, close, reopen, delete, list, and view issues using actions such as `issueCreate`, `issueClose`, `issueReopen`, `issueDelete`, `issueList`, and `issueView`. +- **Pull Requests**: Handle pull request workflows with actions like `prCreate`, `prClose`, `prMerge`, `prList`, `prView`, and `prCheckout`. These actions support creating, managing, and reviewing pull requests. +- **Repositories**: Perform repository-related tasks with actions such as `repoCreate`, `repoClone`, `repoDelete`, `repoView`, `repoFork`, `starRepo`, and `searchRepos`. These actions allow users to manage repositories and retrieve specific information about them. - **Codespaces**: Manage GitHub Codespaces with actions like `codespaceCreate`, `codespaceDelete`, and `codespaceList`. - **Gists**: Create, delete, and list gists using `gistCreate`, `gistDelete`, and `gistList`. - **Projects**: Manage GitHub projects with actions like `projectCreate`, `projectDelete`, and `projectList`. @@ -31,25 +31,25 @@ The `github-cli-agent` supports 65 actions, categorized into several functional - **Workflows**: View workflow runs and details using `workflowView` and `runView`. - **Miscellaneous**: Includes actions like `cacheList`, `cacheDelete`, `configSet`, `sshKeyAdd`, and `statusPrint`. -The agent enhances the user experience by providing features such as clickable hyperlinks in listings, color-coded output for Dependabot alerts, and user-friendly confirmation messages for actions like creating or deleting resources. +The agent enhances usability by providing features such as clickable hyperlinks in listings, color-coded output for Dependabot alerts, and user-friendly confirmation messages for actions like creating or deleting resources. ## Setup -To use the `github-cli-agent`, follow these steps: +To use the `github-cli-agent`, you need to complete the following setup steps: 1. **Install the GitHub CLI**: Download and install the GitHub CLI from `https://cli.github.com/`. Ensure it is available in your system's `PATH`. -2. **Authenticate with GitHub**: Run `gh auth login` to authenticate with your GitHub account. +2. **Authenticate with GitHub**: Run `gh auth login` to authenticate with your GitHub account. This step is required for the agent to interact with GitHub on your behalf. The agent performs a `gh auth status` readiness check at startup and before executing any action. If the CLI is not installed or the user is not authenticated, the dispatcher will provide instructions to resolve the issue. After addressing any issues, run `@config agent refresh github-cli` to re-probe the environment. ## Key Files -The `github-cli-agent` is structured around several key files that define its functionality: +The `github-cli-agent` is organized into several key files that define its behavior and functionality: - **[github-cliManifest.json](./src/github-cliManifest.json)**: Contains metadata about the agent, including its description, emoji, and schema details. -- **[github-cliSchema.ts](./src/github-cliSchema.ts)**: Defines the types and parameters for all supported actions. -- **[github-cliSchema.agr](./src/github-cliSchema.agr)**: Maps natural language inputs to specific actions and their parameters. -- **[github-cliActionHandler.ts](./src/github-cliActionHandler.ts)**: Implements the logic for executing actions by invoking the GitHub CLI. +- **[github-cliSchema.ts](./src/github-cliSchema.ts)**: Defines the types and parameters for all supported actions. This file is the source of truth for the agent's capabilities. +- **[github-cliSchema.agr](./src/github-cliSchema.agr)**: Maps natural language inputs to specific actions and their parameters. This file is essential for interpreting user commands. +- **[github-cliActionHandler.ts](./src/github-cliActionHandler.ts)**: Implements the logic for executing actions by invoking the GitHub CLI. This is where the core functionality of the agent resides. - **[setup.ts](./src/setup.ts)**: Handles installation and readiness checks for the GitHub CLI, including platform-specific setup logic. These files work together to define the agent's capabilities, interpret user inputs, and execute the corresponding GitHub CLI commands. @@ -156,6 +156,6 @@ _65 actions implemented by this agent, parsed deterministically from `./src/gith --- -_Auto-generated against commit `defc71271dc68db47e0d376be7aa9f755da0ac91` on `2026-07-14T08:47:00.044Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter github-cli-agent docs:verify-links` to spot-check._ +_Auto-generated against commit `f928ce70269b7d0f8942977c29147b2c8832b722` on `2026-07-15T22:42:29.947Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter github-cli-agent docs:verify-links` to spot-check._ diff --git a/ts/packages/agents/github-cli/src/github-cliActionHandler.ts b/ts/packages/agents/github-cli/src/github-cliActionHandler.ts index b0abd04e4b..25f05b100f 100644 --- a/ts/packages/agents/github-cli/src/github-cliActionHandler.ts +++ b/ts/packages/agents/github-cli/src/github-cliActionHandler.ts @@ -8,6 +8,11 @@ import { ActionResult, ActionResultSuccess, ReadinessReport, + BadgeTone, + TableCell, + TableBlock, + KeyValuePair, + StructuredBlock, } from "@typeagent/agent-sdk"; import { ChoiceManager, @@ -17,6 +22,11 @@ import { createMultiChoiceResult, createYesNoChoiceResult, } from "@typeagent/agent-sdk/helpers/action"; +import { + ColumnSpec, + createStructuredContent, + createTable, +} from "@typeagent/agent-sdk/helpers/display"; import { GithubCliActions } from "./github-cliSchema.js"; import { execFile } from "node:child_process"; import { promisify } from "node:util"; @@ -897,6 +907,55 @@ function distillRepoField( } } +// Build a focused structured answer for a specific repo field. Wraps the +// natural-language summary as a single-pair keyValue block plus a rawData +// payload carrying the raw field value. Returns undefined for unknown fields. +// +// Exported for unit tests. +export function buildStructuredField( + field: string, + data: Record, + repo: string, +): ActionResultSuccess | undefined { + const summary = distillRepoField(field, data, repo); + if (summary === undefined) { + return undefined; + } + const label = + repo || `${formatValue(data.owner)}/${String(data.name ?? "")}`; + const fieldLabels: Record = { + stars: "Stars", + forks: "Forks", + language: "Language", + watchers: "Watchers", + description: "Description", + }; + const rawValues: Record = { + stars: data.stargazerCount, + forks: data.forkCount, + language: formatValue(data.primaryLanguage), + watchers: formatValue(data.watchers), + description: data.description, + }; + const value = rawValues[field]; + const pair: KeyValuePair = { + label: fieldLabels[field] ?? field, + value: typeof value === "number" ? value : String(value ?? ""), + }; + const blocks: StructuredBlock[] = [ + { kind: "heading", level: 3, text: label }, + { kind: "keyValue", pairs: [pair] }, + { kind: "text", text: summary, format: "markdown" }, + ]; + return { + historyText: summary, + entities: [], + displayContent: createStructuredContent(blocks, { + rawData: { repo: label, field, value }, + }), + }; +} + // Format gh status output — parse the │-table into clean markdown sections // code-complexity-allow: sequential gh status table parser; many format branches function formatStatusOutput(raw: string): string { @@ -993,13 +1052,20 @@ function formatStatusOutput(raw: string): string { return result.join("\n"); } -// Format a single issue view from JSON into rich markdown -function formatIssueView(data: Record): string { +// Build a single-issue structured view (issueView action). Renders a heading, +// a keyValue metadata block, and an optional truncated body text block, plus a +// rawData payload carrying the full gh JSON. +// +// Exported for unit tests. +export function buildStructuredIssueView( + data: Record, +): ActionResultSuccess { const author = data.author ? formatValue(data.author) : "unknown"; const labels = Array.isArray(data.labels) ? (data.labels as Record[]) - .map((l) => `\`${l.name}\``) - .join(" ") + .map((l) => String(l.name ?? "")) + .filter(Boolean) + .join(", ") : ""; const assignees = Array.isArray(data.assignees) ? (data.assignees as Record[]) @@ -1009,111 +1075,437 @@ function formatIssueView(data: Record): string { const commentCount = Array.isArray(data.comments) ? data.comments.length : (data.comments ?? 0); - const body = data.body ? String(data.body).slice(0, 1000) : ""; - const bodySection = body - ? `\n\n---\n\n${body}${String(data.body).length > 1000 ? "\n\n*…truncated*" : ""}` - : ""; - let header = `### [#${data.number} ${data.title}](${data.url})\n\n`; - header += `**State:** ${data.state}`; - header += ` · **Author:** ${author}`; - if (labels) header += ` · **Labels:** ${labels}`; - if (assignees) header += `\n**Assignees:** ${assignees}`; - header += ` · **Comments:** ${commentCount}`; - header += ` · **Created:** ${String(data.createdAt).slice(0, 10)}`; + const pairs: KeyValuePair[] = []; + pairs.push({ + label: "State", + value: { + text: String(data.state ?? ""), + badge: issueBadge(String(data.state ?? "")), + }, + }); + pairs.push({ label: "Author", value: author }); + if (labels) pairs.push({ label: "Labels", value: labels }); + if (assignees) pairs.push({ label: "Assignees", value: assignees }); + pairs.push({ label: "Comments", value: Number(commentCount) }); + if (data.createdAt) + pairs.push({ + label: "Created", + value: String(data.createdAt).slice(0, 10), + }); if (data.closedAt) - header += ` · **Closed:** ${String(data.closedAt).slice(0, 10)}`; + pairs.push({ + label: "Closed", + value: String(data.closedAt).slice(0, 10), + }); + if (data.url) + pairs.push({ + label: "Link", + value: { text: String(data.url), href: String(data.url) }, + }); - return header + bodySection; + const headingText = `#${data.number} ${data.title}`; + const blocks: StructuredBlock[] = [ + { kind: "heading", level: 3, text: headingText }, + { kind: "keyValue", pairs }, + ]; + const body = data.body ? String(data.body) : ""; + if (body) { + blocks.push({ kind: "divider" }); + blocks.push({ + kind: "text", + text: + body.slice(0, 1000) + + (body.length > 1000 ? "\n\n*…truncated*" : ""), + format: "markdown", + }); + } + return { + historyText: headingText, + entities: [], + displayContent: createStructuredContent(blocks, { rawData: data }), + }; } -// Format a single PR view from JSON into rich markdown -function formatPrView(data: Record): string { +// Build a single-PR structured view (prView action). Renders a heading, a +// keyValue metadata block, and an optional truncated body text block, plus a +// rawData payload carrying the full gh JSON. +// +// Exported for unit tests. +export function buildStructuredPrView( + data: Record, +): ActionResultSuccess { const author = data.author ? formatValue(data.author) : "unknown"; const labels = Array.isArray(data.labels) ? (data.labels as Record[]) - .map((l) => `\`${l.name}\``) - .join(" ") - : ""; - const status = data.isDraft ? "DRAFT" : String(data.state); - const body = data.body ? String(data.body).slice(0, 1000) : ""; - const bodySection = body - ? `\n\n---\n\n${body}${String(data.body).length > 1000 ? "\n\n*…truncated*" : ""}` + .map((l) => String(l.name ?? "")) + .filter(Boolean) + .join(", ") : ""; - - let header = `### [#${data.number} ${data.title}](${data.url})\n\n`; - header += `**State:** ${status}`; - header += ` · **Author:** ${author}`; + const isDraft = Boolean(data.isDraft); + const statusLabel = isDraft ? "Draft" : String(data.state ?? ""); + const statusTone: BadgeTone = isDraft + ? "warning" + : prBadge(data as Record); + + const pairs: KeyValuePair[] = []; + pairs.push({ + label: "State", + value: { text: statusLabel, badge: statusTone }, + }); + pairs.push({ label: "Author", value: author }); if (data.headRefName) - header += ` · **Branch:** \`${data.headRefName}\` → \`${data.baseRefName}\``; - if (labels) header += ` · **Labels:** ${labels}`; - if (data.additions !== undefined) { - header += `\n**Changes:** +${data.additions} −${data.deletions} across ${data.changedFiles} files`; + pairs.push({ + label: "Branch", + value: `${String(data.headRefName)} → ${String(data.baseRefName ?? "")}`, + }); + if (labels) pairs.push({ label: "Labels", value: labels }); + if (data.additions !== undefined) + pairs.push({ + label: "Changes", + value: `+${data.additions} −${data.deletions} across ${data.changedFiles} files`, + }); + if (data.createdAt) + pairs.push({ + label: "Created", + value: String(data.createdAt).slice(0, 10), + }); + if (data.url) + pairs.push({ + label: "Link", + value: { text: String(data.url), href: String(data.url) }, + }); + + const headingText = `#${data.number} ${data.title}`; + const blocks: StructuredBlock[] = [ + { kind: "heading", level: 3, text: headingText }, + { kind: "keyValue", pairs }, + ]; + const body = data.body ? String(data.body) : ""; + if (body) { + blocks.push({ kind: "divider" }); + blocks.push({ + kind: "text", + text: + body.slice(0, 1000) + + (body.length > 1000 ? "\n\n*…truncated*" : ""), + format: "markdown", + }); } - header += ` · **Created:** ${String(data.createdAt).slice(0, 10)}`; + return { + historyText: headingText, + entities: [], + displayContent: createStructuredContent(blocks, { rawData: data }), + }; +} - return header + bodySection; +// ============================================================================ +// Phase 5 — structured-content list results (replaces formatListResults) +// ============================================================================ + +// Map a PR record to a badge tone for the state column. +function prBadge(pr: Record): BadgeTone { + if (pr.isDraft) return "warning"; + const s = String(pr.state ?? "").toUpperCase(); + if (s === "OPEN") return "info"; + if (s === "MERGED") return "success"; + return "neutral"; } -function formatListResults( +// Map an issue state string to a badge tone. +function issueBadge(state: string): BadgeTone { + const s = state.toUpperCase(); + if (s === "OPEN") return "info"; + return "neutral"; +} + +// Map a Dependabot severity string to a badge tone. +function severityBadge(sev: string): BadgeTone { + switch (sev.toUpperCase()) { + case "CRITICAL": + case "HIGH": + return "error"; + case "MEDIUM": + return "warning"; + default: + return "neutral"; + } +} + +// Build a TableBlock from ColumnSpec + records, then wrap it with a heading +// in a properly-derived StructuredContent (alternates computed from all blocks). +function makeStructuredTable( + objects: T[], + colSpecs: ColumnSpec[], + headingText: string, + tableOptions?: { + sortable?: boolean; + filterable?: boolean; + readonly?: boolean; + pageSize?: number; + }, +): ActionResultSuccess { + const columns = colSpecs.map(({ value: _v, ...col }) => col); + const rows: TableCell[][] = objects.map((obj) => + colSpecs.map((col) => col.value(obj)), + ); + // Cap long lists to a first page (client reveals the rest via "Show + // more") unless the caller overrode it. All rows still ship. + const table: TableBlock = createTable(columns, rows, { + pageSize: 15, + ...tableOptions, + }); + const blocks: StructuredBlock[] = [ + { kind: "heading", level: 3, text: headingText }, + table, + ]; + return { + historyText: headingText, + entities: [], + displayContent: createStructuredContent(blocks, { rawData: objects }), + }; +} + +// Build a heading + table StructuredContent for a list action. Returns +// undefined for action names that have no structured template. +// +// Exported for unit tests. +export function buildStructuredListResult( items: Record[], actionName: string, -): string | undefined { - if (items.length === 0) return "No results found."; + label: string, +): ActionResultSuccess | undefined { + const count = items.length; + const headingText = `${label} — ${count} result${count === 1 ? "" : "s"}`; - // Issues - if (actionName === "issueList" && "number" in items[0]) { - return items - .map((i) => { - const labels = Array.isArray(i.labels) - ? (i.labels as Record[]) - .map((l) => l.name) - .join(", ") - : ""; - const labelStr = labels ? ` \`${labels}\`` : ""; - return `- [#${i.number} ${i.title}](${i.url}) — ${i.state}${labelStr}`; - }) - .join("\n"); + if (count === 0) { + return { + historyText: headingText, + entities: [], + displayContent: createStructuredContent([ + { kind: "heading", level: 3, text: headingText }, + { kind: "text", text: "No results found." }, + ]), + }; } // Pull requests if (actionName === "prList" && "number" in items[0]) { - return items - .map((pr) => { - const status = pr.isDraft ? "DRAFT" : String(pr.state); - const branch = pr.headRefName ? ` \`${pr.headRefName}\`` : ""; - return `- [#${pr.number} ${pr.title}](${pr.url}) — ${status}${branch}`; - }) - .join("\n"); + type PrRecord = { + number: unknown; + title: unknown; + state: unknown; + isDraft: unknown; + headRefName: unknown; + url: unknown; + createdAt: unknown; + }; + const cols: ColumnSpec[] = [ + { + id: "number", + header: "#", + type: "link", + align: "right", + value: (pr) => ({ + text: String(pr.number ?? ""), + href: String(pr.url ?? ""), + }), + }, + { + id: "title", + header: "Title", + value: (pr) => String(pr.title ?? ""), + }, + { + id: "state", + header: "State", + type: "badge", + value: (pr): TableCell => { + const tone = prBadge(pr as Record); + const lbl = pr.isDraft + ? "Draft" + : String(pr.state ?? "") + .charAt(0) + .toUpperCase() + + String(pr.state ?? "") + .slice(1) + .toLowerCase(); + return { text: lbl, badge: tone }; + }, + }, + { + id: "branch", + header: "Branch", + type: "code", + value: (pr) => String(pr.headRefName ?? ""), + }, + { + id: "created", + header: "Created", + type: "date", + value: (pr) => { + const d = pr.createdAt + ? new Date(String(pr.createdAt)) + : null; + return d ? d.toLocaleDateString() : ""; + }, + }, + ]; + return makeStructuredTable( + items as unknown as PrRecord[], + cols, + headingText, + { sortable: true }, + ); + } + + // Issues + if (actionName === "issueList" && "number" in items[0]) { + type IssueRecord = { + number: unknown; + title: unknown; + state: unknown; + url: unknown; + createdAt: unknown; + labels: unknown; + }; + const cols: ColumnSpec[] = [ + { + id: "number", + header: "#", + type: "link", + align: "right", + value: (i) => ({ + text: String(i.number ?? ""), + href: String(i.url ?? ""), + }), + }, + { + id: "title", + header: "Title", + value: (i) => String(i.title ?? ""), + }, + { + id: "state", + header: "State", + type: "badge", + value: (i): TableCell => ({ + text: + String(i.state ?? "") + .charAt(0) + .toUpperCase() + + String(i.state ?? "") + .slice(1) + .toLowerCase(), + badge: issueBadge(String(i.state ?? "")), + }), + }, + { + id: "labels", + header: "Labels", + value: (i) => + Array.isArray(i.labels) + ? (i.labels as Record[]) + .map((l) => String(l.name ?? "")) + .filter(Boolean) + .join(", ") + : "", + }, + { + id: "created", + header: "Created", + type: "date", + value: (i) => { + const d = i.createdAt + ? new Date(String(i.createdAt)) + : null; + return d ? d.toLocaleDateString() : ""; + }, + }, + ]; + return makeStructuredTable( + items as unknown as IssueRecord[], + cols, + headingText, + { sortable: true }, + ); } // Issues assigned to the current user (gh search issues --assignee @me) if (actionName === "myAssignedIssues" && "number" in items[0]) { - return items - .map((it) => { - const repo = it.repository as - | Record - | undefined; - const repoFull = - (repo?.nameWithOwner as string | undefined) ?? - (repo?.name as string | undefined) ?? - ""; - const labels = Array.isArray(it.labels) - ? (it.labels as Record[]) - .map((l) => l.name) - .filter(Boolean) - .join(", ") - : ""; - const labelStr = labels ? ` _[${labels}]_` : ""; - const repoPrefix = repoFull ? `${repoFull} ` : ""; - return `- ${repoPrefix}[#${it.number} ${it.title}](${it.url})${labelStr}`; - }) - .join("\n"); + type AssignedIssue = { + number: unknown; + title: unknown; + url: unknown; + repository: unknown; + state: unknown; + updatedAt: unknown; + labels: unknown; + }; + const cols: ColumnSpec[] = [ + { + id: "repo", + header: "Repo", + value: (i) => { + const repo = i.repository as + | Record + | undefined; + return ( + (repo?.nameWithOwner as string | undefined) ?? + (repo?.name as string | undefined) ?? + "" + ); + }, + }, + { + id: "number", + header: "#", + type: "link", + align: "right", + value: (i) => ({ + text: String(i.number ?? ""), + href: String(i.url ?? ""), + }), + }, + { + id: "title", + header: "Title", + value: (i) => String(i.title ?? ""), + }, + { + id: "labels", + header: "Labels", + value: (i) => + Array.isArray(i.labels) + ? (i.labels as Record[]) + .map((l) => String(l.name ?? "")) + .filter(Boolean) + .join(", ") + : "", + }, + { + id: "updated", + header: "Updated", + type: "date", + value: (i) => { + const d = i.updatedAt + ? new Date(String(i.updatedAt)) + : null; + return d ? d.toLocaleDateString() : ""; + }, + }, + ]; + return makeStructuredTable( + items as unknown as AssignedIssue[], + cols, + headingText, + { sortable: true }, + ); } // The current user's own pull requests across repos (gh search prs --author @me) if (actionName === "myPullRequests" && "number" in items[0]) { - return items + const markdownList = items .map((pr) => { const repo = pr.repository as | Record @@ -1127,25 +1519,208 @@ function formatListResults( return `- ${repoPrefix}[#${pr.number} ${pr.title}](${pr.url}) — ${status}`; }) .join("\n"); + return createActionResultFromMarkdownDisplay( + `**${headingText}**\n\n${markdownList}`, + ); } // Search repos if (actionName === "searchRepos" && "fullName" in items[0]) { - return items - .map((r) => { - const stars = - r.stargazersCount || r.stargazerCount - ? ` ⭐ ${r.stargazersCount ?? r.stargazerCount}` - : ""; - const desc = r.description ? ` — ${r.description}` : ""; - return `- [${r.fullName}](${r.url})${stars}${desc}`; - }) - .join("\n"); + type RepoRecord = { + fullName: unknown; + description: unknown; + stargazersCount: unknown; + url: unknown; + updatedAt: unknown; + }; + const cols: ColumnSpec[] = [ + { + id: "name", + header: "Repository", + type: "link", + value: (r) => ({ + text: String(r.fullName ?? ""), + href: String(r.url ?? ""), + }), + }, + { + id: "stars", + header: "Stars", + type: "number", + align: "right", + value: (r) => String(r.stargazersCount ?? 0), + }, + { + id: "description", + header: "Description", + value: (r) => String(r.description ?? ""), + }, + { + id: "updated", + header: "Updated", + type: "date", + value: (r) => { + const d = r.updatedAt + ? new Date(String(r.updatedAt)) + : null; + return d ? d.toLocaleDateString() : ""; + }, + }, + ]; + return makeStructuredTable( + items as unknown as RepoRecord[], + cols, + headingText, + { sortable: true }, + ); } return undefined; } +// Build a structured result for `gh repo view` (repoView action). +// +// Exported for unit tests. +export function buildStructuredRepoView( + data: Record, + label: string, +): ActionResultSuccess { + const pairs: KeyValuePair[] = []; + const push = (lbl: string, val: TableCell) => { + const text = + typeof val === "string" + ? val + : typeof val === "number" + ? String(val) + : val.text; + if (text) pairs.push({ label: lbl, value: val }); + }; + + const repoName = data.owner + ? `${formatValue(data.owner)}/${String(data.name ?? "")}` + : String(data.name ?? ""); + push("Repository", { text: repoName, href: String(data.url ?? "") }); + if (data.description) push("Description", String(data.description)); + push("Visibility", String(data.visibility ?? "")); + if (data.primaryLanguage) + push("Language", formatValue(data.primaryLanguage)); + push("Stars", String(data.stargazerCount ?? 0)); + push("Forks", String(data.forkCount ?? 0)); + if (data.watchers) push("Watchers", formatValue(data.watchers)); + if (data.defaultBranchRef) + push("Default branch", formatValue(data.defaultBranchRef)); + if (data.createdAt) { + const d = new Date(String(data.createdAt)); + push("Created", d.toLocaleDateString()); + } + if (data.updatedAt) { + const d = new Date(String(data.updatedAt)); + push("Updated", d.toLocaleDateString()); + } + + const blocks: StructuredBlock[] = [ + { kind: "heading", level: 3, text: label }, + { kind: "keyValue", pairs }, + ]; + return { + historyText: label, + entities: [], + displayContent: createStructuredContent(blocks, { rawData: data }), + }; +} + +// Build a structured result for Dependabot alerts (security_advisory shape). +// +// Exported for unit tests. +export function buildStructuredDependabotResult( + arr: Record[], +): ActionResultSuccess { + const headerText = `🔒 ${arr.length} Dependabot alert${arr.length === 1 ? "" : "s"}`; + type AlertRecord = Record; + const cols: ColumnSpec[] = [ + { + id: "severity", + header: "Severity", + type: "badge", + value: (a): TableCell => { + const adv = a.security_advisory as + | Record + | undefined; + const sev = String(adv?.severity ?? "unknown").toUpperCase(); + return { text: sev, badge: severityBadge(sev) }; + }, + }, + { + id: "package", + header: "Package", + type: "code", + value: (a): TableCell => { + const dep = a.dependency as Record | undefined; + const pkg = dep?.package as Record | undefined; + return String(pkg?.name ?? "unknown"); + }, + }, + { + id: "advisory", + header: "Advisory", + type: "link", + value: (a): TableCell => { + const adv = a.security_advisory as + | Record + | undefined; + return { + text: String(adv?.summary ?? ""), + href: String(a.html_url ?? ""), + }; + }, + }, + ]; + return makeStructuredTable(arr, cols, headerText, { sortable: true }); +} + +// Build a structured result for contributor lists (login + contributions shape). +// +// Exported for unit tests. +export function buildStructuredContributorsResult( + arr: Record[], +): ActionResultSuccess { + const headerText = + arr.length === 1 ? "Top contributor" : `Top ${arr.length} contributors`; + const columns = [ + { + id: "rank", + header: "#", + type: "number" as const, + align: "right" as const, + }, + { id: "login", header: "Contributor", type: "link" as const }, + { + id: "contributions", + header: "Contributions", + type: "number" as const, + align: "right" as const, + }, + ]; + const rows: TableCell[][] = arr.map((u, i) => [ + String(i + 1), + { + text: String(u.login ?? ""), + href: `https://github.com/${String(u.login ?? "")}`, + }, + String(u.contributions ?? "0"), + ]); + const table: TableBlock = createTable(columns, rows, { sortable: true }); + const blocks: StructuredBlock[] = [ + { kind: "heading", level: 3, text: headerText }, + table, + ]; + return { + historyText: headerText, + entities: [], + displayContent: createStructuredContent(blocks, { rawData: arr }), + }; +} + // Friendly success messages for mutation actions that return no output function getMutationSuccessMessage( action: TypeAgentAction, @@ -1407,41 +1982,44 @@ async function executeAction( // If a specific field was requested, return a focused answer if (p.field) { - const answer = distillRepoField( + const result = buildStructuredField( String(p.field), data, String(p.repo ?? data.name ?? ""), ); - if (answer) { - return createActionResultFromMarkdownDisplay(answer); + if (result) { + return result; } } // Array results: issues, PRs, search repos if (Array.isArray(data)) { - const rows = formatListResults(data, action.actionName); - if (rows) { - return createActionResultFromMarkdownDisplay( - `**${cmdLabel}** — ${data.length} result${data.length === 1 ? "" : "s"}\n\n${rows}`, - ); + const result = buildStructuredListResult( + data as Record[], + action.actionName, + cmdLabel, + ); + if (result) { + return result; } } // Single issue view — rich formatted output if (action.actionName === "issueView" && "number" in data) { - return createActionResultFromMarkdownDisplay( - formatIssueView(data), - ); + return buildStructuredIssueView(data); } // Single PR view — rich formatted output if (action.actionName === "prView" && "number" in data) { - return createActionResultFromMarkdownDisplay( - formatPrView(data), - ); + return buildStructuredPrView(data); + } + + // Repo view — structured key-value block + if (action.actionName === "repoView") { + return buildStructuredRepoView(data, cmdLabel); } - // Single object (e.g., repo view) + // Single object fallback const lines = Object.entries(data) .map(([k, v]) => `- **${k}**: ${formatValue(v)}`) .join("\n"); @@ -1472,60 +2050,12 @@ async function executeAction( // Dependabot alerts if (arr.length > 0 && "security_advisory" in arr[0]) { - const rows = arr - .map((a) => { - const adv = a.security_advisory as Record< - string, - unknown - >; - const sev = String( - adv.severity ?? "unknown", - ).toUpperCase(); - const pkg = a.dependency - ? (a.dependency as Record) - .package - ? ( - ( - a.dependency as Record< - string, - unknown - > - ).package as Record - ).name - : "unknown" - : "unknown"; - const sevEmoji = - sev === "CRITICAL" - ? "🔴" - : sev === "HIGH" - ? "🟠" - : sev === "MEDIUM" - ? "🟡" - : "🟢"; - return `- ${sevEmoji} **${sev}** — \`${pkg}\` — [${adv.summary}](${a.html_url})`; - }) - .join("\n"); - const header = `🔒 **${arr.length} Dependabot alert${arr.length === 1 ? "" : "s"}**`; - return createActionResultFromMarkdownDisplay( - `${header}\n\n${rows}`, - ); + return buildStructuredDependabotResult(arr); } // Contributors if (arr.length > 0 && "login" in arr[0]) { - const rows = arr - .map( - (u, i) => - `${i + 1}. [**${u.login}**](https://github.com/${u.login}) — ${u.contributions} contributions`, - ) - .join("\n"); - const header = - arr.length === 1 - ? "Top contributor" - : `Top ${arr.length} contributors`; - return createActionResultFromMarkdownDisplay( - `**${header}**\n\n${rows}`, - ); + return buildStructuredContributorsResult(arr); } } catch { // Fall through to raw output diff --git a/ts/packages/agents/github-cli/src/github-cliSchema.ts b/ts/packages/agents/github-cli/src/github-cliSchema.ts index 8f38b850bd..a9b304cafa 100644 --- a/ts/packages/agents/github-cli/src/github-cliSchema.ts +++ b/ts/packages/agents/github-cli/src/github-cliSchema.ts @@ -208,6 +208,7 @@ export type IssueReopenAction = { export type IssueListAction = { actionName: "issueList"; parameters: { + // owner/repo. Omitting this defaults to the current repository. repo?: string; state?: string; diff --git a/ts/packages/agents/github-cli/test/githubCliStructuredResults.spec.ts b/ts/packages/agents/github-cli/test/githubCliStructuredResults.spec.ts new file mode 100644 index 0000000000..c269c70f7f --- /dev/null +++ b/ts/packages/agents/github-cli/test/githubCliStructuredResults.spec.ts @@ -0,0 +1,604 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/** + * Unit tests for the Phase-5 structured-content result builders in + * github-cliActionHandler. Each builder converts a raw `gh` JSON payload + * into an ActionResultSuccess with a StructuredContent displayContent that + * contains a heading + table (or keyValue) block. + * + * Tests run against compiled dist/ (jest-esm, same pattern as the rest of + * this package's tests). + */ + +import { + buildStructuredListResult, + buildStructuredRepoView, + buildStructuredDependabotResult, + buildStructuredContributorsResult, + buildStructuredPrView, + buildStructuredIssueView, + buildStructuredField, +} from "../src/github-cliActionHandler.js"; + +// --------------------------------------------------------------------------- +// Helpers +// --------------------------------------------------------------------------- + +function heading(result: ReturnType) { + const content = result?.displayContent as any; + return content?.blocks?.[0]; +} + +function table(result: ReturnType) { + const content = result?.displayContent as any; + return content?.blocks?.[1]; +} + +function kvBlock(result: ReturnType) { + const content = result?.displayContent as any; + return content?.blocks?.[1]; +} + +// --------------------------------------------------------------------------- +// buildStructuredListResult — prList +// --------------------------------------------------------------------------- + +describe("buildStructuredListResult — prList", () => { + const prs = [ + { + number: 42, + title: "Fix the bug", + state: "OPEN", + isDraft: false, + headRefName: "fix/the-bug", + url: "https://github.com/owner/repo/pull/42", + createdAt: "2026-01-15T10:00:00Z", + }, + { + number: 99, + title: "Draft feature", + state: "OPEN", + isDraft: true, + headRefName: "feat/draft", + url: "https://github.com/owner/repo/pull/99", + createdAt: "2026-02-01T08:30:00Z", + }, + ]; + + test("returns an ActionResultSuccess for prList", () => { + const result = buildStructuredListResult(prs, "prList", "prList"); + expect(result).toBeDefined(); + }); + + test("heading block has correct text with count", () => { + const result = buildStructuredListResult(prs, "prList", "pr list"); + expect(heading(result)).toMatchObject({ + kind: "heading", + level: 3, + text: "pr list — 2 results", + }); + }); + + test("table block has expected columns", () => { + const result = buildStructuredListResult(prs, "prList", "prList"); + const t = table(result); + expect(t.kind).toBe("table"); + expect(t.columns.map((c: any) => c.id)).toEqual([ + "number", + "title", + "state", + "branch", + "created", + ]); + }); + + test("open PR has info badge", () => { + const result = buildStructuredListResult(prs, "prList", "prList"); + const t = table(result); + const stateCell = t.rows[0][2]; // first row, state column + expect(stateCell).toMatchObject({ badge: "info" }); + }); + + test("draft PR has warning badge", () => { + const result = buildStructuredListResult(prs, "prList", "prList"); + const t = table(result); + const stateCell = t.rows[1][2]; // second row, state column + expect(stateCell).toMatchObject({ badge: "warning", text: "Draft" }); + }); + + test("number cell contains link", () => { + const result = buildStructuredListResult(prs, "prList", "prList"); + const t = table(result); + const numCell = t.rows[0][0]; + expect(numCell).toMatchObject({ + text: "42", + href: "https://github.com/owner/repo/pull/42", + }); + }); + + test("table is sortable", () => { + const result = buildStructuredListResult(prs, "prList", "prList"); + expect(table(result).sortable).toBe(true); + }); + + test("rawData is set on displayContent", () => { + const result = buildStructuredListResult(prs, "prList", "prList"); + expect((result?.displayContent as any)?.rawData).toBe(prs); + }); + + test("alternates include markdown and text", () => { + const result = buildStructuredListResult(prs, "prList", "prList"); + const content = result?.displayContent as any; + const types = content?.alternates?.map((a: any) => a.type); + expect(types).toContain("markdown"); + expect(types).toContain("text"); + }); + + test("markdown alternate contains heading and table headers", () => { + const result = buildStructuredListResult(prs, "prList", "prList"); + const content = result?.displayContent as any; + const mdAlt = content?.alternates?.find( + (a: any) => a.type === "markdown", + ); + expect(mdAlt?.content).toContain("prList — 2 results"); + expect(mdAlt?.content).toContain("| # |"); + }); +}); + +// --------------------------------------------------------------------------- +// buildStructuredListResult — issueList +// --------------------------------------------------------------------------- + +describe("buildStructuredListResult — issueList", () => { + const issues = [ + { + number: 7, + title: "Memory leak", + state: "OPEN", + url: "https://github.com/o/r/issues/7", + createdAt: "2026-03-01T12:00:00Z", + labels: [{ name: "bug" }, { name: "performance" }], + }, + ]; + + test("returns structured result for issueList", () => { + const result = buildStructuredListResult( + issues, + "issueList", + "issueList", + ); + expect(result).toBeDefined(); + expect(table(result).kind).toBe("table"); + }); + + test("labels cell joins label names", () => { + const result = buildStructuredListResult( + issues, + "issueList", + "issueList", + ); + const t = table(result); + const labelsColIdx = t.columns.findIndex((c: any) => c.id === "labels"); + const labelsCell = t.rows[0][labelsColIdx]; + expect(labelsCell).toContain("bug"); + expect(labelsCell).toContain("performance"); + }); + + test("open issue gets info badge", () => { + const result = buildStructuredListResult( + issues, + "issueList", + "issueList", + ); + const t = table(result); + const stateIdx = t.columns.findIndex((c: any) => c.id === "state"); + expect(t.rows[0][stateIdx]).toMatchObject({ badge: "info" }); + }); +}); + +// --------------------------------------------------------------------------- +// buildStructuredListResult — empty result +// --------------------------------------------------------------------------- + +describe("buildStructuredListResult — empty array", () => { + test("returns a result with heading and 'no results' text", () => { + const result = buildStructuredListResult([], "prList", "PR list"); + expect(result).toBeDefined(); + const content = result?.displayContent as any; + expect(content.blocks[0]).toMatchObject({ + kind: "heading", + text: "PR list — 0 results", + }); + expect(content.blocks[1]).toMatchObject({ + kind: "text", + text: "No results found.", + }); + }); +}); + +// --------------------------------------------------------------------------- +// buildStructuredListResult — unknown action returns undefined +// --------------------------------------------------------------------------- + +describe("buildStructuredListResult — unknown action", () => { + test("returns undefined for unrecognised actionName", () => { + const result = buildStructuredListResult( + [{ foo: "bar" }], + "unknownAction", + "label", + ); + expect(result).toBeUndefined(); + }); +}); + +// --------------------------------------------------------------------------- +// buildStructuredListResult — searchRepos +// --------------------------------------------------------------------------- + +describe("buildStructuredListResult — searchRepos", () => { + const repos = [ + { + fullName: "microsoft/TypeAgent", + description: "AI agent framework", + stargazersCount: 1200, + url: "https://github.com/microsoft/TypeAgent", + updatedAt: "2026-06-01T00:00:00Z", + }, + ]; + + test("returns structured result for searchRepos", () => { + const result = buildStructuredListResult( + repos, + "searchRepos", + "search", + ); + expect(result).toBeDefined(); + }); + + test("name cell links to repo url", () => { + const result = buildStructuredListResult( + repos, + "searchRepos", + "search", + ); + const t = table(result); + const nameIdx = t.columns.findIndex((c: any) => c.id === "name"); + expect(t.rows[0][nameIdx]).toMatchObject({ + text: "microsoft/TypeAgent", + href: "https://github.com/microsoft/TypeAgent", + }); + }); + + test("stars are formatted as number column", () => { + const result = buildStructuredListResult( + repos, + "searchRepos", + "search", + ); + const t = table(result); + const starsIdx = t.columns.findIndex((c: any) => c.id === "stars"); + expect(t.columns[starsIdx].type).toBe("number"); + expect(t.rows[0][starsIdx]).toBe("1200"); + }); + + test("zero stars renders as '0' not empty", () => { + const zeroStarRepo = [{ ...repos[0], stargazersCount: 0 }]; + const result = buildStructuredListResult( + zeroStarRepo, + "searchRepos", + "search", + ); + const t = table(result); + const starsIdx = t.columns.findIndex((c: any) => c.id === "stars"); + expect(t.rows[0][starsIdx]).toBe("0"); + }); +}); + +// --------------------------------------------------------------------------- +// buildStructuredRepoView +// --------------------------------------------------------------------------- + +describe("buildStructuredRepoView", () => { + const repoData = { + name: "TypeAgent", + owner: { login: "microsoft" }, + description: "Intelligent agents framework", + stargazerCount: 450, + forkCount: 30, + visibility: "public", + url: "https://github.com/microsoft/TypeAgent", + primaryLanguage: { name: "TypeScript" }, + watchers: { totalCount: 12 }, + defaultBranchRef: { name: "main" }, + createdAt: "2024-01-01T00:00:00Z", + updatedAt: "2026-07-01T00:00:00Z", + }; + + test("returns a defined result", () => { + const result = buildStructuredRepoView(repoData, "repo view"); + expect(result).toBeDefined(); + }); + + test("heading block has label", () => { + const result = buildStructuredRepoView(repoData, "TypeAgent repo"); + expect(heading(result as any)).toMatchObject({ + kind: "heading", + text: "TypeAgent repo", + }); + }); + + test("keyValue block has repo name as link", () => { + const result = buildStructuredRepoView(repoData, "label"); + const kv = kvBlock(result); + expect(kv.kind).toBe("keyValue"); + const repoPair = kv.pairs.find((p: any) => p.label === "Repository"); + expect(repoPair?.value).toMatchObject({ + text: "microsoft/TypeAgent", + href: "https://github.com/microsoft/TypeAgent", + }); + }); + + test("rawData is the original repoData object", () => { + const result = buildStructuredRepoView(repoData, "label"); + expect((result.displayContent as any).rawData).toBe(repoData); + }); + + test("alternates include markdown", () => { + const result = buildStructuredRepoView(repoData, "label"); + const content = result.displayContent as any; + const types = content?.alternates?.map((a: any) => a.type); + expect(types).toContain("markdown"); + }); +}); + +// --------------------------------------------------------------------------- +// buildStructuredDependabotResult +// --------------------------------------------------------------------------- + +describe("buildStructuredDependabotResult", () => { + const alerts = [ + { + security_advisory: { severity: "HIGH", summary: "ReDoS in foo" }, + dependency: { package: { name: "foo" } }, + html_url: "https://github.com/advisor/GHSA-test", + }, + { + security_advisory: { severity: "MEDIUM", summary: "SSRF in bar" }, + dependency: { package: { name: "bar" } }, + html_url: "https://github.com/advisor/GHSA-test2", + }, + ]; + + test("returns defined result", () => { + expect(buildStructuredDependabotResult(alerts)).toBeDefined(); + }); + + test("heading reflects alert count", () => { + const result = buildStructuredDependabotResult(alerts); + expect(heading(result as any).text).toContain("2 Dependabot alerts"); + }); + + test("severity column uses badge type", () => { + const result = buildStructuredDependabotResult(alerts); + const t = table(result as any); + const sevIdx = t.columns.findIndex((c: any) => c.id === "severity"); + expect(t.columns[sevIdx].type).toBe("badge"); + expect(t.rows[0][sevIdx]).toMatchObject({ badge: "error" }); // HIGH + expect(t.rows[1][sevIdx]).toMatchObject({ badge: "warning" }); // MEDIUM + }); + + test("advisory cell links to html_url", () => { + const result = buildStructuredDependabotResult(alerts); + const t = table(result as any); + const advIdx = t.columns.findIndex((c: any) => c.id === "advisory"); + expect(t.rows[0][advIdx]).toMatchObject({ + text: "ReDoS in foo", + href: "https://github.com/advisor/GHSA-test", + }); + }); +}); + +// --------------------------------------------------------------------------- +// buildStructuredContributorsResult +// --------------------------------------------------------------------------- + +describe("buildStructuredContributorsResult", () => { + const contributors = [ + { login: "alice", contributions: 500 }, + { login: "bob", contributions: 200 }, + ]; + + test("returns defined result", () => { + expect(buildStructuredContributorsResult(contributors)).toBeDefined(); + }); + + test("heading for multiple contributors says 'Top N contributors'", () => { + const result = buildStructuredContributorsResult(contributors); + expect(heading(result as any).text).toBe("Top 2 contributors"); + }); + + test("heading for single contributor", () => { + const result = buildStructuredContributorsResult([ + { login: "alice", contributions: 500 }, + ]); + expect(heading(result as any).text).toBe("Top contributor"); + }); + + test("rank column assigns 1-based index", () => { + const result = buildStructuredContributorsResult(contributors); + const t = table(result as any); + const rankIdx = t.columns.findIndex((c: any) => c.id === "rank"); + expect(t.rows[0][rankIdx]).toBe("1"); + expect(t.rows[1][rankIdx]).toBe("2"); + }); + + test("login cell links to github profile", () => { + const result = buildStructuredContributorsResult(contributors); + const t = table(result as any); + const loginIdx = t.columns.findIndex((c: any) => c.id === "login"); + expect(t.rows[0][loginIdx]).toMatchObject({ + text: "alice", + href: "https://github.com/alice", + }); + }); + + test("table is sortable", () => { + const result = buildStructuredContributorsResult(contributors); + expect(table(result as any).sortable).toBe(true); + }); +}); + +// --------------------------------------------------------------------------- +// buildStructuredPrView +// --------------------------------------------------------------------------- + +describe("buildStructuredPrView", () => { + const pr = { + number: 7, + title: "Add feature", + state: "OPEN", + isDraft: false, + author: { login: "alice" }, + headRefName: "feat/x", + baseRefName: "main", + additions: 10, + deletions: 2, + changedFiles: 3, + createdAt: "2026-01-01T00:00:00Z", + url: "https://github.com/owner/repo/pull/7", + body: "Some description", + }; + + test("heading shows number and title", () => { + const result = buildStructuredPrView(pr); + expect(heading(result as any)).toMatchObject({ + kind: "heading", + text: "#7 Add feature", + }); + }); + + test("state pair is a badge", () => { + const result = buildStructuredPrView(pr); + const kv = kvBlock(result); + const statePair = kv.pairs.find((p: any) => p.label === "State"); + expect(statePair?.value).toMatchObject({ badge: "info" }); + }); + + test("draft PR uses warning badge and Draft label", () => { + const result = buildStructuredPrView({ ...pr, isDraft: true }); + const kv = kvBlock(result); + const statePair = kv.pairs.find((p: any) => p.label === "State"); + expect(statePair?.value).toMatchObject({ + text: "Draft", + badge: "warning", + }); + }); + + test("body becomes a divider + text block", () => { + const result = buildStructuredPrView(pr); + const blocks = (result.displayContent as any).blocks; + expect(blocks.some((b: any) => b.kind === "divider")).toBe(true); + expect(blocks[blocks.length - 1]).toMatchObject({ + kind: "text", + text: "Some description", + }); + }); + + test("rawData is the original object", () => { + const result = buildStructuredPrView(pr); + expect((result.displayContent as any).rawData).toBe(pr); + }); +}); + +// --------------------------------------------------------------------------- +// buildStructuredIssueView +// --------------------------------------------------------------------------- + +describe("buildStructuredIssueView", () => { + const issue = { + number: 12, + title: "A bug", + state: "OPEN", + author: { login: "bob" }, + labels: [{ name: "bug" }, { name: "p1" }], + assignees: [{ login: "carol" }], + comments: [{}, {}], + createdAt: "2026-01-01T00:00:00Z", + url: "https://github.com/owner/repo/issues/12", + body: "Repro steps", + }; + + test("heading shows number and title", () => { + const result = buildStructuredIssueView(issue); + expect(heading(result as any).text).toBe("#12 A bug"); + }); + + test("state pair uses issue badge", () => { + const result = buildStructuredIssueView(issue); + const kv = kvBlock(result); + const statePair = kv.pairs.find((p: any) => p.label === "State"); + expect(statePair?.value).toMatchObject({ badge: "info" }); + }); + + test("labels joined and comment count numeric", () => { + const result = buildStructuredIssueView(issue); + const kv = kvBlock(result); + expect(kv.pairs.find((p: any) => p.label === "Labels")?.value).toBe( + "bug, p1", + ); + expect(kv.pairs.find((p: any) => p.label === "Comments")?.value).toBe( + 2, + ); + }); + + test("rawData is the original object", () => { + const result = buildStructuredIssueView(issue); + expect((result.displayContent as any).rawData).toBe(issue); + }); +}); + +// --------------------------------------------------------------------------- +// buildStructuredField +// --------------------------------------------------------------------------- + +describe("buildStructuredField", () => { + const repoData = { + name: "TypeAgent", + owner: { login: "microsoft" }, + stargazerCount: 450, + forkCount: 30, + primaryLanguage: { name: "TypeScript" }, + description: "Agents framework", + }; + + test("returns undefined for unknown field", () => { + expect( + buildStructuredField("nonsense", repoData, "microsoft/TypeAgent"), + ).toBeUndefined(); + }); + + test("stars field yields keyValue pair with numeric value", () => { + const result = buildStructuredField( + "stars", + repoData, + "microsoft/TypeAgent", + )!; + const kv = kvBlock(result); + const pair = kv.pairs[0]; + expect(pair).toMatchObject({ label: "Stars", value: 450 }); + }); + + test("rawData carries repo, field and value", () => { + const result = buildStructuredField( + "stars", + repoData, + "microsoft/TypeAgent", + )!; + expect((result.displayContent as any).rawData).toMatchObject({ + repo: "microsoft/TypeAgent", + field: "stars", + value: 450, + }); + }); +}); diff --git a/ts/packages/agents/ipconfig/README.AUTOGEN.md b/ts/packages/agents/ipconfig/README.AUTOGEN.md index e87ff77863..d06578c72d 100644 --- a/ts/packages/agents/ipconfig/README.AUTOGEN.md +++ b/ts/packages/agents/ipconfig/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # ipconfig-agent — AI-generated documentation @@ -12,18 +12,18 @@ ## Overview -The `ipconfig-agent` is a TypeAgent application agent that provides a conversational interface to the Windows `ipconfig` command-line tool. It allows users to perform network configuration tasks such as managing IP addresses, DNS settings, and DHCP configurations using natural language commands. This agent simplifies the process of interacting with `ipconfig` by abstracting its command-line syntax into user-friendly actions. +The `ipconfig-agent` is a TypeAgent application agent designed to provide a conversational interface to the Windows `ipconfig` command-line tool. It enables users to perform various network configuration tasks, such as managing IP addresses, DNS settings, and DHCP configurations, through natural language commands. By abstracting the complexities of the `ipconfig` command-line syntax, this agent simplifies network management for users. ## What it does -The `ipconfig-agent` supports a wide range of actions that can be grouped into the following categories: +The `ipconfig-agent` supports a comprehensive set of actions that can be grouped into the following categories: ### Help and Information Display -- **`displayHelpMessage`**: Provides the help message for the `ipconfig` command. -- **`displayFullConfigurationInformation`**: Displays detailed network configuration information, including IP addresses, DNS settings, and adapter details. -- **`displayDNSResolverCacheContents`**: Shows the current contents of the DNS resolver cache. -- **`displayDHCPClassIDs`** and **`displayIPv6DHCPClassIDs`**: Display the DHCP class IDs for IPv4 and IPv6 adapters, respectively. +- **`displayHelpMessage`**: Displays the help message for the `ipconfig` command, providing an overview of its capabilities. +- **`displayFullConfigurationInformation`**: Shows detailed network configuration information, including IP addresses, DNS settings, and adapter details. +- **`displayDNSResolverCacheContents`**: Displays the current contents of the DNS resolver cache. +- **`displayDHCPClassIDs`** and **`displayIPv6DHCPClassIDs`**: Show the DHCP class IDs for IPv4 and IPv6 adapters, respectively. ### IP Address Management @@ -32,11 +32,11 @@ The `ipconfig-agent` supports a wide range of actions that can be grouped into t ### DNS and DHCP Management -- **`purgeDNSResolverCache`**: Clears the DNS resolver cache. -- **`refreshDHCPLeasesAndReRegisterDNSNames`**: Refreshes all DHCP leases and re-registers DNS names. -- **`modifyDHCPClassID`** and **`modifyIPv6DHCPClassID`**: Modify the DHCP class ID for IPv4 and IPv6 adapters, respectively. +- **`purgeDNSResolverCache`**: Clears the DNS resolver cache to resolve potential DNS-related issues. +- **`refreshDHCPLeasesAndReRegisterDNSNames`**: Refreshes all DHCP leases and re-registers DNS names to ensure up-to-date network configurations. +- **`modifyDHCPClassID`** and **`modifyIPv6DHCPClassID`**: Modify the DHCP class ID for IPv4 and IPv6 adapters, respectively, allowing for advanced network configuration. -These actions enable users to manage their network settings effectively, whether for troubleshooting, updating configurations, or managing DNS and DHCP settings. +These actions enable users to perform a wide range of network management tasks, from troubleshooting connectivity issues to updating configurations and managing DNS and DHCP settings. ## Setup @@ -48,15 +48,15 @@ The `ipconfig-agent` requires minimal setup. Follow these steps to get started: pnpm install ``` -No additional environment variables, API keys, or external accounts are required. +No additional environment variables, API keys, or external accounts are required for this package. ## Key Files -The functionality of the `ipconfig-agent` is implemented across several key files: +The `ipconfig-agent` is implemented across several key files, each serving a specific purpose: - **[ipconfigActionHandler.ts](./src/ipconfigActionHandler.ts)**: - - Contains the core logic for handling actions. + - Implements the core logic for handling actions. - The `runCli` function executes the `ipconfig` command with the appropriate arguments, while the `buildArgs` function constructs the command-line arguments based on the action and its parameters. - **[ipconfigManifest.json](./src/ipconfigManifest.json)**: @@ -74,9 +74,11 @@ The functionality of the `ipconfig-agent` is implemented across several key file - **[tsconfig.json](./src/tsconfig.json)**: - Configures the TypeScript compiler for the project, including paths for source and output files. +These files collectively define the agent's behavior, from parsing user input to executing the corresponding `ipconfig` commands. + ## How to extend -To add new functionality to the `ipconfig-agent`, follow these steps: +To extend the `ipconfig-agent` with new functionality, follow these steps: 1. **Define a new action**: @@ -110,7 +112,7 @@ By following these steps, you can extend the `ipconfig-agent` to support additio ### Entry points - `./agent/manifest` → [./src/ipconfigManifest.json](./src/ipconfigManifest.json) -- `./agent/handlers` → `./dist/ipconfigActionHandler.js` _(not found on disk)_ +- `./agent/handlers` → [./dist/ipconfigActionHandler.js](./dist/ipconfigActionHandler.js) ### Dependencies @@ -159,6 +161,6 @@ _13 actions implemented by this agent, parsed deterministically from `./src/ipco --- -_Auto-generated against commit `44b34a9ac8794b6f90489ff7e55fe57283c34960` on `2026-07-13T09:04:14.089Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter ipconfig-agent docs:verify-links` to spot-check._ +_Auto-generated against commit `f928ce70269b7d0f8942977c29147b2c8832b722` on `2026-07-15T22:42:29.947Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter ipconfig-agent docs:verify-links` to spot-check._ diff --git a/ts/packages/agents/ipconfig/jest.config.cjs b/ts/packages/agents/ipconfig/jest.config.cjs new file mode 100644 index 0000000000..f475768a12 --- /dev/null +++ b/ts/packages/agents/ipconfig/jest.config.cjs @@ -0,0 +1,4 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +module.exports = require("../../../jest.config.js"); diff --git a/ts/packages/agents/ipconfig/package.json b/ts/packages/agents/ipconfig/package.json index 2383576f60..837d09f4a0 100644 --- a/ts/packages/agents/ipconfig/package.json +++ b/ts/packages/agents/ipconfig/package.json @@ -24,6 +24,9 @@ "asc": "asc -i ./src/ipconfigSchema.ts -o ./dist/ipconfigSchema.pas.json -t IpconfigActions", "build": "concurrently npm:tsc npm:asc npm:agc", "clean": "rimraf --glob dist *.tsbuildinfo *.done.build.log", + "jest-esm": "node --no-warnings --experimental-vm-modules ./node_modules/jest/bin/jest.js", + "test": "npm run test:local", + "test:local": "pnpm run jest-esm --testPathPattern=\".*[.]spec[.]js\"", "tsc": "tsc -b" }, "dependencies": { @@ -32,7 +35,9 @@ "devDependencies": { "@typeagent/action-grammar-compiler": "workspace:*", "@typeagent/action-schema-compiler": "workspace:*", + "@types/jest": "^29.5.7", "concurrently": "^9.1.2", + "jest": "^29.7.0", "rimraf": "^6.0.1", "typescript": "~5.4.5" }, diff --git a/ts/packages/agents/ipconfig/src/ipconfigActionHandler.ts b/ts/packages/agents/ipconfig/src/ipconfigActionHandler.ts index 61f91fd301..1656a0e9d4 100644 --- a/ts/packages/agents/ipconfig/src/ipconfigActionHandler.ts +++ b/ts/packages/agents/ipconfig/src/ipconfigActionHandler.ts @@ -6,9 +6,10 @@ import { execFile } from "child_process"; import { promisify } from "util"; import { ActionContext, AppAgent, TypeAgentAction } from "@typeagent/agent-sdk"; +import { StructuredBlock, KeyValuePair } from "@typeagent/agent-sdk"; import { createActionResultFromTextDisplay, - createActionResultFromMarkdownDisplay, + createStructuredResult, } from "@typeagent/agent-sdk/helpers/action"; import { IpconfigActions } from "./ipconfigSchema.js"; @@ -101,10 +102,10 @@ export function instantiate(): AppAgent { try { const args = buildArgs(action); const output = await runCli(...args); - const formatted = formatOutput(output, action.actionName); - return formatted.startsWith("#") || formatted.includes("**") - ? createActionResultFromMarkdownDisplay(formatted) - : createActionResultFromTextDisplay(formatted); + if (STRUCTURED_ACTIONS.has(action.actionName)) { + return buildStructuredOutput(output); + } + return createActionResultFromTextDisplay(output); } catch (e: unknown) { const msg = e instanceof Error ? e.message : String(e); return createActionResultFromTextDisplay(`Error: ${msg}`); @@ -121,38 +122,83 @@ const STRUCTURED_ACTIONS = new Set([ "displayIPv6DHCPClassIDs", ]); -function formatOutput(raw: string, actionName: string): string { - if (!STRUCTURED_ACTIONS.has(actionName)) { - return raw; - } - +// Parse `ipconfig` output into structured section blocks. Each section +// (unindented header line) becomes a heading + keyValue block; the dotted +// "Key . . . : Value" lines become key-value pairs. The SDK derives the +// markdown/text fallback for clients that can't render blocks. +// +// Exported for unit tests. +export function buildStructuredOutput(raw: string) { const lines = raw.split(/\r?\n/); - const out: string[] = []; + + type Section = { heading?: string; pairs: KeyValuePair[]; loose: string[] }; + const sections: Section[] = []; + let current: Section = { pairs: [], loose: [] }; + + const pushCurrent = () => { + if (current.heading || current.pairs.length || current.loose.length) { + sections.push(current); + } + }; for (const line of lines) { if (line.trim() === "") { - out.push(""); continue; } - // Section header: no leading whitespace + // Section header: no leading whitespace, ends with ":" if (!/^\s/.test(line)) { - const header = line.replace(/:$/, "").trim(); - out.push(`\n## ${header}`); + pushCurrent(); + current = { + heading: line.replace(/:$/, "").trim(), + pairs: [], + loose: [], + }; continue; } // Key-value pair: " Key . . . . . : Value" - const kv = line.match(/^\s+(.*?)\s*\.[\s.]*:\s*(.*)/); + // Match on the leading-whitespace-trimmed line with disjoint + // sub-expressions (key excludes '.'/':' and the dotted separator + // starts with a literal '.') to avoid polynomial backtracking. + const kv = line.trimStart().match(/^([^.:]*)\.[.\s]*:\s*(.*)/); if (kv) { const key = kv[1].trimEnd(); const value = kv[2].trim(); - out.push(`- **${key}:** ${value || "—"}`); + current.pairs.push({ label: key, value: value || "—" }); continue; } - out.push(line.trim()); + current.loose.push(line.trim()); + } + pushCurrent(); + + const blocks: StructuredBlock[] = []; + const rawData: Record> & { + _lines?: string[]; + } = {}; + + for (const section of sections) { + if (section.heading) { + blocks.push({ kind: "heading", level: 2, text: section.heading }); + } + if (section.pairs.length > 0) { + blocks.push({ kind: "keyValue", pairs: section.pairs }); + const bucket: Record = {}; + for (const p of section.pairs) { + bucket[p.label] = String(p.value); + } + rawData[section.heading ?? "General"] = bucket; + } + for (const loose of section.loose) { + blocks.push({ kind: "text", text: loose, format: "text" }); + } + } + + if (blocks.length === 0) { + // Nothing parsed into structure — fall back to the raw text. + return createActionResultFromTextDisplay(raw); } - return out.join("\n").trim(); + return createStructuredResult(blocks, { rawData }); } diff --git a/ts/packages/agents/ipconfig/test/ipconfigStructured.spec.ts b/ts/packages/agents/ipconfig/test/ipconfigStructured.spec.ts new file mode 100644 index 0000000000..ff623e6cc8 --- /dev/null +++ b/ts/packages/agents/ipconfig/test/ipconfigStructured.spec.ts @@ -0,0 +1,84 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/** + * Unit tests for buildStructuredOutput in ipconfigActionHandler — it parses + * raw `ipconfig` text into a StructuredContent document of per-section + * heading + keyValue blocks with a rawData payload keyed by section. + */ + +import { buildStructuredOutput } from "../src/ipconfigActionHandler.js"; + +const SAMPLE = [ + "Windows IP Configuration", + "", + "Ethernet adapter Ethernet:", + "", + " Connection-specific DNS Suffix . : example.com", + " IPv4 Address. . . . . . . . . . . : 192.168.1.10", + " Subnet Mask . . . . . . . . . . . : 255.255.255.0", + " Default Gateway . . . . . . . . . : 192.168.1.1", + "", + "Wireless LAN adapter Wi-Fi:", + "", + " Media State . . . . . . . . . . . : Media disconnected", +].join("\r\n"); + +function content(raw: string) { + return buildStructuredOutput(raw).displayContent as any; +} + +describe("buildStructuredOutput", () => { + test("produces a structured displayContent", () => { + expect(content(SAMPLE).type).toBe("structured"); + }); + + test("emits a heading block per section", () => { + const headings = content(SAMPLE) + .blocks.filter((b: any) => b.kind === "heading") + .map((b: any) => b.text); + expect(headings).toEqual( + expect.arrayContaining([ + "Ethernet adapter Ethernet", + "Wireless LAN adapter Wi-Fi", + ]), + ); + }); + + test("parses dotted key/value lines into keyValue pairs", () => { + const kv = content(SAMPLE).blocks.find( + (b: any) => b.kind === "keyValue", + ); + const ip = kv.pairs.find((p: any) => p.label === "IPv4 Address"); + expect(ip.value).toBe("192.168.1.10"); + }); + + test("rawData is keyed by section heading", () => { + const raw = content(SAMPLE).rawData; + expect(raw["Ethernet adapter Ethernet"]["Subnet Mask"]).toBe( + "255.255.255.0", + ); + }); + + test("empty values render as an em dash", () => { + const raw = "Adapter X:\r\n Empty Field . . . . . . . . . . . :"; + const kv = content(raw).blocks.find((b: any) => b.kind === "keyValue"); + expect(kv.pairs[0].value).toBe("—"); + }); + + test("falls back to text when nothing parses", () => { + // Only blank lines produce no blocks → plain text display. + const result = buildStructuredOutput("\r\n \r\n"); + expect((result.displayContent as any).type).not.toBe("structured"); + }); + + test("a bare header line becomes a heading block", () => { + const result = buildStructuredOutput("Some Section:"); + const c = result.displayContent as any; + expect(c.type).toBe("structured"); + expect(c.blocks[0]).toMatchObject({ + kind: "heading", + text: "Some Section", + }); + }); +}); diff --git a/ts/packages/agents/ipconfig/test/tsconfig.json b/ts/packages/agents/ipconfig/test/tsconfig.json new file mode 100644 index 0000000000..895a6f0d21 --- /dev/null +++ b/ts/packages/agents/ipconfig/test/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "composite": true, + "rootDir": ".", + "outDir": "../dist/test", + "types": ["node", "jest"] + }, + "include": ["./**/*"], + "ts-node": { + "esm": true + }, + "references": [{ "path": "../src" }] +} diff --git a/ts/packages/agents/ipconfig/tsconfig.json b/ts/packages/agents/ipconfig/tsconfig.json index 1e14d73b9f..0fa9d4ddc6 100644 --- a/ts/packages/agents/ipconfig/tsconfig.json +++ b/ts/packages/agents/ipconfig/tsconfig.json @@ -7,6 +7,9 @@ "references": [ { "path": "./src" + }, + { + "path": "./test" } ], "ts-node": { diff --git a/ts/packages/agents/list/README.AUTOGEN.md b/ts/packages/agents/list/README.AUTOGEN.md index fa36e209c8..e008aafcda 100644 --- a/ts/packages/agents/list/README.AUTOGEN.md +++ b/ts/packages/agents/list/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # list-agent — AI-generated documentation @@ -12,39 +12,45 @@ ## Overview -The `list-agent` package is a TypeAgent application agent designed to manage lists. It provides a set of actions for creating, modifying, and retrieving lists, making it suitable for use cases such as to-do lists, shopping lists, or other item collections. This agent is part of the TypeAgent monorepo and works in conjunction with other components to handle user requests related to list management. +The `list-agent` package is a TypeAgent application agent designed to manage lists. It provides a set of actions for creating, modifying, and retrieving lists, making it suitable for use cases such as to-do lists, shopping lists, or other item collections. This agent is part of the TypeAgent monorepo and integrates with other components to handle user requests related to list management. ## What it does -The `list-agent` supports six primary actions for managing lists: +The `list-agent` supports a range of actions for managing lists, which are defined in its schema and implemented in its action handler. These actions include: - **`addItems`**: Adds one or more items to a specified list. If the list does not exist, it will be created. This action requires the `items` (array of strings) and `listName` (string) parameters. - **`removeItems`**: Removes one or more items from a specified list. This action requires the `items` (array of strings) and `listName` (string) parameters. - **`createList`**: Creates a new list with the specified name. This action requires the `listName` (string) parameter. - **`getList`**: Retrieves the contents of a specified list. This action is useful for queries like "What's on my grocery list?" or "What are the contents of my to-do list?" It requires the `listName` (string) parameter. - **`clearList`**: Removes all items from a specified list. This action requires the `listName` (string) parameter. +- **`listLists`**: Lists all existing lists. This action is useful for queries like "What lists do I have?" or "Show me my lists." - **`startEditList`**: Initiates the editing of a specified list. This action requires the `listName` (string) parameter. These actions are defined in the [listSchema.ts](./src/listSchema.ts) file and implemented in the [listActionHandler.ts](./src/listActionHandler.ts) file. The agent uses schema definitions and grammar rules to interpret user input and map it to the appropriate actions. ## Setup -The `list-agent` package does not require any special setup beyond installing its dependencies. To get started, navigate to the package directory and run: +The `list-agent` package does not require any special setup beyond installing its dependencies. To get started: -```sh -pnpm install -``` +1. Navigate to the package directory: + ```sh + cd ts/packages/agents/list/ + ``` +2. Install the required dependencies: + ```sh + pnpm install + ``` For additional details, refer to the hand-written README. ## Key Files -The `list-agent` package is organized into several key files that define its behavior and functionality: +The `list-agent` package is structured around several key files that define its behavior and functionality: -- **[listManifest.json](./src/listManifest.json)**: This file contains metadata about the agent, including its description, emoji representation, and references to the schema and grammar files. -- **[listSchema.ts](./src/listSchema.ts)**: This file defines the action types and their parameters. It serves as the core of the agent's functionality, specifying the actions the agent can perform and the data they require. -- **[listSchema.agr](./src/listSchema.agr)**: This file contains grammar rules that map user utterances to actions. These rules help the agent interpret natural language input and determine the appropriate action to execute. -- **[listActionHandler.ts](./src/listActionHandler.ts)**: This file implements the logic for handling the actions defined in the schema. It contains the code that executes the behavior of each action. +- **[listManifest.json](./src/listManifest.json)**: Contains metadata about the agent, including its description, emoji representation, and references to the schema and grammar files. +- **[listSchema.ts](./src/listSchema.ts)**: Defines the action types and their parameters. This file is the core of the agent's functionality, specifying the actions the agent can perform and the data they require. +- **[listSchema.agr](./src/listSchema.agr)**: Contains grammar rules that map user utterances to actions. These rules help the agent interpret natural language input and determine the appropriate action to execute. +- **[listActionHandler.ts](./src/listActionHandler.ts)**: Implements the logic for handling the actions defined in the schema. This file contains the code that executes the behavior of each action. ### File Responsibilities @@ -57,21 +63,46 @@ The `list-agent` package is organized into several key files that define its beh To extend the functionality of the `list-agent` package, follow these steps: -1. **Add a new action**: - - - Define the new action type in [listSchema.ts](./src/listSchema.ts). Specify the action name and its required parameters. - - Add grammar rules for the new action in [listSchema.agr](./src/listSchema.agr). These rules should map user input to the new action. - - Implement the action's logic in [listActionHandler.ts](./src/listActionHandler.ts). This is where you define how the action will be executed. - -2. **Modify existing actions**: - - - Update the action type definitions in [listSchema.ts](./src/listSchema.ts) to reflect the changes. - - Adjust the corresponding grammar rules in [listSchema.agr](./src/listSchema.agr) to ensure they align with the updated action. - - Modify the implementation in [listActionHandler.ts](./src/listActionHandler.ts) to handle the updated behavior. - -3. **Test your changes**: - - Add or update tests to cover the new or modified functionality. - - Run the test suite to ensure that your changes work as expected and do not introduce regressions. +### 1. Add a New Action + +- **Define the action**: Add the new action type and its parameters in [listSchema.ts](./src/listSchema.ts). For example: + ```ts + export type NewAction = { + actionName: "newAction"; + parameters: { + param1: string; + param2: number; + }; + }; + ``` +- **Add grammar rules**: Define grammar rules for the new action in [listSchema.agr](./src/listSchema.agr). These rules should map user input to the new action. For example: + ```text + = do something with $(param1:wildcard) and $(param2:number) -> { + actionName: "newAction", + parameters: { + param1, + param2 + } + } + ``` +- **Implement the action**: Add the logic for the new action in [listActionHandler.ts](./src/listActionHandler.ts). For example: + ```ts + async function handleNewAction(action: NewAction, context: ActionContext) { + // Your implementation here + return createActionResultFromTextDisplay("Action executed successfully."); + } + ``` + +### 2. Modify Existing Actions + +- Update the action type definitions in [listSchema.ts](./src/listSchema.ts) to reflect the changes. +- Adjust the corresponding grammar rules in [listSchema.agr](./src/listSchema.agr) to ensure they align with the updated action. +- Modify the implementation in [listActionHandler.ts](./src/listActionHandler.ts) to handle the updated behavior. + +### 3. Test Your Changes + +- Add or update tests to cover the new or modified functionality. +- Run the test suite to ensure that your changes work as expected and do not introduce regressions. By following these steps, you can customize the `list-agent` package to support additional use cases or modify its existing behavior to better suit your needs. @@ -111,7 +142,7 @@ External: _None at runtime._ ### Actions -_6 actions implemented by this agent, parsed deterministically from `./src/listSchema.ts`. Sample utterances and parameter shapes are illustrative; consult the schema for the full signature._ +_7 actions implemented by this agent, parsed deterministically from `./src/listSchema.ts`. Sample utterances and parameter shapes are illustrative; consult the schema for the full signature._ | User says | Action | | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | @@ -120,10 +151,11 @@ _6 actions implemented by this agent, parsed deterministically from `./src/listS | _(no sample)_ | `createList` → `{ "listName": "…" }` | | _use this action to show the user what's on the list, for example, "What's on my grocery list?" or "what are the contents of my to do list?"_ | `getList` → `{ "listName": "…" }` | | _(no sample)_ | `clearList` → `{ "listName": "…" }` | +| _use this action to show the user which lists exist, for example, "what lists are there?", "show me my lists", "what lists do I have?"_ | `listLists` | | _(no sample)_ | `startEditList` → `{ "listName": "…" }` | --- -_Auto-generated against commit `ee4eba45bcb87911335cb938a0ced6a001aa3882` on `2026-07-17T22:05:48.260Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter list-agent docs:verify-links` to spot-check._ +_Auto-generated against commit `2c26e6d289e04ac54b08f8483b292693a8d4bb64` on `2026-07-18T00:58:44.432Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter list-agent docs:verify-links` to spot-check._ diff --git a/ts/packages/agents/list/jest.config.cjs b/ts/packages/agents/list/jest.config.cjs new file mode 100644 index 0000000000..f475768a12 --- /dev/null +++ b/ts/packages/agents/list/jest.config.cjs @@ -0,0 +1,4 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +module.exports = require("../../../jest.config.js"); diff --git a/ts/packages/agents/list/package.json b/ts/packages/agents/list/package.json index 67cba595e9..1d087fada4 100644 --- a/ts/packages/agents/list/package.json +++ b/ts/packages/agents/list/package.json @@ -24,8 +24,11 @@ "asc": "asc -i ./src/listSchema.ts -o ./dist/listSchema.pas.json -t ListAction -a ListActivity", "build": "concurrently npm:tsc npm:asc npm:agc", "clean": "rimraf --glob dist *.tsbuildinfo *.done.build.log", + "jest-esm": "node --no-warnings --experimental-vm-modules ./node_modules/jest/bin/jest.js", "prettier": "prettier --check . --ignore-path ../../../.prettierignore", "prettier:fix": "prettier --write . --ignore-path ../../../.prettierignore", + "test": "npm run test:local", + "test:local": "pnpm run jest-esm --testPathPattern=\".*[.]spec[.]js\"", "tsc": "tsc -b" }, "dependencies": { @@ -34,7 +37,9 @@ "devDependencies": { "@typeagent/action-grammar-compiler": "workspace:*", "@typeagent/action-schema-compiler": "workspace:*", + "@types/jest": "^29.5.7", "concurrently": "^9.1.2", + "jest": "^29.7.0", "prettier": "^3.5.3", "rimraf": "^6.0.1", "typescript": "~5.4.5" diff --git a/ts/packages/agents/list/src/listActionHandler.ts b/ts/packages/agents/list/src/listActionHandler.ts index e8edf54b02..ac70e6e0dc 100644 --- a/ts/packages/agents/list/src/listActionHandler.ts +++ b/ts/packages/agents/list/src/listActionHandler.ts @@ -12,8 +12,7 @@ import { } from "@typeagent/agent-sdk"; import { createActionResultFromTextDisplay, - createActionResultFromMarkdownDisplay, - createActionResult, + createStructuredResult, } from "@typeagent/agent-sdk/helpers/action"; import { ListAction, ListActivity } from "./listSchema.js"; @@ -186,6 +185,10 @@ class MemoryListCollection { return this.lists.get(name); } + getListNames(): string[] { + return Array.from(this.lists.keys()); + } + serialize(): string { const lists = Array.from(this.lists.values()).map((memList) => { return { @@ -274,20 +277,52 @@ function getListDisplay( suffix?: string, ) { const list = getList(listContext, listName); - if (list.itemsSet.size === 0) { - return createActionResult( - `List '${listName}' is empty.${suffix ? `\n${suffix}` : ""}`, - undefined, - getEntities(listName), + return buildListResult(listName, Array.from(list.itemsSet), suffix); +} + +// Build the structured display for a list: a heading + list block (or an +// empty-state text block) plus a machine-readable rawData payload. Pure — +// exported for unit tests. +export function buildListResult( + listName: string, + items: string[], + suffix?: string, +) { + if (items.length === 0) { + return createStructuredResult( + [ + { kind: "heading", level: 3, text: `List '${listName}'` }, + { kind: "text", text: "This list is empty." }, + ...(suffix ? [{ kind: "text" as const, text: suffix }] : []), + ], + { + entities: getEntities(listName), + rawData: { name: listName, items: [] }, + }, ); } - const plainList = Array.from(list.itemsSet); + const plainList = items; - // set displayText to markdown list of the items - return createActionResultFromMarkdownDisplay( - `List '${listName}' has items:\n\n${plainList.map((item) => `- ${item}`).join("\n")}${suffix ? `\n\n${suffix}` : ""}`, - undefined, - getEntities(listName, plainList), + // Render the list as a structured heading + list block. The SDK derives + // the markdown/text fallback for clients that can't render blocks. + const count = plainList.length; + return createStructuredResult( + [ + { + kind: "heading", + level: 3, + text: `List '${listName}' — ${count} item${count === 1 ? "" : "s"}`, + }, + { + kind: "list", + items: plainList.map((item) => ({ text: item })), + }, + ...(suffix ? [{ kind: "text" as const, text: suffix }] : []), + ], + { + entities: getEntities(listName, plainList), + rawData: { name: listName, items: plainList }, + }, ); } async function handleListAction( @@ -368,6 +403,41 @@ async function handleListAction( result = getListDisplay(listContext, action.parameters.listName); break; } + case "listLists": { + const store = getStore(listContext); + const names = store.getListNames(); + if (names.length === 0) { + result = createStructuredResult( + [ + { kind: "heading", level: 3, text: "Lists" }, + { kind: "text", text: "There are no lists yet." }, + ], + { entities: [] }, + ); + } else { + result = createStructuredResult( + [ + { + kind: "heading", + level: 3, + text: `Lists — ${names.length} list${names.length === 1 ? "" : "s"}`, + }, + { + kind: "list", + items: names.map((name) => ({ text: name })), + }, + ], + { + entities: names.map((name) => ({ + name, + type: ["list"], + })), + rawData: { lists: names }, + }, + ); + } + break; + } case "clearList": { const store = getStore(listContext); const clearListAction = action; diff --git a/ts/packages/agents/list/src/listSchema.agr b/ts/packages/agents/list/src/listSchema.agr index d7884a5309..ad91d44b3b 100644 --- a/ts/packages/agents/list/src/listSchema.agr +++ b/ts/packages/agents/list/src/listSchema.agr @@ -150,10 +150,23 @@ } }; +// listLists - show which lists exist +// The literal word "lists" anchors these rules so they beat wildcard-heavy +// patterns and the system.conversation listConversation rule. + = (can you)? (list | show | display) (me)? (all | my | the)? lists -> { + actionName: "listLists", + parameters: {} +} + | (what | which) lists (do | are)? (i | we | there)? (have)? -> { + actionName: "listLists", + parameters: {} +}; + import { ListAction } from "./listSchema.ts"; : ListAction = | | | - | ; + | + | ; diff --git a/ts/packages/agents/list/src/listSchema.keywords.json b/ts/packages/agents/list/src/listSchema.keywords.json index 872c16dbe6..eda4085b26 100644 --- a/ts/packages/agents/list/src/listSchema.keywords.json +++ b/ts/packages/agents/list/src/listSchema.keywords.json @@ -150,6 +150,19 @@ "bulletin", "manifest", "summary" + ], + "listLists": [ + "list", + "lists", + "collection", + "catalog", + "inventory", + "directory", + "index", + "roster", + "registry", + "overview", + "all" ] } } diff --git a/ts/packages/agents/list/src/listSchema.ts b/ts/packages/agents/list/src/listSchema.ts index 243e2a1e84..5c989c3986 100644 --- a/ts/packages/agents/list/src/listSchema.ts +++ b/ts/packages/agents/list/src/listSchema.ts @@ -6,7 +6,8 @@ export type ListAction = | RemoveItemsAction | CreateListAction | GetListAction - | ClearListAction; + | ClearListAction + | ListListsAction; export type ListActivity = StartEditList; @@ -54,6 +55,13 @@ export type ClearListAction = { }; }; +// use this action to show the user which lists exist, for example, +// "what lists are there?", "show me my lists", "what lists do I have?" +export type ListListsAction = { + actionName: "listLists"; + parameters: {}; +}; + export type StartEditList = { actionName: "startEditList"; parameters: { diff --git a/ts/packages/agents/list/test/listStructured.spec.ts b/ts/packages/agents/list/test/listStructured.spec.ts new file mode 100644 index 0000000000..2968705b92 --- /dev/null +++ b/ts/packages/agents/list/test/listStructured.spec.ts @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/** + * Unit tests for buildListResult in listActionHandler — it renders a named + * list as a StructuredContent document (heading + list block, or an + * empty-state text block) with a rawData payload. + */ + +import { buildListResult } from "../src/listActionHandler.js"; + +function blocks(result: ReturnType) { + return (result.displayContent as any).blocks; +} + +describe("buildListResult", () => { + test("non-empty list renders heading + list block", () => { + const result = buildListResult("shopping", ["milk", "eggs", "bread"]); + expect(blocks(result)[0]).toMatchObject({ + kind: "heading", + text: "List 'shopping' — 3 items", + }); + const list = blocks(result).find((b: any) => b.kind === "list"); + expect(list.items.map((i: any) => i.text)).toEqual([ + "milk", + "eggs", + "bread", + ]); + }); + + test("singular 'item' for a one-element list", () => { + const result = buildListResult("todo", ["call mom"]); + expect(blocks(result)[0].text).toBe("List 'todo' — 1 item"); + }); + + test("empty list renders an empty-state text block, no list block", () => { + const result = buildListResult("empty", []); + expect(blocks(result).some((b: any) => b.kind === "list")).toBe(false); + expect(blocks(result)[1]).toMatchObject({ + kind: "text", + text: "This list is empty.", + }); + }); + + test("suffix is appended as a trailing text block", () => { + const result = buildListResult("shopping", ["milk"], "Anything else?"); + const last = blocks(result)[blocks(result).length - 1]; + expect(last).toMatchObject({ kind: "text", text: "Anything else?" }); + }); + + test("rawData carries the list name and items", () => { + const items = ["milk", "eggs"]; + const raw = (buildListResult("shopping", items).displayContent as any) + .rawData; + expect(raw).toMatchObject({ name: "shopping", items }); + }); + + test("entities include the list and carry items in facets", () => { + const result = buildListResult("shopping", ["milk", "eggs"]); + expect(result.entities).toEqual([ + { + name: "shopping", + type: ["list"], + facets: [{ name: "items", value: ["milk", "eggs"] }], + }, + ]); + }); +}); diff --git a/ts/packages/agents/list/test/tsconfig.json b/ts/packages/agents/list/test/tsconfig.json new file mode 100644 index 0000000000..895a6f0d21 --- /dev/null +++ b/ts/packages/agents/list/test/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "composite": true, + "rootDir": ".", + "outDir": "../dist/test", + "types": ["node", "jest"] + }, + "include": ["./**/*"], + "ts-node": { + "esm": true + }, + "references": [{ "path": "../src" }] +} diff --git a/ts/packages/agents/list/tsconfig.json b/ts/packages/agents/list/tsconfig.json index acb9cb4a91..94dfc60bb1 100644 --- a/ts/packages/agents/list/tsconfig.json +++ b/ts/packages/agents/list/tsconfig.json @@ -4,7 +4,7 @@ "composite": true }, "include": [], - "references": [{ "path": "./src" }], + "references": [{ "path": "./src" }, { "path": "./test" }], "ts-node": { "esm": true } diff --git a/ts/packages/agents/onboarding/README.AUTOGEN.md b/ts/packages/agents/onboarding/README.AUTOGEN.md index 3f70b8a7bf..28f06e3355 100644 --- a/ts/packages/agents/onboarding/README.AUTOGEN.md +++ b/ts/packages/agents/onboarding/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # onboarding-agent — AI-generated documentation @@ -12,13 +12,13 @@ ## Overview -The `onboarding-agent` is a TypeAgent application agent that automates the process of integrating new applications and APIs into the TypeAgent ecosystem. It organizes the onboarding workflow into seven distinct phases, each managed by a sub-agent. This agent is particularly effective when used with AI orchestrators like Claude Code or GitHub Copilot, which can drive the onboarding process via TypeAgent's MCP interface. +The `onboarding-agent` is a TypeAgent application agent that automates the process of integrating new applications and APIs into the TypeAgent ecosystem. It organizes the onboarding workflow into seven distinct phases, each managed by a sub-agent. This agent is designed to streamline the onboarding process by generating the necessary artifacts and configurations for new integrations. It is particularly effective when used with AI orchestrators like Claude Code or GitHub Copilot, which can drive the onboarding process via TypeAgent's MCP interface. ## What it does The `onboarding-agent` provides a structured, multi-phase approach to integrating new applications or APIs into the TypeAgent ecosystem. It supports the following actions: -- **`startOnboarding`**: Begins the onboarding process for a new integration by specifying the integration name and optional details such as a description or API type. +- **`startOnboarding`**: Initiates the onboarding process for a new integration by specifying the integration name and optional details such as a description or API type. - **`resumeOnboarding`**: Resumes an in-progress onboarding process, optionally starting from a specific phase such as discovery, schema generation, or testing. - **`getOnboardingStatus`**: Retrieves the current status of an ongoing integration, including the current phase and progress. - **`listIntegrations`**: Lists all integrations, optionally filtered by their status (e.g., in-progress or complete). @@ -33,13 +33,13 @@ The onboarding process is divided into seven phases, each producing specific art 6. **Testing**: Creates test cases and validates the generated artifacts through a phrase-to-action testing loop. 7. **Packaging**: Packages the completed agent for distribution and registration within the TypeAgent ecosystem. -The agent is designed to be driven by AI clients that can iteratively call TypeAgent actions, inspect artifacts, and guide each phase to completion. +Each phase is designed to produce specific outputs that are stored in a dedicated workspace directory, allowing the process to be paused and resumed as needed. ## Setup To use the `onboarding-agent`, you need to configure the following environment variables: -- **`TYPEAGENT_UIA_HELPER`**: Required for the experimental UI Automation crawling feature, which is used to discover actions in Windows desktop applications. Refer to the hand-written README for more details on how to set this up. +- **`TYPEAGENT_UIA_HELPER`**: This variable is required for the experimental UI Automation crawling feature, which is used to discover actions in Windows desktop applications. Refer to the hand-written README for more details on how to set this up. - **`__PORT_ENV__`**: Specifies the port environment for the agent. Ensure this is set to the appropriate value for your environment. Additionally, for optimal usage, it is recommended to set up TypeAgent as an MCP server. This allows AI clients like Claude Code or GitHub Copilot to communicate directly with the TypeAgent dispatcher. The hand-written README provides detailed instructions for this setup. @@ -100,8 +100,8 @@ By following these steps, you can enhance the `onboarding-agent` to support addi ### Entry points - `./agent/manifest` → [./src/onboardingManifest.json](./src/onboardingManifest.json) -- `./agent/handlers` → `./dist/onboardingActionHandler.js` _(not found on disk)_ -- `./uiCapture` → `./dist/uiCapture/index.js` _(not found on disk)_ +- `./agent/handlers` → [./dist/onboardingActionHandler.js](./dist/onboardingActionHandler.js) +- `./uiCapture` → [./dist/uiCapture/index.js](./dist/uiCapture/index.js) ### Dependencies @@ -135,7 +135,7 @@ External: `debug`, `typechat` - [./src/discovery/discoverySchema.ts](./src/discovery/discoverySchema.ts) - [./src/grammarGen/grammarGenHandler.ts](./src/grammarGen/grammarGenHandler.ts) - [./src/grammarGen/grammarGenSchema.agr](./src/grammarGen/grammarGenSchema.agr) -- _…and 84 more under `./src/`._ +- _…and 85 more under `./src/`._ ### Agent surface @@ -164,6 +164,6 @@ _4 actions implemented by this agent, parsed deterministically from `./src/onboa --- -_Auto-generated against commit `44b34a9ac8794b6f90489ff7e55fe57283c34960` on `2026-07-13T09:04:14.089Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter onboarding-agent docs:verify-links` to spot-check._ +_Auto-generated against commit `c97eb42726a9196c7ac72138faa0777c5cbc1aab` on `2026-07-18T09:48:36.613Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter onboarding-agent docs:verify-links` to spot-check._ diff --git a/ts/packages/agents/onboarding/src/onboardingActionHandler.ts b/ts/packages/agents/onboarding/src/onboardingActionHandler.ts index c58c50ccc7..94e7404c20 100644 --- a/ts/packages/agents/onboarding/src/onboardingActionHandler.ts +++ b/ts/packages/agents/onboarding/src/onboardingActionHandler.ts @@ -11,6 +11,7 @@ import { import { createActionResultFromTextDisplay, createActionResultFromMarkdownDisplay, + createStructuredResult, } from "@typeagent/agent-sdk/helpers/action"; import { OnboardingActions } from "./onboardingSchema.js"; import { DiscoveryActions } from "./discovery/discoverySchema.js"; @@ -234,21 +235,44 @@ async function executeOnboardingAction( error: `Integration "${integrationName}" not found.`, }; } - const lines = [ - `## ${integrationName} — Onboarding Status`, - ``, - `**Current phase:** ${state.currentPhase}`, - `**Started:** ${state.createdAt}`, - `**Updated:** ${state.updatedAt}`, - ``, - `| Phase | Status |`, - `|---|---|`, - ...Object.entries(state.phases).map( - ([phase, ps]) => - `| ${phase} | ${statusIcon(ps.status)} ${ps.status} |`, - ), - ]; - return createActionResultFromMarkdownDisplay(lines.join("\n")); + return createStructuredResult( + [ + { + kind: "heading", + level: 3, + text: `${integrationName} — Onboarding Status`, + }, + { + kind: "keyValue", + pairs: [ + { + label: "Current phase", + value: state.currentPhase, + }, + { label: "Started", value: state.createdAt }, + { label: "Updated", value: state.updatedAt }, + ], + }, + { + kind: "table", + columns: [ + { id: "phase", header: "Phase" }, + { id: "status", header: "Status", type: "badge" }, + ], + rows: Object.entries(state.phases).map( + ([phase, ps]) => [ + phase, + { + text: `${statusIcon(ps.status)} ${ps.status}`, + badge: phaseStatusBadge(ps.status), + }, + ], + ), + readonly: true, + }, + ], + { rawData: state }, + ); } case "listIntegrations": { @@ -259,7 +283,8 @@ async function executeOnboardingAction( "No integrations found. Use startOnboarding to begin.", ); } - const lines = [`## Integrations`, ``]; + const rows: (string | number)[][] = []; + const raw: unknown[] = []; for (const name of names) { const state = await loadState(name); if (!state) continue; @@ -270,11 +295,34 @@ async function executeOnboardingAction( state.currentPhase === "complete" ) continue; - lines.push( - `- **${name}** — ${state.currentPhase} (updated ${state.updatedAt})`, + rows.push([name, state.currentPhase, state.updatedAt]); + raw.push({ + name, + currentPhase: state.currentPhase, + updatedAt: state.updatedAt, + }); + } + if (rows.length === 0) { + return createActionResultFromTextDisplay( + "No matching integrations found.", ); } - return createActionResultFromMarkdownDisplay(lines.join("\n")); + return createStructuredResult( + [ + { kind: "heading", level: 3, text: "Integrations" }, + { + kind: "table", + columns: [ + { id: "name", header: "Integration" }, + { id: "phase", header: "Phase" }, + { id: "updated", header: "Updated", type: "date" }, + ], + rows, + sortable: true, + }, + ], + { rawData: raw }, + ); } } } @@ -313,3 +361,20 @@ function statusIcon(status: string): string { return "❓"; } } + +function phaseStatusBadge( + status: string, +): "neutral" | "info" | "success" | "warning" | "error" { + switch (status) { + case "approved": + return "success"; + case "in-progress": + return "info"; + case "pending": + return "warning"; + case "skipped": + return "neutral"; + default: + return "neutral"; + } +} diff --git a/ts/packages/agents/osNotifications/README.AUTOGEN.md b/ts/packages/agents/osNotifications/README.AUTOGEN.md index 08ffa31b73..ba5d073680 100644 --- a/ts/packages/agents/osNotifications/README.AUTOGEN.md +++ b/ts/packages/agents/osNotifications/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # os-notifications-agent — AI-generated documentation @@ -12,11 +12,11 @@ ## Overview -The `os-notifications-agent` package integrates operating system notifications from Windows Action Center and Linux freedesktop into the TypeAgent chat system. These notifications are displayed as ephemeral toasts or inline messages, providing real-time updates to users. Notifications are not persisted and are removed from the chat interface when dismissed at the OS level. Note that macOS is not supported. +The `os-notifications-agent` package integrates operating system notifications from Windows Action Center and Linux freedesktop into the TypeAgent chat system. These notifications are displayed as ephemeral toasts or inline messages, providing real-time updates to users. Notifications are not persisted and are removed from the chat interface when dismissed at the OS level. macOS is not supported. ## What it does -The `os-notifications-agent` captures and processes OS-level notifications, forwarding them to connected TypeAgent chat clients. Notifications are ephemeral and are not stored in the `displayLog.json`. The agent supports the following key actions: +The `os-notifications-agent` captures and processes OS-level notifications and forwards them to connected TypeAgent chat clients. Notifications are ephemeral and are not stored in the `displayLog.json`. The agent supports the following key actions: - **`syncOsNotifications`**: Re-emits currently-present notifications through the agent pipeline. This action is Windows-only, as Linux's freedesktop specification does not support querying existing notifications. If the required Windows helper executable is not available, the agent will prompt the user to build it. - **`testOsNotification`**: Generates a synthetic notification and processes it through the agent pipeline. This is useful for testing the agent's functionality without relying on actual OS notifications. @@ -104,7 +104,7 @@ By following these steps, you can enhance the `os-notifications-agent` to suppor ### Entry points - `./agent/manifest` → [./src/osNotificationsManifest.json](./src/osNotificationsManifest.json) -- `./agent/handlers` → `./dist/osNotificationsActionHandler.js` _(not found on disk)_ +- `./agent/handlers` → [./dist/osNotificationsActionHandler.js](./dist/osNotificationsActionHandler.js) ### Dependencies @@ -133,6 +133,6 @@ External: `dbus-next`, `debug` --- -_Auto-generated against commit `44b34a9ac8794b6f90489ff7e55fe57283c34960` on `2026-07-13T09:04:14.089Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter os-notifications-agent docs:verify-links` to spot-check._ +_Auto-generated against commit `f928ce70269b7d0f8942977c29147b2c8832b722` on `2026-07-15T22:42:29.947Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter os-notifications-agent docs:verify-links` to spot-check._ diff --git a/ts/packages/agents/osNotifications/src/osNotificationsActionHandler.ts b/ts/packages/agents/osNotifications/src/osNotificationsActionHandler.ts index 95aefc3f46..fb6384df52 100644 --- a/ts/packages/agents/osNotifications/src/osNotificationsActionHandler.ts +++ b/ts/packages/agents/osNotifications/src/osNotificationsActionHandler.ts @@ -45,6 +45,7 @@ import { HelperNotBuiltError, buildWindowsHelper, isWindowsHelperBuilt, + isSparsePackageRegistered, } from "./watchers/windowsWatcher.js"; const debug = registerDebug("typeagent:osNotifications"); @@ -91,20 +92,35 @@ export type AgentContext = { export function evaluateReadiness( platform: NodeJS.Platform, helperBuilt: boolean, + sparsePackageRegistered: boolean, ): ReadinessReport { if (platform !== "win32") { return { state: "ready" }; } - if (helperBuilt) { - return { state: "ready" }; + if (!helperBuilt) { + return { + state: "setup-required", + message: + "OS notification helper exe (OsNotificationListener.exe) hasn't been built yet.", + details: + "Setup runs `dotnet publish` + signs + registers a sparse WinAppSDK package; ~30–60 seconds first time.", + }; } - return { - state: "setup-required", - message: - "OS notification helper exe (OsNotificationListener.exe) hasn't been built yet.", - details: - "Setup runs `dotnet publish` + signs + registers a sparse WinAppSDK package; ~30–60 seconds first time.", - }; + // Exe presence alone is NOT enough: without the sparse identity package + // registered, the exe launches but its UserNotificationListener + // subscription fails at runtime (COMException 0x80070490). Surface this as + // setup-required so `@config agent setup` re-runs the register step instead + // of short-circuiting on "already ready". + if (!sparsePackageRegistered) { + return { + state: "setup-required", + message: + "OS notification helper is built but its identity package isn't registered.", + details: + "Setup registers a signed sparse WinAppSDK package (one elevation prompt to trust the dev cert) so the helper can subscribe to notification events.", + }; + } + return { state: "ready" }; } // ============================================================================ @@ -428,7 +444,11 @@ export function instantiate(): AppAgent { // calls this right after the agent is enabled, after setup, and // on @config agent refresh. The result is cached. async checkReadiness(): Promise { - return evaluateReadiness(process.platform, isWindowsHelperBuilt()); + return evaluateReadiness( + process.platform, + isWindowsHelperBuilt(), + isSparsePackageRegistered(), + ); }, // Returns the same yes/no card the agent used to offer when diff --git a/ts/packages/agents/osNotifications/src/watchers/windowsWatcher.ts b/ts/packages/agents/osNotifications/src/watchers/windowsWatcher.ts index 5268829a79..9a318befdb 100644 --- a/ts/packages/agents/osNotifications/src/watchers/windowsWatcher.ts +++ b/ts/packages/agents/osNotifications/src/watchers/windowsWatcher.ts @@ -3,6 +3,7 @@ import { spawn, spawnSync, type ChildProcess } from "node:child_process"; import { existsSync, readdirSync } from "node:fs"; +import * as os from "node:os"; import * as path from "node:path"; import { fileURLToPath } from "node:url"; import registerDebug from "debug"; @@ -31,6 +32,10 @@ export class HelperNotBuiltError extends Error { } } +function getErrorMessage(error: unknown): string { + return error instanceof Error ? error.message : String(error); +} + // Spawns the bundled OsNotificationListener.exe helper. The helper subscribes // to Windows.UI.Notifications.Management.UserNotificationListener and writes // JSON-per-line on stdout in the OsNotificationEvent shape from @@ -89,7 +94,7 @@ export function startWindowsWatcher( try { const evt = JSON.parse(line) as OsNotificationEvent; listener(evt); - } catch (e: any) { + } catch { debug("invalid line from helper: %s", line); } } @@ -173,6 +178,27 @@ export function isWindowsHelperBuilt(): boolean { return resolveHelperPath() !== undefined; } +// Public probe used by checkReadiness — verifies the WinAppSDK sparse identity +// package is actually registered for the current user. Exe presence alone is +// NOT sufficient: without this registration the exe launches but its +// UserNotificationListener subscription fails at runtime with +// COMException 0x80070490 ("the identity package isn't registered for this exe +// location"). Returning false here lets `@config agent setup` re-run the +// pack/sign/register pipeline instead of short-circuiting on "already ready". +// +// Best-effort: any PowerShell failure is treated as "not registered" so a +// probe error never masks a genuinely-missing registration. +export function isSparsePackageRegistered(): boolean { + try { + const out = runPowerShellSync( + `if (Get-AppxPackage -Name '${IDENTITY_PACKAGE_NAME}' -ErrorAction SilentlyContinue) { 'YES' } else { 'NO' }`, + ).trim(); + return out.endsWith("YES"); + } catch { + return false; + } +} + // Resolves the directory holding the C# helper project. The project lives at // /dotnet/osNotificationListener/, alongside other repo C# projects. // This module compiles into dist/watchers/, so we walk six levels up to the @@ -222,6 +248,8 @@ const CODE_SIGNING_EKU = "1.3.6.1.5.5.7.3.3"; const IDENTITY_PACKAGE_NAME = "TypeAgent.OsNotificationListener"; const IDENTITY_DIR = "identity"; const MSIX_FILE = "TypeAgent.OsNotificationListener.msix"; +// Public cert exported by tools/scripts/getCert.mjs under ~/.typeagent. +const DEV_CERT_FILE = "TypeAgent-Development-Certificate.cer"; // Full build pipeline for the WinAppSDK sparse-packaged helper: // dotnet clean + publish -> writes exe under publish/ @@ -382,6 +410,105 @@ function findSigningCertThumbprint(): string { return out; } +// True when the dev signing cert is trusted at the LocalMachine scope (Root). +// AppX deployment runs in SYSTEM context and only honors LocalMachine trust, so +// this — not the CurrentUser trust that signtool uses — is what governs whether +// Add-AppxPackage accepts the MSIX signature. LocalMachine\Root is world- +// readable, so the probe itself needs no elevation. +function isCertTrustedLocalMachine(): boolean { + try { + const ps = ` + $store = New-Object System.Security.Cryptography.X509Certificates.X509Store('Root','LocalMachine') + $store.Open('ReadOnly') + $found = $store.Certificates | Where-Object { $_.Subject -eq '${SIGNING_CERT_SUBJECT}' } + $store.Close() + if ($found) { 'YES' } else { 'NO' } + `; + return runPowerShellSync(ps).trim().endsWith("YES"); + } catch { + return false; + } +} + +// Ensures the dev signing cert is trusted at the LocalMachine scope, importing +// it (into Root + TrustedPeople) via a single elevated PowerShell if it isn't. +// This is the step that was previously a manual, easy-to-miss prerequisite — +// folding it into setup means a first-time user gets one UAC prompt instead of +// a cryptic 0x800B0109 failure. Idempotent: no-op when already trusted. +// +// Uses -EncodedCommand for the elevated inner script to sidestep nested-quoting +// issues, and .NET X509Store APIs rather than Import-Certificate/the Cert: +// PSDrive (which can fail to autoload under -NoProfile). +async function ensureCertTrustedLocalMachine(opts: { + onProgress?: (line: string) => void; +}): Promise { + if (isCertTrustedLocalMachine()) return; + + const cerPath = path.join(os.homedir(), ".typeagent", DEV_CERT_FILE); + if (!existsSync(cerPath)) { + throw new Error( + `Dev cert public file not found at ${cerPath}. Run:\n` + + " node tools/scripts/getCert.mjs install --trusted-root\n" + + "then retry setup.", + ); + } + + opts.onProgress?.( + "[setup] Trusting dev cert at LocalMachine scope (accept the elevation prompt)…", + ); + + const esc = (s: string) => s.replace(/'/g, "''"); + const importScript = ` + $cer = '${esc(cerPath)}' + $c = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $cer + foreach ($name in @('Root','TrustedPeople')) { + $store = New-Object System.Security.Cryptography.X509Certificates.X509Store($name,'LocalMachine') + $store.Open('ReadWrite') + $store.Add($c) + $store.Close() + } + `; + const encoded = Buffer.from(importScript, "utf16le").toString("base64"); + // Launch an elevated child (UAC prompt) and wait for it; propagate its exit + // code so a declined prompt / import failure surfaces as a setup error. + const launcher = + "$p = Start-Process powershell.exe -Verb RunAs -PassThru -Wait " + + "-ArgumentList '-NoProfile','-NonInteractive','-ExecutionPolicy'," + + `'Bypass','-EncodedCommand','${encoded}'; exit $p.ExitCode`; + try { + await runProcess( + "powershell.exe", + [ + "-NoProfile", + "-NonInteractive", + "-ExecutionPolicy", + "Bypass", + "-Command", + launcher, + ], + os.homedir(), + opts, + ); + } catch (error: unknown) { + throw new Error( + "Failed to trust the dev cert at LocalMachine scope " + + "(the elevation prompt may have been declined). Either re-run " + + "setup and accept the UAC prompt, or from an elevated " + + "PowerShell run:\n" + + ` $cer = '${cerPath}'\n` + + " Import-Certificate -FilePath $cer -CertStoreLocation Cert:\\LocalMachine\\Root\n" + + " Import-Certificate -FilePath $cer -CertStoreLocation Cert:\\LocalMachine\\TrustedPeople\n" + + `Original error: ${getErrorMessage(error)}`, + ); + } + if (!isCertTrustedLocalMachine()) { + throw new Error( + "Dev cert still not trusted at LocalMachine scope after the import " + + "attempt. Accept the UAC prompt when re-running setup.", + ); + } +} + // Registers the identity package against an external exe location. Idempotent — // if the same package is already registered, Add-AppxPackage replaces it. async function registerSparsePackage( @@ -389,6 +516,11 @@ async function registerSparsePackage( externalLocation: string, opts: { onProgress?: (line: string) => void }, ): Promise { + // AppX signature validation runs as SYSTEM and only honors LocalMachine + // trust — make sure the dev cert is trusted there before we deploy, so a + // first-time user never hits the raw 0x800B0109 CERT_E_UNTRUSTEDROOT. + await ensureCertTrustedLocalMachine(opts); + // Both paths embedded as PowerShell single-quoted literals; escape ' // by doubling per PowerShell's quoting rules. const esc = (s: string) => s.replace(/'/g, "''"); @@ -418,19 +550,20 @@ async function registerSparsePackage( path.dirname(msixPath), opts, ); - } catch (e: any) { - const msg = e?.message ?? String(e); + } catch (error: unknown) { + const msg = getErrorMessage(error); if (msg.includes("0x800B0109")) { throw new Error( - "Add-AppxPackage failed with CERT_E_UNTRUSTEDROOT — the dev cert isn't trusted at the LocalMachine scope. " + - "From an elevated PowerShell, run:\n" + + "Add-AppxPackage failed with CERT_E_UNTRUSTEDROOT even after the " + + "LocalMachine trust step. The dev cert may have been imported " + + "into the wrong store or removed. From an elevated PowerShell, run:\n" + ' $cer = "$env:USERPROFILE\\.typeagent\\TypeAgent-Development-Certificate.cer"\n' + " Import-Certificate -FilePath $cer -CertStoreLocation Cert:\\LocalMachine\\Root\n" + " Import-Certificate -FilePath $cer -CertStoreLocation Cert:\\LocalMachine\\TrustedPeople\n" + "Then retry. (One-time per machine; cert renewals via getCert renew keep the same Subject so this stays valid.)", ); } - throw e; + throw error; } } diff --git a/ts/packages/agents/osNotifications/test/osNotificationsReadiness.spec.ts b/ts/packages/agents/osNotifications/test/osNotificationsReadiness.spec.ts index 29c1ffb966..ba362c9855 100644 --- a/ts/packages/agents/osNotifications/test/osNotificationsReadiness.spec.ts +++ b/ts/packages/agents/osNotifications/test/osNotificationsReadiness.spec.ts @@ -25,26 +25,40 @@ import type { ActionContext } from "@typeagent/agent-sdk"; describe("evaluateReadiness", () => { test("ready on linux regardless of helperBuilt flag", () => { - expect(evaluateReadiness("linux", false)).toEqual({ state: "ready" }); - expect(evaluateReadiness("linux", true)).toEqual({ state: "ready" }); + expect(evaluateReadiness("linux", false, false)).toEqual({ + state: "ready", + }); + expect(evaluateReadiness("linux", true, false)).toEqual({ + state: "ready", + }); }); test("ready on darwin (helper is Windows-only)", () => { - expect(evaluateReadiness("darwin", false)).toEqual({ state: "ready" }); + expect(evaluateReadiness("darwin", false, false)).toEqual({ + state: "ready", + }); }); - test("ready on win32 when the helper exe is present", () => { - expect(evaluateReadiness("win32", true)).toEqual({ state: "ready" }); + test("ready on win32 when the helper exe is present and registered", () => { + expect(evaluateReadiness("win32", true, true)).toEqual({ + state: "ready", + }); }); test("setup-required on win32 when the helper exe is missing", () => { - const r = evaluateReadiness("win32", false); + const r = evaluateReadiness("win32", false, false); expect(r.state).toBe("setup-required"); expect(r.message).toMatch(/OsNotificationListener\.exe/); }); + test("setup-required on win32 when built but identity package not registered", () => { + const r = evaluateReadiness("win32", true, false); + expect(r.state).toBe("setup-required"); + expect(r.message).toMatch(/identity package isn't registered/); + }); + test("setup-required report includes 'details' explaining what setup runs", () => { - const r = evaluateReadiness("win32", false); + const r = evaluateReadiness("win32", false, false); expect(r.state).toBe("setup-required"); expect(r.details).toMatch(/dotnet publish/); expect(r.details).toMatch(/sparse WinAppSDK package/); diff --git a/ts/packages/agents/powershell/samples/listFiles.recipe.json b/ts/packages/agents/powershell/samples/listFiles.recipe.json index c2372f0b70..34edb0e830 100644 --- a/ts/packages/agents/powershell/samples/listFiles.recipe.json +++ b/ts/packages/agents/powershell/samples/listFiles.recipe.json @@ -50,7 +50,7 @@ "examples": ["show me the files in documents", "show files"] }, { - "pattern": "list (my)? $(path:wildcard)", + "pattern": "list my $(path:wildcard)", "isAlias": false, "examples": ["list my downloads", "list my pictures", "list my documents"] }, diff --git a/ts/packages/agents/screencapture/README.AUTOGEN.md b/ts/packages/agents/screencapture/README.AUTOGEN.md index fd16e131c0..c959abfcc6 100644 --- a/ts/packages/agents/screencapture/README.AUTOGEN.md +++ b/ts/packages/agents/screencapture/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # screencapture-agent — AI-generated documentation @@ -12,14 +12,14 @@ ## Overview -The `screencapture-agent` is a TypeAgent application agent designed for screen capture and recording tasks. It supports taking screenshots and recording the screen on Windows and Linux (X11), with the ability to target specific programs or windows by name. This agent integrates with the TypeAgent ecosystem, enabling users to perform screen capture actions through natural language commands. +The `screencapture-agent` is a TypeAgent application agent designed for screen capture and recording tasks. It enables users to take screenshots and record their screens on Windows and Linux (X11) systems. The agent supports capturing the entire screen or targeting specific application windows by name, and it integrates with the TypeAgent ecosystem to allow natural language commands for these operations. ## What it does -The `screencapture-agent` provides the following key functionalities: +The `screencapture-agent` provides a set of actions for screen capture and recording: - **`takeScreenshot`**: Captures a screenshot of the entire screen or a specific window. If a `target` parameter is provided, the agent attempts to match the name to a visible window (e.g., "Chrome" or "Visual Studio"). -- **`startRecording`**: Initiates a screen recording of the entire screen or a specific window. Only one recording can be active at a time. +- **`startRecording`**: Starts a screen recording of the entire screen or a specific window. Only one recording can be active at a time. - **`stopRecording`**: Stops the currently active screen recording. - **`listWindows`**: Lists all currently visible windows, allowing users to identify and target them by name. - **`recording`**: Tracks the activity of an ongoing recording, including details such as the target, output path, and start time. @@ -113,7 +113,7 @@ By following these steps, you can enhance the `screencapture-agent` to support a ### Entry points - `./agent/manifest` → [./src/screencaptureManifest.json](./src/screencaptureManifest.json) -- `./agent/handlers` → `./dist/screencaptureActionHandler.js` _(not found on disk)_ +- `./agent/handlers` → [./dist/screencaptureActionHandler.js](./dist/screencaptureActionHandler.js) ### Dependencies @@ -163,6 +163,6 @@ _5 actions implemented by this agent, parsed deterministically from `./src/scree --- -_Auto-generated against commit `44b34a9ac8794b6f90489ff7e55fe57283c34960` on `2026-07-13T09:04:14.089Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter screencapture-agent docs:verify-links` to spot-check._ +_Auto-generated against commit `f928ce70269b7d0f8942977c29147b2c8832b722` on `2026-07-15T22:42:29.947Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter screencapture-agent docs:verify-links` to spot-check._ diff --git a/ts/packages/agents/screencapture/src/screencaptureActionHandler.ts b/ts/packages/agents/screencapture/src/screencaptureActionHandler.ts index 664bac256a..7cdac68b84 100644 --- a/ts/packages/agents/screencapture/src/screencaptureActionHandler.ts +++ b/ts/packages/agents/screencapture/src/screencaptureActionHandler.ts @@ -17,9 +17,9 @@ import { import { createActionResult, createActionResultFromError, - createActionResultFromHtmlDisplay, createActionResultFromMarkdownDisplay, createActionResultFromTextDisplay, + createStructuredResult, createYesNoChoiceResult, } from "@typeagent/agent-sdk/helpers/action"; import { readFile, unlink, mkdir } from "fs/promises"; @@ -496,15 +496,6 @@ const MIME_BY_EXT: Record = { webp: "image/webp", }; -function escapeHtml(s: string): string { - return s - .replace(/&/g, "&") - .replace(//g, ">") - .replace(/"/g, """) - .replace(/'/g, "'"); -} - async function resolveTarget( target: string | undefined, backend: PlatformBackend, @@ -628,15 +619,17 @@ async function handleTakeScreenshot( // only the textual summary so retrieval/contextual replay doesn't // pull megabytes of base64 forward. const dataUri = `data:${mime};base64,${buffer!.toString("base64")}`; - const html = [ - `
`, - `
${escapeHtml(successMessage)}
`, - ` screenshot of ${escapeHtml(subject)}`, - `
`, - ].join("\n"); - result = createActionResultFromHtmlDisplay(html, successMessage); + result = createStructuredResult( + [ + { kind: "text", text: successMessage }, + { + kind: "image", + src: dataUri, + alt: `screenshot of ${subject}`, + }, + ], + { historyText: successMessage }, + ); } else { // Buffer missing (read failure) or too large — fall back to text // and lean on the saved path. Note buffer-too-large is diff --git a/ts/packages/agents/taskflow/README.AUTOGEN.md b/ts/packages/agents/taskflow/README.AUTOGEN.md index a76ccfc740..072afac0f3 100644 --- a/ts/packages/agents/taskflow/README.AUTOGEN.md +++ b/ts/packages/agents/taskflow/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # taskflow-typeagent — AI-generated documentation @@ -12,30 +12,30 @@ ## Overview -The `taskflow-typeagent` package is a TypeAgent application agent that enables users to define, manage, and execute task flows. Task flows are user-taught macros that automate sequences of TypeAgent actions, allowing for reusable workflows and simplifying complex tasks. This package is a key component of the TypeAgent ecosystem, providing a framework for creating and executing custom workflows. +The `taskflow-typeagent` package is a TypeAgent application agent that allows users to define, manage, and execute task flows. Task flows are user-taught macros that automate sequences of TypeAgent actions, enabling reusable workflows and simplifying complex tasks. This package is an integral part of the TypeAgent ecosystem, providing a framework for creating and executing custom workflows. ## What it does -The `taskflow-typeagent` package provides functionality for creating, listing, and deleting task flows. These task flows are defined by users and can be executed programmatically or through natural language commands. The package supports the following key actions: +The `taskflow-typeagent` package provides tools for defining, managing, and executing task flows. These task flows are user-defined sequences of actions that can be executed programmatically or triggered through natural language commands. The package supports the following key actions: -- `listTaskFlows`: Retrieves a list of all registered task flows, allowing users to view available workflows. -- `deleteTaskFlow`: Removes a specified task flow by name, enabling users to manage and clean up their task flow library. +- `listTaskFlows`: Retrieves a list of all registered task flows, allowing users to view and manage their available workflows. +- `deleteTaskFlow`: Removes a specified task flow by name, enabling users to clean up or update their task flow library. -In addition to these actions, the package includes tools for validating and executing task flows. It leverages natural language processing (NLP) to generate grammar patterns, enabling users to define task flows using intuitive, human-readable commands. A script execution environment is also provided, allowing for programmatic execution of task flows. +The package also includes functionality for validating and executing task flows. It uses natural language processing (NLP) to generate grammar patterns, allowing users to define task flows using intuitive, human-readable commands. Additionally, it provides a script execution environment for programmatic task flow execution. -The package integrates with other components in the TypeAgent ecosystem, such as `@typeagent/agent-flows` and `@typeagent/agent-sdk`, to provide a cohesive automation framework. +The `taskflow-typeagent` package integrates with other components in the TypeAgent ecosystem, such as `@typeagent/agent-flows` and `@typeagent/agent-sdk`, to provide a cohesive and extensible automation framework. ## Setup To use the `taskflow-typeagent` package, you need to configure the following environment variable: -- `TASKFLOW_STORE_PATH`: Specifies the directory where task flow definitions are stored. Ensure this path is accessible and writable by the application. +- `TASKFLOW_STORE_PATH`: This variable specifies the directory where task flow definitions are stored. Ensure that the specified path is accessible and writable by the application. -For additional setup details, such as configuring integrations or external services, refer to the hand-written README. +For further details on setup, including any additional configuration or integration steps, refer to the hand-written README. ## Key Files -The `taskflow-typeagent` package is organized into several key files, each serving a specific purpose: +The `taskflow-typeagent` package is organized into several key files, each with a specific role in enabling task flow functionality: - **Schema and Grammar**: @@ -44,7 +44,7 @@ The `taskflow-typeagent` package is organized into several key files, each servi - **Action Handlers**: - - [actionHandler.mts](./src/actionHandler.mts): Contains the logic for executing task flow actions, managing the task flow store, and handling user-taught macros. + - [actionHandler.mts](./src/actionHandler.mts): Implements the logic for executing task flow actions, managing the task flow store, and handling user-taught macros. - **Script Management**: @@ -92,8 +92,8 @@ By following these steps, you can expand the capabilities of the `taskflow-typea ### Entry points - `./agent/manifest` → [./manifest.json](./manifest.json) -- `./agent/handlers` → `./dist/actionHandler.mjs` _(not found on disk)_ -- `./recipe` → `./dist/types/recipe.js` _(not found on disk)_ +- `./agent/handlers` → [./dist/actionHandler.mjs](./dist/actionHandler.mjs) +- `./recipe` → [./dist/types/recipe.js](./dist/types/recipe.js) ### Dependencies @@ -130,6 +130,6 @@ External: `@anthropic-ai/claude-agent-sdk`, `debug`, `typescript` --- -_Auto-generated against commit `44b34a9ac8794b6f90489ff7e55fe57283c34960` on `2026-07-13T09:04:14.089Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter taskflow-typeagent docs:verify-links` to spot-check._ +_Auto-generated against commit `f928ce70269b7d0f8942977c29147b2c8832b722` on `2026-07-15T22:42:29.947Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter taskflow-typeagent docs:verify-links` to spot-check._ diff --git a/ts/packages/agents/taskflow/src/actionHandler.mts b/ts/packages/agents/taskflow/src/actionHandler.mts index 63957bce49..4337f74167 100644 --- a/ts/packages/agents/taskflow/src/actionHandler.mts +++ b/ts/packages/agents/taskflow/src/actionHandler.mts @@ -15,6 +15,7 @@ import { import { createActionResultFromTextDisplay, createActionResultFromError, + createStructuredResult, } from "@typeagent/agent-sdk/helpers/action"; import { readFileSync, readdirSync } from "fs"; import { join, dirname } from "path"; @@ -132,12 +133,36 @@ async function handleTaskFlowAction( "No task flows registered.", ); } - const lines = entries.map( - (e) => - ` \u2022 ${e.actionName}: ${e.description} [usage: ${e.usageCount}]${e.source === "seed" ? " (sample)" : ""}`, - ); - return createActionResultFromTextDisplay( - `Task flows (${entries.length}):\n${lines.join("\n")}`, + return createStructuredResult( + [ + { + kind: "heading", + level: 3, + text: `Task flows (${entries.length})`, + }, + { + kind: "table", + columns: [ + { id: "actionName", header: "Task Flow" }, + { id: "description", header: "Description" }, + { + id: "usageCount", + header: "Usage", + type: "number", + align: "right", + }, + { id: "source", header: "Source" }, + ], + rows: entries.map((e) => [ + e.actionName, + e.description, + e.usageCount, + e.source === "seed" ? "sample" : "user", + ]), + sortable: true, + }, + ], + { rawData: entries }, ); } diff --git a/ts/packages/agents/taskflow/src/script/taskFlowScriptApi.mts b/ts/packages/agents/taskflow/src/script/taskFlowScriptApi.mts index 374802a369..05bf2df7f6 100644 --- a/ts/packages/agents/taskflow/src/script/taskFlowScriptApi.mts +++ b/ts/packages/agents/taskflow/src/script/taskFlowScriptApi.mts @@ -152,7 +152,19 @@ export class TaskFlowScriptAPIImpl implements TaskFlowScriptAPI { ); const text = extractText(result); - const data = tryParseJson(text) ?? text; + // Use rawData from StructuredContent when available; otherwise fall + // back to parsing the text (the pre-Phase-6 path). + const dc = + "displayContent" in result ? result.displayContent : undefined; + const rawData = + dc !== undefined && + typeof dc === "object" && + !Array.isArray(dc) && + (dc as { type?: string }).type === "structured" + ? (dc as { rawData?: unknown }).rawData + : undefined; + const data = + rawData !== undefined ? rawData : (tryParseJson(text) ?? text); if (result.error) { return { text, data, error: result.error }; diff --git a/ts/packages/agents/weather/README.AUTOGEN.md b/ts/packages/agents/weather/README.AUTOGEN.md index ac3a4adb90..e3b75f8a3a 100644 --- a/ts/packages/agents/weather/README.AUTOGEN.md +++ b/ts/packages/agents/weather/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # weather-agent — AI-generated documentation @@ -12,64 +12,70 @@ ## Overview -The `weather-agent` package is a TypeAgent application agent that provides weather-related information. It supports retrieving current weather conditions, forecasts, and alerts for specified locations. This agent integrates with the broader TypeAgent ecosystem, enabling users to query weather data through structured actions. +The `weather-agent` package is a TypeAgent application agent designed to provide weather-related information. It enables users to query current weather conditions, forecasts, and alerts for specific locations. This agent integrates with the TypeAgent ecosystem and interacts with external weather APIs to deliver accurate and timely weather data. ## What it does -The `weather-agent` implements three primary actions to handle weather-related queries: +The `weather-agent` supports three key actions, each tailored to address specific weather-related queries: -- **`getCurrentConditions`**: Fetches the current weather conditions for a given location. Users can optionally specify the temperature units as `"celsius"` or `"fahrenheit"`. -- **`getForecast`**: Provides a weather forecast for a specified location, supporting up to 7 days. Users can also specify the temperature units and the number of days for the forecast. -- **`getAlerts`**: Retrieves weather alerts for a specific location, such as severe weather warnings or advisories. +- **`getCurrentConditions`**: Retrieves the current weather conditions for a specified location. Users can optionally specify the temperature units as `"celsius"` or `"fahrenheit"`. +- **`getForecast`**: Provides a weather forecast for a given location, supporting up to 7 days. Users can specify the number of days for the forecast and the temperature units. +- **`getAlerts`**: Fetches weather alerts for a specific location, such as severe weather warnings or advisories. -These actions allow the agent to respond to user queries about real-time weather conditions, upcoming forecasts, and potential weather hazards. The agent is designed to work with external weather APIs to fetch accurate and up-to-date data. +These actions allow the agent to respond to user queries about real-time weather updates, future weather predictions, and potential weather hazards. The agent relies on external weather APIs to fetch the required data and processes it to provide structured responses. ## Setup -To use the `weather-agent`, you need access to a weather API service. Follow these steps to set up the package: +To set up the `weather-agent`, follow these steps: -1. **Obtain an API key**: Register with a weather data provider (e.g., OpenWeatherMap, WeatherAPI) to obtain an API key. -2. **Set environment variables**: Configure the API key as an environment variable. The specific variable name and setup instructions are detailed in the hand-written README. -3. **Install dependencies**: Run `pnpm install` in the package directory to install all required dependencies. +1. **Obtain an API key**: Register with a weather data provider (e.g., OpenWeatherMap or WeatherAPI) to get an API key. This key is required to access the weather data. +2. **Set environment variables**: Add the API key to your environment variables. Refer to the hand-written README for the exact variable name and additional setup details. +3. **Install dependencies**: Run the following command in the package directory to install the required dependencies: + ```bash + pnpm install + ``` -Ensure that the API key is valid and that the environment variable is correctly set before running the agent. +Ensure that the API key is valid and the environment variable is correctly configured before running the agent. ## Key Files -The `weather-agent` package is organized into several key files, each serving a specific purpose: +The `weather-agent` package is structured around several key files that define its functionality: -- **[weatherManifest.json](./src/weatherManifest.json)**: Defines the agent's metadata, including its description, schema, and grammar files. -- **[weatherSchema.ts](./src/weatherSchema.ts)**: Specifies the action schema, including the types and parameters for each action (`getCurrentConditions`, `getForecast`, and `getAlerts`). -- **[weatherSchema.agr](./src/weatherSchema.agr)**: Contains the action grammar, defining the patterns and rules for parsing user queries into structured actions. -- **[weatherActionHandler.ts](./src/weatherActionHandler.ts)**: Implements the logic for handling each action. This file includes functions to process user requests and interact with the weather API. +- **[weatherManifest.json](./src/weatherManifest.json)**: Contains metadata about the agent, including its description, schema, and grammar files. +- **[weatherSchema.ts](./src/weatherSchema.ts)**: Defines the action schema, specifying the types and parameters for the supported actions: `getCurrentConditions`, `getForecast`, and `getAlerts`. +- **[weatherSchema.agr](./src/weatherSchema.agr)**: Provides the action grammar, which maps user queries to structured actions using defined patterns and rules. +- **[weatherActionHandler.ts](./src/weatherActionHandler.ts)**: Implements the logic for handling each action. This file processes user requests and interacts with the weather API to fetch the required data. - **[testWeather.ts](./src/testWeather.ts)**: A manual test script for verifying the integration with the weather API. It includes sample queries for geocoding and fetching weather data. -These files collectively define the agent's capabilities and provide a foundation for extending its functionality. +These files collectively define the agent's capabilities and serve as the foundation for its operation and extensibility. ## How to extend -To extend the `weather-agent` package, follow these steps: +To add new features or actions to the `weather-agent`, follow these steps: 1. **Define new actions**: - - Add new action types to [weatherSchema.ts](./src/weatherSchema.ts). Define the action name and its parameters. - - For example, to add an action for retrieving historical weather data, define a new type `GetHistoricalWeatherAction` with appropriate parameters. + - Extend the action schema in [weatherSchema.ts](./src/weatherSchema.ts) by adding a new action type and its parameters. For example, to add an action for retrieving historical weather data, define a new type `GetHistoricalWeatherAction` with fields like `location` and `date`. 2. **Update the grammar**: - - Modify [weatherSchema.agr](./src/weatherSchema.agr) to include new patterns and rules for the new actions. - - For example, add a rule like ` = ? $(location:) $(date:) -> { actionName: "getHistoricalWeather", parameters: { location, date } };`. + - Modify [weatherSchema.agr](./src/weatherSchema.agr) to include new grammar rules for the new action. For instance, you can add a rule like: + ```text + = ? $(location:) $(date:) -> { actionName: "getHistoricalWeather", parameters: { location, date } }; + ``` 3. **Implement the handler**: - - Add the logic for the new actions in [weatherActionHandler.ts](./src/weatherActionHandler.ts). Extend the `executeWeatherAction` function to handle the new action. - - For example, create a function `handleGetHistoricalWeather` that interacts with the weather API to fetch historical data. + - Extend the `executeWeatherAction` function in [weatherActionHandler.ts](./src/weatherActionHandler.ts) to handle the new action. For example, create a function `handleGetHistoricalWeather` that interacts with the weather API to fetch historical data. 4. **Test the new functionality**: - - Update [testWeather.ts](./src/testWeather.ts) to include test cases for the new actions. - - Run the test script to verify that the new actions work as expected. + - Add test cases for the new action in [testWeather.ts](./src/testWeather.ts). Use sample queries to verify the new functionality. + - Run the test script using the following command: + ```bash + node --loader ts-node/esm src/testWeather.ts + ``` -By following these steps, you can expand the `weather-agent` to support additional weather-related features, such as historical data, air quality information, or advanced weather analytics. +By following these steps, you can enhance the `weather-agent` to support additional weather-related features, such as historical weather data, air quality indices, or other specialized weather services. ## Reference @@ -78,7 +84,7 @@ By following these steps, you can expand the `weather-agent` to support addition ### Entry points - `./agent/manifest` → [./src/weatherManifest.json](./src/weatherManifest.json) -- `./agent/handlers` → `./dist/weatherActionHandler.js` _(not found on disk)_ +- `./agent/handlers` → [./dist/weatherActionHandler.js](./dist/weatherActionHandler.js) ### Dependencies @@ -118,6 +124,6 @@ _3 actions implemented by this agent, parsed deterministically from `./src/weath --- -_Auto-generated against commit `44b34a9ac8794b6f90489ff7e55fe57283c34960` on `2026-07-13T09:04:14.089Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter weather-agent docs:verify-links` to spot-check._ +_Auto-generated against commit `f928ce70269b7d0f8942977c29147b2c8832b722` on `2026-07-15T22:42:29.947Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter weather-agent docs:verify-links` to spot-check._ diff --git a/ts/packages/agents/weather/jest.config.cjs b/ts/packages/agents/weather/jest.config.cjs new file mode 100644 index 0000000000..f475768a12 --- /dev/null +++ b/ts/packages/agents/weather/jest.config.cjs @@ -0,0 +1,4 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +module.exports = require("../../../jest.config.js"); diff --git a/ts/packages/agents/weather/package.json b/ts/packages/agents/weather/package.json index f73686f8d2..75aa153080 100644 --- a/ts/packages/agents/weather/package.json +++ b/ts/packages/agents/weather/package.json @@ -24,9 +24,12 @@ "asc": "asc -i ./src/weatherSchema.ts -o ./dist/weatherSchema.pas.json -t WeatherAction", "build": "concurrently npm:tsc npm:asc npm:agc", "clean": "rimraf --glob dist *.tsbuildinfo *.done.build.log", + "jest-esm": "node --no-warnings --experimental-vm-modules ./node_modules/jest/bin/jest.js", "prettier": "prettier --check . --ignore-path ../../../.prettierignore", "prettier:fix": "prettier --write . --ignore-path ../../../.prettierignore", + "test": "npm run test:local", "test:api": "node testWeatherSimple.mjs", + "test:local": "pnpm run jest-esm --testPathPattern=\".*[.]spec[.]js\"", "tsc": "tsc -b" }, "dependencies": { @@ -35,7 +38,9 @@ "devDependencies": { "@typeagent/action-grammar-compiler": "workspace:*", "@typeagent/action-schema-compiler": "workspace:*", + "@types/jest": "^29.5.7", "concurrently": "^9.1.2", + "jest": "^29.7.0", "prettier": "^3.5.3", "rimraf": "^6.0.1", "typescript": "~5.4.5" diff --git a/ts/packages/agents/weather/src/weatherActionHandler.ts b/ts/packages/agents/weather/src/weatherActionHandler.ts index 4d1e58d147..67dfdc73fe 100644 --- a/ts/packages/agents/weather/src/weatherActionHandler.ts +++ b/ts/packages/agents/weather/src/weatherActionHandler.ts @@ -3,6 +3,7 @@ import type { ActionContext, + ActionResultSuccess, AppAgent, SessionContext, TypeAgentAction, @@ -10,6 +11,7 @@ import type { import { createActionResultFromTextDisplay, createActionResultFromError, + createStructuredResult, } from "@typeagent/agent-sdk/helpers/action"; import { WeatherAction } from "./weatherSchema.js"; import { @@ -86,17 +88,9 @@ async function handleGetCurrentConditions( ); } - const tempUnit = units === "celsius" ? "°C" : "°F"; const conditions = getWeatherDescription(weather.weatherCode); const windDir = getWindDirection(weather.windDirection); - const displayText = - `Current conditions in ${coords.name}:\n` + - `Temperature: ${Math.round(weather.temperature)}${tempUnit} (feels like ${Math.round(weather.apparentTemperature)}${tempUnit})\n` + - `Conditions: ${conditions}\n` + - `Humidity: ${weather.humidity}%\n` + - `Wind: ${Math.round(weather.windSpeed)} mph ${windDir}`; - const historyText = `Got current weather for ${coords.name}`; const entities = [ @@ -106,13 +100,72 @@ async function handleGetCurrentConditions( }, ]; - return createActionResultFromTextDisplay( - displayText, + return buildCurrentConditionsResult( + coords.name, + units, + { ...weather, conditions, windDir }, historyText, entities, ); } +// Build a structured current-conditions result (heading + keyValue block + +// rawData). Pure — exported for unit tests. +export function buildCurrentConditionsResult( + locationName: string, + units: "celsius" | "fahrenheit", + weather: { + temperature: number; + apparentTemperature: number; + humidity: number; + windSpeed: number; + conditions: string; + windDir: string; + }, + historyText: string, + entities: { name: string; type: string[] }[], +): ActionResultSuccess { + const tempUnit = units === "celsius" ? "°C" : "°F"; + return createStructuredResult( + [ + { + kind: "heading", + level: 3, + text: `Current conditions in ${locationName}`, + }, + { + kind: "keyValue", + pairs: [ + { + label: "Temperature", + value: `${Math.round(weather.temperature)}${tempUnit} (feels like ${Math.round(weather.apparentTemperature)}${tempUnit})`, + }, + { label: "Conditions", value: weather.conditions }, + { label: "Humidity", value: `${weather.humidity}%` }, + { + label: "Wind", + value: `${Math.round(weather.windSpeed)} mph ${weather.windDir}`, + }, + ], + }, + ], + { + historyText, + entities, + rawData: { + location: locationName, + units, + temperature: weather.temperature, + apparentTemperature: weather.apparentTemperature, + conditions: weather.conditions, + humidity: weather.humidity, + windSpeed: weather.windSpeed, + windDirection: weather.windDir, + }, + }, + ); +} + // Handler for getForecast action async function handleGetForecast( action: Extract, @@ -141,23 +194,6 @@ async function handleGetForecast( ); } - const tempUnit = units === "celsius" ? "°C" : "°F"; - const forecasts = forecastData.map((day, index) => { - const conditions = getWeatherDescription(day.weatherCode); - const precipitation = - day.precipitationProbability > 0 - ? `, ${day.precipitationProbability}% chance of precipitation` - : ""; - return ( - `Day ${index + 1} (${day.date}): ${conditions}, ` + - `High: ${Math.round(day.maxTemp)}${tempUnit}, ` + - `Low: ${Math.round(day.minTemp)}${tempUnit}${precipitation}` - ); - }); - - const displayText = - `${days}-day forecast for ${coords.name}:\n` + forecasts.join("\n"); - const historyText = `Got ${days}-day forecast for ${coords.name}`; const entities = [ @@ -167,13 +203,91 @@ async function handleGetForecast( }, ]; - return createActionResultFromTextDisplay( - displayText, + return buildForecastResult( + coords.name, + units, + days, + forecastData, historyText, entities, ); } +// Build a structured forecast result (heading + sortable table + rawData). +// Pure — exported for unit tests. +export function buildForecastResult( + locationName: string, + units: "celsius" | "fahrenheit", + days: number, + forecastData: { + date: string; + weatherCode: number; + maxTemp: number; + minTemp: number; + precipitationProbability: number; + }[], + historyText: string, + entities: { name: string; type: string[] }[], +): ActionResultSuccess { + const tempUnit = units === "celsius" ? "°C" : "°F"; + const rows = forecastData.map((day) => { + const conditions = getWeatherDescription(day.weatherCode); + const precip = + day.precipitationProbability > 0 + ? `${day.precipitationProbability}%` + : "—"; + // Derive the weekday name from the ISO date. Append T00:00 so the + // date is parsed in local time rather than UTC (which can shift the + // day backward for negative-offset timezones). + const weekday = day.date + ? new Date(`${day.date}T00:00`).toLocaleDateString(undefined, { + weekday: "long", + }) + : ""; + return [ + weekday, + day.date, + conditions, + `${Math.round(day.maxTemp)}${tempUnit}`, + `${Math.round(day.minTemp)}${tempUnit}`, + precip, + ]; + }); + + return createStructuredResult( + [ + { + kind: "heading", + level: 3, + text: `${days}-day forecast for ${locationName}`, + }, + { + kind: "table", + columns: [ + { id: "day", header: "Weekday" }, + { id: "date", header: "Date", type: "date" }, + { id: "conditions", header: "Conditions" }, + { id: "high", header: "High", align: "right" }, + { id: "low", header: "Low", align: "right" }, + { id: "precip", header: "Precip", align: "right" }, + ], + rows, + sortable: true, + }, + ], + { + historyText, + entities, + rawData: { + location: locationName, + units, + days, + forecast: forecastData, + }, + }, + ); +} + // Handler for getAlerts action async function handleGetAlerts( action: Extract, diff --git a/ts/packages/agents/weather/test/tsconfig.json b/ts/packages/agents/weather/test/tsconfig.json new file mode 100644 index 0000000000..895a6f0d21 --- /dev/null +++ b/ts/packages/agents/weather/test/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "composite": true, + "rootDir": ".", + "outDir": "../dist/test", + "types": ["node", "jest"] + }, + "include": ["./**/*"], + "ts-node": { + "esm": true + }, + "references": [{ "path": "../src" }] +} diff --git a/ts/packages/agents/weather/test/weatherStructured.spec.ts b/ts/packages/agents/weather/test/weatherStructured.spec.ts new file mode 100644 index 0000000000..50ddb0dd45 --- /dev/null +++ b/ts/packages/agents/weather/test/weatherStructured.spec.ts @@ -0,0 +1,128 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/** + * Unit tests for the structured-content builders in weatherActionHandler: + * buildCurrentConditionsResult (heading + keyValue) and buildForecastResult + * (heading + sortable table). Both are pure functions of already-fetched + * data, so no network access is needed. + */ + +import { + buildCurrentConditionsResult, + buildForecastResult, +} from "../src/weatherActionHandler.js"; + +const entities = [{ name: "Quincy", type: ["location"] }]; + +function blocks(result: any) { + return (result.displayContent as any).blocks; +} + +describe("buildCurrentConditionsResult", () => { + const result = buildCurrentConditionsResult( + "Quincy", + "fahrenheit", + { + temperature: 71.4, + apparentTemperature: 69.2, + humidity: 40, + windSpeed: 8.6, + conditions: "Clear sky", + windDir: "NW", + }, + "history", + entities, + ); + + test("heading names the location", () => { + expect(blocks(result)[0]).toMatchObject({ + kind: "heading", + text: "Current conditions in Quincy", + }); + }); + + test("keyValue has Temperature/Conditions/Humidity/Wind", () => { + const kv = blocks(result).find((b: any) => b.kind === "keyValue"); + expect(kv.pairs.map((p: any) => p.label)).toEqual([ + "Temperature", + "Conditions", + "Humidity", + "Wind", + ]); + }); + + test("temperature is rounded with unit + feels-like", () => { + const kv = blocks(result).find((b: any) => b.kind === "keyValue"); + expect(kv.pairs[0].value).toBe("71°F (feels like 69°F)"); + }); + + test("rawData carries the numeric values", () => { + const raw = (result.displayContent as any).rawData; + expect(raw).toMatchObject({ + location: "Quincy", + units: "fahrenheit", + temperature: 71.4, + windDirection: "NW", + }); + }); +}); + +describe("buildForecastResult", () => { + const forecast = [ + { + date: "2026-07-13", + weatherCode: 0, + maxTemp: 31.2, + minTemp: 15.1, + precipitationProbability: 0, + }, + { + date: "2026-07-14", + weatherCode: 3, + maxTemp: 35.9, + minTemp: 19.4, + precipitationProbability: 20, + }, + ]; + const result = buildForecastResult( + "Quincy", + "celsius", + 2, + forecast, + "history", + entities, + ); + const table = () => blocks(result).find((b: any) => b.kind === "table"); + + test("heading includes day count and location", () => { + expect(blocks(result)[0].text).toBe("2-day forecast for Quincy"); + }); + + test("first column is the weekday name, not 'Day N'", () => { + const weekday = table().rows[0][0]; + expect(weekday).toMatch( + /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday)$/, + ); + }); + + test("high/low rounded with the celsius unit", () => { + expect(table().rows[0][3]).toBe("31°C"); + expect(table().rows[0][4]).toBe("15°C"); + }); + + test("zero precipitation renders as em dash, otherwise percent", () => { + expect(table().rows[0][5]).toBe("—"); + expect(table().rows[1][5]).toBe("20%"); + }); + + test("table is sortable", () => { + expect(table().sortable).toBe(true); + }); + + test("rawData carries the forecast array", () => { + const raw = (result.displayContent as any).rawData; + expect(raw.forecast).toBe(forecast); + expect(raw.days).toBe(2); + }); +}); diff --git a/ts/packages/agents/weather/tsconfig.json b/ts/packages/agents/weather/tsconfig.json index 05754f14f1..94dfc60bb1 100644 --- a/ts/packages/agents/weather/tsconfig.json +++ b/ts/packages/agents/weather/tsconfig.json @@ -1,12 +1,10 @@ { "extends": "../../../tsconfig.base.json", "compilerOptions": { - "composite": true, - "rootDir": ".", - "outDir": "../dist" + "composite": true }, - "include": ["./**/*"], - "references": [{ "path": "./src" }], + "include": [], + "references": [{ "path": "./src" }, { "path": "./test" }], "ts-node": { "esm": true } diff --git a/ts/packages/chat-ui/README.AUTOGEN.md b/ts/packages/chat-ui/README.AUTOGEN.md index 1d51ca7715..8eebd30460 100644 --- a/ts/packages/chat-ui/README.AUTOGEN.md +++ b/ts/packages/chat-ui/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # chat-ui — AI-generated documentation @@ -12,47 +12,47 @@ ## Overview -The `chat-ui` package provides a shared, framework-free chat user interface for TypeAgent applications. It is designed to be used across multiple platforms, including the VS Code shell extension, the browser extension chat panel, and the Visual Studio extension webview. The package enables interactive chat experiences with features such as user and agent message rendering, streaming updates, chat history replay, command completions, feedback collection, and connection status indicators. Its platform-agnostic design ensures consistent functionality and appearance across different environments. +The `chat-ui` package provides a shared, framework-free chat user interface for TypeAgent applications. It is designed to support consistent chat rendering across multiple platforms, including the VS Code shell extension, the browser extension chat panel, and the Visual Studio extension webview. The package includes components and utilities for rendering user and agent messages, handling streaming updates, replaying chat history, managing connection status, and collecting user feedback. ## What it does -The `chat-ui` package offers the following key features: +The `chat-ui` package offers a range of features to enable interactive and dynamic chat experiences: -- **ChatPanel**: The core component for rendering the chat interface. It supports: +- **ChatPanel**: The primary component for rendering the chat interface. It supports: - - Adding user and agent messages with `addAgentMessage`. - - Updating display metadata using `setDisplayInfo`. + - Adding user and agent messages using `addAgentMessage`. + - Updating display metadata with `setDisplayInfo`. - Replaying historical chat entries via `replayHistory`. - Streaming updates for dynamic content display. -- **FeedbackWidget**: A component for collecting user feedback on chat interactions. It supports thumbs-up/thumbs-down ratings, comments, and contextual information. +- **FeedbackWidget**: A component for collecting user feedback, including thumbs-up/thumbs-down ratings, comments, and contextual information. - **PartialCompletion**: Integrates with the `@typeagent/completion-ui` package to handle command completions, including input updates, acceptance, and dismissal. -- **Connection Status Management**: Provides a shared model and UI for displaying the connection status between the chat client and the server. It includes reconnect options and error handling. +- **Connection Status Management**: Provides a shared model and UI for displaying the connection status between the chat client and the server. This includes reconnect options and error handling. - **PlatformAdapter**: Abstracts platform-specific behaviors, such as handling link clicks and settings, to ensure compatibility across different environments. -- **Shared Styles**: Includes a CSS file (`styles/chat.css`) to ensure a consistent appearance for the chat UI across all host applications. +- **Shared Styles**: A CSS file (`styles/chat.css`) is included to provide a consistent appearance for the chat UI across all host applications. -The package is used by several TypeAgent components, such as the VS Code shell, the browser extension, and the Visual Studio extension webview. +The package is utilized by several TypeAgent components, such as the VS Code shell, the browser extension, and the Visual Studio extension webview. ## Setup -To integrate the `chat-ui` package into your project, follow these steps: +To use the `chat-ui` package in your project, follow these steps: 1. **Install the package**: Add `chat-ui` to your project dependencies using your package manager. 2. **Install required dependencies**: Ensure the following workspace dependencies are installed: - `@typeagent/agent-sdk` - `@typeagent/completion-ui` - `@typeagent/dispatcher-types` -3. **Include styles**: Import the CSS file located at `styles/chat.css` into your project to ensure the chat UI is styled correctly. +3. **Include styles**: Import the CSS file located at `styles/chat.css` into your project to apply the necessary styles for the chat UI. 4. **External libraries**: The package relies on the following external libraries: - `ansi_up` for processing ANSI escape codes. - `dompurify` for sanitizing HTML content. - `markdown-it` for rendering Markdown content. -Refer to the hand-written README for additional details on usage and integration. +For additional details on usage and integration, refer to the hand-written README. ## Key Files @@ -68,9 +68,9 @@ The `chat-ui` package is organized into several key files, each responsible for ## How to extend -To extend the `chat-ui` package, follow these guidelines: +To extend the `chat-ui` package, follow these steps: -1. **Understand the core components**: Start by reviewing the [chatPanel.ts](./src/chatPanel.ts) file, as it contains the implementation of the `ChatPanel` component, which is central to the package's functionality. +1. **Understand the core components**: Begin by reviewing the [chatPanel.ts](./src/chatPanel.ts) file, as it contains the implementation of the `ChatPanel` component, which is central to the package's functionality. 2. **Add new features**: To introduce new features, modify or extend the relevant components. For example: @@ -119,6 +119,6 @@ External: `ansi_up`, `dompurify`, `markdown-it` --- -_Auto-generated against commit `66ead8985b850f2775c9b1a96cb7de1d08e2aee1` on `2026-07-18T01:38:20.033Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter chat-ui docs:verify-links` to spot-check._ +_Auto-generated against commit `296dbc72b659a615918e97949f106f0fee2bb9db` on `2026-07-18T05:37:16.532Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter chat-ui docs:verify-links` to spot-check._ diff --git a/ts/packages/chat-ui/src/chatPanel.ts b/ts/packages/chat-ui/src/chatPanel.ts index e2f28c11a1..57c4f38143 100644 --- a/ts/packages/chat-ui/src/chatPanel.ts +++ b/ts/packages/chat-ui/src/chatPanel.ts @@ -533,6 +533,14 @@ export class ChatPanel { * Toast and inline rows do NOT participate in this map. */ private threadContainers = new Map(); + /** + * Persistent, dismissable notification bubbles keyed by a caller-supplied + * notification id (e.g. the osNotifications agent's "os:" dismiss + * key). Separate from `threadContainers` so notifications never collide + * with request-driven agent bubbles and can be removed independently when + * the underlying OS notification leaves the action center (osDismiss). + */ + private notificationContainers = new Map(); /** * For reasoning "step" bubbles: the div of the most recently committed * step bubble per thread. New step/temporary bubbles anchor on it so @@ -2810,6 +2818,44 @@ export class ChatPanel { this.scrollToBottom(); } + /** + * Render a persistent, dismissable agent notification bubble (e.g. an OS + * notification forwarded by the osNotifications agent). Unlike + * {@link showToast}, the bubble stays in the chat scroll until + * {@link removeNotification} is called with the same `notificationId`. + * Calling again with an existing id updates that bubble in place. + */ + public addNotification( + content: DisplayContent, + source: string, + notificationId: string, + ): void { + let container = this.notificationContainers.get(notificationId); + if (container === undefined) { + container = this.createAgentContainer( + source, + this.iconForSource(source), + ); + this.notificationContainers.set(notificationId, container); + } + container.setMessage(content, source, undefined); + this.scrollToBottom(); + } + + /** + * Remove a notification bubble previously added via + * {@link addNotification}. Used by OS-notification dismiss handling — the + * OS reports a notification has left the action center and we drop the + * corresponding chat bubble. No-op (returns false) if the id is unknown. + */ + public removeNotification(notificationId: string): boolean { + const container = this.notificationContainers.get(notificationId); + if (container === undefined) return false; + container.remove(); + this.notificationContainers.delete(notificationId); + return true; + } + /** * Add a non-conversational system message styled distinctly from agent * messages (no avatar, no source label, no timestamp). Use for `@`-config @@ -3196,6 +3242,7 @@ export class ChatPanel { sentinel.className = "chat-sentinel"; this.messageDiv.appendChild(sentinel); this.threadContainers.clear(); + this.notificationContainers.clear(); this.requestAgentContainers.clear(); this.currentUserThreadId = undefined; this.pendingThreadDisplayInfo.clear(); @@ -5352,11 +5399,13 @@ class AgentMessageContainer { text = content; } else if ( !Array.isArray(content) && + content.type !== "structured" && typeof content.content === "string" ) { text = content.content; } else if ( !Array.isArray(content) && + content.type !== "structured" && Array.isArray(content.content) && content.content.length > 0 && typeof content.content[0] === "string" @@ -5392,7 +5441,11 @@ class AgentMessageContainer { const summaryText = originalLines.slice(0, jsonStart).join("\n"); const detailsText = originalLines.slice(jsonStart).join("\n"); - if (typeof content === "object" && !Array.isArray(content)) { + if ( + typeof content === "object" && + !Array.isArray(content) && + content.type !== "structured" + ) { return { summary: { ...content, content: summaryText }, details: { ...content, content: detailsText, kind: undefined }, diff --git a/ts/packages/chat-ui/src/setContent.ts b/ts/packages/chat-ui/src/setContent.ts index 4104d4cf98..cdf3e2637e 100644 --- a/ts/packages/chat-ui/src/setContent.ts +++ b/ts/packages/chat-ui/src/setContent.ts @@ -8,8 +8,16 @@ import { DisplayType, DisplayMessageKind, MessageContent, + StructuredBlock, + StructuredContent, + TableBlock, + TableCell, + BadgeTone, } from "@typeagent/agent-sdk"; -import { getContentForType } from "@typeagent/agent-sdk/helpers/display"; +import { + getContentForType, + isStructuredContent, +} from "@typeagent/agent-sdk/helpers/display"; import DOMPurify from "dompurify"; import MarkdownIt from "markdown-it"; import { PlatformAdapter, ChatSettingsView } from "./platformAdapter.js"; @@ -20,6 +28,442 @@ const ansiUpMarkdownToHtml = new AnsiUp(); ansiUpMarkdownToHtml.use_classes = true; ansiUpMarkdownToHtml.escape_html = false; +// --------------------------------------------------------------------------- +// Structured-content HTML renderer (Phase 3a) +// Converts a StructuredContent block document to an HTML string. DOMPurify +// sanitizes it at the final sink in setContent(), so string concatenation here +// is safe — we never set innerHTML before sanitization. +// --------------------------------------------------------------------------- + +function esc(text: string): string { + return text + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); +} + +function cellDisplayText(cell: TableCell): string { + if (cell === null || cell === undefined) return ""; + if (typeof cell === "object") return cell.text; + return String(cell); +} + +function badgeClass(tone: BadgeTone | undefined): string { + return `sc-badge sc-badge-${tone ?? "neutral"}`; +} + +function renderTableCell(cell: TableCell, colType: string | undefined): string { + const text = cellDisplayText(cell); + const obj = typeof cell === "object" && cell !== null ? cell : null; + const href = obj?.href ?? undefined; + const badge = obj?.badge ?? undefined; + const tooltip = obj?.tooltip ? ` title="${esc(obj.tooltip)}"` : ""; + const effectiveType = badge ? "badge" : href ? "link" : (colType ?? "text"); + + switch (effectiveType) { + case "link": + if (href) { + return `${esc(text)}`; + } + return esc(text); + case "badge": { + const tone = badge ?? "neutral"; + return `${esc(text)}`; + } + case "code": + return `${esc(text)}`; + case "number": + return `${esc(text)}`; + case "date": + return `${esc(text)}`; + default: + return tooltip ? `${esc(text)}` : esc(text); + } +} + +function renderTableBlock(block: TableBlock): string { + const { columns, rows, caption, sortable, filterable, readonly, pageSize } = + block; + const sortAttr = + !readonly && sortable !== false ? ' data-sc-sortable="true"' : ""; + const filterAttr = + !readonly && filterable ? ' data-sc-filterable="true"' : ""; + const paginate = + typeof pageSize === "number" && pageSize > 0 && rows.length > pageSize; + const pageAttr = paginate ? ` data-sc-page-size="${pageSize}"` : ""; + const parts: string[] = [ + `
`, + ]; + if (caption) { + parts.push(``); + } + parts.push(""); + for (const col of columns) { + const align = col.align ? ` style="text-align:${esc(col.align)}"` : ""; + const colSortable = + !readonly && (col.sortable ?? sortable ?? true) !== false; + const sortBtn = colSortable + ? ` ` + : ""; + parts.push(``); + } + parts.push(""); + for (let ri = 0; ri < rows.length; ri++) { + const row = rows[ri]; + // Rows beyond the first page start hidden; the "Show more" control + // (wired in attachTableInteractivity) reveals them in batches. + const hidden = + paginate && ri >= pageSize! ? ' class="sc-row-hidden"' : ""; + parts.push(``); + for (let ci = 0; ci < columns.length; ci++) { + const col = columns[ci]; + const cell = row[ci] ?? ""; + const align = col.align + ? ` style="text-align:${esc(col.align)}"` + : ""; + parts.push(`${renderTableCell(cell, col.type)}`); + } + parts.push(""); + } + parts.push("
${esc(caption)}
${esc(col.header)}${sortBtn}
"); + if (paginate) { + const remaining = rows.length - pageSize!; + parts.push( + ``, + ); + } + parts.push("
"); + return parts.join(""); +} + +function renderMarkdownToHtml(text: string): string { + const md = new MarkdownIt({ html: true }); + type LinkOpenRenderRule = NonNullable; + const defaultRender: LinkOpenRenderRule = + md.renderer.rules.link_open ?? + ((tokens, idx, options, _env, self) => + self.renderToken(tokens, idx, options)); + md.renderer.rules.link_open = (tokens, idx, options, env, self) => { + tokens[idx].attrSet("target", "_blank"); + return defaultRender(tokens, idx, options, env, self); + }; + const rendered = md.render(text); + return ansiUpMarkdownToHtml.ansi_to_html(rendered); +} + +function renderTextBlock( + block: Extract, +): string { + const raw = + typeof block.text === "string" + ? block.text + : Array.isArray(block.text) && typeof block.text[0] === "string" + ? (block.text as string[]).join("\n") + : (block.text as string[][]) + .map((row) => row.join(" | ")) + .join("\n"); + const fmt = block.format ?? "markdown"; + if (fmt === "text") { + return `

${textToHtml(raw)}

`; + } + return `
${renderMarkdownToHtml(raw)}
`; +} + +function renderListBlock( + block: Extract, +): string { + const tag = block.ordered ? "ol" : "ul"; + const items = block.items + .map((item) => { + const label = item.href + ? `${esc(item.text)}` + : esc(item.text); + const subtitle = item.subtitle + ? ` ${esc(item.subtitle)}` + : ""; + const badges = (item.badges ?? []) + .map((tone) => { + const label = tone.charAt(0).toUpperCase() + tone.slice(1); + return `${esc(label)}`; + }) + .join(" "); + return `
  • ${label}${subtitle}${badges ? " " + badges : ""}
  • `; + }) + .join(""); + return `<${tag} class="sc-list">${items}`; +} + +function renderCardBlock( + block: Extract, +): string { + const parts: string[] = [`
    `]; + if (block.title) { + const title = block.href + ? `${esc(block.title)}` + : esc(block.title); + parts.push(`
    ${title}
    `); + } + if (block.subtitle) { + parts.push( + `
    ${esc(block.subtitle)}
    `, + ); + } + if (block.fields && block.fields.length > 0) { + const rows = block.fields + .map( + (pair) => + `${esc(pair.label)}` + + `${renderTableCell(pair.value, undefined)}`, + ) + .join(""); + parts.push( + `${rows}
    `, + ); + } + parts.push("
    "); + return parts.join(""); +} + +function renderBlock(block: StructuredBlock): string { + switch (block.kind) { + case "heading": { + const level = block.level ?? 1; + return `${esc(block.text)}`; + } + case "text": + return renderTextBlock(block); + case "table": + return renderTableBlock(block); + case "list": + return renderListBlock(block); + case "keyValue": { + const rows = block.pairs + .map( + (pair) => + `${esc(pair.label)}` + + `${renderTableCell(pair.value, undefined)}`, + ) + .join(""); + return `${rows}
    `; + } + case "card": + return renderCardBlock(block); + case "image": { + const widthAttr = block.width ? ` width="${block.width}"` : ""; + const heightAttr = block.height ? ` height="${block.height}"` : ""; + const img = `${esc(block.alt ?? `; + if (block.caption) { + return `
    ${img}
    ${esc(block.caption)}
    `; + } + return `
    ${img}
    `; + } + case "code": + return `
    ${esc(block.code)}
    `; + case "divider": + return `
    `; + default: + return ""; + } +} + +/** + * Render a StructuredContent block document to an HTML string. + * The result is passed through DOMPurify at the sink before being written to + * the DOM, so concatenation here is safe. + */ +function renderStructuredContent(content: StructuredContent): string { + return content.blocks.map(renderBlock).join("\n"); +} + +// --------------------------------------------------------------------------- +// Phase 4a — client-side sort + filter for sc-table elements +// --------------------------------------------------------------------------- + +/** + * Wire up sort buttons and filter inputs for every `.sc-table` found inside + * `root`. Called after innerHTML is written so the elements are live in the + * DOM. + */ +function attachTableInteractivity(root: HTMLElement): void { + root.querySelectorAll("table.sc-table").forEach( + (table) => { + const canSort = table.dataset.scSortable === "true"; + const canFilter = table.dataset.scFilterable === "true"; + const pageSize = parseInt(table.dataset.scPageSize ?? "", 10); + const canPaginate = Number.isFinite(pageSize) && pageSize > 0; + if (!canSort && !canFilter && !canPaginate) return; + + const tbody = table.querySelector("tbody"); + if (!tbody) return; + + // Snapshot original row order so we can restore it on "none" sort. + const originalRows = Array.from( + tbody.querySelectorAll("tr"), + ); + originalRows.forEach( + (row, idx) => (row.dataset.scIdx = String(idx)), + ); + + // Per-table sort state. + let sortColId: string | null = null; + let sortDir: "asc" | "desc" | "none" = "none"; + + // Per-table pagination state. `filtering` is shared so sort/filter + // can suspend or re-apply the row cap. When a filter query is + // active it takes precedence (all matches shown, cap suspended). + let filtering = false; + let visibleCount = canPaginate ? pageSize : Infinity; + const wrapEl = table.closest(".sc-table-wrap"); + const showMoreBtn = + wrapEl?.querySelector(".sc-show-more") ?? + null; + + const applyPagination = () => { + if (!canPaginate) return; + const rows = Array.from( + tbody.querySelectorAll("tr"), + ); + rows.forEach((row, i) => { + row.classList.toggle("sc-row-hidden", i >= visibleCount); + }); + if (showMoreBtn) { + const remaining = Math.max(0, rows.length - visibleCount); + if (remaining > 0) { + showMoreBtn.textContent = `Show more (${remaining})`; + showMoreBtn.style.display = ""; + } else { + showMoreBtn.style.display = "none"; + } + } + }; + + if (showMoreBtn) { + showMoreBtn.addEventListener("click", () => { + visibleCount += pageSize; + applyPagination(); + }); + } + + if (canSort) { + table + .querySelectorAll(".sc-sort-btn") + .forEach((btn) => { + btn.addEventListener("click", () => { + const colId = btn.dataset.scCol ?? ""; + // Cycle: none → asc → desc → none + if (sortColId !== colId) { + sortColId = colId; + sortDir = "asc"; + } else if (sortDir === "asc") { + sortDir = "desc"; + } else { + sortDir = "none"; + sortColId = null; + } + + // Update all sort-button icons in this table. + table + .querySelectorAll( + ".sc-sort-btn", + ) + .forEach((b) => { + if (b !== btn || sortDir === "none") { + b.textContent = "↕"; + b.dataset.scSortDir = "none"; + } else { + b.textContent = + sortDir === "asc" ? "↑" : "↓"; + b.dataset.scSortDir = sortDir; + } + }); + + const th = btn.closest("th"); + if (!th) return; + const colIdx = th.cellIndex; + + const rows = Array.from( + tbody.querySelectorAll( + "tr", + ), + ); + if (sortDir === "none") { + // Restore original order. + originalRows.forEach((row) => + tbody.appendChild(row), + ); + } else { + rows.sort((a, b) => { + const ca = + a.cells[colIdx]?.textContent?.trim() ?? + ""; + const cb = + b.cells[colIdx]?.textContent?.trim() ?? + ""; + const cmp = ca.localeCompare( + cb, + undefined, + { + numeric: true, + sensitivity: "base", + }, + ); + return sortDir === "asc" ? cmp : -cmp; + }); + rows.forEach((row) => tbody.appendChild(row)); + } + // Row order changed — re-apply the page cap so the + // first `visibleCount` rows in the new order show + // (unless a filter query is currently active). + if (!filtering) applyPagination(); + }); + }); + } + + if (canFilter) { + const wrap = table.closest(".sc-table-wrap"); + const input = document.createElement("input"); + input.type = "text"; + input.placeholder = "Filter rows…"; + input.className = "sc-filter-input"; + // Insert the filter input before the table (or its wrapper). + // `container` is null if neither a wrapper nor a parent exists. + const container = wrap ?? table.parentElement; + if (container) { + container.insertBefore(input, table); + } + + input.addEventListener("input", () => { + const query = input.value.trim().toLowerCase(); + filtering = query.length > 0; + tbody + .querySelectorAll("tr") + .forEach((row) => { + const text = row.textContent?.toLowerCase() ?? ""; + row.classList.toggle( + "sc-row-filtered", + !!query && !text.includes(query), + ); + }); + if (filtering) { + // Filter overrides pagination: reveal all matches and + // hide the Show-more control while filtering. + tbody + .querySelectorAll("tr") + .forEach((r) => + r.classList.remove("sc-row-hidden"), + ); + if (showMoreBtn) showMoreBtn.style.display = "none"; + } else { + // Query cleared — restore the page cap. + applyPagination(); + } + }); + } + }, + ); +} + function textToHtml(text: string): string { const value = ansiUpTextToHtml.ansi_to_html(text); const line = value.replace(/\n/gm, "
    "); @@ -225,14 +669,20 @@ export function setContent( message = content; speak = false; } else { - // Prefer HTML alternates when available - const htmlContent = getContentForType(content, "html"); - if (htmlContent !== undefined && content.type !== "html") { + if (isStructuredContent(content)) { + // Phase 3a: render blocks natively as HTML. type = "html"; - message = htmlContent; + message = renderStructuredContent(content); } else { - type = content.type; - message = content.content; + // Prefer HTML alternates when available + const htmlContent = getContentForType(content, "html"); + if (htmlContent !== undefined && content.type !== "html") { + type = "html"; + message = htmlContent; + } else { + type = content.type; + message = content.content; + } } kind = content.kind; speak = content.speak ?? false; @@ -368,6 +818,9 @@ export function setContent( } }); + // Phase 4a — wire sort + filter on any sc-table elements just added. + attachTableInteractivity(contentElm); + // Status badges (agent-status readiness/load indicators and other // tooltip-bearing status glyphs) stash their full message in a // `title` attribute. Make them click-to-copy so the (often long) diff --git a/ts/packages/chat-ui/styles/chat.css b/ts/packages/chat-ui/styles/chat.css index b89195641d..3c9bab17f2 100644 --- a/ts/packages/chat-ui/styles/chat.css +++ b/ts/packages/chat-ui/styles/chat.css @@ -1104,6 +1104,275 @@ table.table-message td { padding: 0px 10px 0px 10px; } +/* ========================================================================= + Structured-content blocks (sc-*) — Phase 3a + Used by chat-ui/setContent.ts renderStructuredContent(). + ========================================================================= */ + +/* --- Headings ------------------------------------------------------------ */ + +.sc-heading { + font-weight: 600; + margin: 0.5em 0 0.25em; +} + +.sc-heading-1 { + font-size: 1.4em; +} +.sc-heading-2 { + font-size: 1.2em; +} +.sc-heading-3 { + font-size: 1.05em; +} + +/* --- Text / prose -------------------------------------------------------- */ + +.sc-text { + margin: 0.25em 0; +} + +/* --- Tables -------------------------------------------------------------- */ + +.sc-table-wrap { + overflow-x: auto; + margin: 0.5em 0; +} + +table.sc-table { + border-collapse: collapse; + width: 100%; + font-size: 0.9em; +} + +table.sc-table th, +table.sc-table td { + border: 1px solid var(--vscode-editorWidget-border, #ccc); + padding: 4px 10px; + text-align: left; + vertical-align: top; +} + +table.sc-table thead th { + background: var( + --chat-conversation-list-hover-background, + rgba(0, 0, 0, 0.06) + ); + color: var(--chat-conversation-foreground, #1f1f1f); + font-weight: 600; + white-space: nowrap; +} + +table.sc-table tbody tr:nth-child(even) { + background: var(--vscode-list-hoverBackground, rgba(0, 0, 0, 0.04)); +} + +.sc-cell-number { + font-variant-numeric: tabular-nums; +} + +.sc-cell-date { + white-space: nowrap; +} + +/* Sort button (Phase 4 wires up the click handler; button is always rendered + so column widths don't shift when interactivity is enabled later). */ +.sc-sort-btn { + background: none; + border: none; + cursor: pointer; + font-size: 0.75em; + opacity: 0.5; + padding: 0 2px; + vertical-align: middle; +} + +.sc-sort-btn:hover { + opacity: 1; +} + +/* Filter input (Phase 4a) */ +.sc-filter-input { + background: var(--vscode-input-background, #fff); + border: 1px solid var(--vscode-input-border, #ccc); + border-radius: 3px; + color: var(--vscode-input-foreground, inherit); + display: block; + font-size: 0.85em; + margin-bottom: 4px; + padding: 3px 7px; + width: 100%; + box-sizing: border-box; +} + +.sc-filter-input::placeholder { + color: var(--vscode-input-placeholderForeground, #999); +} + +/* Pagination (Phase 4b) — rows hidden by the page cap or filter. */ +.sc-row-hidden, +.sc-row-filtered { + display: none; +} + +.sc-show-more { + background: none; + border: none; + color: var(--vscode-textLink-foreground, #1a73e8); + cursor: pointer; + display: block; + font-size: 0.85em; + margin: 4px 0 0; + padding: 2px 0; + text-align: left; +} + +.sc-show-more:hover { + text-decoration: underline; +} + +/* --- Badges -------------------------------------------------------------- */ + +.sc-badge { + border-radius: 3px; + display: inline-block; + font-size: 0.8em; + font-weight: 600; + padding: 1px 6px; + white-space: nowrap; +} + +.sc-badge-neutral { + background: var(--vscode-badge-background, #999); + color: var(--vscode-badge-foreground, #fff); +} + +.sc-badge-info { + background: var(--vscode-statusBarItem-activeBackground, #007acc); + color: #fff; +} + +.sc-badge-success { + background: var(--vscode-testing-iconPassed, #388a34); + color: #fff; +} + +.sc-badge-warning { + background: var(--vscode-editorWarning-foreground, #bf8803); + color: #fff; +} + +.sc-badge-error { + background: var(--vscode-errorForeground, #cc3333); + color: #fff; +} + +/* --- Lists --------------------------------------------------------------- */ + +.sc-list { + border: 1px solid var(--vscode-editorWidget-border, #ccc); + border-radius: 6px; + margin: 0.5em 0; + padding: 8px 14px 8px 30px; + background: var(--vscode-editorWidget-background, rgba(127, 127, 127, 0.06)); +} + +.sc-list li { + margin: 0.2em 0; +} + +.sc-list-subtitle { + color: var(--vscode-descriptionForeground, #717171); + font-size: 0.9em; +} + +/* --- Key-value table ----------------------------------------------------- */ + +table.sc-kv-table { + border-collapse: collapse; + margin: 0.25em 0; +} + +table.sc-kv-table th.sc-kv-label { + color: var(--vscode-descriptionForeground, #717171); + font-weight: 600; + padding-right: 12px; + text-align: right; + white-space: nowrap; + vertical-align: top; +} + +table.sc-kv-table td.sc-kv-value { + text-align: left; + vertical-align: top; +} + +/* --- Cards --------------------------------------------------------------- */ + +.sc-card { + border: 1px solid var(--vscode-editorWidget-border, #ccc); + border-radius: 6px; + margin: 0.5em 0; + padding: 10px 14px; +} + +.sc-card-title { + font-size: 1.05em; + font-weight: 600; + margin-bottom: 2px; +} + +.sc-card-subtitle { + color: var(--vscode-descriptionForeground, #717171); + font-size: 0.9em; + margin-bottom: 6px; +} + +table.sc-kv-table.sc-card-fields { + margin-top: 6px; +} + +/* --- Images -------------------------------------------------------------- */ + +.sc-figure { + display: inline-block; + margin: 0.5em 0; + max-width: 100%; +} + +.sc-image { + display: block; + max-width: 100%; + height: auto; +} + +.sc-caption { + color: var(--vscode-descriptionForeground, #717171); + font-size: 0.85em; + margin-top: 4px; + text-align: center; +} + +/* --- Code blocks --------------------------------------------------------- */ + +.sc-code { + background: var(--vscode-textCodeBlock-background, #f0f0f0); + border-radius: 4px; + font-family: var(--vscode-editor-font-family, monospace); + font-size: 0.88em; + margin: 0.25em 0; + overflow-x: auto; + padding: 8px 12px; +} + +/* --- Divider ------------------------------------------------------------- */ + +.sc-divider { + border: none; + border-top: 1px solid var(--vscode-editorWidget-border, #ccc); + margin: 0.75em 0; +} + /* ========================================================================= Metrics (hover-reveal) ========================================================================= */ diff --git a/ts/packages/chat-ui/test/chatPanel.spec.ts b/ts/packages/chat-ui/test/chatPanel.spec.ts index 66a59ef639..de719a70b6 100644 --- a/ts/packages/chat-ui/test/chatPanel.spec.ts +++ b/ts/packages/chat-ui/test/chatPanel.spec.ts @@ -356,3 +356,52 @@ describe("icons", () => { } }); }); + +describe("notifications (persistent, dismissable)", () => { + function agentBubbles(root: HTMLElement): HTMLElement[] { + return Array.from( + root.querySelectorAll(".chat-message-agent"), + ); + } + + it("addNotification renders a persistent agent bubble", () => { + const { root, panel } = makePanel(); + panel.addNotification("Build finished", "osNotifications", "os:1"); + const bubbles = agentBubbles(root); + expect(bubbles.length).toBe(1); + expect(bubbles[0].textContent).toContain("Build finished"); + }); + + it("reusing an id updates the same bubble in place (no duplicate)", () => { + const { root, panel } = makePanel(); + panel.addNotification("first", "osNotifications", "os:1"); + panel.addNotification("second", "osNotifications", "os:1"); + const bubbles = agentBubbles(root); + expect(bubbles.length).toBe(1); + expect(bubbles[0].textContent).toContain("second"); + expect(bubbles[0].textContent).not.toContain("first"); + }); + + it("removeNotification drops the matching bubble and returns true", () => { + const { root, panel } = makePanel(); + panel.addNotification("Build finished", "osNotifications", "os:1"); + expect(panel.removeNotification("os:1")).toBe(true); + expect(agentBubbles(root).length).toBe(0); + }); + + it("removeNotification is a no-op for unknown ids", () => { + const { panel } = makePanel(); + expect(panel.removeNotification("os:unknown")).toBe(false); + }); + + it("distinct ids produce distinct bubbles removable independently", () => { + const { root, panel } = makePanel(); + panel.addNotification("one", "osNotifications", "os:1"); + panel.addNotification("two", "osNotifications", "os:2"); + expect(agentBubbles(root).length).toBe(2); + panel.removeNotification("os:1"); + const remaining = agentBubbles(root); + expect(remaining.length).toBe(1); + expect(remaining[0].textContent).toContain("two"); + }); +}); diff --git a/ts/packages/cli/README.AUTOGEN.md b/ts/packages/cli/README.AUTOGEN.md index 87c9b9ba30..fabca6ac4c 100644 --- a/ts/packages/cli/README.AUTOGEN.md +++ b/ts/packages/cli/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # agent-cli — AI-generated documentation @@ -12,13 +12,13 @@ ## Overview -The `agent-cli` package is a command-line interface (CLI) for interacting with the TypeAgent system. It provides tools for developers to connect to the TypeAgent Dispatcher, manage conversations, execute commands, and test agent interactions. The CLI supports both interactive and non-interactive workflows, making it a versatile tool for development, debugging, and testing. +The `agent-cli` package provides a command-line interface (CLI) for interacting with the TypeAgent system. It serves as a developer tool for managing conversations, testing agent interactions, and executing commands against the TypeAgent Dispatcher. The CLI supports both interactive and non-interactive workflows, making it a versatile utility for debugging, development, and testing. ## What it does -The `agent-cli` package offers several subcommands, each tailored to specific tasks: +The `agent-cli` package offers several subcommands, each designed for specific tasks: -- **`connect`**: The default subcommand, enabling real-time interaction with the TypeAgent Dispatcher. Users can send requests, receive responses, and manage conversations interactively. This mode is ideal for testing and debugging agent behavior. +- **`connect`**: The default subcommand, enabling interactive communication with the TypeAgent Dispatcher. Users can send requests, receive responses, and manage conversations in real time. This mode is particularly useful for testing and debugging agent behavior. - **`run`**: Executes dispatcher commands non-interactively. This includes sending requests, translating them, or generating explanations without requiring user confirmation. - **`replay`**: Replays chat histories for regression testing or generating test files. This is useful for validating agent behavior over time and ensuring consistency. - **`conversations`**: Provides tools for managing conversations on the agent server. Subcommands include: @@ -57,9 +57,9 @@ For additional details on setup and usage, refer to the hand-written README. ## Key Files -The `agent-cli` package is organized into several key files and directories, each responsible for specific functionalities: +The `agent-cli` package is structured to support its various subcommands and functionalities. Key files and their responsibilities include: -- **`src/commands/`**: Contains the implementation of CLI subcommands. +- **`src/commands/`**: This directory contains the implementation of all CLI subcommands. - **`connect.ts`**: Implements the `connect` subcommand for real-time interaction with the TypeAgent Dispatcher. - **`run/index.ts`**: Handles the `run` subcommand for executing dispatcher commands non-interactively. @@ -144,6 +144,6 @@ External: `@oclif/core`, `@oclif/plugin-help`, `chalk`, `debug`, `dotenv`, `html --- -_Auto-generated against commit `66ead8985b850f2775c9b1a96cb7de1d08e2aee1` on `2026-07-18T01:38:20.033Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter agent-cli docs:verify-links` to spot-check._ +_Auto-generated against commit `296dbc72b659a615918e97949f106f0fee2bb9db` on `2026-07-18T05:37:16.532Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter agent-cli docs:verify-links` to spot-check._ diff --git a/ts/packages/cli/src/enhancedConsole.ts b/ts/packages/cli/src/enhancedConsole.ts index 7ba024d7fa..75fc568a0e 100644 --- a/ts/packages/cli/src/enhancedConsole.ts +++ b/ts/packages/cli/src/enhancedConsole.ts @@ -18,7 +18,11 @@ import { DisplayContent, MessageContent, } from "@typeagent/agent-sdk"; -import { getContentForType } from "@typeagent/agent-sdk/helpers/display"; +import { + getContentForType, + getStructuredFallback, + isStructuredContent, +} from "@typeagent/agent-sdk/helpers/display"; import type { RequestId, ClientIO, @@ -709,14 +713,20 @@ export function createEnhancedClientIO( if (typeof content === "string" || Array.isArray(content)) { message = content; } else { - // CLI prefers text alternates when available - const textContent = getContentForType(content, "text"); - if (textContent !== undefined && content.type !== "text") { - message = textContent; + if (isStructuredContent(content)) { + // CLI gets the text fallback; no interactive table rendering yet. + message = getStructuredFallback(content, "text"); contentType = "text"; } else { - message = content.content; - contentType = content.type || "text"; + // CLI prefers text alternates when available + const textContent = getContentForType(content, "text"); + if (textContent !== undefined && content.type !== "text") { + message = textContent; + contentType = "text"; + } else { + message = content.content; + contentType = content.type || "text"; + } } switch (content.kind) { case "status": diff --git a/ts/packages/commandExecutor/README.AUTOGEN.md b/ts/packages/commandExecutor/README.AUTOGEN.md index 4a7c2981da..ff50388ffc 100644 --- a/ts/packages/commandExecutor/README.AUTOGEN.md +++ b/ts/packages/commandExecutor/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # command-executor-mcp — AI-generated documentation @@ -12,7 +12,7 @@ ## Overview -The `command-executor-mcp` package is an MCP (Model Context Protocol) server designed to execute user commands such as playing music, managing lists, and working with calendars. It acts as an intermediary between MCP clients (e.g., Claude Code) and the TypeAgent system, translating natural language commands into structured actions that the TypeAgent dispatcher can process. +The `command-executor-mcp` package is an MCP (Model Context Protocol) server that facilitates the execution of user commands such as playing music, managing lists, and working with calendars. It acts as a bridge between MCP clients (e.g., Claude Code) and the TypeAgent system, translating natural language commands into structured actions that the TypeAgent dispatcher can process. ## What it does @@ -142,6 +142,6 @@ _3 environment variables referenced from `./src/` (set in `ts/.env` or your shel --- -_Auto-generated against commit `5cbcf613f047f08749d0451296eb1cdc610ae414` on `2026-07-17T18:24:18.404Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter command-executor-mcp docs:verify-links` to spot-check._ +_Auto-generated against commit `2c26e6d289e04ac54b08f8483b292693a8d4bb64` on `2026-07-18T00:58:44.432Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter command-executor-mcp docs:verify-links` to spot-check._ diff --git a/ts/packages/commandExecutor/src/commandServer.ts b/ts/packages/commandExecutor/src/commandServer.ts index 6600c2eb9e..47c9bbdff3 100644 --- a/ts/packages/commandExecutor/src/commandServer.ts +++ b/ts/packages/commandExecutor/src/commandServer.ts @@ -19,6 +19,10 @@ import type { import type { Dispatcher } from "@typeagent/dispatcher-types"; import { awaitCommand } from "@typeagent/dispatcher-types"; import { DisplayAppendMode } from "@typeagent/agent-sdk"; +import { + getStructuredFallback, + isStructuredContent, +} from "@typeagent/agent-sdk/helpers/display"; import * as fs from "fs"; import * as path from "path"; import * as os from "os"; @@ -99,8 +103,15 @@ type ExecuteActionRequest = { // ── Utilities ───────────────────────────────────────────────────────────────── -function toolResult(result: string): CallToolResult { - return { content: [{ type: "text", text: result }] }; +function toolResult(result: string, rawData?: unknown): CallToolResult { + const out: CallToolResult = { content: [{ type: "text", text: result }] }; + if (rawData !== undefined) { + // MCP structuredContent must be Record; wrap arrays. + out.structuredContent = Array.isArray(rawData) + ? ({ data: rawData } as Record) + : (rawData as Record); + } + return out; } function stripAnsi(text: string): string { @@ -170,7 +181,7 @@ class Logger { function createMcpClientIO( logger: Logger, - responseCollector: { messages: string[] }, + responseCollector: { messages: string[]; rawData?: unknown }, getConfirmedFlag: () => boolean, ): ClientIO { return { @@ -193,6 +204,13 @@ function createMcpClientIO( } if (typeof msg === "string") { responseCollector.messages.push(stripAnsi(msg)); + } else if (isStructuredContent(msg)) { + responseCollector.messages.push( + stripAnsi(String(getStructuredFallback(msg, "text"))), + ); + if (msg.rawData !== undefined) { + responseCollector.rawData = msg.rawData; + } } else if (typeof msg === "object" && msg && "content" in msg) { responseCollector.messages.push( stripAnsi(String(msg.content)), @@ -220,6 +238,13 @@ function createMcpClientIO( } if (typeof msg === "string") { responseCollector.messages.push(stripAnsi(msg)); + } else if (isStructuredContent(msg)) { + responseCollector.messages.push( + stripAnsi(String(getStructuredFallback(msg, "text"))), + ); + if (msg.rawData !== undefined) { + responseCollector.rawData = msg.rawData; + } } else if (typeof msg === "object" && msg && "content" in msg) { responseCollector.messages.push( stripAnsi(String(msg.content)), @@ -317,7 +342,9 @@ export class CommandServer { private isConnecting: boolean = false; private reconnectDelayMs: number = 5000; private logger: Logger; - private responseCollector: { messages: string[] } = { messages: [] }; + private responseCollector: { messages: string[]; rawData?: unknown } = { + messages: [], + }; private currentRequestConfirmed: boolean = false; private config: ResolvedAgentServerConfig; @@ -635,6 +662,7 @@ export class CommandServer { if (request.cacheCheck) { try { this.responseCollector.messages = []; + this.responseCollector.rawData = undefined; const cacheResult = await this.dispatcher.checkCache( request.request, ); @@ -646,6 +674,7 @@ export class CommandServer { this.responseCollector.messages.join("\n\n"); return toolResult( `CACHE_HIT: ${await processHtmlContent(response)}`, + this.responseCollector.rawData, ); } return toolResult( @@ -665,6 +694,7 @@ export class CommandServer { try { this.responseCollector.messages = []; + this.responseCollector.rawData = undefined; const result = await awaitCommand(this.dispatcher, request.request); if (result?.lastError) { @@ -675,7 +705,10 @@ export class CommandServer { if (this.responseCollector.messages.length > 0) { const response = this.responseCollector.messages.join("\n\n"); - return toolResult(await processHtmlContent(response)); + return toolResult( + await processHtmlContent(response), + this.responseCollector.rawData, + ); } return toolResult(`Successfully executed: ${request.request}`); } catch (error) { @@ -921,6 +954,7 @@ export class CommandServer { this.logger.log(`Dispatching: ${actionCommand}`); this.responseCollector.messages = []; + this.responseCollector.rawData = undefined; try { const result = await awaitCommand(this.dispatcher, actionCommand); @@ -929,7 +963,10 @@ export class CommandServer { } if (this.responseCollector.messages.length > 0) { const response = this.responseCollector.messages.join("\n\n"); - return toolResult(await processHtmlContent(response)); + return toolResult( + await processHtmlContent(response), + this.responseCollector.rawData, + ); } return toolResult( `✓ Action ${request.actionName} executed successfully`, diff --git a/ts/packages/copilot-plugin/README.AUTOGEN.md b/ts/packages/copilot-plugin/README.AUTOGEN.md index 4467761b40..25aaac20f7 100644 --- a/ts/packages/copilot-plugin/README.AUTOGEN.md +++ b/ts/packages/copilot-plugin/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # @typeagent/copilot-plugin — AI-generated documentation @@ -12,19 +12,19 @@ ## Overview -The `@typeagent/copilot-plugin` package is a TypeAgent integration plugin for the GitHub Copilot CLI. It enables the routing of action requests (e.g., calendar, email, music, browser automation) to TypeAgent for handling before they are passed to the Copilot LLM. +The `@typeagent/copilot-plugin` package integrates TypeAgent with the GitHub Copilot CLI, enabling action requests such as scheduling, email, music playback, and browser automation to be routed to TypeAgent for handling before reaching the Copilot LLM. This plugin enhances the capabilities of the Copilot CLI by leveraging TypeAgent's action-handling features. ## What it does -This plugin acts as a bridge between the GitHub Copilot CLI and TypeAgent. It intercepts user inputs and determines whether they are action requests or general questions. Based on the input type, the plugin routes the request as follows: +The plugin intercepts user inputs in the Copilot CLI and determines whether they are action requests or general questions. Based on the input type, it routes the request as follows: -- **Action Requests**: These are routed to TypeAgent, which can handle them directly or via the MCP server. If TypeAgent recognizes the action, it processes the request and returns a response, bypassing the Copilot LLM. -- **General Questions**: These are passed through to the Copilot LLM for processing. +- **Action Requests**: Routed to TypeAgent for direct handling. If TypeAgent recognizes the action, it processes the request and returns a response, bypassing the Copilot LLM entirely. +- **General Questions**: Passed through to the Copilot LLM for processing. The plugin supports two integration modes: -1. **Direct Mode**: The plugin connects directly to TypeAgent over WebSocket. Recognized actions are handled by TypeAgent, and the response is returned directly to the user. This mode is faster and does not consume LLM tokens but does not support streaming output. -2. **MCP Mode**: The plugin modifies the prompt to instruct the LLM to call the `typeagent-processCommand` MCP tool. This mode allows for streaming output and LLM-formatted responses but is slower and consumes LLM tokens. +1. **Direct Mode**: Connects directly to TypeAgent over WebSocket. Recognized actions are handled by TypeAgent, and the response is returned directly to the user. This mode is faster and avoids consuming LLM tokens but does not support streaming output. +2. **MCP Mode**: Modifies the prompt to instruct the LLM to call the `typeagent-processCommand` MCP tool. This mode allows for streaming output and LLM-formatted responses but is slower and consumes LLM tokens. The plugin also provides hooks for various stages of user input processing, such as logging, debugging, and tracking interactions in TypeAgent history. @@ -131,7 +131,7 @@ To extend the functionality of the `@typeagent/copilot-plugin`, follow these ste ``` - Launch the Copilot CLI with the plugin to test your changes in a real-world scenario: ```powershell - copilot --plugin-dir D:\repos\TypeAgent\ts\packages\copilot-plugin + copilot --plugin-dir D:\repos\TypeAgent\ts\packages/copilot-plugin ``` 5. **Update Documentation**: @@ -175,6 +175,6 @@ _7 environment variables referenced from `./src/` (set in `ts/.env` or your shel --- -_Auto-generated against commit `366aaf867a7e8e5d130b6c87a365516bab725269` on `2026-07-07T09:05:05.703Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter @typeagent/copilot-plugin docs:verify-links` to spot-check._ +_Auto-generated against commit `f928ce70269b7d0f8942977c29147b2c8832b722` on `2026-07-15T22:42:29.947Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter @typeagent/copilot-plugin docs:verify-links` to spot-check._ diff --git a/ts/packages/copilot-plugin/src/shared/message-formatter.ts b/ts/packages/copilot-plugin/src/shared/message-formatter.ts index 632208ea7a..553596a920 100644 --- a/ts/packages/copilot-plugin/src/shared/message-formatter.ts +++ b/ts/packages/copilot-plugin/src/shared/message-formatter.ts @@ -7,7 +7,15 @@ */ import type { IAgentMessage } from "@typeagent/agent-server-client"; -import type { DisplayAppendMode } from "@typeagent/agent-sdk"; +import type { + DisplayAppendMode, + DisplayContent, + StructuredContent, +} from "@typeagent/agent-sdk"; +import { + getStructuredFallback, + isStructuredContent, +} from "@typeagent/agent-sdk/helpers/display"; import { convert } from "html-to-text"; /** @@ -27,6 +35,9 @@ function extractText(msg: unknown): string | undefined { if (typeof msg === "string") { text = msg; + } else if (isStructuredContent(msg as DisplayContent)) { + // StructuredContent — use the pre-derived text alternate. + text = String(getStructuredFallback(msg as StructuredContent, "text")); } else if (typeof msg === "object" && msg && "content" in msg) { text = String((msg as { content: unknown }).content); if ("type" in msg && (msg as { type: unknown }).type === "html") { diff --git a/ts/packages/dispatcher/dispatcher/README.AUTOGEN.md b/ts/packages/dispatcher/dispatcher/README.AUTOGEN.md index 298d594621..912da8dd3d 100644 --- a/ts/packages/dispatcher/dispatcher/README.AUTOGEN.md +++ b/ts/packages/dispatcher/dispatcher/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # agent-dispatcher — AI-generated documentation @@ -12,7 +12,7 @@ ## Overview -The TypeAgent Dispatcher is a TypeScript library that serves as the central component for processing user requests in the TypeAgent ecosystem. It translates natural language inputs into structured actions using large language models (LLMs) and coordinates interactions between various application agents. The Dispatcher is designed to work with multiple front ends, such as the TypeAgent Shell and CLI, and supports an extensible architecture for building personal agents with natural language interfaces. +The TypeAgent Dispatcher is a TypeScript library that serves as the core component of the TypeAgent ecosystem. It processes user requests, translates natural language inputs into structured actions using large language models (LLMs), and coordinates interactions between various application agents. The Dispatcher is designed to integrate with multiple front ends, such as the TypeAgent Shell and CLI, and supports an extensible architecture for building personal agents with natural language interfaces. ## What it does @@ -218,7 +218,7 @@ External: `@anthropic-ai/claude-agent-sdk`, `@azure/core-client`, `@azure/core-r - [./src/context/dispatcher/schema/clarifyActionSchema.ts](./src/context/dispatcher/schema/clarifyActionSchema.ts) - [./src/context/dispatcher/schema/dispatcherActionSchema.ts](./src/context/dispatcher/schema/dispatcherActionSchema.ts) - [./src/context/dispatcher/schema/lookupActionSchema.ts](./src/context/dispatcher/schema/lookupActionSchema.ts) -- _…and 211 more under `./src/`._ +- _…and 212 more under `./src/`._ ### Environment variables @@ -236,6 +236,6 @@ _9 environment variables referenced from `./src/` (set in `ts/.env` or your shel --- -_Auto-generated against commit `66ead8985b850f2775c9b1a96cb7de1d08e2aee1` on `2026-07-18T01:38:20.033Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter agent-dispatcher docs:verify-links` to spot-check._ +_Auto-generated against commit `c97eb42726a9196c7ac72138faa0777c5cbc1aab` on `2026-07-18T09:48:36.613Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter agent-dispatcher docs:verify-links` to spot-check._ diff --git a/ts/packages/dispatcher/dispatcher/src/context/interactiveIO.ts b/ts/packages/dispatcher/dispatcher/src/context/interactiveIO.ts index 5b29cacbd4..2e88b8cf88 100644 --- a/ts/packages/dispatcher/dispatcher/src/context/interactiveIO.ts +++ b/ts/packages/dispatcher/dispatcher/src/context/interactiveIO.ts @@ -43,6 +43,7 @@ export function makeClientIOMessage( if ( typeof message === "object" && !Array.isArray(message) && + message.type !== "structured" && message.kind === "error" ) { const commandResult = getCommandResult(context); diff --git a/ts/packages/dispatcher/dispatcher/src/helpers/console.ts b/ts/packages/dispatcher/dispatcher/src/helpers/console.ts index 3e72a484cf..415274b318 100644 --- a/ts/packages/dispatcher/dispatcher/src/helpers/console.ts +++ b/ts/packages/dispatcher/dispatcher/src/helpers/console.ts @@ -7,7 +7,11 @@ import { DisplayContent, MessageContent, } from "@typeagent/agent-sdk"; -import { getContentForType } from "@typeagent/agent-sdk/helpers/display"; +import { + getContentForType, + getStructuredFallback, + isStructuredContent, +} from "@typeagent/agent-sdk/helpers/display"; import type { RequestId, ClientIO, @@ -82,6 +86,9 @@ function createConsoleClientIO( let message: MessageContent; if (typeof content === "string" || Array.isArray(content)) { message = content; + } else if (isStructuredContent(content)) { + // Console gets the text fallback; no interactive rendering. + message = getStructuredFallback(content, "text"); } else { // Console prefers text alternates when available const textContent = getContentForType(content, "text"); diff --git a/ts/packages/shell/README.AUTOGEN.md b/ts/packages/shell/README.AUTOGEN.md index 658ba79210..7793785222 100644 --- a/ts/packages/shell/README.AUTOGEN.md +++ b/ts/packages/shell/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # agent-shell — AI-generated documentation @@ -12,11 +12,11 @@ ## Overview -The `agent-shell` package is a TypeScript library that serves as the graphical user interface (GUI) entry point for the TypeAgent ecosystem. It provides a personal agent interface for processing user requests, performing actions, answering questions, and managing conversations. Built on Electron, it integrates with other TypeAgent components, such as the dispatcher and agent server, to deliver an interactive and extensible experience. The shell supports both text and voice input, multi-conversation management, and local or remote operation modes. +The `agent-shell` package is a TypeScript library that serves as the graphical user interface (GUI) entry point for the TypeAgent ecosystem. It provides a personal agent interface for processing user requests, performing actions, answering questions, and managing conversations. Built on Electron, the shell integrates with other TypeAgent components, such as the dispatcher and agent server, to deliver an interactive and extensible experience. It supports both text and voice input, multi-conversation management, and local or remote operation modes. ## What it does -The `agent-shell` package provides a range of features to enable interactive and conversational agent experiences: +The `agent-shell` package offers a variety of features to enable interactive and conversational agent experiences: ### Conversation Management @@ -57,6 +57,7 @@ To set up and run the `agent-shell` package, follow these steps: - `SPEECH_SDK_ENDPOINT`: The service URL or speech API resource ID for Azure Speech Services. - `SPEECH_SDK_KEY`: The API key for Azure Speech Services. - `SPEECH_SDK_REGION`: The region of the Azure Speech Services (e.g., `westus2`). + - `TYPEAGENT_MODEL_PROVIDER`: Specifies the model provider for TypeAgent. - `WEBSOCKET_HOST`: The host for WebSocket connections. 3. **Run the Shell**: @@ -162,16 +163,17 @@ External: `@azure/identity`, `@azure/msal-node-extensions`, `@electron-toolkit/p ### Environment variables -_5 environment variables referenced from `./src/` (set in `ts/.env` or your shell). See the `## Setup` section above for guidance on obtaining each value._ +_6 environment variables referenced from `./src/` (set in `ts/.env` or your shell). See the `## Setup` section above for guidance on obtaining each value._ - `ELECTRON_RENDERER_URL` - `SPEECH_SDK_ENDPOINT` - `SPEECH_SDK_KEY` - `SPEECH_SDK_REGION` +- `TYPEAGENT_MODEL_PROVIDER` - `WEBSOCKET_HOST` --- -_Auto-generated against commit `bdf0bb82a95a3a61dfc2a32ea439f70c96228154` on `2026-07-18T01:48:24.228Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter agent-shell docs:verify-links` to spot-check._ +_Auto-generated against commit `c97eb42726a9196c7ac72138faa0777c5cbc1aab` on `2026-07-18T09:48:36.613Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter agent-shell docs:verify-links` to spot-check._ diff --git a/ts/packages/shell/src/renderer/src/chatPanelBridge.ts b/ts/packages/shell/src/renderer/src/chatPanelBridge.ts index bfef200705..c0f42a40e2 100644 --- a/ts/packages/shell/src/renderer/src/chatPanelBridge.ts +++ b/ts/packages/shell/src/renderer/src/chatPanelBridge.ts @@ -932,30 +932,52 @@ export function createChatPanelClient( }); break; case AppAgentEvent.Inline: - chatPanel.showInline(data, source); - if (source !== "osNotifications") { - notifications.push({ - event, - source, + if (source === "osNotifications") { + // OS notifications render as persistent, dismissable + // bubbles (removed on osDismiss), NOT ephemeral + // toast/inline rows. The notificationId ("os:") + // arrives as the notify requestId. + chatPanel.addNotification( data, - read: false, - requestId, - }); + source, + ridStr(requestId)!, + ); + break; } + chatPanel.showInline(data, source); + notifications.push({ + event, + source, + data, + read: false, + requestId, + }); break; case AppAgentEvent.Toast: - chatPanel.showToast(data, source); - if (source !== "osNotifications") { - notifications.push({ - event, - source, + if (source === "osNotifications") { + chatPanel.addNotification( data, - read: false, - requestId, - }); + source, + ridStr(requestId)!, + ); + break; } + chatPanel.showToast(data, source); + notifications.push({ + event, + source, + data, + read: false, + requestId, + }); break; case "osDismiss": + // The OS notification left the action center — drop the + // corresponding persistent bubble. data.id matches the + // notificationId ("os:") used on the "added" event. + if (data && typeof data.id === "string") { + chatPanel.removeNotification(data.id); + } break; default: break; diff --git a/ts/packages/shell/test/listAgent.spec.ts b/ts/packages/shell/test/listAgent.spec.ts index b8c3ab23fb..0badc97af2 100644 --- a/ts/packages/shell/test/listAgent.spec.ts +++ b/ts/packages/shell/test/listAgent.spec.ts @@ -24,13 +24,13 @@ test.describe("List Agent Tests", () => { ], [ "Created list: shopping", - "List 'shopping' is empty.", + "List 'shopping'\n\nThis list is empty.", "Added items: bread,milk,flour to list shopping", - "List 'shopping' has items:\n\nbread\nmilk\nflour", + "List 'shopping' — 3 items\nbread\nmilk\nflour", "Removed items: milk from list shopping", - "List 'shopping' has items:\n\nbread\nflour", + "List 'shopping' — 2 items\nbread\nflour", "Cleared list: shopping", - "List 'shopping' is empty.", + "List 'shopping'\n\nThis list is empty.", ], ); }); diff --git a/ts/packages/vscode-chat/README.AUTOGEN.md b/ts/packages/vscode-chat/README.AUTOGEN.md index 8491e72b60..8c221acd7d 100644 --- a/ts/packages/vscode-chat/README.AUTOGEN.md +++ b/ts/packages/vscode-chat/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # vscode-chat — AI-generated documentation @@ -12,7 +12,7 @@ ## Overview -The `vscode-chat` package integrates TypeAgent as a third-party agent within Visual Studio Code's native Chat view. This extension uses the proposed `chatSessionsProvider` API to enable users to interact with TypeAgent sessions directly in VS Code. Conversations initiated through this extension, the Electron shell, the CLI, or `vscode-shell` are synchronized and appear as session items in the Chat sidebar. Prompts sent in these sessions are routed through a running TypeAgent agent server. +The `vscode-chat` package integrates TypeAgent as a third-party agent within Visual Studio Code's native Chat view. It leverages the proposed `chatSessionsProvider` API to allow users to interact with TypeAgent sessions directly in VS Code. Conversations initiated through this extension, the Electron shell, the CLI, or `vscode-shell` are synchronized and appear as session items in the Chat sidebar. Prompts sent in these sessions are routed through a running TypeAgent agent server. ## What it does @@ -123,6 +123,6 @@ External: `ansi_up`, `debug` --- -_Auto-generated against commit `defc71271dc68db47e0d376be7aa9f755da0ac91` on `2026-07-14T08:47:00.044Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter vscode-chat docs:verify-links` to spot-check._ +_Auto-generated against commit `f928ce70269b7d0f8942977c29147b2c8832b722` on `2026-07-15T22:42:29.947Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter vscode-chat docs:verify-links` to spot-check._ diff --git a/ts/packages/vscode-chat/src/displayRender.ts b/ts/packages/vscode-chat/src/displayRender.ts index db9ba4c373..2ff84cf288 100644 --- a/ts/packages/vscode-chat/src/displayRender.ts +++ b/ts/packages/vscode-chat/src/displayRender.ts @@ -6,9 +6,15 @@ import type { DisplayContent, DisplayType, MessageContent, + StructuredBlock, + StructuredContent, + TableCell, TypedDisplayContent, } from "@typeagent/agent-sdk"; -import { getContentForType } from "@typeagent/agent-sdk/helpers/display"; +import { + getContentForType, + isStructuredContent, +} from "@typeagent/agent-sdk/helpers/display"; import { AnsiUp } from "ansi_up"; const ansiUpTextToHtml = new AnsiUp(); @@ -19,15 +25,144 @@ export function renderDisplayToMarkdown(content: DisplayContent): string { if (typeof content === "string") return renderMessageContent(content, "text"); if (Array.isArray(content)) return renderMessageContent(content, "text"); + if (isStructuredContent(content)) { + return applyKind(renderStructuredToMarkdown(content), content.kind); + } return renderTypedContent(content); } export function renderDisplayToText(content: DisplayContent): string { if (typeof content === "string") return stripAnsi(content); if (Array.isArray(content)) return renderMessageContentAsText(content); + if (isStructuredContent(content)) { + return renderMessageContentAsText(renderStructuredToMarkdown(content)); + } return renderTypedContentAsText(content); } +// --------------------------------------------------------------------------- +// Structured-content markdown renderer (Phase 3b) +// Renders each block natively using this renderer's own helpers (tableToMarkdown +// with proper pipe-escaping, processAnsiContent, etc.) rather than relying on +// the pre-derived alternate stored in `alternates`. +// --------------------------------------------------------------------------- + +function scCellText(cell: TableCell): string { + if (cell === null || cell === undefined) return ""; + if (typeof cell === "object") return cell.text; + return String(cell); +} + +function scCellMarkdown(cell: TableCell): string { + const text = scCellText(cell); + if (typeof cell === "object" && cell !== null && cell.href) { + return `[${text}](${cell.href})`; + } + return text; +} + +function renderStructuredBlockToMarkdown(block: StructuredBlock): string { + switch (block.kind) { + case "heading": { + const prefix = "#".repeat(block.level ?? 1); + return `${prefix} ${block.text}`; + } + case "text": { + const raw = + typeof block.text === "string" + ? block.text + : Array.isArray(block.text) && + typeof block.text[0] === "string" + ? (block.text as string[]).join("\n") + : (block.text as string[][]) + .map((row) => row.join(" | ")) + .join("\n"); + return processAnsiContent(raw, "markdown"); + } + case "table": { + const { columns, rows, caption } = block; + const headers = columns.map((c) => escapeTableCell(c.header)); + const dataRows = rows.map((row) => + columns.map((_, ci) => + escapeTableCell(scCellMarkdown(row[ci] ?? "")), + ), + ); + const lines = [ + `| ${headers.join(" | ")} |`, + `| ${headers.map(() => "---").join(" | ")} |`, + ...dataRows.map((row) => `| ${row.join(" | ")} |`), + ]; + if (caption) { + lines.unshift(`**${caption}**`); + } + return lines.join("\n"); + } + case "list": { + return block.items + .map((item, index) => { + const marker = block.ordered ? `${index + 1}.` : "-"; + const label = item.href + ? `[${item.text}](${item.href})` + : item.text; + const subtitle = item.subtitle ? ` — ${item.subtitle}` : ""; + return `${marker} ${label}${subtitle}`; + }) + .join("\n"); + } + case "keyValue": + return block.pairs + .map( + (pair) => + `- **${pair.label}:** ${scCellMarkdown(pair.value)}`, + ) + .join("\n"); + case "card": { + const lines: string[] = []; + if (block.title) { + lines.push( + block.href + ? `### [${block.title}](${block.href})` + : `### ${block.title}`, + ); + } + if (block.subtitle) { + lines.push(`*${block.subtitle}*`); + } + if (block.fields) { + lines.push( + ...block.fields.map( + (pair) => + `- **${pair.label}:** ${scCellMarkdown(pair.value)}`, + ), + ); + } + return lines.join("\n"); + } + case "image": { + let md = `![${block.alt ?? ""}](${block.src})`; + if (block.caption) { + md += `\n\n*${block.caption}*`; + } + return md; + } + case "code": + return `\`\`\`${block.language ?? ""}\n${block.code}\n\`\`\``; + case "divider": + return "---"; + default: + return ""; + } +} + +function renderStructuredToMarkdown(content: StructuredContent): string { + return content.blocks + .map(renderStructuredBlockToMarkdown) + .filter((s) => s.length > 0) + .join("\n\n"); +} + +// --------------------------------------------------------------------------- + function renderMessageContentAsText(content: MessageContent): string { if (typeof content === "string") return stripAnsi(content); if (content.length === 0) return ""; diff --git a/ts/packages/vscode-shell/README.AUTOGEN.md b/ts/packages/vscode-shell/README.AUTOGEN.md index a400698e47..e14c6b0d10 100644 --- a/ts/packages/vscode-shell/README.AUTOGEN.md +++ b/ts/packages/vscode-shell/README.AUTOGEN.md @@ -3,7 +3,7 @@ - + # vscode-shell — AI-generated documentation @@ -12,16 +12,16 @@ ## Overview -The `vscode-shell` package integrates the TypeAgent shell chat into Visual Studio Code, providing a way to interact with TypeAgent conversations directly within the editor. It offers a side panel and editor tabs for managing conversations hosted by a running TypeAgent agent server. +The `vscode-shell` package integrates the TypeAgent shell chat into Visual Studio Code, allowing users to interact with TypeAgent conversations directly within the editor. It provides a side panel and editor tabs for managing conversations hosted by a running TypeAgent agent server. ## What it does -The `vscode-shell` package enables users to interact with the TypeAgent ecosystem through a chat interface embedded in Visual Studio Code. Its key features include: +The `vscode-shell` package enables a chat-based interface within Visual Studio Code to interact with the TypeAgent ecosystem. Key features include: - **Chat Interface**: - A **Chat** side panel accessible from the activity bar. - - Support for multiple chat tabs in the editor, each representing a separate conversation. + - Support for multiple editor-tab chats, each representing a separate conversation. - **Command Palette Integration**: @@ -174,6 +174,6 @@ External: `ansi_up`, `debug`, `dompurify`, `isomorphic-ws`, `markdown-it`, `micr --- -_Auto-generated against commit `66ead8985b850f2775c9b1a96cb7de1d08e2aee1` on `2026-07-18T01:38:20.033Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter vscode-shell docs:verify-links` to spot-check._ +_Auto-generated against commit `296dbc72b659a615918e97949f106f0fee2bb9db` on `2026-07-18T05:37:16.532Z` by `docs-generate.yml`. Links validated at that commit; the working tree may have drifted by up to 24h. Re-run `pnpm --filter vscode-shell docs:verify-links` to spot-check._ diff --git a/ts/packages/vscode-shell/src/webview/main.ts b/ts/packages/vscode-shell/src/webview/main.ts index 60585ab94a..91868d32d0 100644 --- a/ts/packages/vscode-shell/src/webview/main.ts +++ b/ts/packages/vscode-shell/src/webview/main.ts @@ -953,9 +953,27 @@ window.addEventListener("message", (event) => { clearQueueChip(rid); if (msg.aliasRequestId) clearQueueChip(msg.aliasRequestId); } else if (msg.event === "inline") { - chatPanel.showInline(msg.data, msg.source); + if (msg.source === "osNotifications" && rid) { + // OS notifications render as persistent, dismissable + // bubbles (removed on osDismiss), not ephemeral rows. + // The notificationId ("os:") arrives as requestId. + chatPanel.addNotification(msg.data, msg.source, rid); + } else { + chatPanel.showInline(msg.data, msg.source); + } } else if (msg.event === "toast") { - chatPanel.showToast(msg.data, msg.source); + if (msg.source === "osNotifications" && rid) { + chatPanel.addNotification(msg.data, msg.source, rid); + } else { + chatPanel.showToast(msg.data, msg.source); + } + } else if (msg.event === "osDismiss") { + // The OS notification left the action center — drop the + // matching persistent bubble. data.id is the "os:" + // notificationId used on the corresponding "added" event. + if (msg.data && typeof msg.data.id === "string") { + chatPanel.removeNotification(msg.data.id); + } } else if (msg.event === STATUS_NOTICE_EVENT) { const notice = parseStatusNotice(msg.data); if (notice) { diff --git a/ts/pnpm-lock.yaml b/ts/pnpm-lock.yaml index cf722badb5..7f40dc9588 100644 --- a/ts/pnpm-lock.yaml +++ b/ts/pnpm-lock.yaml @@ -173,7 +173,7 @@ importers: version: 8.18.1 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.20.1)(supports-color@8.1.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) + version: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) prettier: specifier: ^3.5.3 version: 3.5.3 @@ -2547,9 +2547,15 @@ importers: '@typeagent/action-schema-compiler': specifier: workspace:* version: link:../../actionSchemaCompiler + '@types/jest': + specifier: ^29.5.7 + version: 29.5.14 concurrently: specifier: ^9.1.2 version: 9.1.2 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(typescript@5.4.5)) rimraf: specifier: ^6.0.1 version: 6.0.1 @@ -2569,9 +2575,15 @@ importers: '@typeagent/action-schema-compiler': specifier: workspace:* version: link:../../actionSchemaCompiler + '@types/jest': + specifier: ^29.5.7 + version: 29.5.14 concurrently: specifier: ^9.1.2 version: 9.1.2 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(typescript@5.4.5)) prettier: specifier: ^3.5.3 version: 3.5.3 @@ -3553,9 +3565,15 @@ importers: '@typeagent/action-schema-compiler': specifier: workspace:* version: link:../../actionSchemaCompiler + '@types/jest': + specifier: ^29.5.7 + version: 29.5.14 concurrently: specifier: ^9.1.2 version: 9.1.2 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(typescript@5.4.5)) prettier: specifier: ^3.5.3 version: 3.5.3 @@ -4035,7 +4053,7 @@ importers: version: 29.5.14 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.20.1)(supports-color@8.1.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) + version: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) prettier: specifier: ^3.5.3 version: 3.5.3 @@ -5657,7 +5675,7 @@ importers: version: 4.0.1(vite@6.4.3(@types/node@22.20.1)(jiti@2.7.0)(less@4.3.0)(terser@5.49.0)(tsx@4.21.0)(yaml@2.9.0)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.20.1)(supports-color@8.1.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) + version: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) less: specifier: ^4.2.0 version: 4.3.0 @@ -6414,64 +6432,64 @@ importers: packages: 7zip-bin@5.2.0: - resolution: {integrity: sha1-egMxRoTdZXK336ieaM4x1gKGhU0=} + resolution: {integrity: sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==} '@acemir/cssom@0.9.31': - resolution: {integrity: sha1-vVM30pD7i+KsGDkfNzhrxTd4sLw=} + resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} '@alcalzone/ansi-tokenize@0.1.3': - resolution: {integrity: sha1-n4mDlWEyWo6aDDI2C40X5ISJmT8=} + resolution: {integrity: sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==} engines: {node: '>=14.13.1'} '@antfu/install-pkg@1.1.0': - resolution: {integrity: sha1-ePoDa+GmCBtad6XPWfUMd1K2uiY=} + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.162': - resolution: {integrity: sha1-UZ0hvQIcY+n7qsSOIbo6uU1Lw7s=} + resolution: {integrity: sha512-hafbfEtDeYko1rYCgIBAQbYnFXzd/hHf3IcoaD8mmlCQOAQhKA8gT/RPdLuuzQHdOjEgqDGTNOU+IjwL+msYcw==} cpu: [arm64] os: [darwin] '@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.162': - resolution: {integrity: sha1-Di4TOiXULnuKmWMbA779X2NeNMU=} + resolution: {integrity: sha512-BNg2Mh/4zc2Jsgpq7Mj8+UH8iJ9xzHS/0CmusBMik0H2Bn7Hra5R/f+csAfZOzSflQl4CNQdGOB2bir7d2n8Ww==} cpu: [x64] os: [darwin] '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.162': - resolution: {integrity: sha1-CqED3S+fXiQ9l6HMhSYpoWhse14=} + resolution: {integrity: sha512-Jr4cyfqzb5V2+p/1PynIfGROOI0JNtV3vBMAgckAdtDzpIFk4mV2T8936tsZzgZr04y40YH1HlQpnJDr92I+Fw==} cpu: [arm64] os: [linux] libc: [musl] '@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.162': - resolution: {integrity: sha1-Tlduj+RMdbVhy1nGkU0mX9Vvj/g=} + resolution: {integrity: sha512-zCXYSimaXWQKZASfDJkoKXQr//toYDGIi16wKDh02Rqcr4mqFi9f5SBw/UCyimkGyYkNx3e+bmC+o/tFrLSTWw==} cpu: [arm64] os: [linux] libc: [glibc] '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.162': - resolution: {integrity: sha1-HFdhO+npa0m+rUVY0FEZAsJGmPY=} + resolution: {integrity: sha512-gW9Gpk7W3w3zGFHBDyY8uer/PE6T0pB+emN1aafZAomfseIH1ixJ6ya5Fw2cIS/K0/4oR2pvu4AprlbRBtr45Q==} cpu: [x64] os: [linux] libc: [musl] '@anthropic-ai/claude-agent-sdk-linux-x64@0.3.162': - resolution: {integrity: sha1-5hP03u3nOsIF+bKqgQfsjnDe2KY=} + resolution: {integrity: sha512-FO2+zDuSTsZ/5MqxIwExLxG0c2auA5wO6iICwZdUOWtboC6yU2AEgp4mzF0jbe1UOP0J27uODFpvz7uRpWipkg==} cpu: [x64] os: [linux] libc: [glibc] '@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.162': - resolution: {integrity: sha1-mt5LQqODj/hQfpxFVJcgxbPY0Sw=} + resolution: {integrity: sha512-TZQifFDBdhzt1u6wbbpQ2AZcRkhNVYx1iZVfydAbs3L7ZMK264LjRPytBK4n4S413Is1XyLHbGMvEUNA3N+Tng==} cpu: [arm64] os: [win32] '@anthropic-ai/claude-agent-sdk-win32-x64@0.3.162': - resolution: {integrity: sha1-fIVcoQnYv9VFem7QejfO6c1/l78=} + resolution: {integrity: sha512-8ZYDgNxkGp47xwpcEZ6/qUXd4BByA8hTnNf4fJD6+P1wWi7Ofxc/d5jwXSYwajYvBvbbktQDthmGzjtoK3lXUw==} cpu: [x64] os: [win32] '@anthropic-ai/claude-agent-sdk@0.3.162': - resolution: {integrity: sha1-WvNe28L+TUqeqshn/ZXeFTLBgX0=} + resolution: {integrity: sha512-piAlpc1h6FUMCNU+bnYNNLX1lOgMlFnqZmIhn6Myv48MaNRaecFaZEuVLY+UxV0kjGiQFYHBLR4fk/rRwi2SAA==} engines: {node: '>=18.0.0'} peerDependencies: '@anthropic-ai/sdk': '>=0.93.0' @@ -6479,7 +6497,7 @@ packages: zod: ^4.0.0 '@anthropic-ai/sdk@0.93.0': - resolution: {integrity: sha1-zdbinqllLswW/88ENOje6Iuce3c=} + resolution: {integrity: sha512-q9vaSZQVFx6B/gPxetGYfLXSJD5v0sOmh0OpZDq7yCrTSA+Rscvrtyol7JJTW40wEpQB4U1B4JXzxQitbQ3CAA==} hasBin: true peerDependencies: zod: ^3.25.0 || ^4.0.0 @@ -6488,165 +6506,165 @@ packages: optional: true '@asamuzakjp/css-color@5.0.1': - resolution: {integrity: sha1-O5RiqbUvPGaAoJRaPQhRiBAXVQ8=} + resolution: {integrity: sha512-2SZFvqMyvboVV1d15lMf7XiI3m7SDqXUuKaTymJYLN6dSGadqp+fVojqJlVoMlbZnlTmu3S0TLwLTJpvBMO1Aw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} '@asamuzakjp/dom-selector@6.8.1': - resolution: {integrity: sha1-ObIJk2crEG982aOppGUhLofgv9E=} + resolution: {integrity: sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==} '@asamuzakjp/nwsapi@2.3.9': - resolution: {integrity: sha1-rVVJMi3+nRU9S03W9/8q4jSwbiQ=} + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} '@aws-crypto/crc32@5.2.0': - resolution: {integrity: sha1-z8wiVwlJyYxmic/L0taT02za4uE=} + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} '@aws-crypto/crc32c@5.2.0': - resolution: {integrity: sha1-TjSqt/QZMHghUJqYubCOhODBkX4=} + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} '@aws-crypto/sha1-browser@5.2.0': - resolution: {integrity: sha1-sO4tKCHThh8BfpZe87TLOOO2oPQ=} + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} '@aws-crypto/sha256-browser@5.2.0': - resolution: {integrity: sha1-FTiV7x26b5/OOK9VDg71iYjrZJ4=} + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} '@aws-crypto/sha256-js@5.2.0': - resolution: {integrity: sha1-xP23c/2+2aZk/BqVck4gbPOGAEI=} + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} engines: {node: '>=16.0.0'} '@aws-crypto/supports-web-crypto@5.2.0': - resolution: {integrity: sha1-oeOZrykmm+COaVEJqhXaCge1tfs=} + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} '@aws-crypto/util@5.2.0': - resolution: {integrity: sha1-cShMnP/nkn3a2seTwU8UiG04dto=} + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} '@aws-sdk/client-s3@3.1004.0': - resolution: {integrity: sha1-6M2yKwP5+E3ulrq0PKzEr2rccLI=} + resolution: {integrity: sha512-m0zNfpsona9jQdX1cHtHArOiuvSGZPsgp/KRZS2YjJhKah96G2UN3UNGZQ6aVjXIQjCY6UanCJo0uW9Xf2U41w==} engines: {node: '>=20.0.0'} '@aws-sdk/core@3.973.18': - resolution: {integrity: sha1-JicCtKSxI67CuPjY33u4JfCoCP0=} + resolution: {integrity: sha512-GUIlegfcK2LO1J2Y98sCJy63rQSiLiDOgVw7HiHPRqfI2vb3XozTVqemwO0VSGXp54ngCnAQz0Lf0YPCBINNxA==} engines: {node: '>=20.0.0'} '@aws-sdk/crc64-nvme@3.972.4': - resolution: {integrity: sha1-uZSUx2BkIxqmb3ClsQlWJOeYRwA=} + resolution: {integrity: sha512-HKZIZLbRyvzo/bXZU7Zmk6XqU+1C9DjI56xd02vwuDIxedxBEqP17t9ExhbP9QFeNq/a3l9GOcyirFXxmbDhmw==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-env@3.972.16': - resolution: {integrity: sha1-eyfw6//9l/O9LsoVG5ppP1bYpvw=} + resolution: {integrity: sha512-HrdtnadvTGAQUr18sPzGlE5El3ICphnH6SU7UQOMOWFgRKbTRNN8msTxM4emzguUso9CzaHU2xy5ctSrmK5YNA==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-http@3.972.18': - resolution: {integrity: sha1-PMJDny9o90iMJzNkZOjf+Ldj3xk=} + resolution: {integrity: sha512-NyB6smuZAixND5jZumkpkunQ0voc4Mwgkd+SZ6cvAzIB7gK8HV8Zd4rS8Kn5MmoGgusyNfVGG+RLoYc4yFiw+A==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-ini@3.972.17': - resolution: {integrity: sha1-R6z46gQUtpcwZ3PAK4sj5pVmXXg=} + resolution: {integrity: sha512-dFqh7nfX43B8dO1aPQHOcjC0SnCJ83H3F+1LoCh3X1P7E7N09I+0/taID0asU6GCddfDExqnEvQtDdkuMe5tKQ==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-login@3.972.17': - resolution: {integrity: sha1-99lERcCcGg7RhGlv/l4Uiz/EihM=} + resolution: {integrity: sha512-gf2E5b7LpKb+JX2oQsRIDxdRZjBFZt2olCGlWCdb3vBERbXIPgm2t1R5mEnwd4j0UEO/Tbg5zN2KJbHXttJqwA==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-node@3.972.18': - resolution: {integrity: sha1-vEO2i1JTEWJL8FZ9oOLkFhpRcKc=} + resolution: {integrity: sha512-ZDJa2gd1xiPg/nBDGhUlat02O8obaDEnICBAVS8qieZ0+nDfaB0Z3ec6gjZj27OqFTjnB/Q5a0GwQwb7rMVViw==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-process@3.972.16': - resolution: {integrity: sha1-L6hudz1VOxhK0CKjabLT2VD0kGk=} + resolution: {integrity: sha512-n89ibATwnLEg0ZdZmUds5bq8AfBAdoYEDpqP3uzPLaRuGelsKlIvCYSNNvfgGLi8NaHPNNhs1HjJZYbqkW9b+g==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-sso@3.972.17': - resolution: {integrity: sha1-44FEQEG2oxtjsMzjXkm87C20S+s=} + resolution: {integrity: sha512-wGtte+48xnhnhHMl/MsxzacBPs5A+7JJedjiP452IkHY7vsbYKcvQBqFye8LwdTJVeHtBHv+JFeTscnwepoWGg==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-web-identity@3.972.17': - resolution: {integrity: sha1-JgZat9ZpTQYpuhGozCYNaDO/vPk=} + resolution: {integrity: sha512-8aiVJh6fTdl8gcyL+sVNcNwTtWpmoFa1Sh7xlj6Z7L/cZ/tYMEBHq44wTYG8Kt0z/PpGNopD89nbj3FHl9QmTA==} engines: {node: '>=20.0.0'} '@aws-sdk/lib-storage@3.1004.0': - resolution: {integrity: sha1-GwGM2+FZPsM9NNRybexjpxVCpNU=} + resolution: {integrity: sha512-4W6UkeLVd/1FyXFvD9PHMw5FSOY7tsf6+I52jmgdZwDZ9gJcJBx6wF9IhaVp1AXhScZGY9HqHiqYt0qlrSHrGw==} engines: {node: '>=20.0.0'} peerDependencies: '@aws-sdk/client-s3': ^3.1004.0 '@aws-sdk/middleware-bucket-endpoint@3.972.7': - resolution: {integrity: sha1-lcA+lTw/jldOcf3/Gtecuh6yXoA=} + resolution: {integrity: sha512-goX+axlJ6PQlRnzE2bQisZ8wVrlm6dXJfBzMJhd8LhAIBan/w1Kl73fJnalM/S+18VnpzIHumyV6DtgmvqG5IA==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-expect-continue@3.972.7': - resolution: {integrity: sha1-+oleP3QCXeP02JTn8EIfSO6l778=} + resolution: {integrity: sha512-mvWqvm61bmZUKmmrtl2uWbokqpenY3Mc3Jf4nXB/Hse6gWxLPaCQThmhPBDzsPSV8/Odn8V6ovWt3pZ7vy4BFQ==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-flexible-checksums@3.973.4': - resolution: {integrity: sha1-d+Y4yI91vw8GBe2dN8vD7EiGjtY=} + resolution: {integrity: sha512-7CH2jcGmkvkHc5Buz9IGbdjq1729AAlgYJiAvGq7qhCHqYleCsriWdSnmsqWTwdAfXHMT+pkxX3w6v5tJNcSug==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-host-header@3.972.7': - resolution: {integrity: sha1-sYhJz4B+B0L9+E20HCJYdwvR5FI=} + resolution: {integrity: sha512-aHQZgztBFEpDU1BB00VWCIIm85JjGjQW1OG9+98BdmaOpguJvzmXBGbnAiYcciCd+IS4e9BEq664lhzGnWJHgQ==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-location-constraint@3.972.7': - resolution: {integrity: sha1-WlSh19N+U75udIUl6zW7pxZPmcQ=} + resolution: {integrity: sha512-vdK1LJfffBp87Lj0Bw3WdK1rJk9OLDYdQpqoKgmpIZPe+4+HawZ6THTbvjhJt4C4MNnRrHTKHQjkwBiIpDBoig==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-logger@3.972.7': - resolution: {integrity: sha1-/+pOL/Hp2GBHxWTJgtZK3oAXeR4=} + resolution: {integrity: sha512-LXhiWlWb26txCU1vcI9PneESSeRp/RYY/McuM4SpdrimQR5NgwaPb4VJCadVeuGWgh6QmqZ6rAKSoL1ob16W6w==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-recursion-detection@3.972.7': - resolution: {integrity: sha1-nWN27nJMm3fWUYxR0LLIsY8fcr8=} + resolution: {integrity: sha512-l2VQdcBcYLzIzykCHtXlbpiVCZ94/xniLIkAj0jpnpjY4xlgZx7f56Ypn+uV1y3gG0tNVytJqo3K9bfMFee7SQ==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-sdk-s3@3.972.18': - resolution: {integrity: sha1-ZI2lvpS7AnF2Q9eOar9BIlYqW88=} + resolution: {integrity: sha512-5E3XxaElrdyk6ZJ0TjH7Qm6ios4b/qQCiLr6oQ8NK7e4Kn6JBTJCaYioQCQ65BpZ1+l1mK5wTAac2+pEz0Smpw==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-ssec@3.972.7': - resolution: {integrity: sha1-SfrHtQePjx4JNv8u7b5o7+f8BaQ=} + resolution: {integrity: sha512-G9clGVuAml7d8DYzY6DnRi7TIIDRvZ3YpqJPz/8wnWS5fYx/FNWNmkO6iJVlVkQg9BfeMzd+bVPtPJOvC4B+nQ==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-user-agent@3.972.19': - resolution: {integrity: sha1-WmyjeLigN2w6ioM5eY0XPQMw+E0=} + resolution: {integrity: sha512-Km90fcXt3W/iqujHzuM6IaDkYCj73gsYufcuWXApWdzoTy6KGk8fnchAjePMARU0xegIR3K4N3yIo1vy7OVe8A==} engines: {node: '>=20.0.0'} '@aws-sdk/nested-clients@3.996.7': - resolution: {integrity: sha1-x7Ey8b9h7cRL+OKBrJTYX3RiXXc=} + resolution: {integrity: sha512-MlGWA8uPaOs5AiTZ5JLM4uuWDm9EEAnm9cqwvqQIc6kEgel/8s1BaOWm9QgUcfc9K8qd7KkC3n43yDbeXOA2tg==} engines: {node: '>=20.0.0'} '@aws-sdk/region-config-resolver@3.972.7': - resolution: {integrity: sha1-Nv0Ouiv+3rV7hDs82CZvt2aKfoU=} + resolution: {integrity: sha512-/Ev/6AI8bvt4HAAptzSjThGUMjcWaX3GX8oERkB0F0F9x2dLSBdgFDiyrRz3i0u0ZFZFQ1b28is4QhyqXTUsVA==} engines: {node: '>=20.0.0'} '@aws-sdk/signature-v4-multi-region@3.996.6': - resolution: {integrity: sha1-uBjXJPpBHyxb9K2WDtE9qeZVb98=} + resolution: {integrity: sha512-NnsOQsVmJXy4+IdPFUjRCWPn9qNH1TzS/f7MiWgXeoHs903tJpAWQWQtoFvLccyPoBgomKP9L89RRr2YsT/L0g==} engines: {node: '>=20.0.0'} '@aws-sdk/token-providers@3.1004.0': - resolution: {integrity: sha1-nsnOo22CyF+yTASRlMmQqY9mdfU=} + resolution: {integrity: sha512-j9BwZZId9sFp+4GPhf6KrwO8Tben2sXibZA8D1vv2I1zBdvkUHcBA2g4pkqIpTRalMTLC0NPkBPX0gERxfy/iA==} engines: {node: '>=20.0.0'} '@aws-sdk/types@3.973.5': - resolution: {integrity: sha1-D8APBm26qkDAnyt+/dhngYB7XHA=} + resolution: {integrity: sha512-hl7BGwDCWsjH8NkZfx+HgS7H2LyM2lTMAI7ba9c8O0KqdBLTdNJivsHpqjg9rNlAlPyREb6DeDRXUl0s8uFdmQ==} engines: {node: '>=20.0.0'} '@aws-sdk/util-arn-parser@3.972.3': - resolution: {integrity: sha1-7ZiYYruxcs4W2eHNV5Dl/jZyGcI=} + resolution: {integrity: sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==} engines: {node: '>=20.0.0'} '@aws-sdk/util-endpoints@3.996.4': - resolution: {integrity: sha1-n8/sy9nSqCF7ZvcRzzA4g+xEQsA=} + resolution: {integrity: sha512-Hek90FBmd4joCFj+Vc98KLJh73Zqj3s2W56gjAcTkrNLMDI5nIFkG9YpfcJiVI1YlE2Ne1uOQNe+IgQ/Vz2XRA==} engines: {node: '>=20.0.0'} '@aws-sdk/util-locate-window@3.965.5': - resolution: {integrity: sha1-4w5v8q/2Q2IJ7ULHZd7C0qSN98A=} + resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==} engines: {node: '>=20.0.0'} '@aws-sdk/util-user-agent-browser@3.972.7': - resolution: {integrity: sha1-DnIF241Hdg3wFP/93L8Mz8NQ6E0=} + resolution: {integrity: sha512-7SJVuvhKhMF/BkNS1n0QAJYgvEwYbK2QLKBrzDiwQGiTRU6Yf1f3nehTzm/l21xdAOtWSfp2uWSddPnP2ZtsVw==} '@aws-sdk/util-user-agent-node@3.973.4': - resolution: {integrity: sha1-m1FVdAxct/35wfGrNQYERu5Uusg=} + resolution: {integrity: sha512-uqKeLqZ9D3nQjH7HGIERNXK9qnSpUK08l4MlJ5/NZqSSdeJsVANYp437EM9sEzwU28c2xfj2V6qlkqzsgtKs6Q==} engines: {node: '>=20.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -6655,559 +6673,559 @@ packages: optional: true '@aws-sdk/xml-builder@3.972.10': - resolution: {integrity: sha1-2KcXG3DI7pNUdH8Kx9No3SfVDkY=} + resolution: {integrity: sha512-OnejAIVD+CxzyAUrVic7lG+3QRltyja9LoNqCE/1YVs8ichoTbJlVSaZ9iSMcnHLyzrSNtvaOGjSDRP+d/ouFA==} engines: {node: '>=20.0.0'} '@aws/lambda-invoke-store@0.2.3': - resolution: {integrity: sha1-8RN/ViCczGnBX4JiQsvzf4KGF90=} + resolution: {integrity: sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==} engines: {node: '>=18.0.0'} '@azu/format-text@1.0.2': - resolution: {integrity: sha1-q9RtqyQi4xK9G/428NQnq2A5gl0=} + resolution: {integrity: sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==} '@azu/style-format@1.0.1': - resolution: {integrity: sha1-s2Q68MX+6dU+aal8g1xAS9yA95I=} + resolution: {integrity: sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==} '@azure-rest/core-client@2.4.0': - resolution: {integrity: sha1-sx94hQeMuJ5IDaQ/C6LX1Jz0UwI=} + resolution: {integrity: sha512-CjMFBcmnt0YNdRcxSSoZbtZNXudLlicdml7UrPsV03nHiWB+Bq5cu5ctieyaCuRtU7jm7+SOFtiE/g4pBFPKKA==} engines: {node: '>=18.0.0'} '@azure-rest/maps-search@2.0.0-beta.3': - resolution: {integrity: sha1-dvoEKU13TBPcX7UaEsKmTehfVNE=} + resolution: {integrity: sha512-2fouStEqzwa1dXZGH1rys/TVpH5aY1OqF5iGcZlbR8cW1qQtwFcrGQ/hpAeGdOtHWhLblibh6eoqNr1lYTFpBQ==} engines: {node: '>=18.0.0'} '@azure/abort-controller@1.1.0': - resolution: {integrity: sha1-eI7nhFelWvihrTQqyxgjg9IRkkk=} + resolution: {integrity: sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==} engines: {node: '>=12.0.0'} '@azure/abort-controller@2.1.2': - resolution: {integrity: sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=} + resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} engines: {node: '>=18.0.0'} '@azure/ai-projects@2.2.0': - resolution: {integrity: sha1-DCm9bKe4FM22Liw0N6+mX61Q3vA=} + resolution: {integrity: sha512-pxdEYMK8DI8BxaFhroqoT+1wwHmELn0v+fEWQanQNG2wNI9LdWTrUSChNcUY0l8T8D5Gjxf/irSEEaWCvqHwQQ==} engines: {node: '>=20.0.0'} '@azure/arm-authorization@9.0.0': - resolution: {integrity: sha1-aPTsP+er98mGosQFvj33pnv60Ts=} + resolution: {integrity: sha512-GdiCA8IA1gO+qcCbFEPj+iLC4+3ByjfKzmeAnkP7MdlL84Yo30Huo/EwbZzwRjYybXYUBuFxGPBB+yeTT4Ebxg==} engines: {node: '>=14.0.0'} '@azure/core-auth@1.10.1': - resolution: {integrity: sha1-aKF/qGHr0U9v0xQFV5g1Xva+3xs=} + resolution: {integrity: sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==} engines: {node: '>=20.0.0'} '@azure/core-auth@1.9.0': - resolution: {integrity: sha1-rHJbA/q+PIkjcQZe6eIEG+4P0aw=} + resolution: {integrity: sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==} engines: {node: '>=18.0.0'} '@azure/core-client@1.10.1': - resolution: {integrity: sha1-g9ePl9ZHqyLmgRp6aLtCI+eh0Bk=} + resolution: {integrity: sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==} engines: {node: '>=20.0.0'} '@azure/core-client@1.9.2': - resolution: {integrity: sha1-b8ac7igWiDq2xc3WU+5PL/l3T3Q=} + resolution: {integrity: sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==} engines: {node: '>=18.0.0'} '@azure/core-http-compat@2.1.2': - resolution: {integrity: sha1-0Vha2iS6dQ3BYdgWFpszs192Lw0=} + resolution: {integrity: sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==} engines: {node: '>=18.0.0'} '@azure/core-http-compat@2.3.2': - resolution: {integrity: sha1-u1DiPo827DG1grLRYZJcDSnnWwM=} + resolution: {integrity: sha512-Tf6ltdKzOJEgxZeWLCjMxrxbodB/ZeCbzzA1A2qHbhzAjzjHoBVSUeSl/baT/oHAxhc4qdqVaDKnc2+iE932gw==} engines: {node: '>=20.0.0'} peerDependencies: '@azure/core-client': ^1.10.0 '@azure/core-rest-pipeline': ^1.22.0 '@azure/core-lro@2.7.2': - resolution: {integrity: sha1-eHEFAnog5Fx3ZRqYsBpNOwG3Wgg=} + resolution: {integrity: sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==} engines: {node: '>=18.0.0'} '@azure/core-lro@3.2.0': - resolution: {integrity: sha1-6Tsvwzad22Vb0ROD62iySXAwXkc=} + resolution: {integrity: sha512-SJEAe8fMDnjz2vw9dvEUi0DhAWe1sYkWQVTDc/HDcgNALaszGRopx3U+z1Pg/C9fsYiArp5pTBEcq29Ddph0WA==} engines: {node: '>=18.0.0'} '@azure/core-paging@1.6.2': - resolution: {integrity: sha1-QNOGDcLffykdZjULLP2RcVJkM+c=} + resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} engines: {node: '>=18.0.0'} '@azure/core-rest-pipeline@1.20.0': - resolution: {integrity: sha1-kW2NbJz/a1VvCwv9W5I1JtWQ4tk=} + resolution: {integrity: sha512-ASoP8uqZBS3H/8N8at/XwFr6vYrRP3syTK0EUjDXQy0Y1/AUS+QeIRThKmTNJO2RggvBBxaXDPM7YoIwDGeA0g==} engines: {node: '>=18.0.0'} '@azure/core-rest-pipeline@1.22.2': - resolution: {integrity: sha1-fhTyHSWrYnzQdnattdmqzY4ulcw=} + resolution: {integrity: sha512-MzHym+wOi8CLUlKCQu12de0nwcq9k9Kuv43j4Wa++CsCpJwps2eeBQwD2Bu8snkxTtDKDx4GwjuR9E8yC8LNrg==} engines: {node: '>=20.0.0'} '@azure/core-sse@2.2.0': - resolution: {integrity: sha1-ev1FoWUpu/L0b/qs/dZwcyZdr28=} + resolution: {integrity: sha512-6Xg/CeW0jRyMoWt+puw2x6Qqkml3tr76Cn/oA9goIcUXtsi3ngmTwCVbwqkUWfhsOfo4F+78LGgiswSxTHN0sg==} engines: {node: '>=18.0.0'} '@azure/core-tracing@1.2.0': - resolution: {integrity: sha1-e+XVPDUi1jnPGQQsvNsZ9xvDWrI=} + resolution: {integrity: sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==} engines: {node: '>=18.0.0'} '@azure/core-tracing@1.3.1': - resolution: {integrity: sha1-6XEEXJAeqcEQYWsOHbJyUHeB1fY=} + resolution: {integrity: sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==} engines: {node: '>=20.0.0'} '@azure/core-util@1.11.0': - resolution: {integrity: sha1-9TD8Z+c4rqhy+90cyEFucCGfrac=} + resolution: {integrity: sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==} engines: {node: '>=18.0.0'} '@azure/core-util@1.13.1': - resolution: {integrity: sha1-bf8v9tPJxkMMb007PmXeUx8Quv4=} + resolution: {integrity: sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==} engines: {node: '>=20.0.0'} '@azure/core-xml@1.5.0': - resolution: {integrity: sha1-zYLVEde8xUjSBvVifDlyTF1aRDQ=} + resolution: {integrity: sha512-D/sdlJBMJfx7gqoj66PKVmhDDaU6TKA49ptcolxdas29X7AfvLTmfAGLjAcIMBK7UZ2o4lygHIqVckOlQU3xWw==} engines: {node: '>=20.0.0'} '@azure/cosmos@4.9.1': - resolution: {integrity: sha1-AwuYVOkbacjBNmS8uF/dRvraIUk=} + resolution: {integrity: sha512-fPnfL4JsmJJ/jEYUhlznKfrEr2pMvJwBncGVcUC2Xi7Nlj0MrUMRE+UOrptl/lRV2W7l68Br+b9Ikzm0KiZZHg==} engines: {node: '>=20.0.0'} '@azure/identity-broker@1.4.0': - resolution: {integrity: sha1-yZyMTcIf+WVocZkUbajQ90mapYo=} + resolution: {integrity: sha512-0JQhUf+VNqurmwfXK7oBSoOg0eEnPEr6yKvArDeMlM4B4eN4ugrKoLUEFgDWUNfixgSGg0SbOrH5iwoBUj1CpQ==} engines: {node: '>=20.0.0'} '@azure/identity-cache-persistence@1.2.0': - resolution: {integrity: sha1-xu7f/+cjrEIkx/v6rvj3Uyqv2A8=} + resolution: {integrity: sha512-ZYr6iiE6d/Tkt4jck0cQv9grZ1BR4u5LXJmB1vblU/WGIHspO6Bv3TJMvQat2sQSOG4Wz7busgg0pajP4gNJzA==} engines: {node: '>=18.0.0'} '@azure/identity@4.10.0': - resolution: {integrity: sha1-EM/kkge00RHr46qzreR1YcKFLG0=} + resolution: {integrity: sha512-iT53Sre2NJK6wzMWnvpjNiR3md597LZ3uK/5kQD2TkrY9vqhrY5bt2KwELNjkOWQ9n8S/92knj/QEykTtjMNqQ==} engines: {node: '>=18.0.0'} '@azure/identity@4.13.1': - resolution: {integrity: sha1-vcCRZYuqWaR+6furSHpLsBhym8M=} + resolution: {integrity: sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==} engines: {node: '>=20.0.0'} '@azure/keyvault-certificates@4.10.3': - resolution: {integrity: sha1-xv78JrnQG9ECOHL6sv0HYRyb6ZQ=} + resolution: {integrity: sha512-PgQLfcgsqVPEN8+HYs9L/9sUxd1qkUQa8csuKPFRq3twiIE5Sm1me+1tmoNp5rPCdYoBJSNzi/FYpldHlDeHDw==} engines: {node: '>=20.0.0'} '@azure/keyvault-common@2.1.0': - resolution: {integrity: sha1-Zw50FKK/aDcbCz0fmByboCeLd90=} + resolution: {integrity: sha512-aCDidWuKY06LWQ4x7/8TIXK6iRqTaRWRL3t7T+LC+j1b07HtoIsOxP/tU90G4jCSBn5TAyUTCtA4MS/y5Hudaw==} engines: {node: '>=20.0.0'} '@azure/keyvault-keys@4.10.0': - resolution: {integrity: sha1-dUdujyhYDcI7vJ2sbRZU4THW79U=} + resolution: {integrity: sha512-eDT7iXoBTRZ2n3fLiftuGJFD+yjkiB1GNqzU2KbY1TLYeXeSPVTVgn2eJ5vmRTZ11978jy2Kg2wI7xa9Tyr8ag==} engines: {node: '>=18.0.0'} '@azure/keyvault-secrets@4.11.2': - resolution: {integrity: sha1-Ngm9ZSp6Nn8UU17FWfgXhkMkr8k=} + resolution: {integrity: sha512-ECj/kwZbZlQXj2kfWivSICbKwj6W3chmFhv8qUdauqYnjvZ0hWZBFSsZWux7W2nX3MP49PLUCusXk+hAg3pipg==} engines: {node: '>=20.0.0'} '@azure/logger@1.2.0': - resolution: {integrity: sha1-p5rvzdV9KpZgP6tZyaZuDZAipWQ=} + resolution: {integrity: sha512-0hKEzLhpw+ZTAfNJyRrn6s+V0nDWzXk9OjBr2TiGIu0OfMr5s2V4FpKLTAK3Ca5r5OKLbf4hkOGDPyiRjie/jA==} engines: {node: '>=18.0.0'} '@azure/logger@1.3.0': - resolution: {integrity: sha1-VQHPhdT1JjBgKozHXfdlaMlpqCc=} + resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==} engines: {node: '>=20.0.0'} '@azure/maps-common@1.0.0-beta.2': - resolution: {integrity: sha1-Cey+hAiSgQAjgn7y2DjyGaUcHDU=} + resolution: {integrity: sha512-PB9GlnfojcQ4nf9WXdQvWeAk7gm8P74o+Z5IHz5YLK/W+3vrNrmVVVuFpGOvCPrLjag50UinaZsMBtPtxoiobg==} engines: {node: '>=14.0.0'} '@azure/msal-browser@4.12.0': - resolution: {integrity: sha1-D2VoxA/BvvQVOh8p/OH8b/CddbQ=} + resolution: {integrity: sha512-WD1lmVWchg7wn1mI7Tr4v7QPyTwK+8Nuyje3jRpOFENLRLEBsdK8VVdTw3C+TypZmYn4cOAdj3zREnuFXgvfIA==} engines: {node: '>=0.8.0'} '@azure/msal-browser@5.11.0': - resolution: {integrity: sha1-As8ggkpKGBWrtQ74jYkQh7cwCcc=} + resolution: {integrity: sha512-zkGNYS3TwY8lUpPIafAmsFCYZbgFixY9y/LZB9GUg0IILoHTqpN26j5OrkL1AQThh/YdZsawe4iWXfp85lFVxg==} engines: {node: '>=0.8.0'} '@azure/msal-common@15.6.0': - resolution: {integrity: sha1-B2TWRG7v85cCIZleJfJl/bIY2mY=} + resolution: {integrity: sha512-EotmBz42apYGjqiIV9rDUdptaMptpTn4TdGf3JfjLvFvinSe9BJ6ywU92K9ky+t/b0ghbeTSe9RfqlgLh8f2jA==} engines: {node: '>=0.8.0'} '@azure/msal-common@16.6.0': - resolution: {integrity: sha1-Dog6W2oYzwDafJYSLGU18wyPtOU=} + resolution: {integrity: sha512-FemGljX0csPlBMUE5GUan7BfRn1emeMRUhHSARhqzLN6LA9nt+MgzmAQ1xVqdLm+6plVoxsq9mS5eoyKtpPSgA==} engines: {node: '>=0.8.0'} '@azure/msal-common@16.6.2': - resolution: {integrity: sha1-SqeR2yxPN/UDv+EPWux2/VUtr44=} + resolution: {integrity: sha512-hQjjsekAjB00cM1EmatWJlzhEoK2Qhz7Rj5gvM6tYf8iL7RM3tkxlpU9fG0+ofkulzg9AEEA6dIEnSmDr5ZqUA==} engines: {node: '>=0.8.0'} '@azure/msal-node-extensions@1.5.13': - resolution: {integrity: sha1-5NKijXb/wvGK0JRbG8wM7PoMIAQ=} + resolution: {integrity: sha512-5JQaPS/hGN5iL1rNBr+t17eVrpIjp8oXnCIrkj8WX4a8YbhlHaw+GhQthetdkMMvJE5RwbdzEN4Vm6zKX9ArGQ==} engines: {node: '>=16'} '@azure/msal-node-extensions@5.2.0': - resolution: {integrity: sha1-KSJ7KH/f3MASoJlhWbromaSThrc=} + resolution: {integrity: sha512-3qrb4wxYBfJarrG9NRG5jRVhZfL9vZaDpeq2RDKPiNnA+e0/TKS8JzvXfIZqxn4VIP6/9P6/SSCJS+Y18LIAuw==} engines: {node: '>=20'} '@azure/msal-node-runtime@0.18.2': - resolution: {integrity: sha1-/b5FR1aFIMB6oCCj/ipKa0w+qHk=} + resolution: {integrity: sha512-v45fyBQp80BrjZAeGJXl+qggHcbylQiFBihr0ijO2eniDCW9tz5TZBKYsqzH06VuiRaVG/Sa0Hcn4pjhJqFSTw==} '@azure/msal-node-runtime@0.20.5': - resolution: {integrity: sha1-dBs35hgVkO8I6WTXETsMcD+LCBI=} + resolution: {integrity: sha512-DqY28Lpx67AsMbT3FYal3MnDZx62Pblnhp1qA+HGtgEsm3jK8COkJVCrhVsprn80PKQfAOdKRuxgVYyvmv2rOg==} '@azure/msal-node@3.5.3': - resolution: {integrity: sha1-AveiNEosKZQ1SgzsElue+ajnEJs=} + resolution: {integrity: sha512-c5mifzHX5mwm5JqMIlURUyp6LEEdKF1a8lmcNRLBo0lD7zpSYPHupa4jHyhJyg9ccLwszLguZJdk2h3ngnXwNw==} engines: {node: '>=16'} '@azure/msal-node@5.2.0': - resolution: {integrity: sha1-30hOocJOcbBorvLl6fa8wKAODkQ=} + resolution: {integrity: sha512-b/ak8XAqpnGk1N1nsyTVV0Remp48BP3QrGQZ1uCMcvg2S8X1eSXzhHQZEae2oX276Q4KFAqCUswanDtcvIKLrw==} engines: {node: '>=20'} '@azure/search-documents@12.1.0': - resolution: {integrity: sha1-eTO+ozIX17lWlv6XoZzA9DMbw2o=} + resolution: {integrity: sha512-IzD+hfqGqFtXymHXm4RzrZW2MsSH2M7RLmZsKaKVi7SUxbeYTUeX+ALk8gVzkM8ykb7EzlDLWCNErKfAa57rYQ==} engines: {node: '>=18.0.0'} '@azure/storage-blob@12.27.0': - resolution: {integrity: sha1-MGKTBBEXOihGi9OA4K0sYyjXKIo=} + resolution: {integrity: sha512-IQjj9RIzAKatmNca3D6bT0qJ+Pkox1WZGOg2esJF2YLHb45pQKOwGPIAV+w3rfgkj7zV3RMxpn/c6iftzSOZJQ==} engines: {node: '>=18.0.0'} '@babel/code-frame@7.27.1': - resolution: {integrity: sha1-IA9xXmbVKiOyIalDVTSpHME61b4=} + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} '@babel/code-frame@7.29.7': - resolution: {integrity: sha1-8vu/6ofESiFZDsUVt3iywm2IZuc=} + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} '@babel/compat-data@7.29.7': - resolution: {integrity: sha1-bwI38PNtLlHAVwpjb67Z0tDv5ik=} + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} engines: {node: '>=6.9.0'} '@babel/core@7.29.7': - resolution: {integrity: sha1-gMELFySAgpaLV6hXuRZAlx8gcPc=} + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} engines: {node: '>=6.9.0'} '@babel/generator@7.29.7': - resolution: {integrity: sha1-zKC4gn5rzzuhdniOfzsYCtbbL6M=} + resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.29.7': - resolution: {integrity: sha1-eh3vcEMCQBxH9k+oVYnpdK4hcEI=} + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} engines: {node: '>=6.9.0'} '@babel/helper-globals@7.29.7': - resolution: {integrity: sha1-8EqW+9hHMkGxB5JD9bPwOjAQq3s=} + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.29.7': - resolution: {integrity: sha1-7yUEilGOgo1zk/rFiC3dc5Idc5Y=} + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} engines: {node: '>=6.9.0'} '@babel/helper-module-transforms@7.29.7': - resolution: {integrity: sha1-sGJ0elmXuhOGNyATKLv/d5YFdK4=} + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha1-3bL4dlNP+AE+bCspm/TTmzxR1Ew=} + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} '@babel/helper-plugin-utils@7.29.7': - resolution: {integrity: sha1-wKB2bxoTYX2KF0B9erj51IYiXqQ=} + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.29.7': - resolution: {integrity: sha1-fwhx2Zgk0jE31g+G/PYTD9WhtR8=} + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha1-pwVNzBRaln3U3I/uhFpXwTFsnfg=} + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.29.7': - resolution: {integrity: sha1-vYcITO0MeW7Ea9pJLeboPSnon8I=} + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.29.7': - resolution: {integrity: sha1-zzFb6UAhOzVOtKvMC9Aevj9zvCo=} + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} engines: {node: '>=6.9.0'} '@babel/helpers@7.29.7': - resolution: {integrity: sha1-Rav951SJl+NDdsPmn+tHXP+0pgc=} + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} engines: {node: '>=6.9.0'} '@babel/parser@7.29.7': - resolution: {integrity: sha1-g3uHOHy/XsVTDLY0s8Yi9o7bkzQ=} + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} engines: {node: '>=6.0.0'} hasBin: true '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha1-qYP7Gusuw/btBCohD2QOkOeG/g0=} + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-bigint@7.8.3': - resolution: {integrity: sha1-TJpvZp9dDN8bkKFnHpoUa+UwDOo=} + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha1-tcmHJ0xKOoK4lxR5aTGmtTVErhA=} + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha1-GV34mxRrS3izv4l/16JXyEZZ1AY=} + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-import-attributes@7.29.7': - resolution: {integrity: sha1-YRUmRRbpXq0PNaQXEJBmEuRH9gU=} + resolution: {integrity: sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha1-7mATSMNw+jNNIge+FYd3SWUh/VE=} + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha1-AcohtmjNghjJ5kDLbdiMVBKyyWo=} + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-jsx@7.27.1': - resolution: {integrity: sha1-L5vrXv8w+lB8VTLRB9qse4iPo0w=} + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha1-ypHvRjA1MESLkGZSusLp/plB9pk=} + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak=} + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha1-ubBws+M1cM2f0Hun+pHA3Te5r5c=} + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha1-YOIl7cvZimQDMqLnLdPmbxr1WHE=} + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha1-YRGiZbz7Ag6579D9/X0mQCue1sE=} + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io=} + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha1-DcZnHsDqIrbpShEU+FeXDNOd4a0=} + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha1-wc/a3DWmRiQAAfBhOCR7dBw02Uw=} + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-typescript@7.27.1': - resolution: {integrity: sha1-UUfSkGank0UPIgxj+jqUMbfm3Rg=} + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-arrow-functions@7.27.1': - resolution: {integrity: sha1-biBhBnujqwJm2DSp+UgRGW8qupo=} + resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/runtime@7.27.0': - resolution: {integrity: sha1-++58+XxwlRjswfWQmESB1UYNR2I=} + resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} engines: {node: '>=6.9.0'} '@babel/runtime@7.29.7': - resolution: {integrity: sha1-EgIkUMRaTabY2Ch7GKT/Ldsj92g=} + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} engines: {node: '>=6.9.0'} '@babel/template@7.29.7': - resolution: {integrity: sha1-TZ1ABPZFzdME3pWMclFieE7KxwA=} + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} '@babel/traverse@7.29.7': - resolution: {integrity: sha1-xHsHpBuV2gkH0Ca13YlNmN59Ly0=} + resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} engines: {node: '>=6.9.0'} '@babel/types@7.29.7': - resolution: {integrity: sha1-gAXjHYJxLuetrvbiPGO3GmJ3CpI=} + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha1-daLotRy3WKdVPWgEpZMteqznXDk=} + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} '@bcoe/v8-coverage@1.0.2': - resolution: {integrity: sha1-u+EtyltO+YOg0K9LB7m8kOoKuro=} + resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} '@braintree/sanitize-url@7.1.2': - resolution: {integrity: sha1-yiA1sP7+lWqGdv8Maa9z5gX82B8=} + resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} '@bramus/specificity@2.4.2': - resolution: {integrity: sha1-qo246xc/3ucyT4IoSDMQat7sxkg=} + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} hasBin: true '@chevrotain/types@11.1.2': - resolution: {integrity: sha1-6DoaJwTwxeSedZKyFAMaD0o01+U=} + resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} '@cliqz/adblocker-content@1.34.0': - resolution: {integrity: sha1-OgNHwbS8uEZ/AlRkpdwxCvHnFmg=} + resolution: {integrity: sha512-5LcV8UZv49RWwtpom9ve4TxJIFKd+bjT59tS/2Z2c22Qxx5CW1ncO/T+ybzk31z422XplQfd0ZE6gMGGKs3EMg==} deprecated: This project has been renamed to @ghostery/adblocker-content. Install using @ghostery/adblocker-content instead '@cliqz/adblocker-extended-selectors@1.34.0': - resolution: {integrity: sha1-1LBV/b7p1d/iKyt1pD3QuD9wnHw=} + resolution: {integrity: sha512-lNrgdUPpsBWHjrwXy2+Z5nX/Gy5YAvNwFMLqkeMdjzrybwPIalJJN2e+YtkS1I6mVmOMNppF5cv692OAVoI74g==} deprecated: This project has been renamed to @ghostery/adblocker-extended-selectors. Install using @ghostery/adblocker-extended-selectors instead '@cliqz/adblocker-puppeteer@1.23.8': - resolution: {integrity: sha1-50Y2zSAEWdFzSSnkFQSnaTlQQxE=} + resolution: {integrity: sha512-Ca1/DBqQXsOpKTFVAHX6OpLTSEupXmUkUWHj6iXhLLleC7RPISN5B0b801VDmaGRqoC5zKRxn0vYbIfpgCWVug==} deprecated: This project has been renamed to @ghostery/adblocker-puppeteer. Install using @ghostery/adblocker-puppeteer instead peerDependencies: puppeteer: '>5' '@cliqz/adblocker@1.34.0': - resolution: {integrity: sha1-KDXMJxiIrcO6xQ0C6+5zygxuxRg=} + resolution: {integrity: sha512-d7TeUl5t+TOMJe7/CRYtf+x6hbd8N25DtH7guQTIjjr3AFVortxiAIgNejGvVqy0by4eNByw+oVil15oqxz2Eg==} deprecated: This project has been renamed to @ghostery/adblocker. Install using @ghostery/adblocker instead '@codemirror/autocomplete@6.18.6': - resolution: {integrity: sha1-3iboZKHsgZKhskHrhq3bthKWTds=} + resolution: {integrity: sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==} '@codemirror/commands@6.8.1': - resolution: {integrity: sha1-Y59VWdLzPyWCokKcWMsMG5JcejA=} + resolution: {integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==} '@codemirror/lang-angular@0.1.4': - resolution: {integrity: sha1-W56UB4a6IBqaQuq225UB+j/iKSo=} + resolution: {integrity: sha512-oap+gsltb/fzdlTQWD6BFF4bSLKcDnlxDsLdePiJpCVNKWXSTAbiiQeYI3UmES+BLAdkmIC1WjyztC1pi/bX4g==} '@codemirror/lang-cpp@6.0.2': - resolution: {integrity: sha1-B2yYNAw76r3gFtfYPgjuvhclTvk=} + resolution: {integrity: sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg==} '@codemirror/lang-css@6.3.1': - resolution: {integrity: sha1-djykGu6BuyQxvlXjz8x8yOkUIaM=} + resolution: {integrity: sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==} '@codemirror/lang-go@6.0.1': - resolution: {integrity: sha1-WYIiyQ9W6uKNEQacYSymTQMGsFc=} + resolution: {integrity: sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg==} '@codemirror/lang-html@6.4.9': - resolution: {integrity: sha1-1YbyzJw0E5GuB9HXxUWZDfoGlyc=} + resolution: {integrity: sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==} '@codemirror/lang-java@6.0.1': - resolution: {integrity: sha1-A70GM02nyP653/bbAaxthb0uSLs=} + resolution: {integrity: sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==} '@codemirror/lang-javascript@6.2.4': - resolution: {integrity: sha1-7vIifRiSqudi86DyEvcr7IaKAsU=} + resolution: {integrity: sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA==} '@codemirror/lang-json@6.0.1': - resolution: {integrity: sha1-CgvnAaVhnEsPiZH5telf4z9GIzA=} + resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==} '@codemirror/lang-less@6.0.2': - resolution: {integrity: sha1-Lj2Co924cQ5kCWic1KKMZlWNDLg=} + resolution: {integrity: sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ==} '@codemirror/lang-liquid@6.2.3': - resolution: {integrity: sha1-y9s4y/LFm8M0KSQgQB+IqmxLSyc=} + resolution: {integrity: sha512-yeN+nMSrf/lNii3FJxVVEGQwFG0/2eDyH6gNOj+TGCa0hlNO4bhQnoO5ISnd7JOG+7zTEcI/GOoyraisFVY7jQ==} '@codemirror/lang-markdown@6.3.3': - resolution: {integrity: sha1-RX+TvYotQi2uBiWyC2Gt9cbSPe8=} + resolution: {integrity: sha512-1fn1hQAPWlSSMCvnF810AkhWpNLkJpl66CRfIy3vVl20Sl4NwChkorCHqpMtNbXr1EuMJsrDnhEpjZxKZ2UX3A==} '@codemirror/lang-php@6.0.1': - resolution: {integrity: sha1-+jTMdVYheDJYYaVzH3m9Yh9X/6o=} + resolution: {integrity: sha512-ublojMdw/PNWa7qdN5TMsjmqkNuTBD3k6ndZ4Z0S25SBAiweFGyY68AS3xNcIOlb6DDFDvKlinLQ40vSLqf8xA==} '@codemirror/lang-python@6.2.1': - resolution: {integrity: sha1-N8mTBxYRAVaGWpXFSKoO71VShjo=} + resolution: {integrity: sha512-IRjC8RUBhn9mGR9ywecNhB51yePWCGgvHfY1lWN/Mrp3cKuHr0isDKia+9HnvhiWNnMpbGhWrkhuWOc09exRyw==} '@codemirror/lang-rust@6.0.1': - resolution: {integrity: sha1-1oKfx7qjmhW80XSkGp4KG/fPa6g=} + resolution: {integrity: sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ==} '@codemirror/lang-sass@6.0.2': - resolution: {integrity: sha1-OMGwoTJsyfXLJ0HSzVHPvNerwLI=} + resolution: {integrity: sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==} '@codemirror/lang-sql@6.9.0': - resolution: {integrity: sha1-ATDaCcfYJ7CqX5WY9hvKl1pUgMc=} + resolution: {integrity: sha512-xmtpWqKSgum1B1J3Ro6rf7nuPqf2+kJQg5SjrofCAcyCThOe0ihSktSoXfXuhQBnwx1QbmreBbLJM5Jru6zitg==} '@codemirror/lang-vue@0.1.3': - resolution: {integrity: sha1-v3m5FSzBi0kD1kwfZ+GGrgRcipc=} + resolution: {integrity: sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug==} '@codemirror/lang-wast@6.0.2': - resolution: {integrity: sha1-0rFBdeXoDXh4y7sp4g7JDcEtOis=} + resolution: {integrity: sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q==} '@codemirror/lang-xml@6.1.0': - resolution: {integrity: sha1-4+eG4aif3JUg7+dcHW094cQOuRw=} + resolution: {integrity: sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==} '@codemirror/lang-yaml@6.1.2': - resolution: {integrity: sha1-yEKAxo+nr0VqNV2RGDteU36bcDg=} + resolution: {integrity: sha512-dxrfG8w5Ce/QbT7YID7mWZFKhdhsaTNOYjOkSIMt1qmC4VQnXSDSYVHHHn8k6kJUfIhtLo8t1JJgltlxWdsITw==} '@codemirror/language-data@6.5.1': - resolution: {integrity: sha1-XLlBPVIl7yeld8I3gbvAs2xYu2c=} + resolution: {integrity: sha512-0sWxeUSNlBr6OmkqybUTImADFUP0M3P0IiSde4nc24bz/6jIYzqYSgkOSLS+CBIoW1vU8Q9KUWXscBXeoMVC9w==} '@codemirror/language@6.11.1': - resolution: {integrity: sha1-fpGnnNBeJ41Xgv+bTK/ouDpplog=} + resolution: {integrity: sha512-5kS1U7emOGV84vxC+ruBty5sUgcD0te6dyupyRVG2zaSjhTDM73LhVKUtVwiqSe6QwmEoA4SCiU8AKPFyumAWQ==} '@codemirror/legacy-modes@6.5.1': - resolution: {integrity: sha1-a9E/rJT2eoJeVCABfg0vPDXQk0I=} + resolution: {integrity: sha512-DJYQQ00N1/KdESpZV7jg9hafof/iBNp9h7TYo1SLMk86TWl9uDsVdho2dzd81K+v4retmK6mdC7WpuOQDytQqw==} '@codemirror/lint@6.8.5': - resolution: {integrity: sha1-ntqoCOdk4o4HZlsBWVGTTI7DpBg=} + resolution: {integrity: sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==} '@codemirror/search@6.5.11': - resolution: {integrity: sha1-oyT/7jbgMrf2eqMcT7nz5vnz7WM=} + resolution: {integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==} '@codemirror/state@6.5.2': - resolution: {integrity: sha1-jso6ZCEqgzZ9yFR1t9eNXJtwdsY=} + resolution: {integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==} '@codemirror/theme-one-dark@6.1.2': - resolution: {integrity: sha1-/O+fnPwXoHg2y32hfJ9tcjEGTfg=} + resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==} '@codemirror/view@6.37.2': - resolution: {integrity: sha1-/ldmQaLoCaUJRlZ80rUoyG8iuIU=} + resolution: {integrity: sha512-XD3LdgQpxQs5jhOOZ2HRVT+Rj59O4Suc7g2ULvZ+Yi8eCkickrkZ5JFuoDhs2ST1mNI5zSsNYgR3NGa4OUrbnw==} '@colors/colors@1.5.0': - resolution: {integrity: sha1-u1BFecHK6SPmV2pPXaQ9Jfl729k=} + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha1-AGKcNaaI4FqIsc2mhPudXnPwAKE=} + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} '@csstools/color-helpers@6.0.2': - resolution: {integrity: sha1-gsWf0wZJzwtNPIIWBIl0hmbmVQs=} + resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} engines: {node: '>=20.19.0'} '@csstools/css-calc@3.1.1': - resolution: {integrity: sha1-eLSUmW2sQaAnl9zKGKw7RtJbP9c=} + resolution: {integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 '@csstools/css-color-parser@4.0.2': - resolution: {integrity: sha1-wn4Do3cNA1LbktZo1t3kJ6N4WeU=} + resolution: {integrity: sha512-0GEfbBLmTFf0dJlpsNU7zwxRIH0/BGEMuXLTCvFYxuL1tNhqzTbtnFICyJLTNK4a+RechKP75e7w42ClXSnJQw==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 '@csstools/css-parser-algorithms@4.0.0': - resolution: {integrity: sha1-4cZdwJN4tC8moRH8p/cHX8LCYWQ=} + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-tokenizer': ^4.0.0 '@csstools/css-syntax-patches-for-csstree@1.1.1': - resolution: {integrity: sha1-zkyaDL4wWQSR/NXAP+ZCbSK6ieQ=} + resolution: {integrity: sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==} peerDependencies: css-tree: ^3.2.1 peerDependenciesMeta: @@ -7215,747 +7233,747 @@ packages: optional: true '@csstools/css-tokenizer@4.0.0': - resolution: {integrity: sha1-eYozlQ0RImoOu2rK+mD1WUQkln8=} + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} engines: {node: '>=20.19.0'} '@dependents/detective-less@5.0.3': - resolution: {integrity: sha1-XGpYSerKwnzwplemXB2U/NHmhDs=} + resolution: {integrity: sha512-v6oD9Ukp+N7V4n6p5I/+mM5fIohSfkrDSGlFm5w/pYmchvbk+sMIHsLxrFJ5Lnujewj1BzWL0K84d88lwZAMQA==} engines: {node: '>=18'} '@develar/schema-utils@2.6.5': - resolution: {integrity: sha1-Ps4ixYOEAkGabgQl+FdCuWHZtsY=} + resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==} engines: {node: '>= 8.9.0'} '@discoveryjs/json-ext@0.5.7': - resolution: {integrity: sha1-HVcr+74Ut3BOC6Dzm3SBW4SHDXA=} + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} '@discoveryjs/json-ext@1.1.0': - resolution: {integrity: sha1-RLXONIXpUjWsoG5ijuqqPIFrxMw=} + resolution: {integrity: sha512-Xc3VhU02wqZ1HvHRJUwL09HkZSTvidqY5Ya0NXBSYOxAp+Ln9dcJr9fySI+CkONzP3PekQo9WdzCv0PGER/mOA==} engines: {node: '>=14.17.0'} '@elastic/elasticsearch@9.3.4': - resolution: {integrity: sha1-sSTzO6jd2YJneYZy26WtSu6dbIk=} + resolution: {integrity: sha512-Mp14fPEYx+WTfZdcvAaZ9WkLYGHQCbwMx6EP5VCucYdhv4cn/g2sbnMT5HzK+gX3XEpBnnkEK/+WysCKzxuo3A==} engines: {node: '>=18'} '@elastic/transport@9.3.5': - resolution: {integrity: sha1-wEGAeqNmt70vhhxFjKT9Qn4G5Rk=} + resolution: {integrity: sha512-hIMJbt1guqr3/N2zCN45k9hw9o78qcdsO0xietLe+Bfa+JL0YafHTgkWkM1oT3Ht5sGMJaDcJZiYomSMU6CtTA==} engines: {node: '>=20'} '@electron-toolkit/preload@3.0.2': - resolution: {integrity: sha1-7luzOrpIdBxbxTmppvqtC+RVRl4=} + resolution: {integrity: sha512-TWWPToXd8qPRfSXwzf5KVhpXMfONaUuRAZJHsKthKgZR/+LqX1dZVSSClQ8OTAEduvLGdecljCsoT2jSshfoUg==} peerDependencies: electron: '>=13.0.0' '@electron-toolkit/tsconfig@1.0.1': - resolution: {integrity: sha1-eASNMXjdempXNZDiMkDwdksMFK8=} + resolution: {integrity: sha512-M0Mol3odspvtCuheyujLNAW7bXq7KFNYVMRtpjFa4ZfES4MuklXBC7Nli/omvc+PRKlrklgAGx3l4VakjNo8jg==} peerDependencies: '@types/node': '*' '@electron/asar@3.4.1': - resolution: {integrity: sha1-TpGWpLVPuhjFbNjVysZ8W9xYgGU=} + resolution: {integrity: sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==} engines: {node: '>=10.12.0'} hasBin: true '@electron/fuses@1.8.0': - resolution: {integrity: sha1-rTTTzEcDsSWLg/aYmRcFLPwUkKA=} + resolution: {integrity: sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==} hasBin: true '@electron/get@2.0.3': - resolution: {integrity: sha1-+6VSaD04euvZ8/ytvK/I4S7k+WA=} + resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} engines: {node: '>=12'} '@electron/get@3.1.0': - resolution: {integrity: sha1-IsWgvZF6sgG63rd7xK0Yy6VMtOw=} + resolution: {integrity: sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==} engines: {node: '>=14'} '@electron/notarize@2.5.0': - resolution: {integrity: sha1-1NJTVq36Kd9Kdr1kqL00cjfNJR4=} + resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==} engines: {node: '>= 10.0.0'} '@electron/osx-sign@1.3.3': - resolution: {integrity: sha1-r3UVEEiDGNn3ZjaUr4WBlpDXVYM=} + resolution: {integrity: sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==} engines: {node: '>=12.0.0'} hasBin: true '@electron/rebuild@4.2.0': - resolution: {integrity: sha1-7nQpqXE00T6ze39RfXN+AtHeqHc=} + resolution: {integrity: sha512-RKL/O+jGoXJMxrx/5771y1n0xTKmFuOYGO3gMmwypBM6rsH0kou0mswwdXA2JrhIkE4xyC7v9vGk0n6NPzgOxQ==} engines: {node: '>=22.12.0'} hasBin: true '@electron/universal@2.0.3': - resolution: {integrity: sha1-FoDfbO2PEoyg/yTinCFl1B14s84=} + resolution: {integrity: sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==} engines: {node: '>=16.4'} '@electron/windows-sign@1.2.2': - resolution: {integrity: sha1-jOqtUtXB6xhwL0gQPV87x8M4+p0=} + resolution: {integrity: sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==} engines: {node: '>=14.14'} hasBin: true '@emnapi/core@1.11.0': - resolution: {integrity: sha1-imVQQtu7ENAmZnDJkDw0pwAccFs=} + resolution: {integrity: sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q==} '@emnapi/core@1.11.1': - resolution: {integrity: sha1-ueEGTzprFjHiQeY460jXNr/TcqY=} + resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} '@emnapi/runtime@1.11.0': - resolution: {integrity: sha1-zhazZ0/3Jmu/UPlmi96KBPMBTU4=} + resolution: {integrity: sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg==} '@emnapi/runtime@1.11.1': - resolution: {integrity: sha1-WPHz1dgamxL3k6tojJY3GQECfCQ=} + resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} '@emnapi/runtime@1.4.0': - resolution: {integrity: sha1-j1Cb8QWaVVHI/oKaHE6R2zX9++4=} + resolution: {integrity: sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==} '@emnapi/wasi-threads@1.2.2': - resolution: {integrity: sha1-TJO+z1v6OxPRu9zAau44MhrYE5o=} + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} '@esbuild-plugins/node-globals-polyfill@0.2.3': - resolution: {integrity: sha1-DkSXorU8npSF4Um8kt2yKEONa88=} + resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==} peerDependencies: esbuild: '*' '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha1-xxhKMmUz/N8bjuBzPiHHE7l1V18=} + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha1-gPy+NhMOWLdnBRHoiLjoiiWe12w=} + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] '@esbuild/aix-ppc64@0.27.7': - resolution: {integrity: sha1-grdPkqp41yC3FBYpOfskjJCt31M=} + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] '@esbuild/aix-ppc64@0.28.1': - resolution: {integrity: sha1-egGo0uwvuy2seK2tCbD6eB5Agr4=} + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha1-Cdm0NXeA2p6jp9+4M6Hx/0ObQFI=} + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha1-iqSWX40KeYLcIXNL9mATI6Ztp1I=} + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] '@esbuild/android-arm64@0.27.7': - resolution: {integrity: sha1-94y4oxIfwgWlMoWtskly2zhdGF0=} + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] '@esbuild/android-arm64@0.28.1': - resolution: {integrity: sha1-tUCifRTkr9BYSWpNvsTT9BTbEQo=} + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} engines: {node: '>=18'} cpu: [arm64] os: [android] '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha1-mwQ4T7dxkm36bXrQQyTssqubLig=} + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha1-MAcSEB9/UPHSYnoWLm4JsQm2dno=} + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] '@esbuild/android-arm@0.27.7': - resolution: {integrity: sha1-WT4QoUULv8rGyzIfYfRoRTusIJ0=} + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} engines: {node: '>=18'} cpu: [arm] os: [android] '@esbuild/android-arm@0.28.1': - resolution: {integrity: sha1-cEvSl95tdi3lTqu+r79V9nVqvi8=} + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} engines: {node: '>=18'} cpu: [arm] os: [android] '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha1-KZGOwtt1TO3LbBsE3ozWVHr2Rh4=} + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha1-h9+ycWEgK9yVjvSLthsJx1j67hY=} + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] '@esbuild/android-x64@0.27.7': - resolution: {integrity: sha1-RTFD0HMyYDPS0iyvnkjeS64nSwc=} + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} engines: {node: '>=18'} cpu: [x64] os: [android] '@esbuild/android-x64@0.28.1': - resolution: {integrity: sha1-0csWbTSw+/D+irRgpVlPJKN4cB4=} + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} engines: {node: '>=18'} cpu: [x64] os: [android] '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha1-5JW1OWYOUWkPOSivUKdvsKbM/yo=} + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha1-eRl4mOwf90XSHAceHHzDyALwwf0=} + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] '@esbuild/darwin-arm64@0.27.7': - resolution: {integrity: sha1-byMAD7m0C34Et9BgbAaTvQYy8yI=} + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] '@esbuild/darwin-arm64@0.28.1': - resolution: {integrity: sha1-EDSyZFf8iGNo/mG70J9lP2r6jlQ=} + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha1-wTg4+lc3KDmr3dyR1xVCzuouHiI=} + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha1-FGQAqFYhM/RcTS6tzzfd0JcYB54=} + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] '@esbuild/darwin-x64@0.27.7': - resolution: {integrity: sha1-Jzk90YuxJjxmOXnF8VduAMLQJL4=} + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] '@esbuild/darwin-x64@0.28.1': - resolution: {integrity: sha1-ZVVqQyoeTXIDLYIYwZMvzKGkl3I=} + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha1-ZGuYmqIL+J/Qcd1dv61po1QuVQ4=} + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha1-HF+bpyBuFY/SskxZ+i0si7R8oP4=} + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-arm64@0.27.7': - resolution: {integrity: sha1-IuRjj6UC0cACcHcyTJdkDjrfOmI=} + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-arm64@0.28.1': - resolution: {integrity: sha1-LmHgWS+QMNfj2uGO4l68U1kYrvY=} + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha1-qmFc/ICvlU00WJBuOMoiwYz1wmE=} + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha1-6mMfSja+qsS5J5+g/MbKKerusrM=} + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] '@esbuild/freebsd-x64@0.27.7': - resolution: {integrity: sha1-kiS45P6pJM4hlOPvw+muv4IhktY=} + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] '@esbuild/freebsd-x64@0.28.1': - resolution: {integrity: sha1-yV7CiZWe+AecTcqBeh4sS+Zrm9M=} + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha1-cKxvoU9ct+H3+Ie8/7aArQmSK1s=} + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha1-4QZrzlg5TxsRQd7shVel8KIvWXc=} + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] '@esbuild/linux-arm64@0.27.7': - resolution: {integrity: sha1-T10cJ1J9gXs1aEriFBnlfCvaCWY=} + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} engines: {node: '>=18'} cpu: [arm64] os: [linux] '@esbuild/linux-arm64@0.28.1': - resolution: {integrity: sha1-QLIhdd2gYYLz7oFBGGxf8wTEpxc=} + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha1-/G/RGorKVsH284lPK+oEefj2Jrk=} + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha1-RSzWayCTLQi9xTqLYcDjC69DSLk=} + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] '@esbuild/linux-arm@0.27.7': - resolution: {integrity: sha1-uenQcMjBwESc8Ssg6sN9cKRZWSE=} + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} engines: {node: '>=18'} cpu: [arm] os: [linux] '@esbuild/linux-arm@0.28.1': - resolution: {integrity: sha1-wJoPZ5F1kqwN6JKpvk04FN69Kmw=} + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha1-MnH1Oz+T49CT1RjRZJ1taNNG7eI=} + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha1-sk+KzEW89UGSx/LzvhtT5lUer+A=} + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] '@esbuild/linux-ia32@0.27.7': - resolution: {integrity: sha1-P4D7aWqpYFGpQEfzXIWwiyHDb54=} + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] '@esbuild/linux-ia32@0.28.1': - resolution: {integrity: sha1-pYD5xnZ5eDOJHlGfx6EzfIr9jbM=} + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha1-7WLgQjjFcCauqDHFoTC3PA+fJt8=} + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha1-+c//p/yDIlcfvEyLMmjK8VvYGtA=} + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] '@esbuild/linux-loong64@0.27.7': - resolution: {integrity: sha1-m+HywoIQsT67QVYiG7o1b+FnUgU=} + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} engines: {node: '>=18'} cpu: [loong64] os: [linux] '@esbuild/linux-loong64@0.28.1': - resolution: {integrity: sha1-RkUs8yHcf56Rwvp4Cla7Vuec1os=} + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha1-55uOtIvzsQb63sGsgkD7l7TmTL4=} + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha1-V1oUvXRkT/q4ka3H1+YNJ1KW8s0=} + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] '@esbuild/linux-mips64el@0.27.7': - resolution: {integrity: sha1-SrXuZ6Pfy8tej9eIPa5uc1sRY7g=} + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] '@esbuild/linux-mips64el@0.28.1': - resolution: {integrity: sha1-QhGzGE3WYI9T3LIuOfXTTuCIUsg=} + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha1-XyIDhgoUO5kZ04PvdXNSH7FUw+Q=} + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha1-dbmccKlfvV93OddpK+/mBgFZGGk=} + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] '@esbuild/linux-ppc64@0.27.7': - resolution: {integrity: sha1-2seMaJ9kmUWcQyHlwVAywSMH5+o=} + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] '@esbuild/linux-ppc64@0.28.1': - resolution: {integrity: sha1-aXhXwqYcubC2u2ZS5AwdxeHKjl0=} + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha1-B7yv2ZMi1a9i9hjLnmqbf0u4Jdw=} + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha1-LjJZRAMhpE553fdTXDJQV9qHXNY=} + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] '@esbuild/linux-riscv64@0.27.7': - resolution: {integrity: sha1-BQ99OzVcOpgwjpNbxNYyXakbACc=} + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] '@esbuild/linux-riscv64@0.28.1': - resolution: {integrity: sha1-0ZKUPrFGpArExkl9DPe+NbmGvwg=} + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha1-t8z2hnUdaj5EuGJ6uryL4+9i2N4=} + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha1-F2dsq7/lko2lsqDW311YzQjbJmM=} + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] '@esbuild/linux-s390x@0.27.7': - resolution: {integrity: sha1-1h9xXOYdQ/5YRK0Nj0Y/iMvk/vY=} + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] '@esbuild/linux-s390x@0.28.1': - resolution: {integrity: sha1-rOoDVtoODrwI+Xz3ucLkAeHmSNw=} + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} engines: {node: '>=18'} cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha1-bY8Mdo4HDmQwmvgAS7lOaKsrs7A=} + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha1-BYN3VoXKggZtBMNQfwlSTTzXowY=} + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] '@esbuild/linux-x64@0.27.7': - resolution: {integrity: sha1-yo4apHj8ggkle/Osj3nE3CmC8yo=} + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} engines: {node: '>=18'} cpu: [x64] os: [linux] '@esbuild/linux-x64@0.28.1': - resolution: {integrity: sha1-bww84MtkxTS3DExF7LLBbTTjXf0=} + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} engines: {node: '>=18'} cpu: [x64] os: [linux] '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha1-8ExAScsuJS/paxb+2Q9wdGsT9KQ=} + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] '@esbuild/netbsd-arm64@0.27.7': - resolution: {integrity: sha1-FlDywblI3us++Ujy/DBhRyPAlpA=} + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] '@esbuild/netbsd-arm64@0.28.1': - resolution: {integrity: sha1-i813B3oNzjN4tXT+2ybSolO3PTY=} + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha1-u+Qw9g03jsuI3sshnGAmZzh6YEc=} + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha1-d9oNCg2CbXySHuo9QCklSLJYoHY=} + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] '@esbuild/netbsd-x64@0.27.7': - resolution: {integrity: sha1-ZXcqs0LEszGb8HBaIRBQqsG24yA=} + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] '@esbuild/netbsd-x64@0.28.1': - resolution: {integrity: sha1-5/sqAemcgwyU5mI82f77TI+1g0c=} + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha1-Ypb1hnrt7yioGyKrIAnHhqlS3M0=} + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] '@esbuild/openbsd-arm64@0.27.7': - resolution: {integrity: sha1-N+18+mZUnXlVhS/ON9DD3k5xXqE=} + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] '@esbuild/openbsd-arm64@0.28.1': - resolution: {integrity: sha1-xSkJNy24uG4sVeBaiUADO1Zgo7I=} + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha1-mdHPKTcnlWDSEEgh9czOIgyyr3A=} + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha1-+NIzAzYOJ7Fs8GWyO7/0PBQUJnk=} + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] '@esbuild/openbsd-x64@0.27.7': - resolution: {integrity: sha1-Ab89OFhV71DLM9t8S1L5V8NM0Xk=} + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] '@esbuild/openbsd-x64@0.28.1': - resolution: {integrity: sha1-xCe5vlpkwmL/mn63C1+7qt9EbGw=} + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha1-SeC3aHRKOSS+DX/ZfdbOmykj2I0=} + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] '@esbuild/openharmony-arm64@0.27.7': - resolution: {integrity: sha1-bB+Us0CGWZqr2k6sj2OClLmHdBA=} + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] '@esbuild/openharmony-arm64@0.28.1': - resolution: {integrity: sha1-3JsUe6yi5sSzyFVxdB70hgpIkJc=} + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha1-CHQVEsENUpVmurqDe0/gUsjzSHs=} + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha1-pu19Z3jWflKMgfsWWyP0kRubE9Y=} + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] '@esbuild/sunos-x64@0.27.7': - resolution: {integrity: sha1-Sw3ReuCmlB0tD9NakGOSUXBxqQ0=} + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] '@esbuild/sunos-x64@0.28.1': - resolution: {integrity: sha1-zoZtEt8TwV5MmfBzo9Rm9uBkmzo=} + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} engines: {node: '>=18'} cpu: [x64] os: [sunos] '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha1-Z1tzhTmEESQHNQFhRKsumaYPx10=} + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha1-msFMN44bZTrxfQjn0840yu9YcyM=} + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] '@esbuild/win32-arm64@0.27.7': - resolution: {integrity: sha1-NBk6tVZdb/aMqSisBL51ECzLLnc=} + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] '@esbuild/win32-arm64@0.28.1': - resolution: {integrity: sha1-dGjjaS0B1inVlB5dg4F7uA+eObQ=} + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha1-G/w86YqmypoJaeTSr3IUTFnBGTs=} + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha1-kYlC3LuzXMFPyjmvuRteaj0Scmc=} + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] '@esbuild/win32-ia32@0.27.7': - resolution: {integrity: sha1-62fw5EglFdjBiU7eYxwyek2p/E0=} + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] '@esbuild/win32-ia32@0.28.1': - resolution: {integrity: sha1-pbwAY/sryrbQ7WPyoVN5WLwmnsY=} + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha1-rK01HVgtFXuxRVNdsqb/U91RS1w=} + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha1-m9rYF2vngRrRSNH4dyNZBB9GxsU=} + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] '@esbuild/win32-x64@0.27.7': - resolution: {integrity: sha1-j+MLMIi4m0hzw6bMh1l645IMCos=} + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} engines: {node: '>=18'} cpu: [x64] os: [win32] '@esbuild/win32-x64@0.28.1': - resolution: {integrity: sha1-EAZO5E9DR7kMmgK0Rrv4CpFjKxI=} + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} engines: {node: '>=18'} cpu: [x64] os: [win32] '@eslint-community/eslint-utils@4.9.1': - resolution: {integrity: sha1-TpCvZ7xR3e5s3vUoTt9XLsN2tZU=} + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 '@eslint-community/regexpp@4.12.2': - resolution: {integrity: sha1-vM32Fbz3tujbgw7AuNIcmiXeWXs=} + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/config-array@0.23.5': - resolution: {integrity: sha1-VuhtJDBJGV2KzAwGobPf3D+j3pU=} + resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/config-helpers@0.6.0': - resolution: {integrity: sha1-75o2iB0539Xb6sIrDamX+r+wiwM=} + resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/core@1.2.1': - resolution: {integrity: sha1-wdp80bgvqHh/mLVin7gRhIobY84=} + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/object-schema@3.0.5': - resolution: {integrity: sha1-iOm/TRHSsZwILnjr586IckpesJE=} + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/plugin-kit@0.7.2': - resolution: {integrity: sha1-Swli8/LHzovJiz7P40UlwJ0styk=} + resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@esm-bundle/chai@4.3.4-fix.0': - resolution: {integrity: sha1-MITP9+tG10F0n0fzpI273LrzCpI=} + resolution: {integrity: sha512-26SKdM4uvDWlY8/OOOxSB1AqQWeBosCX3wRYUZO7enTAj03CtVxIiCimYVG2WpULcyV51qapK4qTovwkUr5Mlw==} '@exodus/bytes@1.15.0': - resolution: {integrity: sha1-VEeeD0BsutAk1v4cMZDsykRo3zs=} + resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: '@noble/hashes': ^1.8.0 || ^2.0.0 @@ -7964,401 +7982,401 @@ packages: optional: true '@floating-ui/core@1.7.1': - resolution: {integrity: sha1-GrxrFX1Kk2F0+dvQeCeMOoHIvGs=} + resolution: {integrity: sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==} '@floating-ui/dom@1.7.1': - resolution: {integrity: sha1-dqTjy/egjt9Aw0cRz2TgzIBT2RI=} + resolution: {integrity: sha512-cwsmW/zyw5ltYTUeeYJ60CnQuPqmGwuGVhG9w0PRaRKkAyi38BT5CKrpIbb+jtahSwUl04cWzSx9ZOIxeS6RsQ==} '@floating-ui/utils@0.2.9': - resolution: {integrity: sha1-UN6jYWvIGR+44RIoO0nq/wPnhCk=} + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} '@fluid-tools/version-tools@0.57.0': - resolution: {integrity: sha1-mIm4/j/F7OZAvfhI5T7RaETHbFw=} + resolution: {integrity: sha512-SViGNYQff84ZHlra9WI8VJe70mnPKbFByuBnA7ZFThGUKPg5ZTmdstkOjaYluQXcz2SPCFnJ/FDNTuXNQPHOjQ==} engines: {node: '>=20.15.1'} hasBin: true '@fluidframework/build-tools@0.57.0': - resolution: {integrity: sha1-vtsSABTFzdB/oGQET7jlDV2PN9E=} + resolution: {integrity: sha512-zFCXXM9Gj+gCNAH9AzrgrA0svAm8kcXzrMGkWB98rDjOoYtBDC4MJg4EsM/fzlwG1Qc7ms+yGUYtMOoKJAqwUA==} engines: {node: '>=20.15.1'} hasBin: true '@fontsource/lato@5.2.5': - resolution: {integrity: sha1-z1UvE6Vpr/KGJdnTfbNcomvn1ZQ=} + resolution: {integrity: sha512-d8aogKOul7a3eYG3UzTG8PB6A0D+6tlkFQCACmKQ7qTwB3XS6QmkSW1L0vYbVE9CfCRq/Zpb5sG3gNA6yJea/A==} '@github/copilot-darwin-arm64@1.0.69': - resolution: {integrity: sha1-kNIn7K8Qh/LeBLWWGloPDMsZqc8=} + resolution: {integrity: sha512-LpaVS2o21BbYTFUlkqdwUJXqE0l1Lp50Cb/EHru3z+5n5x7zNUU5IlPxdMg5gHMVw78clnMn2zSJbe5hYFyDDQ==} cpu: [arm64] os: [darwin] hasBin: true '@github/copilot-darwin-x64@1.0.69': - resolution: {integrity: sha1-2YJvB5/7imW621ygcju3G1bsuDg=} + resolution: {integrity: sha512-QL5bsmnYqliBVIEE8RY91e6yAr39c2TNvJc/5IzoaKMlQ9MCrD9xakBJwd7LOS0SiOwRE4fqn8pUA4L1+UU5fg==} cpu: [x64] os: [darwin] hasBin: true '@github/copilot-linux-arm64@1.0.69': - resolution: {integrity: sha1-ZpLeYjWbYZrWjabxU1ZB1YAWZEc=} + resolution: {integrity: sha512-SOibp0I6APLoY2KkccbNOISpbhE3lp41s9fM3eANqfdoHQLsgBopfk4ruBP8k/DzjQA6t4MrbV8v6dLixAqv3w==} cpu: [arm64] os: [linux] libc: [glibc] hasBin: true '@github/copilot-linux-x64@1.0.69': - resolution: {integrity: sha1-fAlDxPhvlGSb1qd8L7uoFgfKqoQ=} + resolution: {integrity: sha512-URT7UaR3l1VAAtEpbKjybup2vxHTMSfDTVlu0jinu1O2nWxFOeQ9N4BQgRdcCB7wDu3N8Yz47o3fV1Gob6Z1Yw==} cpu: [x64] os: [linux] libc: [glibc] hasBin: true '@github/copilot-linuxmusl-arm64@1.0.69': - resolution: {integrity: sha1-61lchlSHZKii1/g0H0qneTt9FCQ=} + resolution: {integrity: sha512-Y6DY9RkyWV6l+S0cNz4d+AkUa38goNV5StQH3j8OoVrndK3+RgQeUjG1XpJ//PzXEXi4vQ0cZuc9XzFj/TY7tw==} cpu: [arm64] os: [linux] libc: [musl] hasBin: true '@github/copilot-linuxmusl-x64@1.0.69': - resolution: {integrity: sha1-9/lIMVBp2XxtMetsizMFlQsP/Ws=} + resolution: {integrity: sha512-h0aNgUWRu70Tgp4/7Vdqa/4XKJi96wP32R1PoKeXkz1QNxb6i/IQxhoCjjS+xFon9e2kefKdF8pDrDtUJjsiBQ==} cpu: [x64] os: [linux] libc: [musl] hasBin: true '@github/copilot-sdk@1.0.5': - resolution: {integrity: sha1-ov0xdFEekFOqPdVPhFDgWdZ0LsE=} + resolution: {integrity: sha512-N6Yk2DcpM9orYXWGBcQs5R0FdiVYrCn7UHQ206cUkfJengKYjgcd3f78BvVB6Dot3j0TvO04FnQ85K9/kbRRag==} engines: {node: ^20.19.0 || >=22.12.0} '@github/copilot-win32-arm64@1.0.69': - resolution: {integrity: sha1-xO/hI91RvyW8gXMLdESZUxVaEtw=} + resolution: {integrity: sha512-7DMoC1uwt01yZf48xq8MgKdnHacXabfsGsOizbgmrlZMfvQQofrF55x1Efu3BKsEKFGRl4fCLjJHJYCz/nWsHg==} cpu: [arm64] os: [win32] hasBin: true '@github/copilot-win32-x64@1.0.69': - resolution: {integrity: sha1-G5E+QYyQAT1orQcNrlfB8NolDso=} + resolution: {integrity: sha512-5uD1/k6oVzqRhiS9jLrySGa20HjItqUJsaMe+bV6eYT7zQPF/74xihEjxMm3/bJcATW2SesiYQxyNzTcKm3qRA==} cpu: [x64] os: [win32] hasBin: true '@github/copilot@1.0.69': - resolution: {integrity: sha1-rILueCbIPnVDqzJI4RhDthM/Vs4=} + resolution: {integrity: sha512-sri6PKtRQu7mfok3eV505fmYo6M6PGZpB1vd+QbMEm2rEZaKE2+wJGCAtkpQNKfAWBvvoW/C94IaeFyyulUvqQ==} hasBin: true '@hapi/bourne@3.0.0': - resolution: {integrity: sha1-8R/ffdpi/o4zb6fGZC2QQfMDVtc=} + resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} '@hono/node-server@1.19.14': - resolution: {integrity: sha1-4w+ES8d+POe+RCqsOx9zrYtY0YE=} + resolution: {integrity: sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==} engines: {node: '>=18.14.1'} peerDependencies: hono: '>=4.12.8 <5.0.0' '@huggingface/jinja@0.5.9': - resolution: {integrity: sha1-KU90H6CYwrMXN4i0TKZRlYv/o20=} + resolution: {integrity: sha512-uWTG+l3VJRsl7EXxYizuL3P+cCPoc3cRqbWWRcQN0FhejRfbdq0RNhCmbY/YDtnTcz9icdLYuLDjsnz4d8JMuw==} engines: {node: '>=18'} '@huggingface/transformers@3.8.1': - resolution: {integrity: sha1-MX2gA4ZTIjlnlhcyI+6q8PlyPwo=} + resolution: {integrity: sha512-tsTk4zVjImqdqjS8/AOZg2yNLd1z9S5v+7oUPpXaasDRwEDhB+xnglK1k5cad26lL5/ZIaeREgWWy0bs9y9pPA==} '@humanfs/core@0.19.2': - resolution: {integrity: sha1-qCcsoDsqz0kmcCIrIyC2xCG/3mA=} + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} engines: {node: '>=18.18.0'} '@humanfs/node@0.16.8': - resolution: {integrity: sha1-j4AMzME/T4zTEW4tnAqUk52j4+0=} + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} engines: {node: '>=18.18.0'} '@humanfs/types@0.15.0': - resolution: {integrity: sha1-8qCfYgEjkLK/8/xvskjd7IwJoJA=} + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha1-r1smkaIrRL6EewyoFkHF+2rQFyw=} + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} '@humanwhocodes/retry@0.4.3': - resolution: {integrity: sha1-wrnS43TuYsWG062+qHGZsdenpro=} + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} '@iconify/types@2.0.0': - resolution: {integrity: sha1-qw6epoHWyKEhTzDNdB/jogzFf1c=} + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} '@iconify/utils@3.1.3': - resolution: {integrity: sha1-ce/Wj57S6jyR/ToBwAMvcKhwJ7c=} + resolution: {integrity: sha512-LPKOXPn/zV+zis1oOfGWogaXVpqUybF3ZS6SCZIsz8vg0ivVp9+fVqyYB7xq0aiST/VhUQYGO1qo6uoYSiEJqw==} '@img/colour@1.1.0': - resolution: {integrity: sha1-sMLC+mYa33Xv/WtJZEl82AAQu50=} + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} '@img/sharp-darwin-arm64@0.33.5': - resolution: {integrity: sha1-71taB4YoBfHoFFo3fIum6YgTygg=} + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] '@img/sharp-darwin-arm64@0.34.5': - resolution: {integrity: sha1-bgcy3K3hJrZnCveqFwYLkmg16oY=} + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] '@img/sharp-darwin-x64@0.33.5': - resolution: {integrity: sha1-4D00Uc2eZk+qcpSMxwpAPqQGPWE=} + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] '@img/sharp-darwin-x64@0.34.5': - resolution: {integrity: sha1-Gbwd1uum1alig0mLnJ9AEYDunHs=} + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] '@img/sharp-libvips-darwin-arm64@1.0.4': - resolution: {integrity: sha1-RHxQJnAMAamTx4BOuK9fbphowH8=} + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} cpu: [arm64] os: [darwin] '@img/sharp-libvips-darwin-arm64@1.2.4': - resolution: {integrity: sha1-KJTAy4fUInbDiJlC6OLbUXpJLEM=} + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} cpu: [arm64] os: [darwin] '@img/sharp-libvips-darwin-x64@1.0.4': - resolution: {integrity: sha1-4EVvj3xiP52/vcdzg8qnIoHYYGI=} + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} cpu: [x64] os: [darwin] '@img/sharp-libvips-darwin-x64@1.2.4': - resolution: {integrity: sha1-5jaB9FOalK+c0XJG7YiBc0OG+Mw=} + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] os: [darwin] '@img/sharp-libvips-linux-arm64@1.0.4': - resolution: {integrity: sha1-l5scZsmpH3/yiTVW7yZ/kOvlFwQ=} + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] libc: [glibc] '@img/sharp-libvips-linux-arm64@1.2.4': - resolution: {integrity: sha1-sbKIs2hks7zlRa2R+m2tzxpK0xg=} + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] libc: [glibc] '@img/sharp-libvips-linux-arm@1.0.5': - resolution: {integrity: sha1-mfki1OFSFuwgXctokbchv9KIQZc=} + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] libc: [glibc] '@img/sharp-libvips-linux-arm@1.2.4': - resolution: {integrity: sha1-uSYN0evm+eO9vL3KydKsEl81hS0=} + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] libc: [glibc] '@img/sharp-libvips-linux-ppc64@1.2.4': - resolution: {integrity: sha1-S4Ps8qgpBXIis4hIx7Ai57TQeqc=} + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] os: [linux] libc: [glibc] '@img/sharp-libvips-linux-riscv64@1.2.4': - resolution: {integrity: sha1-iAtGeACeWiCArxkjMrALCq+KSN4=} + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} cpu: [riscv64] os: [linux] libc: [glibc] '@img/sharp-libvips-linux-s390x@1.0.4': - resolution: {integrity: sha1-+KXrHzdKCC9ys/ReL7JbgRiopc4=} + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] libc: [glibc] '@img/sharp-libvips-linux-s390x@1.2.4': - resolution: {integrity: sha1-dPNDyOEPrYIbOPdc7TBIiTncWew=} + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] libc: [glibc] '@img/sharp-libvips-linux-x64@1.0.4': - resolution: {integrity: sha1-1MRhnN0Vd3SQbhV3DuEZkxx+9eA=} + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] libc: [glibc] '@img/sharp-libvips-linux-x64@1.2.4': - resolution: {integrity: sha1-30GD6L2EEPfWG2aFmjXt6rClMc4=} + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] libc: [glibc] '@img/sharp-libvips-linuxmusl-arm64@1.0.4': - resolution: {integrity: sha1-Fmd42g9I3Sve0fowM87mtYjw1dU=} + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] libc: [musl] '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - resolution: {integrity: sha1-yNa0ghHfZxN1QQB+6NG3sfjKjgY=} + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.0.4': - resolution: {integrity: sha1-k3lOTXcgsHf8rT4CmC8vHCRnUf8=} + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.2.4': - resolution: {integrity: sha1-vhHHW+5bCAy+4xoVOod5RI+Rn3U=} + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] libc: [musl] '@img/sharp-linux-arm64@0.33.5': - resolution: {integrity: sha1-7bBpfnqCecn8gppg/DVkTEg5uyI=} + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] libc: [glibc] '@img/sharp-linux-arm64@0.34.5': - resolution: {integrity: sha1-eqd2TvnAAfFeYQVG1C/OVpEXkMw=} + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] libc: [glibc] '@img/sharp-linux-arm@0.33.5': - resolution: {integrity: sha1-QiwaNS57WDKEJXfcUWArzVtvXv8=} + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] libc: [glibc] '@img/sharp-linux-arm@0.34.5': - resolution: {integrity: sha1-X7DDaV3RJSLTnD/3pryBZGF4Cg0=} + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] libc: [glibc] '@img/sharp-linux-ppc64@0.34.5': - resolution: {integrity: sha1-nCE6gVIKIMr2aXjz1MB0Vv8uCBM=} + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] libc: [glibc] '@img/sharp-linux-riscv64@0.34.5': - resolution: {integrity: sha1-zdKBgndOrb4E9iZ1oWqrvMuDP2A=} + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [riscv64] os: [linux] libc: [glibc] '@img/sharp-linux-s390x@0.33.5': - resolution: {integrity: sha1-9cB3kmtI6X5KBNAE368XWXIFlmc=} + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] libc: [glibc] '@img/sharp-linux-s390x@0.34.5': - resolution: {integrity: sha1-k+rGAbnzKbsnkX4OGQmMci1jDfc=} + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] libc: [glibc] '@img/sharp-linux-x64@0.33.5': - resolution: {integrity: sha1-2Abgr9ca5ndcyH8NqPLQOnwiCcs=} + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] libc: [glibc] '@img/sharp-linux-x64@0.34.5': - resolution: {integrity: sha1-VavHzXVP/KUAK2wrcZq9/IRoGag=} + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] libc: [glibc] '@img/sharp-linuxmusl-arm64@0.33.5': - resolution: {integrity: sha1-JSl1uRWJT7MVr13uoXRlHiCNPWs=} + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] libc: [musl] '@img/sharp-linuxmusl-arm64@0.34.5': - resolution: {integrity: sha1-1lFe6XG7YvcwAaSCm52GWhG3cIY=} + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] libc: [musl] '@img/sharp-linuxmusl-x64@0.33.5': - resolution: {integrity: sha1-P0YJrF2O+Ox9re6AtWCWGmD9T0g=} + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] libc: [musl] '@img/sharp-linuxmusl-x64@0.34.5': - resolution: {integrity: sha1-2Xl4rsfFIS+ZlxTy9bc2RX4S7p8=} + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] libc: [musl] '@img/sharp-wasm32@0.33.5': - resolution: {integrity: sha1-b0TzKDBp2TW7XKWBMVNXLz5vYaE=} + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] '@img/sharp-wasm32@0.34.5': - resolution: {integrity: sha1-LxWAOqYm+MWd18nQu8dm8atSz6A=} + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] '@img/sharp-win32-arm64@0.34.5': - resolution: {integrity: sha1-Nwbp46w1/d/ByH+U6Enxt1MHzgo=} + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] '@img/sharp-win32-ia32@0.33.5': - resolution: {integrity: sha1-GgyDmkDFNR6YhWKMhfLl39ArUqk=} + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] '@img/sharp-win32-ia32@0.34.5': - resolution: {integrity: sha1-C3EWZZmwSeAy8IX7kmPgL05HiN4=} + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] '@img/sharp-win32-x64@0.33.5': - resolution: {integrity: sha1-VvAJYv8MTg65PTSgR9KfqZXj40I=} + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] '@img/sharp-win32-x64@0.34.5': - resolution: {integrity: sha1-qB/7AOaSZ80KHWJurtuKhDCysvg=} + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] '@inquirer/checkbox@4.2.1': - resolution: {integrity: sha1-RRJaMvJ8XP2Coj1ez0m03BN+Ekc=} + resolution: {integrity: sha512-bevKGO6kX1eM/N+pdh9leS5L7TBF4ICrzi9a+cbWkrxeAeIcwlo/7OfWGCDERdRCI2/Q6tjltX4bt07ALHDwFw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -8367,7 +8385,7 @@ packages: optional: true '@inquirer/confirm@5.1.15': - resolution: {integrity: sha1-xQLVxkL9ugZpsXRCtAeUyXvbzLQ=} + resolution: {integrity: sha512-SwHMGa8Z47LawQN0rog0sT+6JpiL0B7eW9p1Bb7iCeKDGTI5Ez25TSc2l8kw52VV7hA4sX/C78CGkMrKXfuspA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -8376,7 +8394,7 @@ packages: optional: true '@inquirer/core@10.1.15': - resolution: {integrity: sha1-j+tp/VNnhhgaK2v7hNhnT6qdLlk=} + resolution: {integrity: sha512-8xrp836RZvKkpNbVvgWUlxjT4CraKk2q+I3Ksy+seI2zkcE+y6wNs1BVhgcv8VyImFecUhdQrYLdW32pAjwBdA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -8385,7 +8403,7 @@ packages: optional: true '@inquirer/editor@4.2.17': - resolution: {integrity: sha1-WvFvbyT2L1Uv6wXHvsLcB0MjBYQ=} + resolution: {integrity: sha512-r6bQLsyPSzbWrZZ9ufoWL+CztkSatnJ6uSxqd6N+o41EZC51sQeWOzI6s5jLb+xxTWxl7PlUppqm8/sow241gg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -8394,7 +8412,7 @@ packages: optional: true '@inquirer/expand@4.0.17': - resolution: {integrity: sha1-toj0oaZdryv3ehHedzR2Z2nM40M=} + resolution: {integrity: sha512-PSqy9VmJx/VbE3CT453yOfNa+PykpKg/0SYP7odez1/NWBGuDXgPhp4AeGYYKjhLn5lUUavVS/JbeYMPdH50Mw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -8403,7 +8421,7 @@ packages: optional: true '@inquirer/external-editor@1.0.1': - resolution: {integrity: sha1-qwqCxXGalj+0aQIc3lzSt0/qMPg=} + resolution: {integrity: sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -8412,11 +8430,11 @@ packages: optional: true '@inquirer/figures@1.0.13': - resolution: {integrity: sha1-rQr9YrqrHCMXURWpti9RG2p1HkU=} + resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==} engines: {node: '>=18'} '@inquirer/input@4.2.1': - resolution: {integrity: sha1-wXRlTrGrNN/UKpz2CVp+c1pNsTA=} + resolution: {integrity: sha512-tVC+O1rBl0lJpoUZv4xY+WGWY8V5b0zxU1XDsMsIHYregdh7bN5X5QnIONNBAl0K765FYlAfNHS2Bhn7SSOVow==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -8425,7 +8443,7 @@ packages: optional: true '@inquirer/number@3.0.17': - resolution: {integrity: sha1-MqZhNs41ytn0DOtfgqjPrE8wZRc=} + resolution: {integrity: sha512-GcvGHkyIgfZgVnnimURdOueMk0CztycfC8NZTiIY9arIAkeOgt6zG57G+7vC59Jns3UX27LMkPKnKWAOF5xEYg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -8434,7 +8452,7 @@ packages: optional: true '@inquirer/password@4.0.17': - resolution: {integrity: sha1-RUgMis5ojr8HHjUFNup0Z5Kz7ro=} + resolution: {integrity: sha512-DJolTnNeZ00E1+1TW+8614F7rOJJCM4y4BAGQ3Gq6kQIG+OJ4zr3GLjIjVVJCbKsk2jmkmv6v2kQuN/vriHdZA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -8443,7 +8461,7 @@ packages: optional: true '@inquirer/prompts@7.8.3': - resolution: {integrity: sha1-9c0+pltTVqFYWH+mqaqeyArbkgE=} + resolution: {integrity: sha512-iHYp+JCaCRktM/ESZdpHI51yqsDgXu+dMs4semzETftOaF8u5hwlqnbIsuIR/LrWZl8Pm1/gzteK9I7MAq5HTA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -8452,7 +8470,7 @@ packages: optional: true '@inquirer/rawlist@4.1.5': - resolution: {integrity: sha1-42ZOPaP7qT807iWBP6p5V6pxeZE=} + resolution: {integrity: sha512-R5qMyGJqtDdi4Ht521iAkNqyB6p2UPuZUbMifakg1sWtu24gc2Z8CJuw8rP081OckNDMgtDCuLe42Q2Kr3BolA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -8461,7 +8479,7 @@ packages: optional: true '@inquirer/search@3.1.0': - resolution: {integrity: sha1-IvE3OTju97mMPDD2BKrI++m68no=} + resolution: {integrity: sha512-PMk1+O/WBcYJDq2H7foV0aAZSmDdkzZB9Mw2v/DmONRJopwA/128cS9M/TXWLKKdEQKZnKwBzqu2G4x/2Nqx8Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -8470,7 +8488,7 @@ packages: optional: true '@inquirer/select@4.3.1': - resolution: {integrity: sha1-tJ522rR/fHKeTh5SD+3CaOW4jNw=} + resolution: {integrity: sha512-Gfl/5sqOF5vS/LIrSndFgOh7jgoe0UXEizDqahFRkq5aJBLegZ6WjuMh/hVEJwlFQjyLq1z9fRtvUMkb7jM1LA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -8479,7 +8497,7 @@ packages: optional: true '@inquirer/type@3.0.8': - resolution: {integrity: sha1-78KTug7ZHpDmJn8arMHHDSC4tOg=} + resolution: {integrity: sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -8488,31 +8506,31 @@ packages: optional: true '@isaacs/cliui@8.0.2': - resolution: {integrity: sha1-s3Znt7wYHBaHgiWbq0JHT79StVA=} + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} '@isaacs/fs-minipass@4.0.1': - resolution: {integrity: sha1-LVmuOrSzj7QnC/oj0w+OLobH/jI=} + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha1-/T2x1Z7PfPEh6AZQu4ZxL5tV7O0=} + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha1-5F44TkuOwWvOL9kDr3hFD2v37Jg=} + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} '@istanbuljs/schema@0.1.6': - resolution: {integrity: sha1-jcmvoqwVBssaWPiZQPHBJERsjfM=} + resolution: {integrity: sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==} engines: {node: '>=8'} '@jest/console@29.7.0': - resolution: {integrity: sha1-zUgi29uEUpJlxaK9tSmjycyVD/w=} + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/core@29.7.0': - resolution: {integrity: sha1-tszMI58w/zZglljFpeIpF1fORI8=} + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -8521,27 +8539,27 @@ packages: optional: true '@jest/environment@29.7.0': - resolution: {integrity: sha1-JNYfVP8feG881Ac7S5RBY4O68qc=} + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/expect-utils@29.7.0': - resolution: {integrity: sha1-Aj7+XSaopw8hZ30KGvwPCkTjocY=} + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/expect@29.7.0': - resolution: {integrity: sha1-dqPtsMt1O3Dfv+Iyg1ENPUVDK/I=} + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/fake-timers@29.7.0': - resolution: {integrity: sha1-/ZG/H/+xbX0NJKQmqxpHpJiBpWU=} + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/globals@29.7.0': - resolution: {integrity: sha1-jZKQ+exH/3cmB/qGTKHVou+uHU0=} + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/reporters@29.7.0': - resolution: {integrity: sha1-BLJi7LO4+qg7Cz0yFiOXI5Po9Mc=} + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -8550,280 +8568,280 @@ packages: optional: true '@jest/schemas@29.6.3': - resolution: {integrity: sha1-Qwtc6KTgBEp+OBlmMwWnswkcjgM=} + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/source-map@29.6.3': - resolution: {integrity: sha1-2Quncglc83o0peuUE/G1YqCFVMQ=} + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/test-result@29.7.0': - resolution: {integrity: sha1-jbmoCqGgl7siYlcmhnNLrtmxZXw=} + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha1-bO+XfOHTmDSjrqiHoXJmKKbwcs4=} + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/transform@29.7.0': - resolution: {integrity: sha1-3y3Zw0bH13aLigZjmZRkDGQuKEw=} + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/types@29.6.3': - resolution: {integrity: sha1-ETH4z2NOfoTF53urEvBSr1hfulk=} + 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: sha1-Y0Khn0Q0dRjJPkOxrGnes8Rlah8=} + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha1-N1xHbRlylHhRuh4Vro8SMEdEWqE=} + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha1-eg7mAfYPmaIMfHxf8MgDiMEYm9Y=} + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} '@jridgewell/source-map@0.3.11': - resolution: {integrity: sha1-shg1y9Nttla4V8KtAuvUE8wTqbo=} + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} '@jridgewell/source-map@0.3.5': - resolution: {integrity: sha1-o7tNXGglqrDSgSaPR/atWFNDHpE=} + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha1-MYi8snOkFLDSFf0ipYVAuYm5QJo=} + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha1-aRKwDSxjHA0Vzhp6tXzWV/Ko+Lo=} + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha1-2xXWeByTHzolGj2sOVAcmKYIL9A=} + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha1-ZTT9WTOlO6fL86F2FeJzoNEnP/k=} + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} '@jscpd/badge-reporter@4.2.5': - resolution: {integrity: sha1-KT91Th9lYxACSwaS0e/QncM4uB0=} + resolution: {integrity: sha512-ktXrjPeRaRyUDktxTroSA2/w5sshXpQplWkUuq/e6XqEpKBSbGEnwZLIaegSijOrMwIcCXPQ9k4feXIz5eVJNA==} '@jscpd/core@4.2.5': - resolution: {integrity: sha1-tYLVFDgmWuIvMJakW6nlWR87qoU=} + resolution: {integrity: sha512-Esf2deHxaoNEjePwf2jqP6Urzj+BAOsJVPFLbnnSsV+q7rLNMcn0UEEoKBXIOOt4qMkrkhl9DfwpMyPPOr6GkQ==} '@jscpd/finder@4.2.5': - resolution: {integrity: sha1-YVRE6AW6W1U3CdcEQ3JuNkn2yvs=} + resolution: {integrity: sha512-Rw0dtwp/EeLANbujOubuQeJIuXXXkAlT+f5geZhwkB9TxEYP0hqNrdOJUK/TDBKQjRGrOizEtdNy+S4UlbdzOQ==} '@jscpd/html-reporter@4.2.5': - resolution: {integrity: sha1-wQbPLY3BeOxPAy5GQJh5D71JeDE=} + resolution: {integrity: sha512-zMMIKbvi43dMgeNeHXlHQy1ovf+KJrzNlUubaBvCAVatqP23ksW8d3fmsevIQG9mMMTH0D1xOz+SxUn1FREOPg==} '@jscpd/tokenizer@4.2.5': - resolution: {integrity: sha1-UUrHyZ2V4wugq7twqcpNdwMnM/E=} + resolution: {integrity: sha512-UM8Wx/jwahmflqQExlcKMQTYOAy58N/fn7Pv6NYrkD3EZm/FTk7gW97wkXy5aDE1Ts9oBUpT9tLY2rz7ogCHAQ==} '@jsonjoy.com/base64@1.1.2': - resolution: {integrity: sha1-z46p3LhJuByV8U/AqqFRxrVNJXg=} + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/base64@17.67.0': - resolution: {integrity: sha1-fu2jy0ETjXepBAj9LkKyq6EFdtc=} + resolution: {integrity: sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/buffers@1.2.1': - resolution: {integrity: sha1-jZnH9n6vck00KN/ZgmxkVSZqXIM=} + resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/buffers@17.67.0': - resolution: {integrity: sha1-XFjbze6ogkzilr0c/OAGwusWez0=} + resolution: {integrity: sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/codegen@1.0.0': - resolution: {integrity: sha1-XCP3lsR2dfFm0juUjNuIkYS5Mgc=} + resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/codegen@17.67.0': - resolution: {integrity: sha1-NjX9h2nXfhm3XcVXS8l1YBmy5ZE=} + resolution: {integrity: sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/fs-core@4.57.7': - resolution: {integrity: sha1-XUv7yVFHQHyCZdS7Z2BcDBjHYqE=} + resolution: {integrity: sha512-GDKuYHjP7vAI1kjBo73V+STKr9XIMZknW/xirpRW/EcShX0IKSev/ALafeRfC8Q331nodrXUFu04PugPB0MAhw==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/fs-fsa@4.57.7': - resolution: {integrity: sha1-LAmpnqmvKSr3RHyet4U3djv4VDM=} + resolution: {integrity: sha512-1rWsah2nZtRbNeP+c61QcfGfVrJXBmBD0Hm7Akvv4C9MKEasXnbiOS//iH3T3HwUSSBATGrfSp0Xi8nlNhATeQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/fs-node-builtins@4.57.7': - resolution: {integrity: sha1-zA/RIfWHBYeM6bPzcvwAvX2JfOM=} + resolution: {integrity: sha512-LWqfY1m+uAosjwM1RrKhMkUnP9jcq1RUczHsNO779ovm1E9v8I/pmj04eBAcoBjhC7ltcPbNFGyRJ5JqSJ7Jdg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/fs-node-to-fsa@4.57.7': - resolution: {integrity: sha1-LEsYB70ae+WZU21H/t+AJwa2s2Y=} + resolution: {integrity: sha512-9T0zC9LKcAWXDoTLRdLMoJ0seOvJ5bgDKq1tSBoQAFQpPDstQUeV1Oe7PLypdu7F2D3ddRstmwgeNUEN/VaZ4Q==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/fs-node-utils@4.57.7': - resolution: {integrity: sha1-UTCMS9/HF8y7FVdZ/n35yRr+wJk=} + resolution: {integrity: sha512-jjWSDOsfcog2cZnUCwX5AHmlIq6b6wx5Pz/2LAcNjJ62Rajwg89Fy7ubN+lDHew0/1reLDa9Z5urybYadhh37g==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/fs-node@4.57.7': - resolution: {integrity: sha1-PWL5OvHM3/051DkVTzYVXX4+tcY=} + resolution: {integrity: sha512-xhnyeyEVTiIOibFvda/5n89nChMLCPKHHM2WQ+GGDf6+U/IrQBW3Qx6x+Uq1bkDbxBkybLOdIGoBtVBrE8Nngg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/fs-print@4.57.7': - resolution: {integrity: sha1-rsjj9dZs1k6Q4fyZE6X6SBHYJLE=} + resolution: {integrity: sha512-mFM4P4Gjq0QQHkLnXzPYPEMFrAoe6a5Myedgb6+CmL+nGd3MKvTxYPuD7N1dLIH9RBy1fLdzxd80qvuK8xrx3Q==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/fs-snapshot@4.57.7': - resolution: {integrity: sha1-Nwz0BbrDWKT/Qm2Ei3M9+exRSdI=} + resolution: {integrity: sha512-1GS3+plfm2giB3PqokiqyydyqYTPLcCQIKSkp0TdMNRh3KVk7rqRM6U785FLlVRG7XLmkc0KWr215OY+22K3QA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/json-pack@1.21.0': - resolution: {integrity: sha1-k/jdV/46OpITKzPR6xgtzZ52Kfo=} + resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/json-pack@17.67.0': - resolution: {integrity: sha1-jdj/Zd2ZnF1NJt9GxjkVx73sCTo=} + resolution: {integrity: sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/json-pointer@1.0.2': - resolution: {integrity: sha1-BJy1MKwk6Ey6CFkMXja0McSENAg=} + resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/json-pointer@17.67.0': - resolution: {integrity: sha1-dEOVc9wEbgyaOlUvuUs5G8dTE7g=} + resolution: {integrity: sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/util@1.9.0': - resolution: {integrity: sha1-fulVhq7Qp2a3Rs2Ng2PjNsPEfEY=} + resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@jsonjoy.com/util@17.67.0': - resolution: {integrity: sha1-fEKI/DgIIz5Vx2EBAee7RZDN3T8=} + resolution: {integrity: sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' '@leichtgewicht/ip-codec@2.0.5': - resolution: {integrity: sha1-T8VsFcWAua233DwzOhNOVAtEv7E=} + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} '@lezer/common@1.2.3': - resolution: {integrity: sha1-E4/N2rFX2D2lV1VIUQF8bB5WZ/0=} + resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} '@lezer/cpp@1.1.3': - resolution: {integrity: sha1-MCmlQvRiT7oO0o+WURs0uOeQY1I=} + resolution: {integrity: sha512-ykYvuFQKGsRi6IcE+/hCSGUhb/I4WPjd3ELhEblm2wS2cOznDFzO+ubK2c+ioysOnlZ3EduV+MVQFCPzAIoY3w==} '@lezer/css@1.2.1': - resolution: {integrity: sha1-s19tBFnpvk3hzfTTEypZ79fPK6M=} + resolution: {integrity: sha512-2F5tOqzKEKbCUNraIXc0f6HKeyKlmMWJnBB0i4XW6dJgssrZO/YlZ2pY5xgyqDleqqhiNJ3dQhbrV2aClZQMvg==} '@lezer/go@1.0.1': - resolution: {integrity: sha1-MAS1T15Mlxnty6mGU/OAuvjA0aI=} + resolution: {integrity: sha512-xToRsYxwsgJNHTgNdStpcvmbVuKxTapV0dM0wey1geMMRc9aggoVyKgzYp41D2/vVOx+Ii4hmE206kvxIXBVXQ==} '@lezer/highlight@1.2.1': - resolution: {integrity: sha1-WW+o+a61imCL4KVj6WDDc8vyP4s=} + resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==} '@lezer/html@1.3.10': - resolution: {integrity: sha1-G+mgKab+g1yCOyCpikSaYwQWsq8=} + resolution: {integrity: sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==} '@lezer/java@1.1.3': - resolution: {integrity: sha1-nv1qKbQULQfyEQdqb7XoBhyF4Uc=} + resolution: {integrity: sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw==} '@lezer/javascript@1.5.1': - resolution: {integrity: sha1-KkJKbsKfHU7zw0y8zFRH43Nhitg=} + resolution: {integrity: sha512-ATOImjeVJuvgm3JQ/bpo2Tmv55HSScE2MTPnKRMRIPx2cLhHGyX2VnqpHhtIV1tVzIjZDbcWQm+NCTF40ggZVw==} '@lezer/json@1.0.3': - resolution: {integrity: sha1-53OgEq0AiPvwfOSc+6h1zJ5bwF8=} + resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==} '@lezer/lr@1.4.2': - resolution: {integrity: sha1-kx6j3qjp3oTpB4EAHa4w3qn/Fyc=} + resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} '@lezer/markdown@1.4.3': - resolution: {integrity: sha1-p0LtXngqxJE6Yh39HmqOQJ9N1Yk=} + resolution: {integrity: sha512-kfw+2uMrQ/wy/+ONfrH83OkdFNM0ye5Xq96cLlaCy7h5UT9FO54DU4oRoIc0CSBh5NWmWuiIJA7NGLMJbQ+Oxg==} '@lezer/php@1.0.2': - resolution: {integrity: sha1-fCkWMfwef37+mZd1IrxIvccyZYo=} + resolution: {integrity: sha512-GN7BnqtGRpFyeoKSEqxvGvhJQiI4zkgmYnDk/JIyc7H7Ifc1tkPnUn/R2R8meH3h/aBf5rzjvU8ZQoyiNDtDrA==} '@lezer/python@1.1.18': - resolution: {integrity: sha1-+gL79JJ0HILcLcmKCgQr0NTX8dM=} + resolution: {integrity: sha512-31FiUrU7z9+d/ElGQLJFXl+dKOdx0jALlP3KEOsGTex8mvj+SoE1FgItcHWK/axkxCHGUSpqIHt6JAWfWu9Rhg==} '@lezer/rust@1.0.2': - resolution: {integrity: sha1-zJp1YF1nGCoOeZrECxllph3MbvA=} + resolution: {integrity: sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg==} '@lezer/sass@1.1.0': - resolution: {integrity: sha1-yC5mCqWzkwPR3nY5I675ef7x06Q=} + resolution: {integrity: sha512-3mMGdCTUZ/84ArHOuXWQr37pnf7f+Nw9ycPUeKX+wu19b7pSMcZGLbaXwvD2APMBDOGxPmpK/O6S1v1EvLoqgQ==} '@lezer/xml@1.0.6': - resolution: {integrity: sha1-kIwgOSMoj4VOuOL02bBsQ36GELk=} + resolution: {integrity: sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww==} '@lezer/yaml@1.0.3': - resolution: {integrity: sha1-sjdwq0KzkAVtprGH2GG5mP1gsf8=} + resolution: {integrity: sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA==} '@lit-labs/ssr-dom-shim@1.5.1': - resolution: {integrity: sha1-MWaQDA1IHwPW1BM2huD+v3YNUh0=} + resolution: {integrity: sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==} '@lit/reactive-element@2.1.2': - resolution: {integrity: sha1-TGr5BCYDyY5hupCylGB5BNUbYcs=} + resolution: {integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==} '@malept/cross-spawn-promise@2.0.0': - resolution: {integrity: sha1-0Hct4apoCgv7m6LzK0yCjHhXy50=} + resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==} engines: {node: '>= 12.13.0'} '@malept/flatpak-bundler@0.4.0': - resolution: {integrity: sha1-6KMsMKldIMKxu2NcxYCYGgY4mFg=} + resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==} engines: {node: '>= 10.0.0'} '@manypkg/find-root@2.2.3': - resolution: {integrity: sha1-Ppvl3/SgCMIoZJo04q9lKI/xPCY=} + resolution: {integrity: sha512-jtEZKczWTueJYHjGpxU3KJQ08Gsrf4r6Q2GjmPp/RGk5leeYAA1eyDADSAF+KVCsQ6EwZd/FMcOFCoMhtqdCtQ==} engines: {node: '>=14.18.0'} '@manypkg/get-packages@2.2.2': - resolution: {integrity: sha1-brFvwcz4yQOv9c3k5TXHV06WWw0=} + resolution: {integrity: sha512-3+Zd8kLZmsyJFmWTBtY0MAuCErI7yKB2cjMBlujvSVKZ2R/BMXi0kjCXu2dtRlSq/ML86t1FkumT0yreQ3n8OQ==} engines: {node: '>=14.18.0'} '@manypkg/tools@1.1.2': - resolution: {integrity: sha1-FdCrtmqgTO6D5/51g51W3f3VGW8=} + resolution: {integrity: sha512-3lBouSuF7CqlseLB+FKES0K4FQ02JrbEoRtJhxnsyB1s5v4AP03gsoohN8jp7DcOImhaR9scYdztq3/sLfk/qQ==} engines: {node: '>=14.18.0'} '@marijn/find-cluster-break@1.0.2': - resolution: {integrity: sha1-d1N0MGEW1RwMUAuMT6zg+aBHUtg=} + resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} '@mermaid-js/parser@1.1.1': - resolution: {integrity: sha1-MPOraNgWkS5D8kWnKg1Agb9p2WY=} + resolution: {integrity: sha512-VuHdsYMK1bT6X2JbcAaWAhugTRvRBRyuZgd+c22swUeI9g/ntaxF7CY7dYarhZovofCbUNO0G7JesfmNtjYOCw==} '@microsoft/microsoft-graph-client@3.0.7': - resolution: {integrity: sha1-U1UH3y20C9ftJKZw3GjIfGKBd6Q=} + resolution: {integrity: sha512-/AazAV/F+HK4LIywF9C+NYHcJo038zEnWkteilcxC1FM/uK/4NVGDKGrxx7nNq1ybspAroRKT4I1FHfxQzxkUw==} engines: {node: '>=12.0.0'} peerDependencies: '@azure/identity': '*' @@ -8841,87 +8859,87 @@ packages: optional: true '@microsoft/microsoft-graph-types@2.40.0': - resolution: {integrity: sha1-ZfUWAKtFrOl9exNoxH+eD4Nf3co=} + resolution: {integrity: sha512-1fcPVrB/NkbNcGNfCy+Cgnvwxt6/sbIEEFgZHFBJ670zYLegENYJF8qMo7x3LqBjWX2/Eneq5BVVRCLTmlJN+g==} '@milkdown/components@7.13.1': - resolution: {integrity: sha1-9QCJ+7XgqE5zd/GmIm7RBKbGFqE=} + resolution: {integrity: sha512-qWQFg0KvPeGmlnsW9Y7w97I5HBwsaYqGaQMEyECkVZNL/CTT7uEdm9ofeLAeL9sNWya9WQYFplr0kJH6laiNKw==} peerDependencies: '@codemirror/language': ^6 '@codemirror/state': ^6 '@codemirror/view': ^6 '@milkdown/core@7.13.1': - resolution: {integrity: sha1-5AZIRiI6t3jWFPvTv1targTTJas=} + resolution: {integrity: sha512-cSFH/Ob1kW9I7Q8vDw1Xd6JpIQNB7EZx+PMtEeEQbX/2mUYoDWrfzUeeKJPhtdyr77iN3B609Ok9Xn3bzZnoOg==} '@milkdown/crepe@7.13.1': - resolution: {integrity: sha1-UXs5FiNfWhialuhrpmmSNJdYFG4=} + resolution: {integrity: sha512-jMNwQ4BJVpI0VQ6/2rO6U1l8bC69VfiUUghqHnjt8+f81Dz+VxeROLfkmSBvqzq5rdknDidPDzr4OUFGoC4a1g==} '@milkdown/ctx@7.13.1': - resolution: {integrity: sha1-6qThOmfhSkO2IyVd03x75VvAc50=} + resolution: {integrity: sha512-S3u0KBz/6K4er5RaRJhZIof1pGK52KwvdPKL//l2++mcC92NG3FAsntllgsm3+AZLpYrk2DjlSqaYBCFvQ5O4g==} '@milkdown/exception@7.13.1': - resolution: {integrity: sha1-EiKnbI+ZD2HPTMvruru+0aQvdPM=} + resolution: {integrity: sha512-3nfGRwXZcLC3dQyGiIJDNhgfpaU134dKX+qJuoCsFWsSib53ogkBdCVXma8d7REXtoMCLbcQWzUbfl+0Mn3TGA==} '@milkdown/kit@7.13.1': - resolution: {integrity: sha1-MTYxjas0BtP36QgORFMfk/J6bK0=} + resolution: {integrity: sha512-80kF0Ay6R3kBbysBA41VOYoqXPrz8o/LrxmB6omiJZ+93FrNdMoXx5GfNT4lKsOW1W5vtPvdqffZzQxW0wwzGA==} '@milkdown/plugin-block@7.13.1': - resolution: {integrity: sha1-2JA0/ffSp55d1dR5z1ymjMPne9o=} + resolution: {integrity: sha512-HG/RJ9C/EHvky0/rio9oSlud89u4ggj9CvWAbiBjyMMeO0V0rDGGsVF+1sTtB6Gvtm7ryk/KDUUkM5a3zm8s4w==} '@milkdown/plugin-clipboard@7.13.1': - resolution: {integrity: sha1-hnMQkW4/1X7DJzpRd4sT8LM8uCw=} + resolution: {integrity: sha512-/WoPv4BDNufO6uavnwqMSYAQTgFvy2Vw5e8n1+Qba/kpjJtbXiH/9zrPA1w42SivxRkOSI0lfSm6OXQnQS5Z8Q==} '@milkdown/plugin-collab@7.13.1': - resolution: {integrity: sha1-+4ZDxTO6JuX8NDzENjvYX8y3IWM=} + resolution: {integrity: sha512-DPer8v2il8c/kxOOmbS2+suZNO4LTJMOpX0sNubz7MdNdVt+8+6GWIjpjoBAkqrDxEbNwjJ69mjBUQk/fiGYiQ==} peerDependencies: y-prosemirror: '*' y-protocols: '*' yjs: '*' '@milkdown/plugin-cursor@7.13.1': - resolution: {integrity: sha1-jhhMEt3miLX0jXJrUvchQUKdcBY=} + resolution: {integrity: sha512-ETJW+TLrrJCSf9+Hq4zwjqrW2z/RJBFeNyNoqen8PIpfmWJCM4EqyHLWw2qscJlx2fBDHnIAHCVnbu6Tmk1atg==} '@milkdown/plugin-history@7.13.1': - resolution: {integrity: sha1-04RdCWR6WjGXZg9O2+4qFycmoAA=} + resolution: {integrity: sha512-C2n3kKWWdEcIlk/HiV9WMK5f9PdxR2yzf3Sg3ibexhhAi4fp0bf0BJNupQVuFqYQPBmXL6rW4lFs9zVjHn/yEg==} '@milkdown/plugin-indent@7.13.1': - resolution: {integrity: sha1-Nmxt8AuOp3EeLJiKuI11V9WnYxQ=} + resolution: {integrity: sha512-X6IKT/KLNWKww+tinNjBye2ClfaDmWyxu9dL6bz37l5HgBVZ9mL9HS97YIkxh/5YiivYwl98JmWba2ahKdXB5A==} '@milkdown/plugin-listener@7.13.1': - resolution: {integrity: sha1-QPQpFj7o6O2AZje1TaB8jEYbWBQ=} + resolution: {integrity: sha512-CCsFtRXXnIwipVCjyBS1c/lthRq+Uiqw/x9GacvGSixNdwGfYn4lD+ujax9WwmNviANHakNZdL3y5aOVPZZ84A==} '@milkdown/plugin-slash@7.13.1': - resolution: {integrity: sha1-opThiburlPJOk0nta/JhMPuGWrs=} + resolution: {integrity: sha512-Up91kxFyyPsfjfQ56sNfphaYvxsPdFaEOY6Q37FJYCwmdjIZ9/12FLDQJOr0Bh58Z6R1DHE7GgBQ4c/voQc5Sw==} '@milkdown/plugin-tooltip@7.13.1': - resolution: {integrity: sha1-PMUX25+zZOvPCa4t2AeWhatYEh0=} + resolution: {integrity: sha512-XvbimMl9EaRsmCpdNnDomeqKqkSuSZMYrn1XAxouhb4Q2DMOEHC4J3prnnndrekbZD2ndlQPONb3asndhKpTXg==} '@milkdown/plugin-trailing@7.13.1': - resolution: {integrity: sha1-3U536PKk9WOcoRC+EIfJEdcpIZw=} + resolution: {integrity: sha512-Aon8tN4qQl76aX7C6jxi1NqJvjs/q8vAK04iO8qmJ+SzY0d7EaPcxZicTJitXTDI1W7VKSvGMAw1YP2qrH8now==} '@milkdown/plugin-upload@7.13.1': - resolution: {integrity: sha1-1Eyh229lnDDiZjbLEkpeFg1C9c4=} + resolution: {integrity: sha512-jKyoDNroEOdpSWrrhKrbAY41y9k0jbyLReeNRESSbKF61Rf04v9dfRQBNu6GdLpHqL52AeI9TnQh7rcNFtrORA==} '@milkdown/preset-commonmark@7.13.1': - resolution: {integrity: sha1-+OT7FNKbBHzDScxGrSRp/ggvI40=} + resolution: {integrity: sha512-KK0MOpoCDw1hEGXZiZ26sLPLIJnlzchdGqgxWD5KPGCa9Yj9aGOUqHDGVoH6aIhPBFOYV8nisZkHUGCSufVYnQ==} '@milkdown/preset-gfm@7.13.1': - resolution: {integrity: sha1-RliS8prhQB/Qw/VTuMDkMjn3Alo=} + resolution: {integrity: sha512-y9MPhxyAAu6REJiGT+n/yXmeY7agg0GqbLNb/49bXuY6KAnLiBJNGd8s/rAHKQ08siVHxuUjMI6BSIDFCSShDw==} '@milkdown/prose@7.13.1': - resolution: {integrity: sha1-SBn4pnlAoOReGPeoFyCMl+GawPg=} + resolution: {integrity: sha512-M3jiySoOW1jDkaT835KU+aWzHQZqmZ/o0FVm5Dkk8bZVI0v+wVEcE4H+1H8SskiP5s8gHgAMDUDrIkLifSeKvQ==} '@milkdown/theme-nord@7.13.1': - resolution: {integrity: sha1-Amc5fR8tBm22XNm7Ro8JbzAPj8U=} + resolution: {integrity: sha512-P41MvWh6j0jnJlBxo03Xyzmf4YCiSlPoY5fGvU95jTOigHRTMuF5pdp2Ha2Y3RoVKnjKB+cdAVpwtyfMpoVpnw==} '@milkdown/transformer@7.13.1': - resolution: {integrity: sha1-UZm8WmJJCoG4Q/boWQvuLTQW9hA=} + resolution: {integrity: sha512-h9IczhBuDbUrygzi8oCTb607C9kufS8nbLcQQ/pFvHMIjn92uejo84mAc4IWFmmxoXzVRj0/cDFt1KJTTkga+A==} '@milkdown/utils@7.13.1': - resolution: {integrity: sha1-VB5qUzLNF9mLz5oJqPJ3g5r3csQ=} + resolution: {integrity: sha512-4ct/ovL0h/0kuLFligLdZgt3qtWbNZEHnIKO321qvkaGLx1HmzbMpiL6V8tq7iDqNKeoqAzFb/2vnUeYGv1Ndw==} '@modelcontextprotocol/sdk@1.26.0': - resolution: {integrity: sha1-WzXXMGISXxJsxwsL6Dy6tTvN3nQ=} + resolution: {integrity: sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -8931,7 +8949,7 @@ packages: optional: true '@modelcontextprotocol/sdk@1.29.0': - resolution: {integrity: sha1-eXhti1JeJp3oUKyCsfH3V/ORX0Q=} + resolution: {integrity: sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -8941,526 +8959,526 @@ packages: optional: true '@modelcontextprotocol/server-filesystem@2026.1.14': - resolution: {integrity: sha1-zHun4ONKr9FTBI6KITxwMLlT1oM=} + resolution: {integrity: sha512-bGAfu3fWRVeF10NxvPhFBDlRen6ExSx6YkKJzoVgQMNrbdVVV4okfGGQ3KBRu9ygXYfw5/N9ermHAJXA0uys+g==} hasBin: true '@mongodb-js/saslprep@1.2.2': - resolution: {integrity: sha1-CVBvKcwqmdnXuVHKp//8h+UiptM=} + resolution: {integrity: sha512-EB0O3SCSNRUFk66iRCpI+cXzIjdswfCs7F6nOC3RAGJ7xr5YhaicvsRwJ9eyzYvYRlCSDUO/c7g4yNulxKC1WA==} '@mozilla/readability@0.6.0': - resolution: {integrity: sha1-E0484/8WdnFuVQ3guN6Ve8xZIIs=} + resolution: {integrity: sha512-juG5VWh4qAivzTAeMzvY9xs9HY5rAcr2E4I7tiSSCokRFi7XIZCAu92ZkSTsIj1OPceCifL3cpfteP3pDT9/QQ==} engines: {node: '>=14.0.0'} '@napi-rs/canvas-android-arm64@0.1.72': - resolution: {integrity: sha1-vByo4D7SymTYAwuQ+R+gmF6+llo=} + resolution: {integrity: sha512-OW99TDJEdfOhpJWQ7SXFsQi1BXd6UFuWM8AoQvJ0SQMHWY/iwuopmb1UqGV6Df9aM/SWxvCWBN/onjeCM8KVKQ==} engines: {node: '>= 10'} cpu: [arm64] os: [android] '@napi-rs/canvas-darwin-arm64@0.1.72': - resolution: {integrity: sha1-3Ett1Bq6ObuF27J57nM5DA9YWHY=} + resolution: {integrity: sha512-gB8Pn/4GdS+B6P4HYuNqPGx8iQJ16Go1D6e5hIxfUbA/efupVGZ7e3OMGWGCUgF0vgbEPEF31sPzhcad4mdR5g==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] '@napi-rs/canvas-darwin-x64@0.1.72': - resolution: {integrity: sha1-UviBC7zuWmg9sxzlEfcUlp/KVEk=} + resolution: {integrity: sha512-x1zKtWVSnf+yLETHdSDAFJ1w6bctS/V2NP0wskTTBKkC+c/AmI2Dl+ZMIW11gF6rilBibrIzBeXJKPzV0GMWGA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] '@napi-rs/canvas-linux-arm-gnueabihf@0.1.72': - resolution: {integrity: sha1-REpnSdEIVoU/ZmTWY7MAMcGvg7c=} + resolution: {integrity: sha512-Ef6HMF+TBS+lqBNpcUj2D17ODJrbgevXaVPtr2nQFCao5IvoEhVMdmVwWk5YiI+GcgbAkg5AF3LiU47RoSY5yg==} engines: {node: '>= 10'} cpu: [arm] os: [linux] '@napi-rs/canvas-linux-arm64-gnu@0.1.72': - resolution: {integrity: sha1-dqP4Pyr7RKq7vdfx8nGrji3N60c=} + resolution: {integrity: sha512-i1tWu+Li1Z6G4t+ckT38JwuB/cAAREV6H8VD3dip2yTYU+qnLz6kG4i+whm+SEQb1e4vk3xA1lKnjYx3jlOy8g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] '@napi-rs/canvas-linux-arm64-musl@0.1.72': - resolution: {integrity: sha1-g8HYY9DLbHtldZ7e3tTsMZjudfA=} + resolution: {integrity: sha512-Mu+2hHZAT9SdrjiRtCxMD/Unac8vqVxF/p+Tvjb5sN1NZkLGu+l7WIfrug8aeX150OwrYgAvsR4mhrm0BZvLxg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] '@napi-rs/canvas-linux-riscv64-gnu@0.1.72': - resolution: {integrity: sha1-Bc2vO7Q4NFgaSCR3wB4h/XaAuVQ=} + resolution: {integrity: sha512-xBPG/ImL58I4Ep6VM+sCrpwl8rE/8e7Dt9U7zzggNvYHrWD13vIF3q5L2/N9VxdBMh1pee6dBC/VcaXLYccZNQ==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] libc: [glibc] '@napi-rs/canvas-linux-x64-gnu@0.1.72': - resolution: {integrity: sha1-7tgu9Mct71636zaGN40vfWwUKug=} + resolution: {integrity: sha512-jkC8L+QovHpzQrw+Jm1IUqxgLV5QB1hJ1cR8iYzxNRd0TOF7YfxLaIGxvd/ReRi9r48JT6PL7z2IGT7TqK8T4w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] '@napi-rs/canvas-linux-x64-musl@0.1.72': - resolution: {integrity: sha1-vba03KCLqUXvYVsnkRwkGnrF4Xs=} + resolution: {integrity: sha512-PwPdPmHgJYnTMUr8Gff80eRVdpGjwrxueIqw+7v4aeFxbQjmQ+paa2xaGedFtkvdS2Dn5z8a0mVlrlbSfec+1Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] '@napi-rs/canvas-win32-x64-msvc@0.1.72': - resolution: {integrity: sha1-KZ/MiJzqhS2XK19rk6faFE3Zrqg=} + resolution: {integrity: sha512-hZhXJZZ/2ZjkAoOtyGUs3Mx6jA4o9ESbc5bk+NKYO6thZRvRNA7rqvT9WF9pZK0xcRK5EyWRymv8fCzqmSVEzg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] '@napi-rs/canvas@0.1.72': - resolution: {integrity: sha1-owBt/7OVDEZcMVgZhuiAo2uIRUs=} + resolution: {integrity: sha512-ypTJ/DXzsJbTU3o7qXFlWmZGgEbh42JWQl7v5/i+DJz/HURELcSnq9ler9e1ukqma70JzmCQcIseiE/Xs6sczw==} engines: {node: '>= 10'} '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha1-7TOAbQ+b6Y3HbQw9T9hy/acBtdU=} + resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} peerDependencies: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 '@noble/hashes@1.4.0': - resolution: {integrity: sha1-RYFKoynzDk/guklCb0nfzN0GZCY=} + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} '@nodable/entities@2.1.0': - resolution: {integrity: sha1-9UPlxkRnINTPnkmKgwGd0VmXO8I=} + resolution: {integrity: sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==} '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha1-dhnC6yGyVIP20WdUi0z9WnSIw9U=} + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha1-W9Jir5Tp0lvR5xsF3u1Eh2oiLos=} + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha1-6Vc36LtnRt3t9pxVaVNJTxlv5po=} + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} '@nornagon/put@0.0.8': - resolution: {integrity: sha1-nUl+xGyTZKzD+LWao8+O5BNK4zc=} + resolution: {integrity: sha512-ugvXJjwF5ldtUpa7D95kruNJ41yFQDEKyF5CW4TgKJnh+W/zmlBzXXeKTyqIgwMFrkePN2JqOBqcF0M0oOunow==} engines: {node: '>=0.3.0'} '@oclif/core@4.5.2': - resolution: {integrity: sha1-TbijZfp+njOvJyKU9xCn8/JVOOI=} + resolution: {integrity: sha512-eQcKyrEcDYeZJKu4vUWiu0ii/1Gfev6GF4FsLSgNez5/+aQyAUCjg3ZWlurf491WiYZTXCWyKAxyPWk8DKv2MA==} engines: {node: '>=18.0.0'} '@oclif/core@4.8.0': - resolution: {integrity: sha1-vej60AAZyMCo4neHtLQsRnCEJ4U=} + resolution: {integrity: sha512-jteNUQKgJHLHFbbz806aGZqf+RJJ7t4gwF4MYa8fCwCxQ8/klJNWc0MvaJiBebk7Mc+J39mdlsB4XraaCKznFw==} engines: {node: '>=18.0.0'} '@oclif/plugin-autocomplete@3.2.24': - resolution: {integrity: sha1-O/d2WyLPt+hwLz3hPCiEXNXw8Xk=} + resolution: {integrity: sha512-KGz7ypHhahRJWy0sB+mNvLLJiMWEt4pgjCFIpcBhkZhc090H4e4QhGR6Xp2430rQgStPcnUa0BYcVZJPojAsDQ==} engines: {node: '>=18.0.0'} '@oclif/plugin-commands@4.1.21': - resolution: {integrity: sha1-YQidv4acZLcUzGracdPA3zOucN0=} + resolution: {integrity: sha512-7pmqqYzpgLX/YNt1v6NIE4InNCtZl7prUcUGfMkhyDHO8ss1O0xcXhNOiVK7ytXZKYWuPJMd+uA16ytThqXtOQ==} engines: {node: '>=18.0.0'} '@oclif/plugin-help@6.2.26': - resolution: {integrity: sha1-FtTF1Tjh7Shko8qP1ZMxaUtfhtI=} + resolution: {integrity: sha512-5KdldxEizbV3RsHOddN4oMxrX/HL6z79S94tbxEHVZ/dJKDWzfyCpgC9axNYqwmBF2pFZkozl/l7t3hCGOdalw==} engines: {node: '>=18.0.0'} '@oclif/plugin-not-found@3.2.65': - resolution: {integrity: sha1-1VhMRTp7EuJ9DXnVvYCjPM0ZD18=} + resolution: {integrity: sha512-WgP78eBiRsQYxRIkEui/eyR0l3a2w6LdGMoZTg3DvFwKqZ2X542oUfUmTSqvb19LxdS4uaQ+Mwp4DTVHw5lk/A==} engines: {node: '>=18.0.0'} '@oclif/table@0.4.6': - resolution: {integrity: sha1-Tgf8Ed6bijGHpepD7c5xxCgRq34=} + resolution: {integrity: sha512-NXh72vHHYnDrWPmVfh4i7kDydz3CXm/tSAr17fWhmWfMM+8jGn5uo6FXtvB0cd9s4skvDqzoRcsRwOeR73zIKA==} engines: {node: '>=18.0.0'} '@oozcitak/dom@2.0.2': - resolution: {integrity: sha1-D0R/C3NqpvNsVVa6gRpE5Wxxwmw=} + resolution: {integrity: sha512-GjpKhkSYC3Mj4+lfwEyI1dqnsKTgwGy48ytZEhm4A/xnH/8z9M3ZVXKr/YGQi3uCLs1AEBS+x5T2JPiueEDW8w==} engines: {node: '>=20.0'} '@oozcitak/infra@2.0.2': - resolution: {integrity: sha1-4vHMDuyjrFzVUfAyal9m8AzxE4s=} + resolution: {integrity: sha512-2g+E7hoE2dgCz/APPOEK5s3rMhJvNxSMBrP+U+j1OWsIbtSpWxxlUjq1lU8RIsFJNYv7NMlnVsCuHcUzJW+8vA==} engines: {node: '>=20.0'} '@oozcitak/url@3.0.0': - resolution: {integrity: sha1-oDyVnGfiirqeKbLTXNUNJstfLMQ=} + resolution: {integrity: sha512-ZKfET8Ak1wsLAiLWNfFkZc/BraDccuTJKR6svTYc7sVjbR+Iu0vtXdiDMY4o6jaFl5TW2TlS7jbLl4VovtAJWQ==} engines: {node: '>=20.0'} '@oozcitak/util@10.0.0': - resolution: {integrity: sha1-9rQEctlsIQCUpVbuXMuOd/G9MK8=} + resolution: {integrity: sha512-hAX0pT/73190NLqBPPWSdBVGtbY6VOhWYK3qqHqtXQ1gK7kS2yz4+ivsN07hpJ6I3aeMtKP6J6npsEKOAzuTLA==} engines: {node: '>=20.0'} '@open-wc/dedupe-mixin@2.0.1': - resolution: {integrity: sha1-O80AnGOkcT2M5OMEpy6zOXfjdKw=} + resolution: {integrity: sha512-+R4VxvceUxHAUJXJQipkkoV9fy10vNo+OnUnGKZnVmcwxMl460KLzytnUM4S35SI073R0yZQp9ra0MbPUwVcEA==} '@open-wc/scoped-elements@3.0.6': - resolution: {integrity: sha1-m6SjFtOfKyncGI80p/Xk4fyd3tE=} + resolution: {integrity: sha512-w1ayJaUUmBw8tALtqQ6cBueld+op+bufujzbrOdH0uCTXnSQkONYZzOH+9jyQ8auVgKLqcxZ8oU6SzfqQhQkPg==} '@open-wc/semantic-dom-diff@0.20.1': - resolution: {integrity: sha1-sbt4vkVb2Z+wNNm6rbuVnX0SQDA=} + resolution: {integrity: sha512-mPF/RPT2TU7Dw41LEDdaeP6eyTOWBD4z0+AHP4/d0SbgcfJZVRymlIB6DQmtz0fd2CImIS9kszaMmwMt92HBPA==} '@open-wc/testing-helpers@3.0.1': - resolution: {integrity: sha1-81ZpD8NJVGdQOjCiFyKIqouu9vg=} + resolution: {integrity: sha512-hyNysSatbgT2FNxHJsS3rGKcLEo6+HwDFu1UQL6jcSQUabp/tj3PyX7UnXL3H5YGv0lJArdYLSnvjLnjn3O2fw==} '@open-wc/testing@4.0.0': - resolution: {integrity: sha1-v6USEHmfhq0aR8LezmufFd1Ru5Q=} + resolution: {integrity: sha512-KI70O0CJEpBWs3jrTju4BFCy7V/d4tFfYWkg8pMzncsDhD7TYNHLw5cy+s1FHXIgVFetnMDhPpwlKIPvtTQW7w==} '@opentelemetry/api@1.9.0': - resolution: {integrity: sha1-0D66aCc9wPdQnio9XLoh6uEDef4=} + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} '@opentelemetry/core@2.8.0': - resolution: {integrity: sha1-9uht42iL21Smyo9JNTY6W1iK6Rw=} + resolution: {integrity: sha512-hd1Lfh8p545nNz+jq1Ejfz+Mn1hyLuxYn1YzTfFNrxr8urEWMNQLPf1Th8kjOH+HxwawCrtgBp8JpBUR4ZSgww==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' '@opentelemetry/semantic-conventions@1.34.0': - resolution: {integrity: sha1-i2pGaBs4pNWUchQDOsSBKDKMFzg=} + resolution: {integrity: sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA==} engines: {node: '>=14'} '@oxc-parser/binding-android-arm-eabi@0.137.0': - resolution: {integrity: sha1-RBwU6z6tP/xu7JPYl/2z8aHx0po=} + resolution: {integrity: sha512-KDs+0VPdEmasOkpuJHW9V5WCF+cvYdMQv2Jd+aJXt+cxIx12NToRQRbXaRwUEDsZw+/jMk81Ve8ZFbjUkJTOwA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] '@oxc-parser/binding-android-arm64@0.137.0': - resolution: {integrity: sha1-u4PSHTWG3ETXYDZ6RhA6MtnSMCY=} + resolution: {integrity: sha512-WhALNzfy3x/RfC6bsqX+csavuUY0yHHE7XfgPE5M542uhoBZUUoGTPG+nkMbGoG4+gcfss5s7urMyn5QBHu0sw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] '@oxc-parser/binding-darwin-arm64@0.137.0': - resolution: {integrity: sha1-spcPFkc2QbN7rgkpv7JotbREL7I=} + resolution: {integrity: sha512-bFPr5hgmNMOMoyPTGtdsK4Ug21RovIPojRMgDDhSp1LtCnc/DkLwGONKjgRjszg677RlGnkYSviQ8hHaUPOVYA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] '@oxc-parser/binding-darwin-x64@0.137.0': - resolution: {integrity: sha1-+/JeQPMx3LtuXKyT+75TxVfmHys=} + resolution: {integrity: sha512-CL5dMm1asqXIDZHg14FLxj3Mc36w8PI7xCWh1uA4is6z8g2XrIILoTcQYOxDbwzuk34RDPX5IAGUxZr6LA9KAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] '@oxc-parser/binding-freebsd-x64@0.137.0': - resolution: {integrity: sha1-RqPpnBnYWitYzUiXJ5kmhaanG10=} + resolution: {integrity: sha512-79h8rYGnSlKPGWo7mHr2ixO6ea7aW8B0CT965SZ8SLbNnCOH5aOYBTeVXUY6eMvEaiLyWr8Skuiugr5pDYgLGw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] '@oxc-parser/binding-linux-arm-gnueabihf@0.137.0': - resolution: {integrity: sha1-29njspdVO18mFiJIoUMYdP4ETvE=} + resolution: {integrity: sha512-ASgmlSimhGyr0lksgVIo6hibz1obnDq4qJbiMX/AzltfgPnanRrzG1Q+23g8ljOHOjv6dsznkUuCYL3gg0sY1Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] '@oxc-parser/binding-linux-arm-musleabihf@0.137.0': - resolution: {integrity: sha1-xAIxMelPCPZaetOgjEGuohwMfos=} + resolution: {integrity: sha512-AU2J9aa22Sx32wRGnDjybOU9TQXXQUud5sdUi+ZB0XxwM8aToWLweV+yA0wlQm0yIUVqljquqoHCYEq9II8gJQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] '@oxc-parser/binding-linux-arm64-gnu@0.137.0': - resolution: {integrity: sha1-XzCWcAa+Hh5VTv/DPCBYItl0src=} + resolution: {integrity: sha512-GdEtiG89yMr7XkUGxifgodXEEm2f+xW2f9CpDjlgAnBOwhTmrpQMvhOGobLVKUyzf/qHBXW16smk5zbF3nZU6w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] '@oxc-parser/binding-linux-arm64-musl@0.137.0': - resolution: {integrity: sha1-LmUvd/ykkSaiTfxK7Ow/tHDTf34=} + resolution: {integrity: sha512-EGJ+Bs8iXx8KBH8DQ5BLoEm5lnHaYjlh4/8j8vFhrr/6z4tqONy5BZDzLpKmmNWlN6Hlc5r8YOuBVHqZ9vRFEQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] '@oxc-parser/binding-linux-ppc64-gnu@0.137.0': - resolution: {integrity: sha1-UnlPALuxjjZfFvOU/lSWqkbA+JA=} + resolution: {integrity: sha512-vzFUQENy/fnbSe5DZWovq6tIBc1uhuMztanSW6rz1e9WdQE4gHwYuD7ZII6JnrJifd1R3RSoqiZbgRFlVL2tYQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] '@oxc-parser/binding-linux-riscv64-gnu@0.137.0': - resolution: {integrity: sha1-/0NM5LzDCgHS2Bu1SR3tzs9N/SE=} + resolution: {integrity: sha512-SfVI14HBQs9gtLcUD5hTt5hsNbdrqSUNg9S8muN+LhVQ5nf1WwH3hAoK6B9NKgdYgWAQSXFXGiiBedQ4r/BKuw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] '@oxc-parser/binding-linux-riscv64-musl@0.137.0': - resolution: {integrity: sha1-LZ1N5k7GCnWQ/EDBLNNjERsfDB4=} + resolution: {integrity: sha512-e7Ppy4FCIFNQxT/ikSeIWFoQ0l+N9vgtRBtLcyZXeolTzApyVoPqEXsYPrcdM/9i0Bwk8knvYd37vaEMxHyi6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] '@oxc-parser/binding-linux-s390x-gnu@0.137.0': - resolution: {integrity: sha1-9eY5e7wH982X7zMu8qABGmCdLgM=} + resolution: {integrity: sha512-Bho5qFwdhqsIFR7gipYEUlqvi3SRrY8sugxXig380MIaakBB1PyU9+7dBiBVScfImTNWhijUxdBwqrprGdq5WA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] '@oxc-parser/binding-linux-x64-gnu@0.137.0': - resolution: {integrity: sha1-BYtliRhlSb2ZnEJFzasOJjlnbPQ=} + resolution: {integrity: sha512-36mGWtg7PyFzjJwGDkH6/F4o2nIDEoKXLPr/X/lwqklkomQwJJt1I5GJVmGhovUEmgPK5WAeAZMqlFCehwiy9Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] '@oxc-parser/binding-linux-x64-musl@0.137.0': - resolution: {integrity: sha1-bLFc3crP7sCtxrPDyesBfo3gJX0=} + resolution: {integrity: sha512-/Jqx6+N7A44n2BdvUr7pXhVr2vFjs6WGH3unZRczwrfiH0H1zY0QwKQMG/dtRiTlKGDKGukznPT8lx84/oEsZg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] '@oxc-parser/binding-openharmony-arm64@0.137.0': - resolution: {integrity: sha1-05EeuZJZVSoB2NLH40yqaxvLrYk=} + resolution: {integrity: sha512-9Uj0qHNNl+OgT1UTGwF7ixIXU6T1u2SbMidmgPy/h1h/fl2gRS6YpAxxY1gwHofcWjoTwkoMFd8xs5Vuj6GOFA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] '@oxc-parser/binding-wasm32-wasi@0.137.0': - resolution: {integrity: sha1-ON/pxgjQrRmwEEV4Oi8i7PDn/II=} + resolution: {integrity: sha512-gW2vfkytNGgMVADiuzdvOfw0mWG9za20F/1fCJsif5aBMAvWJTSbpIXbIe0XkOe0VENk+PadpQ7cZgUy2sUJcA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] '@oxc-parser/binding-win32-arm64-msvc@0.137.0': - resolution: {integrity: sha1-3HNMmPN7Ez65qgonQ8fnsk4SH9I=} + resolution: {integrity: sha512-x+pFANF0yL5uK/6T7lu6SlR5qid6sp//eZXKLq5iNsIE+EQg6EaS8/wsW7E91nXXjpnPhSoMOHXShSVhGRdn8w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] '@oxc-parser/binding-win32-ia32-msvc@0.137.0': - resolution: {integrity: sha1-kUjC23v/rKnwmx3LWPAdEa6xaEE=} + resolution: {integrity: sha512-sQUqym80PFi6McRsIqfJrSu2JrSClEZIXXD+/FjAFoULEKzOPsldIdFBG96xdX8aVMzCNQ9792FPx3MfkEIrFA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] '@oxc-parser/binding-win32-x64-msvc@0.137.0': - resolution: {integrity: sha1-NICQDG/KToQwF/bemR/mr1e3NYw=} + resolution: {integrity: sha512-2AsevxlvNN4WKxpEn3RtqD5zbqMaXF+T7JXblsP4gVuY+vC9dXS4ED/PwfRCliFqoeisYS3Iro4DHzxr0TEvVA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] '@oxc-project/types@0.137.0': - resolution: {integrity: sha1-Vud/i7Ih+gXxixzTTXP5TwlUp3M=} + resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} '@oxc-resolver/binding-android-arm-eabi@11.21.3': - resolution: {integrity: sha1-98pC2UYU7sl+ILmvqnFz79YBnuk=} + resolution: {integrity: sha512-eNU11A2WNizh04v3uyaJCootrHIaS0B9aHYXvAvVnPNk4xYSjMUjHnhQ6dewPN2MRYDskV85d1N0Aw0WNWhcyg==} cpu: [arm] os: [android] '@oxc-resolver/binding-android-arm64@11.21.3': - resolution: {integrity: sha1-9yNoLFm03+FD7cttNk1aA94+lJ4=} + resolution: {integrity: sha512-8Q+ZjTLvn2dIcWsrmhdrEihm7q+ag/k+mkry7Z+t0QbbHaVxXQfvH9AewyVMh/WrpEKhQ3DDgx9fYbqeCpeOEw==} cpu: [arm64] os: [android] '@oxc-resolver/binding-darwin-arm64@11.21.3': - resolution: {integrity: sha1-58TzdByHkRxAxCmiCgW3gTacq6o=} + resolution: {integrity: sha512-wkh0qKZGHXVUDxFw3oA1TXnU2BDYY/r775oJflGeIr8uDPPoN2pk8gijQIzYRT6hoql/lg3+Tx/SaTn9e2/aGg==} cpu: [arm64] os: [darwin] '@oxc-resolver/binding-darwin-x64@11.21.3': - resolution: {integrity: sha1-jSNFzS2NTc+lBCLibzsAja6Rv8E=} + resolution: {integrity: sha512-HbNc23FAQYbuyDV2vBWMez4u4mrsm5RAkniGZAWqr6lYZ3N4beeqIb776jzwRl8qL2zRhHVXpUj97X0QgogVzg==} cpu: [x64] os: [darwin] '@oxc-resolver/binding-freebsd-x64@11.21.3': - resolution: {integrity: sha1-t1VMOreQOpWq1hC6XRY5lvS3EJU=} + resolution: {integrity: sha512-K6xNsTUPEUdfrn0+kbMq5nOUB5w1C5pavPQngt4TM2FpN91lP0PBe2srSpamb4d69O7h86oAi/qWX/kZNRSjkw==} cpu: [x64] os: [freebsd] '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3': - resolution: {integrity: sha1-KnF9b3m911pczch1vNCp/uWF8cM=} + resolution: {integrity: sha512-VcFmOpcpWX1zoEy8M58tR2M9YxM+Z9RuQhqAx5q0CTmrruaP7Gveejg75hzd/5sg5nk9G3aLALEa3hE2FsmmTQ==} cpu: [arm] os: [linux] '@oxc-resolver/binding-linux-arm-musleabihf@11.21.3': - resolution: {integrity: sha1-LP1SNN4pE8KAXkK1+uWqk1TZm6k=} + resolution: {integrity: sha512-quVoxFLBy43hWaQbbDtQNRwAX5vX76mv7n64icAtQcJ3eNgVeblqmkupF/hAneNthdqSlnd1sTjb3aQSaDPaCQ==} cpu: [arm] os: [linux] '@oxc-resolver/binding-linux-arm64-gnu@11.21.3': - resolution: {integrity: sha1-MhcvvRtm191tygX82Fzuew4yBgo=} + resolution: {integrity: sha512-X0AqNZgcD07Q4V3RDK18/vYOj/HQT/FnmEFGYS2jTWqY7JO13ryE3TEs3eAIgUJhBnNkpEaiXqz3VK8M7qQhWQ==} cpu: [arm64] os: [linux] libc: [glibc] '@oxc-resolver/binding-linux-arm64-musl@11.21.3': - resolution: {integrity: sha1-rDHkiUy7DAC9pb4eUmZBBzkjv9w=} + resolution: {integrity: sha512-YkaQnaKYdbuaXvRt5Qd0GpbihzVnyfR6z1SpYfIUC6RTu4NF7lDKPjVkYb+jRI2gedVO2rVpN35Y6akG6ud4Lw==} cpu: [arm64] os: [linux] libc: [musl] '@oxc-resolver/binding-linux-ppc64-gnu@11.21.3': - resolution: {integrity: sha1-qK5+zBElkYEk0YdJ79caTgTgqFY=} + resolution: {integrity: sha512-gB9HwhrPiFqUzDeEq+y/CgAijz1YdI6BnXz5GaH2Pa9cWdutchlkGFAiAuGb/PjVQpiK6NFKzFuztxrweoit7A==} cpu: [ppc64] os: [linux] libc: [glibc] '@oxc-resolver/binding-linux-riscv64-gnu@11.21.3': - resolution: {integrity: sha1-0kztmzIfZg8ahZ+ZEt6rP4f9MRU=} + resolution: {integrity: sha512-zjDWBlYk8QGv0H8dsPUWqkfjYIIjG2TvspGkzXL0eImbgxtZorA/klKeHyolevoT3Kvbi+1iMr9Lhrh7jf54Og==} cpu: [riscv64] os: [linux] libc: [glibc] '@oxc-resolver/binding-linux-riscv64-musl@11.21.3': - resolution: {integrity: sha1-sgzWttTGHqYnGJvJOaxfRppabIk=} + resolution: {integrity: sha512-4UfsQvacV388y1zpXL7C1x1FNYaV52JtuNRiuzrfQA2z1z6ElVrsidkGsrvQ5EgeSq1Pj7kaKqrgGkvFuxJ/tw==} cpu: [riscv64] os: [linux] libc: [musl] '@oxc-resolver/binding-linux-s390x-gnu@11.21.3': - resolution: {integrity: sha1-0/SuyCtMuhh+UOIRxg+Va8YRb38=} + resolution: {integrity: sha512-b5uH+HKH0MP5mNBYaK75SKsJbw52URqrx2LavYdq6wb0l3ExAG5niYRP9DWUNHdKilpaBVM2bXk9HNWrH3ew7Q==} cpu: [s390x] os: [linux] libc: [glibc] '@oxc-resolver/binding-linux-x64-gnu@11.21.3': - resolution: {integrity: sha1-rdO3YpPvHolZ4AvGtiradm4YSFw=} + resolution: {integrity: sha512-PjYlmilBpNRh2ntXNYAK3Am5w/nPfEpnU/96iNx7CI8EzAn12J4JRiec63wHJTH31nLoCNxBg/829pN+3CfG3Q==} cpu: [x64] os: [linux] libc: [glibc] '@oxc-resolver/binding-linux-x64-musl@11.21.3': - resolution: {integrity: sha1-S0x5vSaIoPmgLAoLZxAV/y98Zfw=} + resolution: {integrity: sha512-QTBAb7JuHlZ7JUEyM8UiQi2f7m/L4swBhP2TNpYIDc9Wp/wRw1G/8sl6i13aIzQAXH7LKIm294LeOHd0lQR8zA==} cpu: [x64] os: [linux] libc: [musl] '@oxc-resolver/binding-openharmony-arm64@11.21.3': - resolution: {integrity: sha1-PcM6FZqu830td9EN8EWt76tYUt8=} + resolution: {integrity: sha512-4j1DFwjwv36ec9kds0jU/ucQ5Ha4ERO/H95BxR5JFf0kqUUAJ1kwII7XhTc1vZrkdJkvLGC9Q2MbpObpum8RBg==} cpu: [arm64] os: [openharmony] '@oxc-resolver/binding-wasm32-wasi@11.21.3': - resolution: {integrity: sha1-a8ib4FPijVU9sQCzUFxrDSUZsOw=} + resolution: {integrity: sha512-i8oluoel5kru/j1WNrjmQSiA3GQ7wvIYVR1IwIoZtKogAhya2iub+ZKIeSIkcJOrnzQ18Tzl/F+kL3fYOxZLvA==} engines: {node: '>=14.0.0'} cpu: [wasm32] '@oxc-resolver/binding-win32-arm64-msvc@11.21.3': - resolution: {integrity: sha1-Y0XucnpZn+wGLEikO5Rct4huh+o=} + resolution: {integrity: sha512-M/8dw8dD6aOs+NlPJax401CZB9I7Aut84isQLgALGGwke4Afvw+/7yYhZb94yXf6t2sPLhQLmSmtSV+2FhsOWg==} cpu: [arm64] os: [win32] '@oxc-resolver/binding-win32-x64-msvc@11.21.3': - resolution: {integrity: sha1-0Nox/ORta4VnL6HnUVQA+vzkXho=} + resolution: {integrity: sha512-H7BCt/VnS9hnmMp42eGhZ99izSCRvlnWwy/N71K1/J8QoExwY4262Z8QiEkMDtduRJrztayDxETTckmUuAVL9Q==} cpu: [x64] os: [win32] '@peculiar/asn1-cms@2.8.0': - resolution: {integrity: sha1-tIqDiTGSKPkp6azYzujabIWHON4=} + resolution: {integrity: sha512-NgekZOrSJFSBFLFoLfwePguAWAx7z1+f2TEsWFUMyiqqfntZ4+S/S5hzqME3q4pCA0iOsFKdwiQ35dwY24eVqA==} '@peculiar/asn1-csr@2.8.0': - resolution: {integrity: sha1-ybtd7C6v+CSnBegqSljUXm0sNdA=} + resolution: {integrity: sha512-akbF8+uvleHs8sejNPQxwmVFuInAg6FMNHOwMILXfP518YfFJwdR3jr6oNUPOaEJfuEhn/vkNOCIT6ASUd4mbg==} '@peculiar/asn1-ecc@2.8.0': - resolution: {integrity: sha1-1RqysH7KmODPSS0FHpi70KBxMFo=} + resolution: {integrity: sha512-ohwlk+u9Rv2NOAY1c6MfHj45ATVF8R1DUN/WCgABiRtLi2ZftlZWZX7KvpAbU8v9xPcmoILfELeEABj/rn18AQ==} '@peculiar/asn1-pfx@2.8.0': - resolution: {integrity: sha1-jhibZFXiv55fkhuxUOqG1+fRh10=} + resolution: {integrity: sha512-5yof1ytoB++RQtaFbqSUJ8pxDJtZT6vbVqZ8XoJ61ph7UjNVvfFwAilnCodqkNsAodpy13gDhoxZXw00pghnyg==} '@peculiar/asn1-pkcs8@2.8.0': - resolution: {integrity: sha1-pGz4hXubBjiWr6QdK4sqpqB6cKI=} + resolution: {integrity: sha512-qAKXtLpBEw9LqhKpjw3ajZSXlBur+ipW+y2ivVBQAG6F6qRx94yO+1ZR4mvw+YaCfKSaOzLeYEzsPaBp4SJELA==} '@peculiar/asn1-pkcs9@2.8.0': - resolution: {integrity: sha1-bWJpevC71PMP3w0jtAGPPwliDeM=} + resolution: {integrity: sha512-b5nDWCnkV60+cQ141D6sVVwK9nz64R5n3zSVnklGd+ECdkW2Ol3U1a6yYFlalpSOaD557yuJB64A+q42jG7lUQ==} '@peculiar/asn1-rsa@2.8.0': - resolution: {integrity: sha1-nZjQ/EL+xQEZ0ogbipkl022q6nM=} + resolution: {integrity: sha512-zHEUlCqB2mk7x2lxDwHHJy7hWZOPdGHVlsmITWKB5/PbQo61atbu9PJ/0r9dQNMwFzbKPXZ8uK8/91eUhRznSg==} '@peculiar/asn1-schema@2.8.0': - resolution: {integrity: sha1-aWmfhCWbIWFgfKv8NOUSpAI9vvk=} + resolution: {integrity: sha512-7YT0U/ze0tF2QOBbE15gKZwy5tvgGyLRiRHLzhlbOpf7BT032oBSd0haZqXn5W6l26WLlu3dyxzjM+2638/z2Q==} '@peculiar/asn1-x509-attr@2.8.0': - resolution: {integrity: sha1-vRaOP16Lwj5Wsal4kfny+39zAgQ=} + resolution: {integrity: sha512-tHjkfS/qhMnmrlB2J9NhflQlQ7In3khO3CfmVrriOlpTeErY9ZIKOso1hQ5JQiyrJ7ShvqVPk7E5fQmbclkSKA==} '@peculiar/asn1-x509@2.8.0': - resolution: {integrity: sha1-mVip7zXeyEJqq614/+h5jjGLBuI=} + resolution: {integrity: sha512-N0CMuhWUzsWEVq6F1q9X6+VKUnWzSW+cSVg+aPaGGwDdbFoFWTYgin5MHwXgpWd6y9COMBxnfy/Qc+Xc7F0Zwg==} '@peculiar/utils@2.0.3': - resolution: {integrity: sha1-onykxLc2UuEQ8Zp9FtZk9FilUo4=} + resolution: {integrity: sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==} '@peculiar/x509@1.14.3': - resolution: {integrity: sha1-LETCuJR0NGr+w4oMKAPsT7jOlZ4=} + resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==} engines: {node: '>=20.0.0'} '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha1-p36nQvqyV3UUVDTrHSMoz1ATrDM=} + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} '@playwright/test@1.57.0': - resolution: {integrity: sha1-oUcg/6ntfvftvB9geE/GE0rLsAM=} + resolution: {integrity: sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==} engines: {node: '>=18'} hasBin: true '@popperjs/core@2.11.8': - resolution: {integrity: sha1-a3kDLnYKCJnNQgRxC+7elyo6GF8=} + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha1-m4sMxmPWaafY9vXQiToU00jzD78=} + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} '@protobufjs/base64@1.1.2': - resolution: {integrity: sha1-TIVzDlm5ofHzSQR9vyQpYDS7JzU=} + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} '@protobufjs/codegen@2.0.5': - resolution: {integrity: sha1-2TFa188/MKrHC9o8BoRD3G8UNlk=} + resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==} '@protobufjs/eventemitter@1.1.1': - resolution: {integrity: sha1-1RLLJsCuAmCR7iwRZ/G+b69chCo=} + resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==} '@protobufjs/fetch@1.1.1': - resolution: {integrity: sha1-TW/ADI+2QBalyBtGnVSQRjUPEGU=} + resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==} '@protobufjs/float@1.0.2': - resolution: {integrity: sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=} + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} '@protobufjs/path@1.1.2': - resolution: {integrity: sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=} + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} '@protobufjs/pool@1.1.0': - resolution: {integrity: sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=} + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} '@protobufjs/utf8@1.1.1': - resolution: {integrity: sha1-6u5ZABIsEQo9vLcowFlwFKJiF3Q=} + resolution: {integrity: sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==} '@puppeteer/browsers@2.13.0': - resolution: {integrity: sha1-EPmAxtZe/v93+KPKxuGnrBBgRQA=} + resolution: {integrity: sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==} engines: {node: '>=18'} hasBin: true '@puppeteer/browsers@2.6.1': - resolution: {integrity: sha1-11rsUBDK43fF5HQr9eT2KnnCExU=} + resolution: {integrity: sha512-aBSREisdsGH890S2rQqK82qmQYU3uFpSH8wcZWHgHzl3LfzsxAKbLNiAG9mO8v1Y0UICBeClICxPJvyr0rcuxg==} engines: {node: '>=18'} hasBin: true '@remusao/guess-url-type@1.3.0': - resolution: {integrity: sha1-TRtz8T2R9ed3XEYb54IFmrXag60=} + resolution: {integrity: sha512-SNSJGxH5ckvxb3EUHj4DqlAm/bxNxNv2kx/AESZva/9VfcBokwKNS+C4D1lQdWIDM1R3d3UG+xmVzlkNG8CPTQ==} '@remusao/small@1.3.0': - resolution: {integrity: sha1-FNQ8hO1yNXlRLGqh7ObFdoYeNBg=} + resolution: {integrity: sha512-bydAhJI+ywmg5xMUcbqoR8KahetcfkFywEZpsyFZ8EBofilvWxbXnMSe4vnjDI1Y+SWxnNhR4AL/2BAXkf4b8A==} '@remusao/smaz-compress@1.10.0': - resolution: {integrity: sha1-7YaGxT8MwXzYgs6El96JWAVr2To=} + resolution: {integrity: sha512-E/lC8OSU+3bQrUl64vlLyPzIxo7dxF2RvNBe9KzcM4ax43J/d+YMinmMztHyCIHqRbz7rBCtkp3c0KfeIbHmEg==} '@remusao/smaz-decompress@1.10.0': - resolution: {integrity: sha1-UGCDN8nvlP4y369r/YhZ5vkLm/M=} + resolution: {integrity: sha512-aA5ImUH480Pcs5/cOgToKmFnzi7osSNG6ft+7DdmQTaQEEst3nLq3JLlBEk+gwidURymjbx6DYs60LHaZ415VQ==} '@remusao/smaz@1.10.0': - resolution: {integrity: sha1-+vg9i7xLk6W3C43KMzUm//jzyGQ=} + resolution: {integrity: sha512-GQzCxmmMpLkyZwcwNgz8TpuBEWl0RUQa8IcvKiYlPxuyYKqyqPkCr0hlHI15ckn3kDUPS68VmTVgyPnLNrdVmg==} '@remusao/trie@1.5.0': - resolution: {integrity: sha1-WvrCsD/sRf3XFaJw9z+xRx2dpOs=} + resolution: {integrity: sha512-UX+3utJKgwCsg6sUozjxd38gNMVRXrY4TNX9VvCdSrlZBS1nZjRPi98ON3QjRAdf6KCguJFyQARRsulTeqQiPg==} '@rollup/plugin-node-resolve@15.3.1': - resolution: {integrity: sha1-ZgCJU8JSS+eGqjGdSeMvISgpang=} + resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0||^4.0.0 @@ -9469,7 +9487,7 @@ packages: optional: true '@rollup/pluginutils@5.3.0': - resolution: {integrity: sha1-V7obDL2o56PFl6SFPIB7FW4hp7Q=} + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -9478,1038 +9496,1038 @@ packages: optional: true '@rollup/rollup-android-arm-eabi@4.59.0': - resolution: {integrity: sha1-pnQsdMfZ1tYE74pI+ZMmtOzaPYI=} + resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} cpu: [arm] os: [android] '@rollup/rollup-android-arm64@4.59.0': - resolution: {integrity: sha1-lyR74JjeTfDBGXEIn9Lt+ApdqM8=} + resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} cpu: [arm64] os: [android] '@rollup/rollup-darwin-arm64@4.59.0': - resolution: {integrity: sha1-Z0hSzxTPEbgFbgsaL06HK1I1ds8=} + resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} cpu: [arm64] os: [darwin] '@rollup/rollup-darwin-x64@4.59.0': - resolution: {integrity: sha1-Nt/X7QqvTZ2J2e+YOvcmMkVbAkY=} + resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} cpu: [x64] os: [darwin] '@rollup/rollup-freebsd-arm64@4.59.0': - resolution: {integrity: sha1-L4fCB0tCICYP21KpmWJG7fxjPCI=} + resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} cpu: [arm64] os: [freebsd] '@rollup/rollup-freebsd-x64@4.59.0': - resolution: {integrity: sha1-m1omUio4qV3AZhbRk51NmnaTeAM=} + resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} cpu: [x64] os: [freebsd] '@rollup/rollup-linux-arm-gnueabihf@4.59.0': - resolution: {integrity: sha1-hqpIWThahzQjW15ApI5S13B1jDo=} + resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} cpu: [arm] os: [linux] libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.59.0': - resolution: {integrity: sha1-y+cOVubs6NrIPrdztiT8nlpGCXY=} + resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} cpu: [arm] os: [linux] libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.59.0': - resolution: {integrity: sha1-0UmSouZTvDJj0oS8ZXm3ookOHEU=} + resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} cpu: [arm64] os: [linux] libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.59.0': - resolution: {integrity: sha1-L90d3ENOqQrqoIUdIER4m00H9to=} + resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} cpu: [arm64] os: [linux] libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.59.0': - resolution: {integrity: sha1-ihgeb4n5afIWZqdDzUEUFsgAmec=} + resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} cpu: [loong64] os: [linux] libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.59.0': - resolution: {integrity: sha1-kEElryurw5X4Bh2qJ7WvH04/L3g=} + resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} cpu: [loong64] os: [linux] libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.59.0': - resolution: {integrity: sha1-pXlwrGhkyaNEdBGmWCJL3PlIviI=} + resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} cpu: [ppc64] os: [linux] libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.59.0': - resolution: {integrity: sha1-u4TeWyaHBWekJnZm4IiR6Au1amM=} + resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} cpu: [ppc64] os: [linux] libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.59.0': - resolution: {integrity: sha1-ctANLH+zdc41ZOdZ2zPxejW/+rk=} + resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} cpu: [riscv64] os: [linux] libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.59.0': - resolution: {integrity: sha1-TBZu9Y5xj5JFvTGHM4S6FaXBqIM=} + resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} cpu: [riscv64] os: [linux] libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.59.0': - resolution: {integrity: sha1-u1AlzemmHbR4wspyFYCK07znOgk=} + resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} cpu: [s390x] os: [linux] libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.59.0': - resolution: {integrity: sha1-m2ax+c2VxmJMeI8CHHViaf/tFVI=} + resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} cpu: [x64] os: [linux] libc: [glibc] '@rollup/rollup-linux-x64-musl@4.59.0': - resolution: {integrity: sha1-sAfKJV3HFmAX1X19JFGWPwvSP9k=} + resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} cpu: [x64] os: [linux] libc: [musl] '@rollup/rollup-openbsd-x64@4.59.0': - resolution: {integrity: sha1-6LNXstGqLI12qY9fDYieq+k/Tvk=} + resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} cpu: [x64] os: [openbsd] '@rollup/rollup-openharmony-arm64@4.59.0': - resolution: {integrity: sha1-lsLj9KrNPZIZgTKYMf+N3kkiBNw=} + resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} cpu: [arm64] os: [openharmony] '@rollup/rollup-win32-arm64-msvc@4.59.0': - resolution: {integrity: sha1-LYZRSdcG2Tjfi0uPEX5pp3ZG1YE=} + resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} cpu: [arm64] os: [win32] '@rollup/rollup-win32-ia32-msvc@4.59.0': - resolution: {integrity: sha1-q+FZO+D6kjJemXHI2kKcXgW5LDY=} + resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} cpu: [ia32] os: [win32] '@rollup/rollup-win32-x64-gnu@4.59.0': - resolution: {integrity: sha1-xK8+lRjJpc1LHBY9yB0K1Ngufqs=} + resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} cpu: [x64] os: [win32] '@rollup/rollup-win32-x64-msvc@4.59.0': - resolution: {integrity: sha1-RYSoqHspGIpMH+mHqfz3AeJW2Gw=} + resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} cpu: [x64] os: [win32] '@secretlint/config-creator@9.3.2': - resolution: {integrity: sha1-npl8sm+tilYVL5eP9eP8+107VCs=} + resolution: {integrity: sha512-IDUNnM/WVYcvj9PeoZIAvew31HHOtL/paJVkYT2D7G8HyehhTOPMvZSYVr43KXZ/bwUdlJg39C14xPx0NVsJyw==} engines: {node: ^14.13.1 || >=16.0.0} '@secretlint/config-loader@9.3.2': - resolution: {integrity: sha1-EGyFVS/Y06AQfyG1WisHvytDZG8=} + resolution: {integrity: sha512-5pBUiAFI7lwHzsxPozwhIXVVxj65MbPOth5nSPz2rdpLg/dlti3udlstoq624kqQAlpb196Bhto3JCZGpKduQw==} engines: {node: ^14.13.1 || >=16.0.0} '@secretlint/core@9.3.2': - resolution: {integrity: sha1-bf0+L3LProiMW+L6ruqmM90eoe8=} + resolution: {integrity: sha512-oBsrFDTwXvFNLjIdcwrbCS/WUhKrGUeTDTSrmQBuaJvLHgCUX8/jEuBhBONkUDgWO3QEHRhi9LDlgnBqTIODEw==} engines: {node: ^14.13.1 || >=16.0.0} '@secretlint/formatter@9.3.2': - resolution: {integrity: sha1-rmfAkjIux9QirP2vruVLDfG/AZY=} + resolution: {integrity: sha512-JiFhZtg2a4WdkPxCXlq0iGUz18UxzjWnyUMvb/89BvF5m9DKDvmlfHIMLZ3O5205mSJqlpcZxRu7eADJB9fS7Q==} engines: {node: ^14.13.1 || >=16.0.0} '@secretlint/node@9.3.2': - resolution: {integrity: sha1-4Uob3WlrodVUGJQ3TbJBVZHYRIg=} + resolution: {integrity: sha512-WH3PjYtZ8RumUJFZvM4vYEvpelT2m6WFzCRS3j+nzmH5eSv70+BWSISMB/ouZ5koq1+1zPlnWf/ADEvOwgbebw==} engines: {node: ^14.13.1 || >=16.0.0} '@secretlint/profiler@9.3.2': - resolution: {integrity: sha1-VCpHeDLVOjjDZv6mp0JzKr3/JO8=} + resolution: {integrity: sha512-cXXWQzA6lIcT0TY53JvbXtH6BltBfqmH5V39byhnbDfZl5FKCB6FHxVVzkctjwss6KMtDXcNLvfz3nKBZaWRDA==} '@secretlint/resolver@9.3.2': - resolution: {integrity: sha1-jY1ydLhDH/5gTxftCN5tW/d04cc=} + resolution: {integrity: sha512-yOi6md3kzpaFw6w2FJTDLoKlUxr1RltBJrb5lheIBDDXy/7C/5gP0K4uMiqamnVg8c9Ac+qlNS5KUar8FDFpdg==} '@secretlint/secretlint-formatter-sarif@9.3.2': - resolution: {integrity: sha1-hGqnOJyGFrLWDixHu5fmeQpLwaM=} + resolution: {integrity: sha512-RtL9BISmhtsHTOcPI6+4AL1sRnUcnMhuQTvFbNPb9malxolIjthUsUKC5WqgT+8JN1tUG7w/diW+/kr5F1T0zw==} '@secretlint/secretlint-rule-no-dotenv@9.3.2': - resolution: {integrity: sha1-WP/mYfDkGe9NxPJZaj2wU4zlnYA=} + resolution: {integrity: sha512-i1npoCy8eha8gU602SFf4S7vPOYMu9/WHCIr41EQvy4C9J+u95bt8COOYmk46e+aPyEDmQGxn2Lp4F2A2BoVLw==} engines: {node: ^14.13.1 || >=16.0.0} '@secretlint/secretlint-rule-preset-recommend@9.3.2': - resolution: {integrity: sha1-OwjFj30fFs89eJDUN+FeQw2yjhE=} + resolution: {integrity: sha512-rMvHTcHWLydOhKWDrK62x54ICMyfPwl0H5hAPfurLQR0sjjxGeSKuqr75emu6a2/5yYgvScZC97xVrlc2fTPSA==} engines: {node: ^14.13.1 || >=16.0.0} '@secretlint/source-creator@9.3.2': - resolution: {integrity: sha1-Ju/D0ETAa/8Ut0IvnEAC2YYa/gU=} + resolution: {integrity: sha512-eEP8sHnTB7rtv976Awh5+VMTD8udiHBaeSWAEKGy21Gas/slEb02Q812SWo2UMX9NcVBl+DYaOkmPQbcPHrY5A==} engines: {node: ^14.13.1 || >=16.0.0} '@secretlint/types@9.3.2': - resolution: {integrity: sha1-vbI8lOACCVHT4uWPITezLyARoVo=} + resolution: {integrity: sha512-Mxs8jzyPm843B0P/YNiOxnFSNyYtrmMoLPjrmqebrI5LBERRGctXj2Q9Oy/ayZ+FMK+1cP9jLhceicRvlZPR1Q==} engines: {node: ^14.13.1 || >=16.0.0} '@selderee/plugin-htmlparser2@0.11.0': - resolution: {integrity: sha1-1bXimnum05WKGXLHvhb0ssGIxRc=} + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} '@sinclair/typebox@0.27.10': - resolution: {integrity: sha1-vu/mdfGFP3NnauzJFbK9KsmMT8Y=} + resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} '@sindresorhus/is@4.6.0': - resolution: {integrity: sha1-PHycRuZ4/u/nouW7YJ09vWZf+z8=} + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} '@sindresorhus/merge-streams@2.2.1': - resolution: {integrity: sha1-grXh4TXvYu+LUi1uf0OtNgpp8pQ=} + resolution: {integrity: sha512-255V7MMIKw6aQ43Wbqp9HZ+VHn6acddERTLiiLnlcPLU9PdTq9Aijl12oklAgUEblLWye+vHLzmqBx6f2TGcZw==} engines: {node: '>=18'} '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha1-cZ33+0F2a8FDNp6qDdVtjch8mVg=} + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} '@sinonjs/commons@3.0.0': - resolution: {integrity: sha1-vrQ0/oddllJl4EcizPwh3391XXI=} + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha1-Vf3/Hsq581QBkSna9N8N1Nkj6mY=} + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} '@smithy/abort-controller@4.2.11': - resolution: {integrity: sha1-uYnmNhXlRJwrqQ2A/L5P3XESPFQ=} + resolution: {integrity: sha512-Hj4WoYWMJnSpM6/kchsm4bUNTL9XiSyhvoMb2KIq4VJzyDt7JpGHUZHkVNPZVC7YE1tf8tPeVauxpFBKGW4/KQ==} engines: {node: '>=18.0.0'} '@smithy/chunked-blob-reader-native@4.2.3': - resolution: {integrity: sha1-nnmoDY1EeY5856j5aMu7r1pA2VA=} + resolution: {integrity: sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==} engines: {node: '>=18.0.0'} '@smithy/chunked-blob-reader@5.2.2': - resolution: {integrity: sha1-OvSON7EOWv7UeLsx0re8A8gdGWw=} + resolution: {integrity: sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==} engines: {node: '>=18.0.0'} '@smithy/config-resolver@4.4.10': - resolution: {integrity: sha1-IlKaLowj2Xn2nDq8qNmExp0Gzkw=} + resolution: {integrity: sha512-IRTkd6ps0ru+lTWnfnsbXzW80A8Od8p3pYiZnW98K2Hb20rqfsX7VTlfUwhrcOeSSy68Gn9WBofwPuw3e5CCsg==} engines: {node: '>=18.0.0'} '@smithy/core@3.23.9': - resolution: {integrity: sha1-N3w+Ehh8mBCj8m15BFQXcHNXhbU=} + resolution: {integrity: sha512-1Vcut4LEL9HZsdpI0vFiRYIsaoPwZLjAxnVQDUMQK8beMS+EYPLDQCXtbzfxmM5GzSgjfe2Q9M7WaXwIMQllyQ==} engines: {node: '>=18.0.0'} '@smithy/credential-provider-imds@4.2.11': - resolution: {integrity: sha1-EG3akrKkJ1h56E80iCbDEaG7GwU=} + resolution: {integrity: sha512-lBXrS6ku0kTj3xLmsJW0WwqWbGQ6ueooYyp/1L9lkyT0M02C+DWwYwc5aTyXFbRaK38ojALxNixg+LxKSHZc0g==} engines: {node: '>=18.0.0'} '@smithy/eventstream-codec@4.2.11': - resolution: {integrity: sha1-sm0XvkR92zYdf5CvRP9/sD2KPgg=} + resolution: {integrity: sha512-Sf39Ml0iVX+ba/bgMPxaXWAAFmHqYLTmbjAPfLPLY8CrYkRDEqZdUsKC1OwVMCdJXfAt0v4j49GIJ8DoSYAe6w==} engines: {node: '>=18.0.0'} '@smithy/eventstream-serde-browser@4.2.11': - resolution: {integrity: sha1-m8rsKR07W2oZl3OrXQlvOVq8IuI=} + resolution: {integrity: sha512-3rEpo3G6f/nRS7fQDsZmxw/ius6rnlIpz4UX6FlALEzz8JoSxFmdBt0SZnthis+km7sQo6q5/3e+UJcuQivoXA==} engines: {node: '>=18.0.0'} '@smithy/eventstream-serde-config-resolver@4.3.11': - resolution: {integrity: sha1-h6MAcMcCas3/pSlLCVOWbSHFiNs=} + resolution: {integrity: sha512-XeNIA8tcP/GDWnnKkO7qEm/bg0B/bP9lvIXZBXcGZwZ+VYM8h8k9wuDvUODtdQ2Wcp2RcBkPTCSMmaniVHrMlA==} engines: {node: '>=18.0.0'} '@smithy/eventstream-serde-node@4.2.11': - resolution: {integrity: sha1-JaLW09EwSL5OYschHJnROL3cSA4=} + resolution: {integrity: sha512-fzbCh18rscBDTQSCrsp1fGcclLNF//nJyhjldsEl/5wCYmgpHblv5JSppQAyQI24lClsFT0wV06N1Porn0IsEw==} engines: {node: '>=18.0.0'} '@smithy/eventstream-serde-universal@4.2.11': - resolution: {integrity: sha1-xbWxXCWZRB49h3m+5ZL7u/cih48=} + resolution: {integrity: sha512-MJ7HcI+jEkqoWT5vp+uoVaAjBrmxBtKhZTeynDRG/seEjJfqyg3SiqMMqyPnAMzmIfLaeJ/uiuSDP/l9AnMy/Q==} engines: {node: '>=18.0.0'} '@smithy/fetch-http-handler@5.3.13': - resolution: {integrity: sha1-mFjkP/AJr2CFzKMmgFydDJqVefU=} + resolution: {integrity: sha512-U2Hcfl2s3XaYjikN9cT4mPu8ybDbImV3baXR0PkVlC0TTx808bRP3FaPGAzPtB8OByI+JqJ1kyS+7GEgae7+qQ==} engines: {node: '>=18.0.0'} '@smithy/hash-blob-browser@4.2.12': - resolution: {integrity: sha1-2qQ8y0hdVRh8k+ckceD9SMro2ns=} + resolution: {integrity: sha512-1wQE33DsxkM/waftAhCH9VtJbUGyt1PJ9YRDpOu+q9FUi73LLFUZ2fD8A61g2mT1UY9k7b99+V1xZ41Rz4SHRQ==} engines: {node: '>=18.0.0'} '@smithy/hash-node@4.2.11': - resolution: {integrity: sha1-ixnVNmGCTq2WJ7SaJuVVXWyKmP0=} + resolution: {integrity: sha512-T+p1pNynRkydpdL015ruIoyPSRw9e/SQOWmSAMmmprfswMrd5Ow5igOWNVlvyVFZlxXqGmyH3NQwfwy8r5Jx0A==} engines: {node: '>=18.0.0'} '@smithy/hash-stream-node@4.2.11': - resolution: {integrity: sha1-MPAjbIXBuQCIHAHu/k8yn/6e97E=} + resolution: {integrity: sha512-hQsTjwPCRY8w9GK07w1RqJi3e+myh0UaOWBBhZ1UMSDgofH/Q1fEYzU1teaX6HkpX/eWDdm7tAGR0jBPlz9QEQ==} engines: {node: '>=18.0.0'} '@smithy/invalid-dependency@4.2.11': - resolution: {integrity: sha1-3taKoimUdMPPBmleuyijQ5KAhu4=} + resolution: {integrity: sha512-cGNMrgykRmddrNhYy1yBdrp5GwIgEkniS7k9O1VLB38yxQtlvrxpZtUVvo6T4cKpeZsriukBuuxfJcdZQc/f/g==} engines: {node: '>=18.0.0'} '@smithy/is-array-buffer@2.2.0': - resolution: {integrity: sha1-+E8Nn5o2YBqcqTgWiL0bcm/TkRE=} + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} '@smithy/is-array-buffer@4.2.2': - resolution: {integrity: sha1-xAHOVLEqFlKesck4oLbCJHy3Y7g=} + resolution: {integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==} engines: {node: '>=18.0.0'} '@smithy/md5-js@4.2.11': - resolution: {integrity: sha1-G8ixOtnLG0esaWX8qQrEn2si7+8=} + resolution: {integrity: sha512-350X4kGIrty0Snx2OWv7rPM6p6vM7RzryvFs6B/56Cux3w3sChOb3bymo5oidXJlPcP9fIRxGUCk7GqpiSOtng==} engines: {node: '>=18.0.0'} '@smithy/middleware-content-length@4.2.11': - resolution: {integrity: sha1-ijhfp36Ppv/qa0bnrzexTSZ4Vx8=} + resolution: {integrity: sha512-UvIfKYAKhCzr4p6jFevPlKhQwyQwlJ6IeKLDhmV1PlYfcW3RL4ROjNEDtSik4NYMi9kDkH7eSwyTP3vNJ/u/Dw==} engines: {node: '>=18.0.0'} '@smithy/middleware-endpoint@4.4.23': - resolution: {integrity: sha1-TS1/LF4TNgh4KwcbUkTnTh/y8mo=} + resolution: {integrity: sha512-UEFIejZy54T1EJn2aWJ45voB7RP2T+IRzUqocIdM6GFFa5ClZncakYJfcYnoXt3UsQrZZ9ZRauGm77l9UCbBLw==} engines: {node: '>=18.0.0'} '@smithy/middleware-retry@4.4.40': - resolution: {integrity: sha1-sQ2jnYE4+aFJU8JETtmnN1FNi88=} + resolution: {integrity: sha512-YhEMakG1Ae57FajERdHNZ4ShOPIY7DsgV+ZoAxo/5BT0KIe+f6DDU2rtIymNNFIj22NJfeeI6LWIifrwM0f+rA==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@4.2.12': - resolution: {integrity: sha1-j4NvPtyFcBtp308oGRBqbg71DPg=} + resolution: {integrity: sha512-W9g1bOLui7Xn5FABRVS0o3rXL0gfN37d/8I/W7i0N7oxjx9QecUmXEMSUMADTODwdtka9cN43t5BI2CodLJpng==} engines: {node: '>=18.0.0'} '@smithy/middleware-stack@4.2.11': - resolution: {integrity: sha1-yt062l+hH+ihks0YREp3xFEMi8M=} + resolution: {integrity: sha512-s+eenEPW6RgliDk2IhjD2hWOxIx1NKrOHxEwNUaUXxYBxIyCcDfNULZ2Mu15E3kwcJWBedTET/kEASPV1A1Akg==} engines: {node: '>=18.0.0'} '@smithy/node-config-provider@4.3.11': - resolution: {integrity: sha1-ptJGtnwQxocxabrkbm0EJh1UhAI=} + resolution: {integrity: sha512-xD17eE7kaLgBBGf5CZQ58hh2YmwK1Z0O8YhffwB/De2jsL0U3JklmhVYJ9Uf37OtUDLF2gsW40Xwwag9U869Gg==} engines: {node: '>=18.0.0'} '@smithy/node-http-handler@4.4.14': - resolution: {integrity: sha1-pApmd7fNosEAFBgzq+4UAcLhp08=} + resolution: {integrity: sha512-DamSqaU8nuk0xTJDrYnRzZndHwwRnyj/n/+RqGGCcBKB4qrQem0mSDiWdupaNWdwxzyMU91qxDmHOCazfhtO3A==} engines: {node: '>=18.0.0'} '@smithy/property-provider@4.2.11': - resolution: {integrity: sha1-ehsWriCDJy+A44DueUjdwQMwHbE=} + resolution: {integrity: sha512-14T1V64o6/ndyrnl1ze1ZhyLzIeYNN47oF/QU6P5m82AEtyOkMJTb0gO1dPubYjyyKuPD6OSVMPDKe+zioOnCg==} engines: {node: '>=18.0.0'} '@smithy/protocol-http@5.3.11': - resolution: {integrity: sha1-5EUK87qeUui5mpwwNckMjNhTvic=} + resolution: {integrity: sha512-hI+barOVDJBkNt4y0L2mu3Ugc0w7+BpJ2CZuLwXtSltGAAwCb3IvnalGlbDV/UCS6a9ZuT3+exd1WxNdLb5IlQ==} engines: {node: '>=18.0.0'} '@smithy/querystring-builder@4.2.11': - resolution: {integrity: sha1-vvt3U7FC+rZe2u4HAJbBxcsq2Rc=} + resolution: {integrity: sha512-7spdikrYiljpket6u0up2Ck2mxhy7dZ0+TDd+S53Dg2DHd6wg+YNJrTCHiLdgZmEXZKI7LJZcwL3721ZRDFiqA==} engines: {node: '>=18.0.0'} '@smithy/querystring-parser@4.2.11': - resolution: {integrity: sha1-sehZRbw8gAWOCwEUrzkbsGmyOT8=} + resolution: {integrity: sha512-nE3IRNjDltvGcoThD2abTozI1dkSy8aX+a2N1Rs55en5UsdyyIXgGEmevUL3okZFoJC77JgRGe99xYohhsjivQ==} engines: {node: '>=18.0.0'} '@smithy/service-error-classification@4.2.11': - resolution: {integrity: sha1-2i7hr1yFE4DmsBRrdUFvDl9k4fc=} + resolution: {integrity: sha512-HkMFJZJUhzU3HvND1+Yw/kYWXp4RPDLBWLcK1n+Vqw8xn4y2YiBhdww8IxhkQjP/QlZun5bwm3vcHc8AqIU3zw==} engines: {node: '>=18.0.0'} '@smithy/shared-ini-file-loader@4.4.6': - resolution: {integrity: sha1-Q13G2Qe8jG95UhLpRAAN4GOyz+E=} + resolution: {integrity: sha512-IB/M5I8G0EeXZTHsAxpx51tMQ5R719F3aq+fjEB6VtNcCHDc0ajFDIGDZw+FW9GxtEkgTduiPpjveJdA/CX7sw==} engines: {node: '>=18.0.0'} '@smithy/signature-v4@5.3.11': - resolution: {integrity: sha1-gfwqummZSyOv9zC5hEGOlpa8NsQ=} + resolution: {integrity: sha512-V1L6N9aKOBAN4wEHLyqjLBnAz13mtILU0SeDrjOaIZEeN6IFa6DxwRt1NNpOdmSpQUfkBj0qeD3m6P77uzMhgQ==} engines: {node: '>=18.0.0'} '@smithy/smithy-client@4.12.3': - resolution: {integrity: sha1-lTcCIbxcLzCiUVey34SjYwyB7IU=} + resolution: {integrity: sha512-7k4UxjSpHmPN2AxVhvIazRSzFQjWnud3sOsXcFStzagww17j1cFQYqTSiQ8xuYK3vKLR1Ni8FzuT3VlKr3xCNw==} engines: {node: '>=18.0.0'} '@smithy/types@4.13.0': - resolution: {integrity: sha1-l4cpegfucu901PfZPHRNEO1mTCE=} + resolution: {integrity: sha512-COuLsZILbbQsdrwKQpkkpyep7lCsByxwj7m0Mg5v66/ZTyenlfBc40/QFQ5chO0YN/PNEH1Bi3fGtfXPnYNeDw==} engines: {node: '>=18.0.0'} '@smithy/url-parser@4.2.11': - resolution: {integrity: sha1-TIfrWHLCqwOFCGs47uS0puWgKbI=} + resolution: {integrity: sha512-oTAGGHo8ZYc5VZsBREzuf5lf2pAurJQsccMusVZ85wDkX66ojEc/XauiGjzCj50A61ObFTPe6d7Pyt6UBYaing==} engines: {node: '>=18.0.0'} '@smithy/util-base64@4.3.2': - resolution: {integrity: sha1-vgK8spqHvnRDVkZ+ol/6QT5pXOo=} + resolution: {integrity: sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==} engines: {node: '>=18.0.0'} '@smithy/util-body-length-browser@4.2.2': - resolution: {integrity: sha1-xEBCd9IgOYcqvbgOeAD5pj8mOGI=} + resolution: {integrity: sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==} engines: {node: '>=18.0.0'} '@smithy/util-body-length-node@4.2.3': - resolution: {integrity: sha1-+SPKUw3vuGqaw8otMGa8ynswT7w=} + resolution: {integrity: sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==} engines: {node: '>=18.0.0'} '@smithy/util-buffer-from@2.2.0': - resolution: {integrity: sha1-b8iFhRZexz+GgdQm2W3l1AICHks=} + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} engines: {node: '>=14.0.0'} '@smithy/util-buffer-from@4.2.2': - resolution: {integrity: sha1-LGt4V3V9/Yj2zS02AWF5pAzMkTs=} + resolution: {integrity: sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==} engines: {node: '>=18.0.0'} '@smithy/util-config-provider@4.2.2': - resolution: {integrity: sha1-Uuv52JQoONGLxfsVIN4ehpnXqtY=} + resolution: {integrity: sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==} engines: {node: '>=18.0.0'} '@smithy/util-defaults-mode-browser@4.3.39': - resolution: {integrity: sha1-nzVLnc0MDheqUH5vwTtHha8xzZc=} + resolution: {integrity: sha512-ui7/Ho/+VHqS7Km2wBw4/Ab4RktoiSshgcgpJzC4keFPs6tLJS4IQwbeahxQS3E/w98uq6E1mirCH/id9xIXeQ==} engines: {node: '>=18.0.0'} '@smithy/util-defaults-mode-node@4.2.42': - resolution: {integrity: sha1-JIotalC0SA86KkzneUCekPDRa5Y=} + resolution: {integrity: sha512-QDA84CWNe8Akpj15ofLO+1N3Rfg8qa2K5uX0y6HnOp4AnRYRgWrKx/xzbYNbVF9ZsyJUYOfcoaN3y93wA/QJ2A==} engines: {node: '>=18.0.0'} '@smithy/util-endpoints@3.3.2': - resolution: {integrity: sha1-qB7piiWWJI9s3tyGjRPLa56kl7I=} + resolution: {integrity: sha512-+4HFLpE5u29AbFlTdlKIT7jfOzZ8PDYZKTb3e+AgLz986OYwqTourQ5H+jg79/66DB69Un1+qKecLnkZdAsYcA==} engines: {node: '>=18.0.0'} '@smithy/util-hex-encoding@4.2.2': - resolution: {integrity: sha1-Sr8zNd0euIQEHYWJynYo2Bpv0dM=} + resolution: {integrity: sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==} engines: {node: '>=18.0.0'} '@smithy/util-middleware@4.2.11': - resolution: {integrity: sha1-0qiYk/wt/VAN5BLF98eWFxaFX00=} + resolution: {integrity: sha512-r3dtF9F+TpSZUxpOVVtPfk09Rlo4lT6ORBqEvX3IBT6SkQAdDSVKR5GcfmZbtl7WKhKnmb3wbDTQ6ibR2XHClw==} engines: {node: '>=18.0.0'} '@smithy/util-retry@4.2.11': - resolution: {integrity: sha1-WfxTZEiNTHVe7Fr7QFRiP4Us8OY=} + resolution: {integrity: sha512-XSZULmL5x6aCTTii59wJqKsY1l3eMIAomRAccW7Tzh9r8s7T/7rdo03oektuH5jeYRlJMPcNP92EuRDvk9aXbw==} engines: {node: '>=18.0.0'} '@smithy/util-stream@4.5.17': - resolution: {integrity: sha1-UwcxU964kNkf0U/SBV5lgrYnsP0=} + resolution: {integrity: sha512-793BYZ4h2JAQkNHcEnyFxDTcZbm9bVybD0UV/LEWmZ5bkTms7JqjfrLMi2Qy0E5WFcCzLwCAPgcvcvxoeALbAQ==} engines: {node: '>=18.0.0'} '@smithy/util-uri-escape@4.2.2': - resolution: {integrity: sha1-SOQCBuf+na78jUS7Q6GrF+dqv0o=} + resolution: {integrity: sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==} engines: {node: '>=18.0.0'} '@smithy/util-utf8@2.3.0': - resolution: {integrity: sha1-3ZbXZANjJZkkohQxPDzxbn3TKcU=} + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} engines: {node: '>=14.0.0'} '@smithy/util-utf8@4.2.2': - resolution: {integrity: sha1-IdtoaYLm8zk6wmLkkUO0I3ATDxM=} + resolution: {integrity: sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==} engines: {node: '>=18.0.0'} '@smithy/util-waiter@4.2.11': - resolution: {integrity: sha1-r+CK11ybUeNcg+PBGSaFXYhnQfY=} + resolution: {integrity: sha512-x7Rh2azQPs3XxbvCzcttRErKKvLnbZfqRf/gOjw2pb+ZscX88e5UkRPCB67bVnsFHxayvMvmePfKTqsRb+is1A==} engines: {node: '>=18.0.0'} '@smithy/uuid@1.1.2': - resolution: {integrity: sha1-tul8cVhhXko8d16AnADYwmm1oS4=} + resolution: {integrity: sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==} engines: {node: '>=18.0.0'} '@swc/helpers@0.5.15': - resolution: {integrity: sha1-ee+rNExYGez4OkPz+fgR/IS1Ftc=} + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} '@szmarczak/http-timer@4.0.6': - resolution: {integrity: sha1-tKkUu2LnwnLU5Zif5EQPgSqx2Ac=} + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} '@textlint/ast-node-types@14.7.1': - resolution: {integrity: sha1-jydgoGR1PlN1AJ7T2OGW933IBS8=} + resolution: {integrity: sha512-7C/xYNZtaG+erIMjNZbRz7av9/S5eC+GAMh0rJ6A9Hik6nS4WyWKblutw2p+O2YWWT2tmOjzu/81fWzzDzmtRg==} '@textlint/linter-formatter@14.7.1': - resolution: {integrity: sha1-GuZaDGo36V6VMHdNgYWMcZiNmTY=} + resolution: {integrity: sha512-saAE+e4RZFInRmCF9pu7ukZAHxWaYw9WIA1PptYHItCnlyGS7WB7cYHilkj4coWGr3xGaQ2qAjqX/QIbVE7QGA==} '@textlint/module-interop@14.7.1': - resolution: {integrity: sha1-vQy9nII77I0tUPGFXaFoD7QUTqA=} + resolution: {integrity: sha512-9mfLErTFx8N+tZNTL+46YCY/jnCDOJKpceng5WVwDeZeMJbewhjY3PVcxMoPnvPT10QnE/hDk3b6riUYckgHgw==} '@textlint/resolver@14.7.1': - resolution: {integrity: sha1-w/LvWU1m5nDQjRZaiops6fA5bIg=} + resolution: {integrity: sha512-lQ5ATfpsOgiYnwe2aoS0t9uJ4SrvyiCJpfJdqUQZCVL161O/yMKZBc6nwsyBlruEcFoNxK06F3s3IIV4EsI12A==} '@textlint/types@14.7.1': - resolution: {integrity: sha1-BybeftLmxZqcQO+URF3dUtKgK5o=} + resolution: {integrity: sha512-j10OEEHRAaqGMC6dK3+H1Eg3bksASGTmGDozsSepYs7qInY+lYBCe5m3JTrKkDnAX4nNy8ninnKzrYKcVkWahw==} '@tootallnate/quickjs-emscripten@0.23.0': - resolution: {integrity: sha1-207P1JmpdlqyQALDtpbQLm0yoSw=} + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} '@ts-graphviz/adapter@2.0.6': - resolution: {integrity: sha1-GNWkIwTcp///dg/K8xGjFI70o70=} + resolution: {integrity: sha512-kJ10lIMSWMJkLkkCG5gt927SnGZcBuG0s0HHswGzcHTgvtUe7yk5/3zTEr0bafzsodsOq5Gi6FhQeV775nC35Q==} engines: {node: '>=18'} '@ts-graphviz/ast@2.0.7': - resolution: {integrity: sha1-TsM0kuS06ZjUYyAw6XqffhSa+4Y=} + resolution: {integrity: sha512-e6+2qtNV99UT6DJSoLbHfkzfyqY84aIuoV8Xlb9+hZAjgpum8iVHprGeAMQ4rF6sKUAxrmY8rfF/vgAwoPc3gw==} engines: {node: '>=18'} '@ts-graphviz/common@2.1.5': - resolution: {integrity: sha1-olbfrqAJpbFH2Pc/JeV/tE9kYqI=} + resolution: {integrity: sha512-S6/9+T6x8j6cr/gNhp+U2olwo1n0jKj/682QVqsh7yXWV6ednHYqxFw0ZsY3LyzT0N8jaZ6jQY9YD99le3cmvg==} engines: {node: '>=18'} '@ts-graphviz/core@2.0.7': - resolution: {integrity: sha1-IYXjkJkAOLJnojQcPbHO82gLvug=} + resolution: {integrity: sha512-w071DSzP94YfN6XiWhOxnLpYT3uqtxJBDYdh6Jdjzt+Ce6DNspJsPQgpC7rbts/B8tEkq0LHoYuIF/O5Jh5rPg==} engines: {node: '>=18'} '@tsconfig/node10@1.0.12': - resolution: {integrity: sha1-vlfOrB5GkrQb6d5r6MMqEGY226Q=} + resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} '@tsconfig/node12@1.0.11': - resolution: {integrity: sha1-7j3vHyfZ7WbaxuRqKVz/sBUuBY0=} + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} '@tsconfig/node14@1.0.3': - resolution: {integrity: sha1-5DhjFihPALmENb9A9y91oJ2r9sE=} + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} '@tsconfig/node16@1.0.4': - resolution: {integrity: sha1-C5LcwMwcgfbzBqOB8o4xsaVlNuk=} + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} '@tybys/wasm-util@0.10.3': - resolution: {integrity: sha1-AVy6np3UfOFNA9KoxdVHv7FpZl0=} + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} '@types/accepts@1.3.7': - resolution: {integrity: sha1-O5ixiJ0rI4ZgTCu75i5PtR6VsmU=} + resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} '@types/async@3.2.24': - resolution: {integrity: sha1-OpY1EEdXW7zyNAVBstlVo1M5YI8=} + resolution: {integrity: sha512-8iHVLHsCCOBKjCF2KwFe0p9Z3rfM9mL+sSP8btyR5vTjJRAqpBYD28/ZLgXPf0pjG1VxOvtCV/BgXkQbpSe8Hw==} '@types/babel__code-frame@7.27.0': - resolution: {integrity: sha1-R5n1l+yee73TnhN09DQjdC3P+pk=} + resolution: {integrity: sha512-Dwlo+LrxDx/0SpfmJ/BKveHf7QXWvLBLc+x03l5sbzykj3oB9nHygCpSECF1a+s+QIxbghe+KHqC90vGtxLRAA==} '@types/babel__core@7.20.5': - resolution: {integrity: sha1-PfFfJ7qFMZyqB7oI0HIYibs5wBc=} + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} '@types/babel__generator@7.27.0': - resolution: {integrity: sha1-tYGSlMUReZV6+uw0FEL5NB5BCKk=} + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} '@types/babel__template@7.4.4': - resolution: {integrity: sha1-VnJRNwHBshmbxtrWNqnXSRWGdm8=} + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} '@types/babel__traverse@7.28.0': - resolution: {integrity: sha1-B9cT1szg0mXJhJ2wy+YtP2Hzb3Q=} + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} '@types/better-sqlite3@7.6.11': - resolution: {integrity: sha1-lazyL89Vd2JO6iAgWOJrojl2C58=} + resolution: {integrity: sha512-i8KcD3PgGtGBLl3+mMYA8PdKkButvPyARxA7IQAd6qeslht13qxb1zzO8dRCtE7U3IoJS782zDBAeoKiM695kg==} '@types/better-sqlite3@7.6.13': - resolution: {integrity: sha1-pyOH8A0vU8q2meY/LiwFRTz5U/A=} + resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==} '@types/body-parser@1.19.5': - resolution: {integrity: sha1-BM6aO2d9yL1oGhfaGrmDXcnT7eQ=} + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} '@types/bonjour@3.5.13': - resolution: {integrity: sha1-rfkM4aEF6B3R+cYf3Fr9ob+5KVY=} + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} '@types/cacheable-request@6.0.3': - resolution: {integrity: sha1-pDCzJgRmyntcpb/XNWk7Nuep0YM=} + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} '@types/chai-dom@1.11.3': - resolution: {integrity: sha1-Flms4mmM3NntiywAeHb1PjfZzIk=} + resolution: {integrity: sha512-EUEZI7uID4ewzxnU7DJXtyvykhQuwe+etJ1wwOiJyQRTH/ifMWKX+ghiXkxCUvNJ6IQDodf0JXhuP6zZcy2qXQ==} '@types/chai@4.3.20': - resolution: {integrity: sha1-yykVd+00LKkmAEMIQaADKboFzsw=} + resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} '@types/chai@5.2.3': - resolution: {integrity: sha1-jpzZ4cNYH6azQaWu1ViOsoW+C0o=} + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/chrome@0.0.114': - resolution: {integrity: sha1-jOsz+iYfS54wf6c0S6gYLY1BDU4=} + resolution: {integrity: sha512-i7qRr74IrxHtbnrZSKUuP5Uvd5EOKwlwJq/yp7+yTPihOXnPhNQO4Z5bqb1XTnrjdbUKEJicaVVbhcgtRijmLA==} '@types/chrome@0.0.256': - resolution: {integrity: sha1-NmtS+PWi2BGa3p7vJRlpLm+Yf/g=} + resolution: {integrity: sha512-NleTQw4DNzhPwObLNuQ3i3nvX1rZ1mgnx5FNHc2KP+Cj1fgd3BrT5yQ6Xvs+7H0kNsYxCY+lxhiCwsqq3JwtEg==} '@types/chrome@0.0.278': - resolution: {integrity: sha1-9/78DdS2alS96ilQxf1zl8cpk40=} + resolution: {integrity: sha512-PDIJodOu7o54PpSOYLybPW/MDZBCjM1TKgf31I3Q/qaEbNpIH09rOM3tSEH3N7Q+FAqb1933LhF8ksUPYeQLNg==} '@types/co-body@6.1.3': - resolution: {integrity: sha1-IBeWxjiQZrQAz8tOHsXD23mCZaI=} + resolution: {integrity: sha512-UhuhrQ5hclX6UJctv5m4Rfp52AfG9o9+d9/HwjxhVB5NjXxr5t9oKgJxN8xRHgr35oo8meUEHUPFWiKg6y71aA==} '@types/command-line-args@5.2.3': - resolution: {integrity: sha1-VTzi/VrPFgtEjTB2SbOP/GDTljk=} + resolution: {integrity: sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==} '@types/command-line-usage@5.0.4': - resolution: {integrity: sha1-N05MYtePvFpnCg822hAjWvh5oNU=} + resolution: {integrity: sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg==} '@types/connect-history-api-fallback@1.5.4': - resolution: {integrity: sha1-fecWRaEDBWtIrDzgezUguBnB1bM=} + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} '@types/connect@3.4.38': - resolution: {integrity: sha1-W6fzvE+73q/43e2VLl/yzFP42Fg=} + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} '@types/content-disposition@0.5.9': - resolution: {integrity: sha1-AMoUk5Qyhp3oKaTM9v04D6kYF1A=} + resolution: {integrity: sha512-8uYXI3Gw35MhiVYhG3s295oihrxRyytcRHjSjqnqZVDDy/xcGBRny7+Xj1Wgfhv5QzRtN2hB2dVRBUX9XW3UcQ==} '@types/convert-source-map@2.0.3': - resolution: {integrity: sha1-5YbCLKSvLWcNR9Mtf+Nl1cVVhpU=} + resolution: {integrity: sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==} '@types/cookies@0.9.2': - resolution: {integrity: sha1-zN+G14Ly3qNFMd0yczolvkgXfNQ=} + resolution: {integrity: sha512-1AvkDdZM2dbyFybL4fxpuNCaWyv//0AwsuUk2DWeXyM1/5ZKm6W3z6mQi24RZ4l2ucY+bkSHzbDVpySqPGuV8A==} '@types/cors@2.8.18': - resolution: {integrity: sha1-EB4DOzygZpXz1zxYfNf56zSBNdE=} + resolution: {integrity: sha512-nX3d0sxJW41CqQvfOzVG1NCTXfFDrDWIghCZncpHeWlVFd81zxB/DLhg7avFg6eHLCRX7ckBmoIIcqa++upvJA==} '@types/cytoscape-dagre@2.3.3': - resolution: {integrity: sha1-J/fFfm4FWgXY+XHLCeduEcg3c0w=} + resolution: {integrity: sha512-FJBsNMbBZpqNwT6rp5leVYMevWUjnyD1QS8erNMAMWoBifvaVUklXIjE+bllLDSowjM3abXuRvljliSXUU+d1A==} '@types/cytoscape@3.21.9': - resolution: {integrity: sha1-lQBBZaCld1e8ox2DrhyH5hlLICY=} + resolution: {integrity: sha512-JyrG4tllI6jvuISPjHK9j2Xv/LTbnLekLke5otGStjFluIyA9JjgnvgZrSBsp8cEDpiTjwgZUZwpPv8TSBcoLw==} '@types/d3-array@3.2.2': - resolution: {integrity: sha1-4CFRRk0C1KG0RkbQ/NuT+viP3ow=} + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} '@types/d3-axis@3.0.6': - resolution: {integrity: sha1-52DldluBiLHe+jK8i7YGL4Hkx5U=} + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} '@types/d3-brush@3.0.6': - resolution: {integrity: sha1-wvQ2KwRdRy4bGGzb7DKbpSva7mw=} + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} '@types/d3-chord@3.0.6': - resolution: {integrity: sha1-FwbKQM9+pZoK3Y9EVu//j4d1eT0=} + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} '@types/d3-color@3.1.3': - resolution: {integrity: sha1-NoyWGhjech2oIA6AvzlD+1MTavI=} + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} '@types/d3-contour@3.0.6': - resolution: {integrity: sha1-mto/qcTQDjpQk/7QNWx6uSlgQjE=} + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} '@types/d3-delaunay@6.0.4': - resolution: {integrity: sha1-GFwagMyAf92io/6WD3wRxKJ5UuE=} + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} '@types/d3-dispatch@3.0.7': - resolution: {integrity: sha1-7wBNihKARs/OQ00XGC+DTkTvlbI=} + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} '@types/d3-drag@3.0.7': - resolution: {integrity: sha1-sTq6iyRCtAaMmp5tHYL4vOp3/AI=} + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} '@types/d3-dsv@3.0.7': - resolution: {integrity: sha1-CjUfmW3Jmzf0+li0ksLRwE49rBc=} + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} '@types/d3-ease@3.0.2': - resolution: {integrity: sha1-4o2xv7+mFwdvd3DdHZpI6qO2xRs=} + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} '@types/d3-fetch@3.0.7': - resolution: {integrity: sha1-wEorTyMYGqN28wrwKD28eztWmYA=} + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} '@types/d3-force@3.0.10': - resolution: {integrity: sha1-bcj8bh81cE87BXCQvu63rGdL/xo=} + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} '@types/d3-format@3.0.4': - resolution: {integrity: sha1-seRGVkTds/3zomP+uyQKbNYW3pA=} + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} '@types/d3-geo@3.1.0': - resolution: {integrity: sha1-ueVqB5RJF08KLIaEqaTfP2BSJEA=} + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} '@types/d3-hierarchy@3.1.7': - resolution: {integrity: sha1-YCP7Oy1GMiny1oD5rEtHRm9x8Xs=} + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} '@types/d3-interpolate@3.0.4': - resolution: {integrity: sha1-QSuQ6EhwKF8v+KhGxutgNE8SpBw=} + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} '@types/d3-path@3.1.1': - resolution: {integrity: sha1-9jKzgMOsoduo40qgSbzWpK8j34o=} + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} '@types/d3-polygon@3.0.2': - resolution: {integrity: sha1-365UptNdGedqyVZbyzKo5UaTGJw=} + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} '@types/d3-quadtree@3.0.6': - resolution: {integrity: sha1-1HQLD+NbHFi2bhSI9OftApUvVw8=} + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} '@types/d3-random@3.0.3': - resolution: {integrity: sha1-7ZlcceyxXgzTHiLZ1dI5QuMwDPs=} + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} '@types/d3-scale-chromatic@3.1.0': - resolution: {integrity: sha1-3G1Pmpg3bxjqULrWw5U38bVGPDk=} + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} '@types/d3-scale@4.0.9': - resolution: {integrity: sha1-V6L3ByQub+Hega17/Myq9gYXmvs=} + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} '@types/d3-selection@3.0.11': - resolution: {integrity: sha1-vXpF/AqMMWemMWdeYbwsorBY1KM=} + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} '@types/d3-shape@3.1.8': - resolution: {integrity: sha1-0VFsxQh1O+BoUs0GdY47tUoisOM=} + resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} '@types/d3-time-format@4.0.3': - resolution: {integrity: sha1-1rwea2p9tpzM+73Uw0twYy2enbI=} + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} '@types/d3-time@3.0.4': - resolution: {integrity: sha1-hHL+7NY5aRRQ3YAA6zPt1EThMj8=} + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} '@types/d3-timer@3.0.2': - resolution: {integrity: sha1-cLvad9wjqnJ0E+IuIUr6Pw6FL3A=} + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} '@types/d3-transition@3.0.9': - resolution: {integrity: sha1-ETa8V+nds8OQ3MybX/O30rjZRwY=} + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} '@types/d3-zoom@3.0.8': - resolution: {integrity: sha1-3Msy0cVrHhxuDxGA2ZSJbwOLxAs=} + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} '@types/d3@7.4.3': - resolution: {integrity: sha1-1FUKhdCPSXj68KTDa4SMYeqsB+I=} + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} '@types/dagre@0.7.52': - resolution: {integrity: sha1-7b8LymkizQrRk2p0hvnQNSPXVlo=} + resolution: {integrity: sha512-XKJdy+OClLk3hketHi9Qg6gTfe1F3y+UFnHxKA2rn9Dw+oXa4Gb378Ztz9HlMgZKSxpPmn4BNVh9wgkpvrK1uw==} '@types/debounce@1.2.4': - resolution: {integrity: sha1-y36F2a1aur+sLycYPorItXayq7M=} + resolution: {integrity: sha512-jBqiORIzKDOToaF63Fm//haOCHuwQuLa2202RK4MozpA6lh93eCBc+/8+wZn5OzjJt3ySdc+74SXWXB55Ewtyw==} '@types/debug@4.1.12': - resolution: {integrity: sha1-oVXyFpCHGVNBDfS2tvUxh/BQCRc=} + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} '@types/debug@4.1.13': - resolution: {integrity: sha1-ItHMnVQtNZPK6nZPl0MGqzYobuc=} + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} '@types/deep-eql@4.0.2': - resolution: {integrity: sha1-M0MRlx06BxIefrkbaEpgXn7qnL0=} + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} '@types/eslint-scope@3.7.7': - resolution: {integrity: sha1-MQi9XxiwzbJ3yGez3UScntcHmsU=} + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} '@types/eslint@9.6.1': - resolution: {integrity: sha1-1Xla1zLOgXFfJ/ddqRMASlZ1FYQ=} + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} '@types/esrecurse@4.3.1': - resolution: {integrity: sha1-b2Nq+WL75hkbgwvWdrpZhpJrzOw=} + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} '@types/estree@1.0.8': - resolution: {integrity: sha1-lYuRyZGxhnztMYvt6g4hXuBQcm4=} + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/estree@1.0.9': - resolution: {integrity: sha1-zz8Oh2177hWpOrkluCv1cKOQSiQ=} + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} '@types/express-serve-static-core@4.17.41': - resolution: {integrity: sha1-UHfe+mMMLo0oqp/8LAHBV8MFvvY=} + resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} '@types/express-serve-static-core@4.19.8': - resolution: {integrity: sha1-mblgMipNV2sjmmQKtS7xkZibA28=} + resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} '@types/express-serve-static-core@5.1.1': - resolution: {integrity: sha1-Gnf6/+6VctORJJMyWb4lI4N9fqo=} + resolution: {integrity: sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==} '@types/express@4.17.21': - resolution: {integrity: sha1-wm1KFR5g7+AISyPcM2nrxjHtGS0=} + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} '@types/express@4.17.25': - resolution: {integrity: sha1-BwyMc6b+5pNtZcGV27+32lAmZJs=} + resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} '@types/fast-levenshtein@0.0.4': - resolution: {integrity: sha1-oW/2YHGJ7fCKxjHlS1d0sPrxLYc=} + resolution: {integrity: sha512-tkDveuitddQCxut1Db8eEFfMahTjOumTJGPHmT9E7KUH+DkVq9WTpVvlfenf3S+uCBeu8j5FP2xik/KfxOEjeA==} '@types/file-size@1.0.3': - resolution: {integrity: sha1-mlzeIQ9nxaoV1bIlH2cZ8vgCDWo=} + resolution: {integrity: sha512-2HOqIo9ng92X1aGRF7Sz3fn1LWA4aU9gAKotykOcXHIFDOKgB4kTYMiFmhdK+X1SBiaqmq2uakpSYQn6QJCnyg==} '@types/filesystem@0.0.35': - resolution: {integrity: sha1-bWdmYmCD4rOXwJvcVwkoJxINsR0=} + resolution: {integrity: sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==} '@types/filewriter@0.0.33': - resolution: {integrity: sha1-2dYR252c2Zrk5FjeQg7rZK1gTqg=} + resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} '@types/find-config@1.0.4': - resolution: {integrity: sha1-a/kJOC3hqJgjP4pvgtg+5zntpWs=} + resolution: {integrity: sha512-BCXaKgzHK7KnfCQBRQBWGTA+QajOE9uFolXPt+9EktiiMS56D8oXF2ZCh9eCxuEyfqDmX/mYIcmWg9j9f659eg==} '@types/firefox-webext-browser@120.0.4': - resolution: {integrity: sha1-J+6teBBRsuaBo0TdKYNzX6rdQ0M=} + resolution: {integrity: sha512-lBrpf08xhiZBigrtdQfUaqX1UauwZ+skbFiL8u2Tdra/rklkKadYmIzTwkNZSWtuZ7OKpFqbE2HHfDoFqvZf6w==} '@types/fs-extra@11.0.4': - resolution: {integrity: sha1-4WqGO7iEP7qMUAQ2K1pz4XvsykU=} + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} '@types/fs-extra@8.1.5': - resolution: {integrity: sha1-M6rili07Pskhm1rKJVXuACdPWSc=} + resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} '@types/fs-extra@9.0.13': - resolution: {integrity: sha1-dZT7rgT+fxkYzos9IT90/0SsH0U=} + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} '@types/geojson@7946.0.16': - resolution: {integrity: sha1-jr5T1p762nBERU4zBcGQF9l87So=} + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} '@types/glob@7.2.0': - resolution: {integrity: sha1-vBtb86qS8lvV3TnzXFc2G9zlsus=} + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} '@types/graceful-fs@4.1.9': - resolution: {integrity: sha1-Kga8D2iiCrN7PjaqI4vmq99J6LQ=} + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} '@types/har-format@1.2.15': - resolution: {integrity: sha1-81JJNjjC+J1wZDihmp6zALSTtQY=} + resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==} '@types/hast@3.0.4': - resolution: {integrity: sha1-HWs5mTuCzqateDlFsFCMJZA+Fao=} + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} '@types/html-minifier-terser@6.1.0': - resolution: {integrity: sha1-T8M6AMHQwWmHsaIM+S0gYUxVrDU=} + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} '@types/html-to-text@9.0.4': - resolution: {integrity: sha1-SoPdiui/qRRX0LH/wm9NBTfv9Yw=} + resolution: {integrity: sha512-pUY3cKH/Nm2yYrEmDlPR1mR7yszjGx4DrwPjQ702C4/D5CwHuZTgZdIdwPkRbcuhs7BAh2L5rg3CL5cbRiGTCQ==} '@types/http-assert@1.5.6': - resolution: {integrity: sha1-trZXw4ojUNIc4hMTnzOwOytfpDE=} + resolution: {integrity: sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw==} '@types/http-cache-semantics@4.2.0': - resolution: {integrity: sha1-9qd4j0OMv94V8prK1GUStMAZE7M=} + resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} '@types/http-errors@2.0.4': - resolution: {integrity: sha1-frR3JsORtzRabsNa1/TeRpz1uk8=} + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} '@types/http-errors@2.0.5': - resolution: {integrity: sha1-W3SasrFroRNCP+saZKldzTA5hHI=} + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} '@types/http-proxy@1.17.17': - resolution: {integrity: sha1-2eLEVx/jUHNDyyEM1BeQN15ZpTM=} + resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha1-dznCMqH+6bTTzomF8xTAxtM1Sdc=} + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} '@types/istanbul-lib-report@3.0.2': - resolution: {integrity: sha1-OUeY1fcnQC617Jnrlhj/zSt2RaE=} + resolution: {integrity: sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w==} '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha1-UwR2FK5y4Z/AQB2HLeOuK0zjUL8=} + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} '@types/istanbul-reports@3.0.3': - resolution: {integrity: sha1-AxPiYI5taVXRlfVTYd3uvUt0xuc=} + resolution: {integrity: sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg==} '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha1-DwPj0vZw+9rFhuNLQzeDBwzBb1Q=} + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} '@types/jest@29.5.14': - resolution: {integrity: sha1-K5EJEvodaFbK3NDB+Vr33x1gSeU=} + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} '@types/jquery@3.5.32': - resolution: {integrity: sha1-PrDaIGEbksfEnr7WFjtSpP3Ffe8=} + resolution: {integrity: sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ==} '@types/js-yaml@4.0.9': - resolution: {integrity: sha1-zYI4LE+QL+2WkaLteexoxYmK9MI=} + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} '@types/jsdom@20.0.1': - resolution: {integrity: sha1-B8FLwZvS+RjBkpVBzarK6JR0SAg=} + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} '@types/jsdom@28.0.0': - resolution: {integrity: sha1-OHvLX+YMdTrgxYWEtlmlmDGZOPI=} + resolution: {integrity: sha512-A8TBQQC/xAOojy9kM8E46cqT00sF0h7dWjV8t8BJhUi2rG6JRh7XXQo/oLoENuZIQEpXsxLccLCnknyQd7qssQ==} '@types/json-schema@7.0.15': - resolution: {integrity: sha1-WWoXRyM2lNUPatinhp/Lb1bPWEE=} + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} '@types/jsonfile@6.1.4': - resolution: {integrity: sha1-YUr+waEWTn1nC0p61k3z5763twI=} + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} '@types/jsonpath@0.2.4': - resolution: {integrity: sha1-BlvlmYHBQggyg1r2Vjd2IicRVL4=} + resolution: {integrity: sha512-K3hxB8Blw0qgW6ExKgMbXQv2UPZBoE2GqLpVY+yr7nMD2Pq86lsuIzyAaiQ7eMqFL5B6di6pxSkogLJEyEHoGA==} '@types/katex@0.16.7': - resolution: {integrity: sha1-A6toCrT6T7xstG7PmH7K1dgBmGg=} + resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} '@types/keygrip@1.0.6': - resolution: {integrity: sha1-F0lTUYGiqbAqwEp5dVCoeHNFt0A=} + resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} '@types/keyv@3.1.4': - resolution: {integrity: sha1-PM2xxnUbDH5SMAvNrNW8v4+qdbY=} + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} '@types/koa-compose@3.2.9': - resolution: {integrity: sha1-bvuUXuVXO+D07dtyii9oJvej85U=} + resolution: {integrity: sha512-BroAZ9FTvPiCy0Pi8tjD1OfJ7bgU1gQf0eR6e1Vm+JJATy9eKOG3hQMFtMciMawiSOVnLMdmUOC46s7HBhSTsA==} '@types/koa@2.15.0': - resolution: {integrity: sha1-7KQ9dvUnyAO0kXMfld9XVjbntvI=} + resolution: {integrity: sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==} '@types/linkify-it@5.0.0': - resolution: {integrity: sha1-IUEwAZcxBs2hw6m5Hu3UzNVGnXY=} + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} '@types/lodash-es@4.17.12': - resolution: {integrity: sha1-ZfbR5fgFOap8+/yWLeXe8M9PNBs=} + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} '@types/lodash.debounce@4.0.9': - resolution: {integrity: sha1-D18hxQe851IbXjDnokRAl1rIYKU=} + resolution: {integrity: sha512-Ma5JcgTREwpLRwMM+XwBR7DaWe96nC38uCBDFKZWbNKD+osjVzdpnUSwBcqCptrp16sSOLBAUb50Car5I0TCsQ==} '@types/lodash.throttle@4.1.9': - resolution: {integrity: sha1-8Xpq4IT3wBF7198UWzeVN7yWFcU=} + resolution: {integrity: sha512-PCPVfpfueguWZQB7pJQK890F2scYKoDUL3iM522AptHWn7d5NQmeS/LTEHIcLr5PaTzl3dK2Z0xSUHHTHwaL5g==} '@types/lodash@4.17.17': - resolution: {integrity: sha1-+4WgT0fp5NqIg4T+6tDeBfcHA1U=} + resolution: {integrity: sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==} '@types/mailparser@3.4.6': - resolution: {integrity: sha1-/MqZ/p+Rnz2mkaC/XjAixig8MGg=} + resolution: {integrity: sha512-wVV3cnIKzxTffaPH8iRnddX1zahbYB1ZEoAxyhoBo3TBCBuK6nZ8M8JYO/RhsCuuBVOw/DEN/t/ENbruwlxn6Q==} '@types/markdown-it@14.1.2': - resolution: {integrity: sha1-V/JTKggABn2bk081IUKaLov7TGE=} + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} '@types/mdast@4.0.4': - resolution: {integrity: sha1-fM9y7dLxqn3TQ34YDGQ3NYWATdY=} + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} '@types/mdurl@2.0.0': - resolution: {integrity: sha1-1Dh4tbICImghY65viXsgRHIzvf0=} + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} '@types/mime@1.3.5': - resolution: {integrity: sha1-HvMC4Bz30rWg+lJnkMkSO/HQZpA=} + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} '@types/mime@3.0.4': - resolution: {integrity: sha1-IZisJ03mAXtE2UHgAmHVvGoOCkU=} + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} '@types/minimatch@3.0.5': - resolution: {integrity: sha1-EAHMXmo3BLg8I2An538vWOoBD0A=} + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} '@types/minimatch@5.1.2': - resolution: {integrity: sha1-B1CLRXl8uB7D8nMBGwVM0HVe3co=} + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} '@types/mocha@10.0.10': - resolution: {integrity: sha1-kfYpBejSPL1mIlMS8jlFSiO+v6A=} + resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} '@types/ms@0.7.33': - resolution: {integrity: sha1-gL8dpksV8h/Ywdw4fDGSkxfZnuk=} + resolution: {integrity: sha512-AuHIyzR5Hea7ij0P9q7vx7xu4z0C28ucwjAZC0ja7JhINyCnOw8/DnvAPQQ9TfOlCtZAmCERKQX9+o1mgQhuOQ==} '@types/ms@2.1.0': - resolution: {integrity: sha1-BSqmekjszEMJ1/AZG35BQ0uQu3g=} + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} '@types/node-fetch@2.6.12': - resolution: {integrity: sha1-irXD74Mw8TEAp0eeLNVtM4aDCgM=} + resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} '@types/node@18.19.130': - resolution: {integrity: sha1-2kxjJHk6ed77emLLo5R+xa3QDVk=} + resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} '@types/node@20.19.40': - resolution: {integrity: sha1-gKSnI24ngXY2d3g2zu24ia322i8=} + resolution: {integrity: sha512-xxx6M2IpSTnnKcR0cMvIiohkiCx20/oRPtWGbenFygKCGl3zqUzdNjQ/1V4solq1LU+dgv0nQzeGOuqkqZGg0Q==} '@types/node@22.15.18': - resolution: {integrity: sha1-L4JA9+ky9XHC1F9VW6C2w/enWWM=} + resolution: {integrity: sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==} '@types/node@22.19.19': - resolution: {integrity: sha1-MSS/Jt7VQWi3aBODIf75m0IMYRI=} + resolution: {integrity: sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==} '@types/node@22.20.1': - resolution: {integrity: sha1-hOfN9jzaogwTSqMXzMkBqiHhbw4=} + resolution: {integrity: sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==} '@types/node@24.12.2': - resolution: {integrity: sha1-NTyxYdvxeF6iXogpun7FdMXGKaw=} + resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==} '@types/node@26.1.1': - resolution: {integrity: sha1-utdY1gHpfWz0V9IE7najX8570Rk=} + resolution: {integrity: sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==} '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha1-VuLMJsOXwDj6sOOpF6EtXFkJ6QE=} + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} '@types/parse5@6.0.3': - resolution: {integrity: sha1-cFuzSeeJ76BvQ/EozvUSQHU0JMs=} + resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} '@types/plist@3.0.5': - resolution: {integrity: sha1-mgxJwPmIbIyGlqeQTdcD9ihANuA=} + resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} '@types/prismjs@1.26.5': - resolution: {integrity: sha1-ckmau7TE7JmCRGUJ0vFPuEg4adY=} + resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} '@types/prop-types@15.7.14': - resolution: {integrity: sha1-FDNBnXOyp+v8aRjc79LsDVzWmPI=} + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} '@types/proper-lockfile@4.1.4': - resolution: {integrity: sha1-zZ+rkr2wRzDBraVCw1bwNiD4QAg=} + resolution: {integrity: sha512-uo2ABllncSqg9F1D4nugVl9v93RmjxF6LJzQLMLDdPaXCUIDPeOJ21Gbqi43xNKzBi/WQ0Q0dICqufzQbMjipQ==} '@types/qs@6.15.0': - resolution: {integrity: sha1-ljq2F3mEP+kQY5pQZhtI8WK8f3k=} + resolution: {integrity: sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==} '@types/qs@6.15.1': - resolution: {integrity: sha1-hgaIQnLGPw25aYa9NUhlDYqTiL8=} + resolution: {integrity: sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==} '@types/range-parser@1.2.7': - resolution: {integrity: sha1-UK5DU+qt3AQEQnmBL1LIxlhX28s=} + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} '@types/react@18.3.18': - resolution: {integrity: sha1-mzgsTNMuE+Rj+X3wfC7ju80mkEs=} + resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} '@types/regexp.escape@2.0.0': - resolution: {integrity: sha1-ojtCHip/dOJQ4yHByZF3ua/1aNY=} + resolution: {integrity: sha512-L0+4KOC47zH0AE/27YhzECRlE4HxHycQy0ng8P4SMmsYIdUqJFzKlk4LameozRQ2mRozPRwRAzpXsDsUgb6ezA==} '@types/resolve@1.20.2': - resolution: {integrity: sha1-l9JuAM1KBCO0r2IKvs8+b0QreXU=} + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} '@types/responselike@1.0.3': - resolution: {integrity: sha1-zClwbwo5fP5t+J3r/kv1zqFZ21A=} + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} '@types/retry@0.12.2': - resolution: {integrity: sha1-7SeaZPpDi7afJIDtpEk3kSu3SAo=} + resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} '@types/sarif@2.1.7': - resolution: {integrity: sha1-2rTRa6dWjphGxFSodk8zxdmOVSQ=} + resolution: {integrity: sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==} '@types/semver@7.7.1': - resolution: {integrity: sha1-POOvGlUk7zJ9Lank/YttlcjXBSg=} + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} '@types/send@0.17.4': - resolution: {integrity: sha1-ZhnNJOcnB5NwLk5qS5WKkBDPxXo=} + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} '@types/send@0.17.6': - resolution: {integrity: sha1-rrU4W+Yv9YpSzVRZ2qUJrpFlHSU=} + resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} '@types/send@1.2.1': - resolution: {integrity: sha1-anhORVQ8GMd0wEm/9tPbrwRcnHQ=} + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} '@types/serve-index@1.9.4': - resolution: {integrity: sha1-5q4T1QU8sG7TY5IRC0+aSaxOyJg=} + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} '@types/serve-static@1.15.10': - resolution: {integrity: sha1-doFpFFp3j49d/LY2CurUFKOZT+4=} + resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} '@types/serve-static@1.15.5': - resolution: {integrity: sha1-FeZ1AOxAeJoejJ3vwtMqiW8FsDM=} + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} '@types/sinon-chai@3.2.12': - resolution: {integrity: sha1-x8sGvuRKU07ITzpVNMOjpG/XebY=} + resolution: {integrity: sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==} '@types/sinon@21.0.1': - resolution: {integrity: sha1-+ZXir98VvoMtXxZFgD2CqOuVobw=} + resolution: {integrity: sha512-5yoJSqLbjH8T9V2bksgRayuhpZy+723/z6wBOR+Soe4ZlXC0eW8Na71TeaZPUWDQvM7LYKa9UGFc6LRqxiR5fQ==} '@types/sinonjs__fake-timers@15.0.1': - resolution: {integrity: sha1-Sfcx2UU/UtZN159aVibBzxuBvqQ=} + resolution: {integrity: sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==} '@types/sizzle@2.3.8': - resolution: {integrity: sha1-UYYJrvt5faGb8iL+sZno9lP/dic=} + resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==} '@types/sockjs@0.3.36': - resolution: {integrity: sha1-zjIs8HvMEZ1Mv3+IlU86O9D2dTU=} + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} '@types/spotify-api@0.0.25': - resolution: {integrity: sha1-nauzsKHwUn7WGTbr+KgMHROMJ8M=} + resolution: {integrity: sha512-okhoy0U9fPWtwqCfbDyW8VxamhqvXE0gXIVeMOh5HcvEFQvWW2X0VsvdiX/OyiGQpZbZiOJXIGrbnIPfK0AIpA==} '@types/stack-utils@2.0.2': - resolution: {integrity: sha1-AShN3p705tjO9kInmNmjrRimb4s=} + resolution: {integrity: sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==} '@types/tough-cookie@4.0.5': - resolution: {integrity: sha1-y24qaRtwyxd8bjrpwdLosuqM0wQ=} + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} '@types/trusted-types@2.0.7': - resolution: {integrity: sha1-usywepcLkXB986PoumiWxX6tLRE=} + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} '@types/unist@2.0.11': - resolution: {integrity: sha1-Ea9XsSfjJId3SEH3pOVOqxZtA8Q=} + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} '@types/unist@3.0.3': - resolution: {integrity: sha1-rKqw+RnOaczmKcLU7S60rcG2wgw=} + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} '@types/verror@1.10.11': - resolution: {integrity: sha1-09a0GJeMiqIC1B5bs0gyJ7bswbs=} + resolution: {integrity: sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==} '@types/vscode@1.100.0': - resolution: {integrity: sha1-Nc1iioaxFYeFbflL6UBUqrAfLxc=} + resolution: {integrity: sha512-4uNyvzHoraXEeCamR3+fzcBlh7Afs4Ifjs4epINyUX/jvdk0uzLnwiDY35UKDKnkCHP5Nu3dljl2H8lR6s+rQw==} '@types/webidl-conversions@7.0.3': - resolution: {integrity: sha1-Ewbb+lN2i8vPyVocjN42eXVYGFk=} + resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} '@types/webrtc@0.0.37': - resolution: {integrity: sha1-aTZj3F3oxshUBvbPVmHMwehOTGg=} + resolution: {integrity: sha512-JGAJC/ZZDhcrrmepU4sPLQLIOIAgs5oIK+Ieq90K8fdaNMhfdfqmYatJdgif1NDQtvrSlTOGJDUYHIDunuufOg==} '@types/webvtt-parser@2.2.0': - resolution: {integrity: sha1-xWYAxswfAGt1FhW8GPXL94ZNNnY=} + resolution: {integrity: sha512-T8n08m3VWAOCVDHWPOtEehnLcVSyQaUmyjIvGCERWRPMyVooUjqWaDsvKD3bcwQSU8TLBW19YTSRx9UxBNfckA==} '@types/whatwg-url@11.0.4': - resolution: {integrity: sha1-/+0NyNidkfYuPzaPy9oiKkh8T2M=} + resolution: {integrity: sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==} '@types/winreg@1.2.36': - resolution: {integrity: sha1-8dmpkYyukKY8YQbJgiSspqNpg/w=} + resolution: {integrity: sha512-DtafHy5A8hbaosXrbr7YdjQZaqVewXmiasRS5J4tYMzt3s1gkh40ixpxgVFfKiQ0JIYetTJABat47v9cpr/sQg==} '@types/ws@7.4.7': - resolution: {integrity: sha1-98OQo296Bnmqad4tUBMZ9PjZtwI=} + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} '@types/ws@8.18.1': - resolution: {integrity: sha1-SEZOS/Ld/RfbE9hFRn9gcP/qSqk=} + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} '@types/xml2js@0.4.14': - resolution: {integrity: sha1-XUYqKnMwNF4jCca1SaGDo3bej5o=} + resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} '@types/yargs-parser@21.0.3': - resolution: {integrity: sha1-gV4wt4bS6PDc2F/VvPXhoE0AjxU=} + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} '@types/yargs@17.0.35': - resolution: {integrity: sha1-BwE+RqpNfX1QpJ4VYEwcU0DU6yQ=} + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} '@types/yauzl@2.10.3': - resolution: {integrity: sha1-6bKAi08QlQSgPNqVglmHb2EBeZk=} + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} '@typescript-eslint/eslint-plugin@8.62.1': - resolution: {integrity: sha1-Fzbc3KbK4zWdgYRWpH0YtnR2H38=} + resolution: {integrity: sha512-4EQM77WgVNxj7OkL/5b/D/xZsw00G577+UriYTC7JF5opcF3T2AuoeY7ueLaZgSVjSgCS6yOAJB5bRGLPSJUzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.62.1 @@ -10517,291 +10535,291 @@ packages: typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/parser@8.62.1': - resolution: {integrity: sha1-0/e6GPG/eL+3JW/qAh0ZJ7SOcIA=} + resolution: {integrity: sha512-sPhE4iHuJDSvoAiec+Ro8JyXw8f0ql13HFR82P99nCm9GwTEKG0KYLvDe6REk8BCXuit6vJAv/Yxg5ABaNS2rA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/project-service@8.62.1': - resolution: {integrity: sha1-eNiA6xz2hZtewmPQT5VAPp+Qrkc=} + resolution: {integrity: sha512-yQ3RgY5RkSBpsNS1Bx/JQEcA24FOSdfGktoyprAr5u18390UQdtVcfnEv4nIrIshNnavlVyZBKxQwT1fIAE6cg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/scope-manager@8.62.1': - resolution: {integrity: sha1-fuZemm6zzNxIFlk6T/OIQDBt6Io=} + resolution: {integrity: sha512-r4d249KbQ1SFdpeStvob8Ih6aPPIzfqllPVOtvhve6ZcpuVcYo5/7zUWckKpHE7StASX4kTKZTLf0WQm/wPkcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.62.1': - resolution: {integrity: sha1-4rXyT+chBEGJy36BEXyW11l51ic=} + resolution: {integrity: sha512-xadytJqX9vJVQ2fdQjkcIVigwaOJNWkpjdLt6cEQ+xPnrI1fkp+/jZE/I97k9KUjqtpd25i0HeyZf3T6dutv2g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/type-utils@8.62.1': - resolution: {integrity: sha1-69MLE7rLEwcJFyWaIzCc9kQSH5o=} + resolution: {integrity: sha512-aXM5xlqXiTxPibXB93cLAURfT3rlizf7uMXISCXy66Isr/9hISJx3yDsKl0L7lKa51b8JpFuNKby0/O0pEm9jg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/types@8.62.1': - resolution: {integrity: sha1-xYvpVOSDsvyYJ1N01by0C5mELcE=} + resolution: {integrity: sha512-ooCzJFaf+Hg+uG6fA3NRFGuFjlfNlDhBthbv4ZPU/0elCAFUfnyXUvf/WOpHz/jYwSmvU2GkR2LtyUfy1AxZ1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.62.1': - resolution: {integrity: sha1-mMG7F2NdWwJrJBk6jSkYisZDgP8=} + resolution: {integrity: sha512-xMcW9oP9u7fAMXYs9A65CVmtLQe2r//oXINHfi8HV+oiqhih17sbLdhXr4540YWlgpDKQdY854OL5ZrdCiQsAA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/utils@8.62.1': - resolution: {integrity: sha1-FiK3XH5t8wgYHdC0SFXcQijaBFc=} + resolution: {integrity: sha512-sHtbPfuKNZCG+ih8SyjjucqRntSVmp8XgL5u6o9mAhiSn8ds5o/M/XdM0abweme2Tln3szOstOrZ9OXitvPh0g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/visitor-keys@8.62.1': - resolution: {integrity: sha1-SZZX13/6+4qZ6x1sl4R8pDAjRyI=} + resolution: {integrity: sha512-4g3BLxfdTMy8iZG0MaBkadnlRrCJ74cQiFbyEVMrkwIoqdyaXXQM22cotDvrl4x28wgIZ9rEJRoM+mmhSJpJ1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typespec/ts-http-runtime@0.2.2': - resolution: {integrity: sha1-oMdFjtmarm1+si78F6g5zsC0obM=} + resolution: {integrity: sha512-Gz/Sm64+Sq/vklJu1tt9t+4R2lvnud8NbTD/ZfpZtMiUX7YeVpCA8j6NSW8ptwcoLL+NmYANwqP8DV0q/bwl2w==} engines: {node: '>=18.0.0'} '@typespec/ts-http-runtime@0.3.3': - resolution: {integrity: sha1-YnZ7iN87p/xTv9ZqlMiN/h3sVbw=} + resolution: {integrity: sha512-91fp6CAAJSRtH5ja95T1FHSKa8aPW9/Zw6cta81jlZTUw/+Vq8jM/AfF/14h2b71wwR84JUTW/3Y8QPhDAawFA==} engines: {node: '>=20.0.0'} '@upsetjs/venn.js@2.0.0': - resolution: {integrity: sha1-O+GSA4zdqSeqT4siq1Gvgqv0fzQ=} + resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} '@vscode/codicons@0.0.42': - resolution: {integrity: sha1-eLbIwCfvQBdie4Qr7iuF1lYi4sU=} + resolution: {integrity: sha512-PlWPUA32rdiJE6250ltFGMzM3GyC1L9OaryDGOpxiMU0H9lBtEJrSFxpRvefdgJuQRcyUenGFTYzFuFbR9qzjg==} '@vscode/test-cli@0.0.12': - resolution: {integrity: sha1-OMFAVDahyWDhq8CHkOqCL8mz5BI=} + resolution: {integrity: sha512-iYN0fDg29+a2Xelle/Y56Xvv7Nc8Thzq4VwpzAF/SIE6918rDicqfsQxV6w1ttr2+SOm+10laGuY9FG2ptEKsQ==} engines: {node: '>=18'} hasBin: true '@vscode/test-electron@2.5.2': - resolution: {integrity: sha1-99QHjoIwzpyUMi8qKcwWwXlUCF0=} + resolution: {integrity: sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg==} engines: {node: '>=16'} '@vscode/vsce-sign-alpine-arm64@2.0.2': - resolution: {integrity: sha1-SszEheVapv8EsZW0f3IurVfapY4=} + resolution: {integrity: sha512-E80YvqhtZCLUv3YAf9+tIbbqoinWLCO/B3j03yQPbjT3ZIHCliKZlsy1peNc4XNZ5uIb87Jn0HWx/ZbPXviuAQ==} cpu: [arm64] os: [alpine] '@vscode/vsce-sign-alpine-x64@2.0.2': - resolution: {integrity: sha1-Skt7UFtMwPWFljlIl8SaC84OVAw=} + resolution: {integrity: sha512-n1WC15MSMvTaeJ5KjWCzo0nzjydwxLyoHiMJHu1Ov0VWTZiddasmOQHekA47tFRycnt4FsQrlkSCTdgHppn6bw==} cpu: [x64] os: [alpine] '@vscode/vsce-sign-darwin-arm64@2.0.2': - resolution: {integrity: sha1-EKpp/rf4Gj3GjCQgOMoD6v8ZwS4=} + resolution: {integrity: sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ==} cpu: [arm64] os: [darwin] '@vscode/vsce-sign-darwin-x64@2.0.2': - resolution: {integrity: sha1-MxVSjz6hAHpkizMgv/NqM6ngeqU=} + resolution: {integrity: sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==} cpu: [x64] os: [darwin] '@vscode/vsce-sign-linux-arm64@2.0.2': - resolution: {integrity: sha1-zlxc/JnjRUtPt3BAWBK0a9bcqHA=} + resolution: {integrity: sha512-Ybeu7cA6+/koxszsORXX0OJk9N0GgfHq70Wqi4vv2iJCZvBrOWwcIrxKjvFtwyDgdeQzgPheH5nhLVl5eQy7WA==} cpu: [arm64] os: [linux] '@vscode/vsce-sign-linux-arm@2.0.2': - resolution: {integrity: sha1-QUL9qD5xMLMa7diqgeTapjNDI8I=} + resolution: {integrity: sha512-Fkb5jpbfhZKVw3xwR6t7WYfwKZktVGNXdg1m08uEx1anO0oUPUkoQRsNm4QniL3hmfw0ijg00YA6TrxCRkPVOQ==} cpu: [arm] os: [linux] '@vscode/vsce-sign-linux-x64@2.0.2': - resolution: {integrity: sha1-WauT8yLvs89JFm1OLoEnicMRdCg=} + resolution: {integrity: sha512-NsPPFVtLaTlVJKOiTnO8Cl78LZNWy0Q8iAg+LlBiCDEgC12Gt4WXOSs2pmcIjDYzj2kY4NwdeN1mBTaujYZaPg==} cpu: [x64] os: [linux] '@vscode/vsce-sign-win32-arm64@2.0.2': - resolution: {integrity: sha1-0JVwShSwQEwLb2lumInppRsxqGw=} + resolution: {integrity: sha512-wPs848ymZ3Ny+Y1Qlyi7mcT6VSigG89FWQnp2qRYCyMhdJxOpA4lDwxzlpL8fG6xC8GjQjGDkwbkWUcCobvksQ==} cpu: [arm64] os: [win32] '@vscode/vsce-sign-win32-x64@2.0.2': - resolution: {integrity: sha1-KU6nK0T+3WlNSfXO9MVb84dtwlc=} + resolution: {integrity: sha512-pAiRN6qSAhDM5SVOIxgx+2xnoVUePHbRNC7OD2aOR3WltTKxxF25OfpK8h8UQ7A0BuRkSgREbB59DBlFk4iAeg==} cpu: [x64] os: [win32] '@vscode/vsce-sign@2.0.5': - resolution: {integrity: sha1-iFADZHbcDU4IDZwtgyXj6X7/UZM=} + resolution: {integrity: sha512-GfYWrsT/vypTMDMgWDm75iDmAOMe7F71sZECJ+Ws6/xyIfmB3ELVnVN+LwMFAvmXY+e6eWhR2EzNGF/zAhWY3Q==} '@vscode/vsce@3.4.0': - resolution: {integrity: sha1-9iNxjGi8nNK7Mhz11nkUcBZrlNk=} + resolution: {integrity: sha512-vKyQxFSipqO4e1vUM3iDzOzMSXIKVhrJlWuGgYv/GF1ihAM/zzs2MVSGFC4CfdhF1ep+5AoLn1aRFn96CGhEWA==} engines: {node: '>= 20'} hasBin: true '@vue/compiler-core@3.5.16': - resolution: {integrity: sha1-L5X08XwWwJxXu/ZDmQdbkhUGYws=} + resolution: {integrity: sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==} '@vue/compiler-core@3.5.39': - resolution: {integrity: sha1-O26iuV88DtQEjv2H1xxGjkAhlR0=} + resolution: {integrity: sha512-16KBTEXAJCpDr0mwlw+AZyhu8iyC7R3S2vBwsI7QnWJU6X3WKc9VKeNEZpiMdZ569qWhz9574L3vV55qRL0Vtw==} '@vue/compiler-dom@3.5.16': - resolution: {integrity: sha1-FR2DkCUpdcCxp3MCkiD9/Pqi10M=} + resolution: {integrity: sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==} '@vue/compiler-dom@3.5.39': - resolution: {integrity: sha1-1CYWciM0QnYr7hcJ3MNM7vwa6HM=} + resolution: {integrity: sha512-oQPigALqYbNxTNPvNgSOe+czwVExfbVF02lz8jP0S3AXJiu3jxYDygNUiqSep4ezzW8XgnubqH63My2A7JR/vg==} '@vue/compiler-sfc@3.5.16': - resolution: {integrity: sha1-V39/1CpG+sg1f/7Ubo+zTTJphBk=} + resolution: {integrity: sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw==} '@vue/compiler-sfc@3.5.39': - resolution: {integrity: sha1-PrE5UOdEK8hu7r5zKH7Lxr8WePU=} + resolution: {integrity: sha512-d0ki86iOyN8LoZPBmk5SJWNwHP19CnDDCfuo//+2WJa2g5Ke0Jay983PIBIcSSzldC68I8DrD5GrHV3OSDfodg==} '@vue/compiler-ssr@3.5.16': - resolution: {integrity: sha1-O3h03/dxqy+F+wm+cfbHanX8xaw=} + resolution: {integrity: sha512-d2V7kfxbdsjrDSGlJE7my1ZzCXViEcqN6w14DOsDrUCHEA6vbnVCpRFfrc4ryCP/lCKzX2eS1YtnLE/BuC9f/A==} '@vue/compiler-ssr@3.5.39': - resolution: {integrity: sha1-UORMnsWR5BnoPrxtO87cuqP3CAU=} + resolution: {integrity: sha512-Ce7/wvwMHai74bdszfXExdazFigYnlF9zgCmEQUcM1j0fOymlouZ7XilTYNo8oUjhlnjYOZbGrcYKuqjz89Ucw==} '@vue/reactivity@3.5.16': - resolution: {integrity: sha1-UoxTWgiLPBtn8oXx8iEb55QluWI=} + resolution: {integrity: sha512-FG5Q5ee/kxhIm1p2bykPpPwqiUBV3kFySsHEQha5BJvjXdZTUfmya7wP7zC39dFuZAcf/PD5S4Lni55vGLMhvA==} '@vue/runtime-core@3.5.16': - resolution: {integrity: sha1-CoKMMiIkraJvgaLiJ8PUrry3LHo=} + resolution: {integrity: sha512-bw5Ykq6+JFHYxrQa7Tjr+VSzw7Dj4ldR/udyBZbq73fCdJmyy5MPIFR9IX/M5Qs+TtTjuyUTCnmK3lWWwpAcFQ==} '@vue/runtime-dom@3.5.16': - resolution: {integrity: sha1-wby8yoYrdxhvgcku3VF250Zw8Hg=} + resolution: {integrity: sha512-T1qqYJsG2xMGhImRUV9y/RseB9d0eCYZQ4CWca9ztCuiPj/XWNNN+lkNBuzVbia5z4/cgxdL28NoQCvC0Xcfww==} '@vue/server-renderer@3.5.16': - resolution: {integrity: sha1-WmjNHUI9hD90yeazcTOFCrqwfBM=} + resolution: {integrity: sha512-BrX0qLiv/WugguGsnQUJiYOE0Fe5mZTwi6b7X/ybGB0vfrPH9z0gD/Y6WOR1sGCgX4gc25L1RYS5eYQKDMoNIg==} peerDependencies: vue: 3.5.16 '@vue/shared@3.5.16': - resolution: {integrity: sha1-1ep2cRgnQhkpOKS0y/hu8SvvdBg=} + resolution: {integrity: sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==} '@vue/shared@3.5.39': - resolution: {integrity: sha1-aUva6dRzgcL8/txtUnTyRQBowew=} + resolution: {integrity: sha512-l1rrBtBfTnmxvtsvdQDXltUUy8S1Y+ZaqdfUzmAnJkTd8Z8rv5v/ytW+TKiqEOWyHPoqtPlNFSs0lhRmYVSHVA==} '@web/browser-logs@0.4.1': - resolution: {integrity: sha1-G+RGTJs9ylN7RZ1Jyxhzpt7vBgk=} + resolution: {integrity: sha512-ypmMG+72ERm+LvP+loj9A64MTXvWMXHUOu773cPO4L1SV/VWg6xA9Pv7vkvkXQX+ItJtCJt+KQ+U6ui2HhSFUw==} engines: {node: '>=18.0.0'} '@web/config-loader@0.3.3': - resolution: {integrity: sha1-E9SFLEedHzrbwfJNecfm7u3rbl0=} + resolution: {integrity: sha512-ilzeQzrPpPLWZhzFCV+4doxKDGm7oKVfdKpW9wiUNVgive34NSzCw+WzXTvjE4Jgr5CkyTDIObEmMrqQEjhT0g==} engines: {node: '>=18.0.0'} '@web/dev-server-core@0.7.5': - resolution: {integrity: sha1-soPUbrLAOE6EgxHsnaJdBru8R98=} + resolution: {integrity: sha512-Da65zsiN6iZPMRuj4Oa6YPwvsmZmo5gtPWhW2lx3GTUf5CAEapjVpZVlUXnKPL7M7zRuk72jSsIl8lo+XpTCtw==} engines: {node: '>=18.0.0'} '@web/dev-server-rollup@0.6.4': - resolution: {integrity: sha1-0KT2nkplnSt58XLoYjbOpshy6Bw=} + resolution: {integrity: sha512-sJZfTGCCrdku5xYnQQG51odGI092hKY9YFM0X3Z0tRY3iXKXcYRaLZrErw5KfCxr6g0JRuhe4BBhqXTA5Q2I3Q==} engines: {node: '>=18.0.0'} '@web/dev-server@0.4.6': - resolution: {integrity: sha1-GKRCHUdKm9G/yQQZp6eY7QtVOMU=} + resolution: {integrity: sha512-jj/1bcElAy5EZet8m2CcUdzxT+CRvUjIXGh8Lt7vxtthkN9PzY9wlhWx/9WOs5iwlnG1oj0VGo6f/zvbPO0s9w==} engines: {node: '>=18.0.0'} hasBin: true '@web/parse5-utils@2.1.1': - resolution: {integrity: sha1-oUEU7OYPf1V3JBCwgTWF4EZHj90=} + resolution: {integrity: sha512-7rBVZEMGfrq2iPcAEwJ0KSNSvmA2a6jT2CK8/gyIOHgn4reg7bSSRbzyWIEYWyIkeRoYEukX/aW+nAeCgSSqhQ==} engines: {node: '>=18.0.0'} '@web/test-runner-chrome@0.17.0': - resolution: {integrity: sha1-kKQ1c1eBmP4GP+LYlkkWEeF6qmU=} + resolution: {integrity: sha512-Il5N9z41NKWCrQM1TVgRaDWWYoJtG5Ha4fG+cN1MWL2OlzBS4WoOb4lFV3EylZ7+W3twZOFr1zy2Rx61yDYd/A==} engines: {node: '>=18.0.0'} '@web/test-runner-commands@0.9.0': - resolution: {integrity: sha1-7RWgISSZSCBLsnVZ60N/9s7u4Gc=} + resolution: {integrity: sha512-zeLI6QdH0jzzJMDV5O42Pd8WLJtYqovgdt0JdytgHc0d1EpzXDsc7NTCJSImboc2NcayIsWAvvGGeRF69SMMYg==} engines: {node: '>=18.0.0'} '@web/test-runner-core@0.13.4': - resolution: {integrity: sha1-32p2s+lwrbvTujnocPS/ZX1txD8=} + resolution: {integrity: sha512-84E1025aUSjvZU1j17eCTwV7m5Zg3cZHErV3+CaJM9JPCesZwLraIa0ONIQ9w4KLgcDgJFw9UnJ0LbFf42h6tg==} engines: {node: '>=18.0.0'} '@web/test-runner-coverage-v8@0.8.0': - resolution: {integrity: sha1-eD6faF8Uyvw0pr8yP32SaMFHeTM=} + resolution: {integrity: sha512-PskiucYpjUtgNfR2zF2AWqWwjXL7H3WW/SnCAYmzUrtob7X9o/+BjdyZ4wKbOxWWSbJO4lEdGIDLu+8X2Xw+lA==} engines: {node: '>=18.0.0'} '@web/test-runner-mocha@0.9.0': - resolution: {integrity: sha1-T7+lwyIsjHh/3MBX3ZMqB2MmexA=} + resolution: {integrity: sha512-ZL9F6FXd0DBQvo/h/+mSfzFTSRVxzV9st/AHhpgABtUtV/AIpVE9to6+xdkpu6827kwjezdpuadPfg+PlrBWqQ==} engines: {node: '>=18.0.0'} '@web/test-runner-playwright@0.11.1': - resolution: {integrity: sha1-2ZMRKuISbrdMHFoXHW6kTC3SS04=} + resolution: {integrity: sha512-l9tmX0LtBqMaKAApS4WshpB87A/M8sOHZyfCobSGuYqnREgz5rqQpX314yx+4fwHXLLTa5N64mTrawsYkLjliw==} engines: {node: '>=18.0.0'} '@web/test-runner@0.19.0': - resolution: {integrity: sha1-6+gad/lC72kKNQRUZzJqk3/JfFo=} + resolution: {integrity: sha512-qLUupi88OK1Kl52cWPD/2JewUCRUxYsZ1V1DyLd05P7u09zCdrUYrtkB/cViWyxlBe/TOvqkSNpcTv6zLJ9GoA==} engines: {node: '>=18.0.0'} hasBin: true '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha1-qfagfysDyVyNOMRTah/ftSH/VbY=} + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha1-/Moe7dscxOe27tT8eVbWgTshufs=} + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha1-4KFhUiSLw42u523X4h8Vxe86sec=} + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha1-giqbxgMWZTH31d+E5ntb+ZtyuWs=} + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha1-29kyVI5xGfS4p4d/1ajSDmNJCy0=} + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha1-5VYQh1j0SKroTIUOWTzhig6zHgs=} + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha1-lindqcRDDqtUtZEFPW3G87oFA0g=} + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha1-HF6qzh1gatosf9cEXqk1bFnuDbo=} + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha1-V8XD3rAQXQLOJfo/109OvJ/Qu7A=} + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha1-kXog6T9xrVYClmwtaFrgxsIfYPE=} + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha1-rGaJ9QIhm1kZjd7ELc1JaxAE1Zc=} + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha1-mR5/DAkMsLtiu6yIIHbj0hnalXA=} + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha1-5vce18yuRngcIGAX08FMUO+oEGs=} + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha1-s+E/GJNgXKeLUsaOVM9qhl+Qufs=} + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha1-O7PpY4qK5f2vlhDnoGtNn5qm/gc=} + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} '@webpack-cli/configtest@2.1.1': - resolution: {integrity: sha1-Oy+FLpHaxuO4X7KjFPuL70bZRkY=} + resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} engines: {node: '>=14.15.0'} peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x '@webpack-cli/info@2.0.2': - resolution: {integrity: sha1-zD+/Iu/riP9iMQz4hcWwn0SuD90=} + resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} engines: {node: '>=14.15.0'} peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x '@webpack-cli/serve@2.0.5': - resolution: {integrity: sha1-Ml20I5XNSf5sFAV/mpAOQn34gQ4=} + resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} engines: {node: '>=14.15.0'} peerDependencies: webpack: 5.x.x @@ -10812,95 +10830,95 @@ packages: optional: true '@xmldom/xmldom@0.8.13': - resolution: {integrity: sha1-ANHdlAshjf8uSTCdQQ2LshIVkiU=} + resolution: {integrity: sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==} engines: {node: '>=10.0.0'} '@xmldom/xmldom@0.9.10': - resolution: {integrity: sha1-oK1aJv6KqZYxCHBybhcEl392ne4=} + resolution: {integrity: sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==} engines: {node: '>=14.6'} '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=} + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} '@xtuc/long@4.2.2': - resolution: {integrity: sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=} + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} '@yomguithereal/helpers@1.1.1': - resolution: {integrity: sha1-GF37D4jKK+7FPQrfbu0VwzscVJ0=} + resolution: {integrity: sha512-UYvAq/XCA7xoh1juWDYsq3W0WywOB+pz8cgVnE1b45ZfdMhBvHDrgmSFG3jXeZSr2tMTYLGHFHON+ekG05Jebg==} '@zone-eu/mailsplit@5.4.8': - resolution: {integrity: sha1-/D5DP1uBMhAzJNdyjz+gBCauqCI=} + resolution: {integrity: sha512-eEyACj4JZ7sjzRvy26QhLgKEMWwQbsw1+QZnlLX+/gihcNH07lVPOcnwf5U6UAL7gkc//J3jVd76o/WS+taUiA==} abab@2.0.6: - resolution: {integrity: sha1-QbgPLIcdGWhiFrgjCSMc/Tyz0pE=} + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} deprecated: Use your platform's native atob() and btoa() methods instead abbrev@4.0.0: - resolution: {integrity: sha1-7JM/Die2zWDom1xrKjBK9CIJuwU=} + resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} engines: {node: ^20.17.0 || >=22.9.0} abort-controller@3.0.0: - resolution: {integrity: sha1-6vVNU7YrrkE46AnKIlyEOabvs5I=} + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} accepts@1.3.8: - resolution: {integrity: sha1-C/C+EltnAUrcsLCSHmLbe//hay4=} + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} accepts@2.0.0: - resolution: {integrity: sha1-u89LpQdUZ/PyEx6rPP/HPC9deJU=} + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} acorn-globals@7.0.1: - resolution: {integrity: sha1-Db8FxE+nyUMykUwCBm1b7/YsQMM=} + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} acorn-import-phases@1.0.4: - resolution: {integrity: sha1-FuuFC6maBWy3y/6HL/uJcuGMi9c=} + resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} engines: {node: '>=10.13.0'} peerDependencies: acorn: ^8.14.0 acorn-jsx@5.3.2: - resolution: {integrity: sha1-ftW7VZCLOy8bxVxq8WU7rafweTc=} + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 acorn-walk@8.3.5: - resolution: {integrity: sha1-imuMqPxbNGha8V2rtEEYZjwpZJY=} + resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} engines: {node: '>=0.4.0'} acorn@7.4.1: - resolution: {integrity: sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=} + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true acorn@8.17.0: - resolution: {integrity: sha1-F4WtuE+vjYrdEDabk4Jvwr0I8f4=} + resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} engines: {node: '>=0.4.0'} hasBin: true agent-base@5.1.1: - resolution: {integrity: sha1-6Ps/JClZ20TWO+Zl23qOc5U3oyw=} + resolution: {integrity: sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==} engines: {node: '>= 6.0.0'} agent-base@6.0.2: - resolution: {integrity: sha1-Sf/1hXfP7j83F2/qtMIuAPhtf3c=} + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} agent-base@7.1.3: - resolution: {integrity: sha1-KUNeuCG8QZRjOluJ5bxHA7r8JaE=} + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} agentkeepalive@4.6.0: - resolution: {integrity: sha1-Nfc+lLP0C/ZfEFIZxiOtGcE26mo=} + resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} aggregate-error@3.1.0: - resolution: {integrity: sha1-kmcP9Q9TWb23o+DUDQ7DDFc3aHo=} + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} ajv-formats@2.1.1: - resolution: {integrity: sha1-bmaUAGWet0lzu/LjMycYCgmWtSA=} + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: ajv: ^8.0.0 peerDependenciesMeta: @@ -10908,7 +10926,7 @@ packages: optional: true ajv-formats@3.0.1: - resolution: {integrity: sha1-PV3HYryhdnnDwup+kK1rdTIwlXg=} + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} peerDependencies: ajv: ^8.0.0 peerDependenciesMeta: @@ -10916,281 +10934,281 @@ packages: optional: true ajv-keywords@3.5.2: - resolution: {integrity: sha1-MfKdpatuANHC0yms97WSlhTVAU0=} + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: ajv: ^6.9.1 ajv-keywords@5.1.0: - resolution: {integrity: sha1-adTThaRzPNvqtElkoRcKiPh/DhY=} + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} peerDependencies: ajv: ^8.8.2 ajv@6.15.0: - resolution: {integrity: sha1-B+mCx0YmFnqnoklcU4F4ktcTlJI=} + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} ajv@8.18.0: - resolution: {integrity: sha1-iGQYa2c40APrOpMxcrs4M+EM77w=} + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} ajv@8.20.0: - resolution: {integrity: sha1-MEs2Nq3Yi6fZNnYN1Q7OAG3qlfk=} + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} ansi-colors@4.1.3: - resolution: {integrity: sha1-N2ETQOsiQ+cMxgTK011jJw1IeBs=} + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} ansi-escapes@4.3.2: - resolution: {integrity: sha1-ayKR0dt9mLZSHV8e+kLQ86n+tl4=} + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} ansi-escapes@7.0.0: - resolution: {integrity: sha1-APwZ9JG7sY4dSBuXhoIE+SEJv+c=} + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} engines: {node: '>=18'} ansi-html-community@0.0.8: - resolution: {integrity: sha1-afvE1sy+OD+XNpNK40w/gpDxv0E=} + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} engines: {'0': node >= 0.8.0} hasBin: true ansi-regex@5.0.1: - resolution: {integrity: sha1-CCyyyJyf6GWaMRpTvWpNxTAdswQ=} + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} ansi-regex@6.2.2: - resolution: {integrity: sha1-YCFu6kZNhkWXzigyAAc4oFiWUME=} + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@3.2.1: - resolution: {integrity: sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=} + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} ansi-styles@4.3.0: - resolution: {integrity: sha1-7dgDYornHATIWuegkG7a00tkiTc=} + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} ansi-styles@5.2.0: - resolution: {integrity: sha1-B0SWkK1Fd30ZJKwquy/IiV26g2s=} + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} ansi-styles@6.2.3: - resolution: {integrity: sha1-wETV3MUhoHZBNHJZehrLHxA8QEE=} + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} ansi_up@6.0.5: - resolution: {integrity: sha1-k6s9bjHVjDUURZGCyh81q7t6PNk=} + resolution: {integrity: sha512-bo4K8S5usgFivfgvgQozTC2EfusPf76o7w0LUVdAOkpISvVmQqtwCdF5c6okokrgIN13KhFIVB/0BhnNXueQeA==} ansi_up@6.0.6: - resolution: {integrity: sha1-gE+vMfA4XlYtL3EnXqjP8Nnc9tw=} + resolution: {integrity: sha512-yIa1x3Ecf8jWP4UWEunNjqNX6gzE4vg2gGz+xqRGY+TBSucnYp6RRdPV4brmtg6bQ1ljD48mZ5iGSEj7QEpRKA==} ansis@3.17.0: - resolution: {integrity: sha1-+o2cKpP+fRF34MF/nutWKlioMtc=} + resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} engines: {node: '>=14'} any-promise@1.3.0: - resolution: {integrity: sha1-q8av7tzqUugJzcA3au0845Y10X8=} + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} anymatch@3.1.3: - resolution: {integrity: sha1-eQxYsZuhcgqEIFtXxhjVrYUklz4=} + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} apache-arrow@18.1.0: - resolution: {integrity: sha1-uxep6R5OL3tc9O/LnBq1fO2sfio=} + resolution: {integrity: sha512-v/ShMp57iBnBp4lDgV8Jx3d3Q5/Hac25FWmQ98eMahUiHPXcvwIMKJD0hBIgclm/FCG+LwPkAKtkRO1O/W0YGg==} hasBin: true app-builder-bin@5.0.0-alpha.12: - resolution: {integrity: sha1-La+C+LrcaY4K3Mlbo2r0/wZQ3IA=} + resolution: {integrity: sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w==} app-builder-lib@26.8.1: - resolution: {integrity: sha1-MVyJO/H1iCzGzRdM/NAFNdu3Z4Y=} + resolution: {integrity: sha512-p0Im/Dx5C4tmz8QEE1Yn4MkuPC8PrnlRneMhWJj7BBXQfNTJUshM/bp3lusdEsDbvvfJZpXWnYesgSLvwtM2Zw==} engines: {node: '>=14.0.0'} peerDependencies: dmg-builder: 26.8.1 electron-builder-squirrel-windows: 26.8.1 app-module-path@2.2.0: - resolution: {integrity: sha1-ZBqlXft9am8KgUHEucCqULbCTdU=} + resolution: {integrity: sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==} archiver-utils@2.1.0: - resolution: {integrity: sha1-6KRg6UtpPD49oYKgmMpihbqSSeI=} + resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} engines: {node: '>= 6'} archiver-utils@5.0.2: - resolution: {integrity: sha1-Y7xxnZUYA+/HLPlhpW74EHYN0U0=} + resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} engines: {node: '>= 14'} archiver@3.1.1: - resolution: {integrity: sha1-nbeBnU2vYK7BD+hrFsuSWM7WbqA=} + resolution: {integrity: sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==} engines: {node: '>= 6'} archiver@7.0.1: - resolution: {integrity: sha1-ydkcNQNiBAuJJzeceqacBlUSL2E=} + resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} engines: {node: '>= 14'} arg@4.1.3: - resolution: {integrity: sha1-Jp/HrVuOQstjyJbVZmAXJhwUQIk=} + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} argparse@1.0.10: - resolution: {integrity: sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=} + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} argparse@2.0.1: - resolution: {integrity: sha1-JG9Q88p4oyQPbJl+ipvR6sSeSzg=} + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} arr-union@3.1.0: - resolution: {integrity: sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=} + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} engines: {node: '>=0.10.0'} array-back@3.1.0: - resolution: {integrity: sha1-uIWdelCIccmnss9C+ZQo9l6Wv7A=} + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} engines: {node: '>=6'} array-back@6.2.2: - resolution: {integrity: sha1-9WfZnpr4im09L538wh22+bqf0Vc=} + resolution: {integrity: sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==} engines: {node: '>=12.17'} array-buffer-byte-length@1.0.2: - resolution: {integrity: sha1-OE0So3KVrsN2mrAirTI6GKUcz4s=} + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} array-differ@3.0.0: - resolution: {integrity: sha1-PLs9DzFoEOr8xHYkc0I31q7krms=} + resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} engines: {node: '>=8'} array-flatten@1.1.1: - resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} array-union@2.1.0: - resolution: {integrity: sha1-t5hCCtvrHego2ErNii4j0+/oXo0=} + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha1-nXYNhNvdBtDL+SyISWFaGnqzGDw=} + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} arrify@2.0.1: - resolution: {integrity: sha1-yWVekzHgq81YjSp8rX6ZVvZnAfo=} + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} asap@2.0.6: - resolution: {integrity: sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=} + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} asn1@0.2.6: - resolution: {integrity: sha1-DTp7tuZOAqkMAwOzHykoaOoJoI0=} + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} asn1js@3.0.10: - resolution: {integrity: sha1-3ybIdMiotBymBe/qR7KtB1UQE90=} + resolution: {integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==} engines: {node: '>=12.0.0'} assert-never@1.4.0: - resolution: {integrity: sha1-sNSYhijIfzXrlHFsxUQipjkn4XU=} + resolution: {integrity: sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA==} assert-plus@1.0.0: - resolution: {integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=} + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} assertion-error@2.0.1: - resolution: {integrity: sha1-9kGhlrM1aQsQcL8AtudZP+wZC/c=} + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} ast-module-types@6.0.2: - resolution: {integrity: sha1-sYoH3ja85N+4jt8FHI1oCNT+PdY=} + resolution: {integrity: sha512-6KuK/7nZ/2Qh7sGuVEiwxjCxzTY2Pdb5mTo5z1e6/J8BA0tvjR7G8vQJKrQMTqwmnA3UPEyKIFX4YUS1DO1Hvw==} engines: {node: '>=18'} ast-types@0.13.4: - resolution: {integrity: sha1-7g13s0MmOWXsw/ti2hbnIisrZ4I=} + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} astral-regex@2.0.0: - resolution: {integrity: sha1-SDFDxWeu7UeFdZwIZXhtx319LjE=} + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} async-exit-hook@2.0.1: - resolution: {integrity: sha1-i9iwJLDsmxwBzMua+dspvXF9+vM=} + resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} engines: {node: '>=0.12.0'} async-function@1.0.0: - resolution: {integrity: sha1-UJyfymDq+FA0xoKYOBiOTkyP+ys=} + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} async-mutex@0.4.0: - resolution: {integrity: sha1-roBIzU0ErOlDR1B1BLPPFeYxwl8=} + resolution: {integrity: sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA==} async@2.6.4: - resolution: {integrity: sha1-cGt/9ghGZM1+rnE/b5ZUM7VQQiE=} + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} async@3.2.6: - resolution: {integrity: sha1-Gwco4Ukp1RuFtEm38G4nwRReOM4=} + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} asynckit@0.4.0: - resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} at-least-node@1.0.0: - resolution: {integrity: sha1-YCzUtG6EStTv/JKoARo8RuAjjcI=} + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} auto-bind@5.0.1: - resolution: {integrity: sha1-UNjmPqWh3dy15eNkUcGoJm/7sq4=} + resolution: {integrity: sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} available-typed-arrays@1.0.7: - resolution: {integrity: sha1-pcw3XWoDwu/IelU/PgsVIt7xSEY=} + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} axe-core@4.11.4: - resolution: {integrity: sha1-W1NeOB/x5h/91hXlSD0WGG07RqU=} + resolution: {integrity: sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA==} engines: {node: '>=4'} azure-devops-node-api@12.5.0: - resolution: {integrity: sha1-OLnv18WsdDVP5Ojb5CaX2wuOhaU=} + resolution: {integrity: sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==} b4a@1.6.7: - resolution: {integrity: sha1-qZWH1Ou/vVpuOyG9tdX6OFdnq+Q=} + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} babel-jest@29.7.0: - resolution: {integrity: sha1-9DaZGSJbaExWCFmYrGPb0FvgINU=} + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha1-+ojsWSMv2bTjbbvFQKjsmptH2nM=} + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha1-qtvpQ0ZBgqiSLDySfDBn/0DSRiY=} + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} babel-preset-current-node-syntax@1.2.0: - resolution: {integrity: sha1-IHMNbNx92l2JQByrEKxqMgZ6zeY=} + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} peerDependencies: '@babel/core': ^7.0.0 || ^8.0.0-0 babel-preset-jest@29.6.3: - resolution: {integrity: sha1-+gX6UQ59STiW17DdIDNgHIQPFxw=} + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 babel-walk@3.0.0-canary-5: - resolution: {integrity: sha1-9m7Ncpg1eu5ElV8jWm71QhkQSxE=} + resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} engines: {node: '>= 10.0.0'} badgen@3.3.2: - resolution: {integrity: sha1-jQhoC87/j+DFlouDqYw4MPHagV8=} + resolution: {integrity: sha512-fbQwK9norfdzbdsoPwbLIAmgBXDGEme3jeIyqPAH7o6vp9lmuLHS7uXULvOiQ6XnMLkYNG4gDjILf74hgtTAug==} bail@2.0.2: - resolution: {integrity: sha1-0m9c2P5db4MqMVF7n3w1YEC6bV0=} + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} balanced-match@1.0.2: - resolution: {integrity: sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=} + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} balanced-match@4.0.3: - resolution: {integrity: sha1-Yzei8j4GBKMEgUI0MvmerGA1mfk=} + resolution: {integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==} engines: {node: 20 || >=22} bare-events@2.5.4: - resolution: {integrity: sha1-FhQ9Q14e2er9GrhfEribM1ekF0U=} + resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} bare-events@2.9.1: - resolution: {integrity: sha1-XIZhaWY0O8sDobMVX+qyU+rb80k=} + resolution: {integrity: sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==} peerDependencies: bare-abort-controller: '*' peerDependenciesMeta: @@ -11198,7 +11216,7 @@ packages: optional: true bare-fs@4.1.5: - resolution: {integrity: sha1-HQbAduaMyL+XAQ0pr546w4CM3Pc=} + resolution: {integrity: sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -11207,14 +11225,14 @@ packages: optional: true bare-os@3.6.1: - resolution: {integrity: sha1-mSH29Z7b6Br6n1aRBlhCLA9IWNQ=} + resolution: {integrity: sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==} engines: {bare: '>=1.14.0'} bare-path@3.0.0: - resolution: {integrity: sha1-tZ0YEwulKmr5J22z6WouPT6lIXg=} + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} bare-stream@2.6.5: - resolution: {integrity: sha1-u6joeWdMTCf34ngF3wBcFdeiygc=} + resolution: {integrity: sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==} peerDependencies: bare-buffer: '*' bare-events: '*' @@ -11225,171 +11243,171 @@ packages: optional: true base64-js@1.5.1: - resolution: {integrity: sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=} + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} baseline-browser-mapping@2.10.42: - resolution: {integrity: sha1-GV3MdrqiaaSX8LB97Kzhaf7prFg=} + resolution: {integrity: sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==} engines: {node: '>=6.0.0'} hasBin: true basic-ftp@5.3.0: - resolution: {integrity: sha1-iPBX0bqEQmQ8UFxMg7uqREKxXP0=} + resolution: {integrity: sha512-5K9eNNn7ywHPsYnFwjKgYH8Hf8B5emh7JKcPaVjjrMJFQQwGpwowEnZNEtHs7DfR7hCZsmaK3VA4HUK0YarT+w==} engines: {node: '>=10.0.0'} batch@0.6.1: - resolution: {integrity: sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=} + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} bent@7.3.12: - resolution: {integrity: sha1-4KJ3XUQl52dMZLeLJCr09J2msDU=} + resolution: {integrity: sha512-T3yrKnVGB63zRuoco/7Ybl7BwwGZR0lceoVG5XmQyMIH9s19SV5m+a8qam4if0zQuAmOQTyPTPmsQBdAorGK3w==} better-sqlite3@12.6.2: - resolution: {integrity: sha1-dwZJ8opi5UOjYPPfoa/kzJRLGTc=} + resolution: {integrity: sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==} engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x} bidi-js@1.0.3: - resolution: {integrity: sha1-b4vPPId8TZIg3fSbm7aTDIj4d9I=} + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} bignumber.js@9.3.1: - resolution: {integrity: sha1-dZxard8v/cTxVPe0k+HIdw+IxNc=} + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} binary-extensions@2.3.0: - resolution: {integrity: sha1-9uFKl4WNMnJSIAJC1Mz+UixEVSI=} + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} binaryextensions@4.19.0: - resolution: {integrity: sha1-eUS0HOa7vNPlROBfZXlKxIyqoTI=} + resolution: {integrity: sha512-DRxnVbOi/1OgA5pA9EDiRT8gvVYeqfuN7TmPfLyt6cyho3KbHCi3EtDQf39TTmGDrR5dZ9CspdXhPkL/j/WGbg==} engines: {node: '>=0.8'} bindings@1.5.0: - resolution: {integrity: sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=} + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} bl@4.1.0: - resolution: {integrity: sha1-RRU1JkGCvsL7vIOmKrmM8R2fezo=} + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} blamer@1.0.7: - resolution: {integrity: sha1-tUW9J8a6WDujGJcHr2tL929mUg4=} + resolution: {integrity: sha512-GbBStl/EVlSWkiJQBZps3H1iARBrC7vt++Jb/TTmCNu/jZ04VW7tSN1nScbFXBUy1AN+jzeL7Zep9sbQxLhXKA==} engines: {node: '>=8.9'} body-parser@1.20.3: - resolution: {integrity: sha1-GVNDEiHG+1zWPEs21T+rCSjlSMY=} + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} body-parser@1.20.5: - resolution: {integrity: sha1-MDyMNEI9HW+nmbx2TpPB5Nxuv2Q=} + resolution: {integrity: sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} body-parser@2.2.2: - resolution: {integrity: sha1-GjLNuWa+r2jeUKnfvltY+Dy4iQw=} + resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} engines: {node: '>=18'} bonjour-service@1.4.1: - resolution: {integrity: sha1-Z9DU5QUjqQsdS0RcSQyv3xC5n1g=} + resolution: {integrity: sha512-9KM4QMPKnaJqaja1v7gYO/+TXZGLtzPA05NmUTqDAJjcsWeVoOXKMvU9g0gfuuoYTQqJZ924hivICd5R/bCJbA==} boolbase@1.0.0: - resolution: {integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24=} + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} boolean@3.2.0: - resolution: {integrity: sha1-nlKUr06YMUSUy7F5efpUyhWfEWs=} + resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. bootstrap@5.3.6: - resolution: {integrity: sha1-+9keuv8JP1sZGhwBqMhm0k+fpuE=} + resolution: {integrity: sha512-jX0GAcRzvdwISuvArXn3m7KZscWWFAf1MKBcnzaN02qWMb3jpMoUX4/qgeiGzqyIb4ojulRzs89UCUmGcFSzTA==} peerDependencies: '@popperjs/core': ^2.11.8 boundary@2.0.0: - resolution: {integrity: sha1-FpyLHw1Ezywlk4lnoyjzfgpOXvw=} + resolution: {integrity: sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==} bowser@2.11.0: - resolution: {integrity: sha1-XKPDV1enqldxUAxwpzqfke9CCo8=} + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} brace-expansion@1.1.15: - resolution: {integrity: sha1-ptkNVAZyNuX0JXCjtzeNWU2bdzg=} + resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==} brace-expansion@2.1.1: - resolution: {integrity: sha1-xoscQRHHaq46b7pV1JbO4Qw52tg=} + resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} brace-expansion@5.0.6: - resolution: {integrity: sha1-7Gj+CmQaKdhxFXnK9kHQW64fIoU=} + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} engines: {node: 18 || 20 || >=22} braces@3.0.3: - resolution: {integrity: sha1-SQMy9AkZRSJy1VqEgK3AxEE1h4k=} + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} browser-stdout@1.3.1: - resolution: {integrity: sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=} + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} browserslist@4.28.5: - resolution: {integrity: sha1-Q4t9OMDUtHdAu7NneNW9ygGzeDg=} + resolution: {integrity: sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true bs-logger@0.2.6: - resolution: {integrity: sha1-6302UwenLPl0zGzadraDVK0za9g=} + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} bser@2.1.1: - resolution: {integrity: sha1-5nh9og7OnQeZhTPP2d5vXDj0vAU=} + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} bson@6.10.3: - resolution: {integrity: sha1-X5pGOva4PiZL7dCLI20TVqMO2kc=} + resolution: {integrity: sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==} engines: {node: '>=16.20.1'} buffer-crc32@0.2.13: - resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=} + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} buffer-crc32@1.0.0: - resolution: {integrity: sha1-oQmTuQVQgdVTBL2f60oHLeF59AU=} + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=} + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} buffer-from@1.1.2: - resolution: {integrity: sha1-KxRqb9cugLT1XSVfNe1Zo6mkG9U=} + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} buffer@5.6.0: - resolution: {integrity: sha1-oxdJ3H2B2E2wir+Te2uMQDP2J4Y=} + resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} buffer@5.7.1: - resolution: {integrity: sha1-umLnwTEzBTWCGXFghRqPZI6Z7tA=} + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} buffer@6.0.3: - resolution: {integrity: sha1-Ks5XhFnMj74qcKqo9S7mO2p0xsY=} + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} builder-util-runtime@9.3.1: - resolution: {integrity: sha1-Da7d4PbTgfKgClCkB7Fm/n3KGmc=} + resolution: {integrity: sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==} engines: {node: '>=12.0.0'} builder-util-runtime@9.5.1: - resolution: {integrity: sha1-dBJfs3TR7L9HKuF4dIVIX/dhlwI=} + resolution: {integrity: sha512-qt41tMfgHTllhResqM5DcnHyDIWNgzHvuY2jDcYP9iaGpkWxTUzV6GQjDeLnlR1/DtdlcsWQbA7sByMpmJFTLQ==} engines: {node: '>=12.0.0'} builder-util@26.8.1: - resolution: {integrity: sha1-UP38LU/+tvc5rzY7W9YMScldQXA=} + resolution: {integrity: sha512-pm1lTYbGyc90DHgCDO7eo8Rl4EqKLciayNbZqGziqnH9jrlKe8ZANGdityLZU+pJh16dfzjAx2xQq9McuIPEtw==} builtin-modules@3.3.0: - resolution: {integrity: sha1-yuYoEriYAellYzbkYiPgMDhr57Y=} + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} bundle-name@4.1.0: - resolution: {integrity: sha1-87lrNBYNZDGhnXaIE1r3z7h5eIk=} + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} bytes@3.1.2: - resolution: {integrity: sha1-iwvuuYYFrfGxKPpDhkA8AJ4CIaU=} + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} bytesish@0.4.4: - resolution: {integrity: sha1-87U1oPEVN0dCeu4nJWdIz/kjR+Y=} + resolution: {integrity: sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ==} bytestreamjs@2.0.1: - resolution: {integrity: sha1-oylHx844mm+hGgmppWPQpFiJU14=} + resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} engines: {node: '>=6.0.0'} c8@10.1.3: - resolution: {integrity: sha1-VK+yXr3MfzsAESSCxtkNdUGtL80=} + resolution: {integrity: sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -11399,440 +11417,440 @@ packages: optional: true cac@6.7.14: - resolution: {integrity: sha1-gE4eb1Bu42PLDjzLsJytXdmHCVk=} + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} cache-content-type@1.0.1: - resolution: {integrity: sha1-A1zeKwjuISn0qDFeqPAKANuhRTw=} + resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} engines: {node: '>= 6.0.0'} cacheable-lookup@5.0.4: - resolution: {integrity: sha1-WmuGWyxENXvj1evCpGewMnGacAU=} + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} cacheable-request@7.0.4: - resolution: {integrity: sha1-ejPr8IYTF4tANjW+e4mdPmm76Bc=} + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} engines: {node: '>=8'} call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha1-S1QowiK+mF15w9gmV0edvgtZstY=} + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} call-bind@1.0.8: - resolution: {integrity: sha1-BzapZg9TfjOIgm9EDV7EX3ROqkw=} + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} call-bound@1.0.4: - resolution: {integrity: sha1-I43pNdKippKSjFOMfM+pEGf9Bio=} + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} callsites@3.1.0: - resolution: {integrity: sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=} + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} camel-case@4.1.2: - resolution: {integrity: sha1-lygHKpVPgFIoIlpt7qazhGHhvVo=} + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} camelcase@5.3.1: - resolution: {integrity: sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=} + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} camelcase@6.3.0: - resolution: {integrity: sha1-VoW5XrIJrJwMF3Rnd4ychN9Yupo=} + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} caniuse-lite@1.0.30001803: - resolution: {integrity: sha1-sqXWluBCvIME3NSULDn+Mw+7yyQ=} + resolution: {integrity: sha512-g/uHREV2ZpK9qMalCsWaxmA6ol+DX8GYhuf3T40RKoP+oL7vhRJh8LNt73PCjpnR6l14FzfPrB5Yux4PKm2meg==} caseless@0.12.0: - resolution: {integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=} + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} ccount@2.0.1: - resolution: {integrity: sha1-F6O/gjAuCHDW2kOgExGovAKj7PU=} + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} chai-a11y-axe@1.5.0: - resolution: {integrity: sha1-qvo3+R9Tuur+mCGXaOXe6Hds9lU=} + resolution: {integrity: sha512-V/Vg/zJDr9aIkaHJ2KQu7lGTQQm5ZOH4u1k5iTMvIXuSVlSuUo0jcSpSqf9wUn9zl6oQXa4e4E0cqH18KOgKlQ==} chalk-template@0.4.0: - resolution: {integrity: sha1-aSwDTQ7WJDa5BiwXB/rc0PdTIEs=} + resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} engines: {node: '>=12'} chalk@2.4.2: - resolution: {integrity: sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=} + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} chalk@4.1.2: - resolution: {integrity: sha1-qsTit3NKdAhnrrFr8CqtVWoeegE=} + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} chalk@5.6.2: - resolution: {integrity: sha1-sSOLbiPqM3r3HH+KKV21rwwViuo=} + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} change-case@5.4.4: - resolution: {integrity: sha1-DVK1B9j7jyBDQ0MjgdGm17/5egI=} + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} char-regex@1.0.2: - resolution: {integrity: sha1-10Q1giYhf5ge1Y9Hmx1rzClUXc8=} + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} character-entities@2.0.2: - resolution: {integrity: sha1-LQnC5yzZUjB2zLIRV9/2atQ/zCI=} + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} character-parser@2.2.0: - resolution: {integrity: sha1-x84o821LzZdE5f/CxfzeHHMmH8A=} + resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} chardet@2.1.0: - resolution: {integrity: sha1-EAf0QaGun5GZpKZ/bpePsKqao/4=} + resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} cheerio-select@2.1.0: - resolution: {integrity: sha1-TYZzKGuBJsoqjkJ0DV48SISuIbQ=} + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} cheerio@1.0.0-rc.12: - resolution: {integrity: sha1-eIv3RmUGsca/X65R0kosTWLkdoM=} + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} engines: {node: '>= 6'} cheerio@1.1.0: - resolution: {integrity: sha1-h7m+xt02luQF6nnafSdJ2DCLCVM=} + resolution: {integrity: sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==} engines: {node: '>=18.17'} chokidar@3.6.0: - resolution: {integrity: sha1-GXxsxmnvKo3F57TZfuTgksPrDVs=} + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} chokidar@4.0.3: - resolution: {integrity: sha1-e+N6TAPJruHs/oYqSiOyxwwgXTA=} + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} chownr@1.1.4: - resolution: {integrity: sha1-b8nXtC0ypYNZYzdmbn0ICE2izGs=} + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} chownr@3.0.0: - resolution: {integrity: sha1-mFXmTs0kCpzEJnzopKpdJKHaFeQ=} + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} chrome-launcher@0.15.2: - resolution: {integrity: sha1-TmQE4yIACV/c5/ah4QBPm9Nvpdo=} + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} engines: {node: '>=12.13.0'} hasBin: true chrome-trace-event@1.0.4: - resolution: {integrity: sha1-Bb/9f/koRlCTMUcIyTvfqb0fD1s=} + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} chromium-bidi@0.11.0: - resolution: {integrity: sha1-nDxC7ntC2ESOn86NZJ3Iv7zDEVM=} + resolution: {integrity: sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==} peerDependencies: devtools-protocol: '*' chromium-bidi@14.0.0: - resolution: {integrity: sha1-FaEqsIOuUZpJpyTpSZTKCpztnI4=} + resolution: {integrity: sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==} peerDependencies: devtools-protocol: '*' chromium-pickle-js@0.2.0: - resolution: {integrity: sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=} + resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} ci-info@3.9.0: - resolution: {integrity: sha1-QnmmICinsfJi80c/yWBfXiGMWbQ=} + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} ci-info@4.3.1: - resolution: {integrity: sha1-NVrVcZIIELViPhHUAjL0Q/FvHao=} + resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} engines: {node: '>=8'} cjs-module-lexer@1.2.3: - resolution: {integrity: sha1-bDcKsZ+KM5TjGP5oJobsCsaE0Qc=} + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} clean-css@5.3.3: - resolution: {integrity: sha1-szBlPNO9a3UAnMJccUyue5M1HM0=} + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} clean-stack@2.2.0: - resolution: {integrity: sha1-7oRy27Ep5yezHooQpCfe6d/kAIs=} + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} clean-stack@3.0.1: - resolution: {integrity: sha1-FVvwsiIb9fT7qJUo0kxZU/F/46g=} + resolution: {integrity: sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==} engines: {node: '>=10'} cli-boxes@3.0.0: - resolution: {integrity: sha1-caEMcW/uugBeRQTzYynvCxfPMUU=} + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} cli-cursor@3.1.0: - resolution: {integrity: sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=} + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} cli-cursor@4.0.0: - resolution: {integrity: sha1-POz+NzS/T+Aqg2HL3A9v4oxqV+o=} + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} cli-cursor@5.0.0: - resolution: {integrity: sha1-JKSDHs9aawHd6zL7caSyCIsNzjg=} + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} cli-highlight@2.1.11: - resolution: {integrity: sha1-SXNvpFLwqvT65YDjCssmgo0twb8=} + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} engines: {node: '>=8.0.0', npm: '>=5.0.0'} hasBin: true cli-spinners@2.9.2: - resolution: {integrity: sha1-F3Oo9LnE1qwxVj31Oz/B15Ri/kE=} + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} cli-table3@0.6.5: - resolution: {integrity: sha1-ATuRNRdic5wWqVZ8IaBGMuRJvy8=} + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} cli-truncate@2.1.0: - resolution: {integrity: sha1-w54ovwXtzeW+O5iZKiLe7Vork8c=} + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} cli-truncate@4.0.0: - resolution: {integrity: sha1-bMKKKST+6eJc6R6XPbVscGbmFyo=} + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} cli-width@4.1.0: - resolution: {integrity: sha1-QtqsQdPCVO84rYrAN2chMBc2kcU=} + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} cliui@7.0.4: - resolution: {integrity: sha1-oCZe5lVHb8gHrqnfPfjfd4OAi08=} + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} cliui@8.0.1: - resolution: {integrity: sha1-DASwddsCy/5g3I5s8vVIaxo2CKo=} + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} clone-deep@0.2.4: - resolution: {integrity: sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=} + resolution: {integrity: sha512-we+NuQo2DHhSl+DP6jlUiAhyAjBQrYnpOk15rN6c6JSPScjiCLh8IbSU+VTcph6YS3o7mASE8a0+gbZ7ChLpgg==} engines: {node: '>=0.10.0'} clone-deep@4.0.1: - resolution: {integrity: sha1-wZ/Zvbv4WUK0/ZechNz31fB8I4c=} + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} clone-response@1.0.3: - resolution: {integrity: sha1-ryAyqkeBY5nPXwodDbkC9ReruMM=} + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} clone@1.0.4: - resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=} + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} clone@2.1.2: - resolution: {integrity: sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=} + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} clsx@2.1.1: - resolution: {integrity: sha1-7tOXyf2L2IK/sY3qtxAgSaLzKZk=} + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} co-body@6.2.0: - resolution: {integrity: sha1-r9d21g5WWfTu6GLfg0mWmOsa6hs=} + resolution: {integrity: sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA==} engines: {node: '>=8.0.0'} co@4.6.0: - resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=} + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} cockatiel@3.2.1: - resolution: {integrity: sha1-V1+Te8QECiCuJzUqbQfJxadBmB8=} + resolution: {integrity: sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==} engines: {node: '>=16'} code-excerpt@4.0.0: - resolution: {integrity: sha1-LefUbphRQ4XLAfezt0EyARX0yV4=} + resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} codemirror@6.0.1: - resolution: {integrity: sha1-YrkRQtRZBFR+4+Dg5MGnkVgDWik=} + resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} collect-v8-coverage@1.0.2: - resolution: {integrity: sha1-wLKbzTO80HeaE0TCE2BR5q/T2ek=} + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} color-convert@1.9.3: - resolution: {integrity: sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=} + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} color-convert@2.0.1: - resolution: {integrity: sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=} + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} color-name@1.1.3: - resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} color-name@1.1.4: - resolution: {integrity: sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=} + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} color-string@1.9.1: - resolution: {integrity: sha1-RGf5FG8Db4Vbdk37W/hYK/NCx6Q=} + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} color@4.2.3: - resolution: {integrity: sha1-14HsteVyJO5D6pYnVgEHwODGRjo=} + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} colorette@1.4.0: - resolution: {integrity: sha1-UZD7uHJ2JZqGrXAL/yxtb6o/ykA=} + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} colorette@2.0.20: - resolution: {integrity: sha1-nreT5oMwZ/cjWQL807CZF6AAqVo=} + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} colors@1.4.0: - resolution: {integrity: sha1-xQSRR51MG9rtLJztMs98fcI2D3g=} + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} engines: {node: '>=0.1.90'} combined-stream@1.0.8: - resolution: {integrity: sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=} + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} command-line-args@5.2.1: - resolution: {integrity: sha1-xEwy5DelfXxRFXaWiTxZCenOxC4=} + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} engines: {node: '>=4.0.0'} command-line-usage@7.0.3: - resolution: {integrity: sha1-a86ZI1T2rxDs6itjG/3wyLO/rqM=} + resolution: {integrity: sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==} engines: {node: '>=12.20.0'} commander@10.0.1: - resolution: {integrity: sha1-iB7ka0930cHczFgjQzqjmwIsvgY=} + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} commander@12.1.0: - resolution: {integrity: sha1-AUI7NvUBJZ/arE0OTWDJbJkVhdM=} + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} commander@14.0.2: - resolution: {integrity: sha1-tx/Tf+QGnkw8fBOSUlKtpOuhTo4=} + resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} engines: {node: '>=20'} commander@15.0.0: - resolution: {integrity: sha1-lvOWHxKtrBeZ7z+9i8YdQFctGxE=} + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} engines: {node: '>=22.12.0'} commander@2.20.3: - resolution: {integrity: sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=} + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} commander@5.1.0: - resolution: {integrity: sha1-Rqu9FlL44Fm92u+Zu9yyrZzxea4=} + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} commander@7.2.0: - resolution: {integrity: sha1-o2y1fQtQHOEI5NIFWaFQo5HZerc=} + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} commander@8.3.0: - resolution: {integrity: sha1-SDfqGy2me5xhamevuw+v7lZ7ymY=} + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} commander@9.5.0: - resolution: {integrity: sha1-vAjR61zt98y3l6lhmdQce8PmDTA=} + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} commondir@1.0.1: - resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=} + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} compare-version@0.1.2: - resolution: {integrity: sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=} + resolution: {integrity: sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==} engines: {node: '>=0.10.0'} compress-commons@2.1.1: - resolution: {integrity: sha1-lBDZpTTPhDXj+7t8bOSN4twvBhA=} + resolution: {integrity: sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==} engines: {node: '>= 6'} compress-commons@6.0.2: - resolution: {integrity: sha1-JtMSUaZrnWuiOoQGTs06anHSYJ4=} + resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} engines: {node: '>= 14'} compressible@2.0.18: - resolution: {integrity: sha1-r1PMprBw1MPAdQ+9dyhqbXzEb7o=} + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} compression@1.8.1: - resolution: {integrity: sha1-SkXZCawWUJGVqaKL2RCUiJwYDXk=} + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} engines: {node: '>= 0.8.0'} concat-map@0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} concurrently@9.1.2: - resolution: {integrity: sha1-ItkQkpaWHq7nc+Er+xzppmvJg2w=} + resolution: {integrity: sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==} engines: {node: '>=18'} hasBin: true connect-history-api-fallback@2.0.0: - resolution: {integrity: sha1-ZHJkhFJRoNryW5fOh4NMrOD18cg=} + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} constantinople@4.0.1: - resolution: {integrity: sha1-De8RP6Dk3I3oMzGlz3nIsyUhMVE=} + resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} content-disposition@0.5.4: - resolution: {integrity: sha1-i4K076yCUSoCuwsdzsnSxejrW/4=} + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} content-disposition@1.0.1: - resolution: {integrity: sha1-qLe76ykEvv37Z4flwMCGlZ9gX5s=} + resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} engines: {node: '>=18'} content-type@1.0.5: - resolution: {integrity: sha1-i3cxYmVtHRCGeEyPI6VM5tc9eRg=} + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} convert-source-map@2.0.0: - resolution: {integrity: sha1-S1YPZJ/E6RjdCrdc9JYei8iC2Co=} + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} convert-to-spaces@2.0.1: - resolution: {integrity: sha1-YabJj4qmJsFrKWuGKpFBKjO862s=} + resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} cookie-signature@1.0.7: - resolution: {integrity: sha1-q13Xq3V8VOYPN+9lUPSBxCbRBFQ=} + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} cookie-signature@1.2.2: - resolution: {integrity: sha1-V8f8PMKTrKuf7FTXPhVpDr5KF5M=} + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} engines: {node: '>=6.6.0'} cookie@0.7.2: - resolution: {integrity: sha1-VWNpxHKiupEPKXmJG1JrNDYjftc=} + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} cookies@0.9.1: - resolution: {integrity: sha1-P/7W9gu0+18Ub+7tulCsxBivZ+M=} + resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} engines: {node: '>= 0.8'} copy-anything@2.0.6: - resolution: {integrity: sha1-CSRU6pWEp7etVXMGKyqH9ZAPxIA=} + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} copy-webpack-plugin@12.0.2: - resolution: {integrity: sha1-k15XuOYYPIL5W9k332WKWfai2ig=} + resolution: {integrity: sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==} engines: {node: '>= 18.12.0'} peerDependencies: webpack: ^5.1.0 copyfiles@2.4.1: - resolution: {integrity: sha1-0tz/YKqtEBXwnQtm5/Dxxc08XaU=} + resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} hasBin: true core-util-is@1.0.2: - resolution: {integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=} + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} core-util-is@1.0.3: - resolution: {integrity: sha1-pgQtNjTCsn6TKPg3uWX6yDgI24U=} + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} cors@2.8.5: - resolution: {integrity: sha1-6sEdpRWS3Ya58G9uesKTs9+HXSk=} + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} cors@2.8.6: - resolution: {integrity: sha1-/13Wm9leVHUDgg0pq6T4+vjf7JY=} + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} engines: {node: '>= 0.10'} cose-base@1.0.3: - resolution: {integrity: sha1-ZQM0tBuGlXilQzWLgM2n4Kvgpgo=} + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} cose-base@2.2.0: - resolution: {integrity: sha1-HDlcNbbhC7g/l2nKi4F9YUrdXAE=} + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} cosmiconfig@8.3.6: - resolution: {integrity: sha1-Bgorhx1m26bIU46hEYuhrBb1+uM=} + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -11841,7 +11859,7 @@ packages: optional: true cosmiconfig@9.0.0: - resolution: {integrity: sha1-NMP8WCh7kV866QWrbcPeJYtVrZ0=} + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -11850,304 +11868,304 @@ packages: optional: true crc-32@1.2.2: - resolution: {integrity: sha1-PK01qTS4v3HyXKUkttpR+36s4v8=} + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} engines: {node: '>=0.8'} hasBin: true crc32-stream@3.0.1: - resolution: {integrity: sha1-yubu7QA7DkTXOdJ53lrmOxcbToU=} + resolution: {integrity: sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==} engines: {node: '>= 6.9.0'} crc32-stream@6.0.0: - resolution: {integrity: sha1-hSmjho+LJ6u5FfbDYXwPre2/lDA=} + resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} engines: {node: '>= 14'} crc@3.8.0: - resolution: {integrity: sha1-rWAmnCyFb4wpnixMwN5FVpFAVsY=} + resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} create-jest@29.7.0: - resolution: {integrity: sha1-o1XFs8seGvAroXf+ev1/7uSaUyA=} + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true create-require@1.1.1: - resolution: {integrity: sha1-wdfo8eX2z8n/ZfnNNS03NIdWwzM=} + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} crelt@1.0.6: - resolution: {integrity: sha1-fMiY6nThkPtu+drlf4+Bz3MC33I=} + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} cross-dirname@0.1.0: - resolution: {integrity: sha1-uJlZnzClOJ9Z54wVDhn5V60Wo3w=} + resolution: {integrity: sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==} cross-env@7.0.3: - resolution: {integrity: sha1-hlJkspZ33AFbqEGJGJZd0jL8VM8=} + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true cross-spawn@6.0.6: - resolution: {integrity: sha1-MNDvoHEt2361p24ehyG/+vprXVc=} + resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} engines: {node: '>=4.8'} cross-spawn@7.0.6: - resolution: {integrity: sha1-ilj+ePANzXDDcEUXWd+/rwPo7p8=} + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} crx@5.0.1: - resolution: {integrity: sha1-M/eoE3Ws+rGqOoKRQkIjQ03Al4s=} + resolution: {integrity: sha512-n/PzBx/fR1+xZCiJBats9y5zw/a+YBcoJ0ABnUaY56xb1RpXuFhsiCMpNY6WjVtylLzhUUXSWsbitesVg7v2vg==} engines: {node: '>=10'} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. hasBin: true css-select@4.3.0: - resolution: {integrity: sha1-23EpsoRmYv2GKM/ElquytZ5BUps=} + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} css-select@5.1.0: - resolution: {integrity: sha1-uOvWVUw2N8zHZoiAStP2pv2uqKY=} + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} css-tree@3.2.1: - resolution: {integrity: sha1-hsrHARVhJysw5rHgQrps4EeqdRg=} + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} css-what@6.1.0: - resolution: {integrity: sha1-+17/z3bx3eosgb36pN5E55uscPQ=} + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} cssfilter@0.0.10: - resolution: {integrity: sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=} + resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==} cssom@0.3.8: - resolution: {integrity: sha1-nxJ29bK0Y/IRTT8sdSUK+MGjb0o=} + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} cssom@0.5.0: - resolution: {integrity: sha1-0lT6ks2Lb72DgRufuu00ZjzBfDY=} + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} cssstyle@2.3.0: - resolution: {integrity: sha1-/2ZaDdvcMYZLCWR/NBY0Q9kLCFI=} + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} cssstyle@6.2.0: - resolution: {integrity: sha1-xBtZlVwZx6EiM1LWfKRidQIErQ8=} + resolution: {integrity: sha512-Fm5NvhYathRnXNVndkUsCCuR63DCLVVwGOOwQw782coXFi5HhkXdu289l59HlXZBawsyNccXfWRYvLzcDCdDig==} engines: {node: '>=20'} csstype@3.1.3: - resolution: {integrity: sha1-2A/ylNEU+w5qxQD7+FtgE31+/4E=} + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} cytoscape-cose-bilkent@4.1.0: - resolution: {integrity: sha1-di+hId+ZMP/rUaSV2HkXxXCsIJs=} + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} peerDependencies: cytoscape: ^3.2.0 cytoscape-dagre@2.5.0: - resolution: {integrity: sha1-R9mDWrZN0LWW2clHMfBwKC+C/Fo=} + resolution: {integrity: sha512-VG2Knemmshop4kh5fpLO27rYcyUaaDkRw+6PiX4bstpB+QFt0p2oauMrsjVbUamGWQ6YNavh7x2em2uZlzV44g==} peerDependencies: cytoscape: ^3.2.22 cytoscape-fcose@2.2.0: - resolution: {integrity: sha1-5Nb2SQ30+rWK6c6p5cOrjXRy9HE=} + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} peerDependencies: cytoscape: ^3.2.0 cytoscape@3.32.0: - resolution: {integrity: sha1-NLwkAsm8dFerfZSSdF8DS3v0dkQ=} + resolution: {integrity: sha512-5JHBC9n75kz5851jeklCPmZWcg3hUe6sjqJvyk3+hVqFaKcHwHgxsjeN1yLmggoUc6STbtm9/NQyabQehfjvWQ==} engines: {node: '>=0.10'} cytoscape@3.33.3: - resolution: {integrity: sha1-bIhYI8sIjrjDEIfDXZeGYdzeXq4=} + resolution: {integrity: sha512-Gej7U+OKR+LZ8kvX7rb2HhCYJ0IhvEFsnkud4SB1PR+BUY/TsSO0dmOW59WEVLu51b1Rm+gQRKoz4bLYxGSZ2g==} engines: {node: '>=0.10'} d3-array@2.12.1: - resolution: {integrity: sha1-4gtBqvzf/fXVCSgATs7PgVpGXoE=} + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} d3-array@3.2.4: - resolution: {integrity: sha1-Ff7DOyN/l6xdfJhtx32ic6jtC7U=} + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} engines: {node: '>=12'} d3-axis@3.0.0: - resolution: {integrity: sha1-xCpKE+gTHWN7dF/Clzgkz+r5MyI=} + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} engines: {node: '>=12'} d3-brush@3.0.0: - resolution: {integrity: sha1-b3Z8Ttjct53n7ePhwPieY+9k0xw=} + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} engines: {node: '>=12'} d3-chord@3.0.1: - resolution: {integrity: sha1-0VbWH0hfzoMn5qvzOctB2Mu6aWY=} + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} engines: {node: '>=12'} d3-cloud@1.2.7: - resolution: {integrity: sha1-WnM8S65DI4y7R2C7jy0VkSqK16U=} + resolution: {integrity: sha512-8TrgcgwRIpoZYQp7s3fGB7tATWfhckRb8KcVd1bOgqkNdkJRDGWfdSf4HkHHzZxSczwQJdSxvfPudwir5IAJ3w==} d3-color@3.1.0: - resolution: {integrity: sha1-OVsoM9+scVB/EqwvevI7+BneJOI=} + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} engines: {node: '>=12'} d3-contour@4.0.2: - resolution: {integrity: sha1-u5IGO8jFZjrLJCL5nHPLtsauO8w=} + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} engines: {node: '>=12'} d3-delaunay@6.0.4: - resolution: {integrity: sha1-mBaQOHM6ClurvtpVBU95W7nkpYs=} + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} engines: {node: '>=12'} d3-dispatch@1.0.6: - resolution: {integrity: sha1-ANN7zuTdjNl3Kd2JOgrCnKq6XVg=} + resolution: {integrity: sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==} d3-dispatch@3.0.1: - resolution: {integrity: sha1-X8dShOnCN1w2yDlBGgz1UMv8TV4=} + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} engines: {node: '>=12'} d3-drag@3.0.0: - resolution: {integrity: sha1-mUqunNI8cZ9TteEOOgphCMaWB7o=} + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} engines: {node: '>=12'} d3-dsv@3.0.1: - resolution: {integrity: sha1-xjr5ePTWoNCEpSpnOSK+IWB4m3M=} + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} engines: {node: '>=12'} hasBin: true d3-ease@3.0.1: - resolution: {integrity: sha1-llisOKIUDVnTRhYPH2ww/aC9EvQ=} + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} engines: {node: '>=12'} d3-fetch@3.0.1: - resolution: {integrity: sha1-gxQb/5hWoO21443onNz+Y9CmCiI=} + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} engines: {node: '>=12'} d3-force@3.0.0: - resolution: {integrity: sha1-Piuhph5wiI/j2RlOMNbRTuzhVcQ=} + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} engines: {node: '>=12'} d3-format@3.1.0: - resolution: {integrity: sha1-kmDiOijqXLEJ6TshoG4k4uvVVkE=} + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} engines: {node: '>=12'} d3-geo@3.1.1: - resolution: {integrity: sha1-YCfPUSRvmy69ZPmeAdx8M2QDOk0=} + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} engines: {node: '>=12'} d3-hierarchy@3.1.2: - resolution: {integrity: sha1-sBzULB7tPUbbd6WWbPcm+MCRYMY=} + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} engines: {node: '>=12'} d3-interpolate@3.0.1: - resolution: {integrity: sha1-PEeqWzLFs9+1bvP9Q0IHimMrQA0=} + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} engines: {node: '>=12'} d3-path@1.0.9: - resolution: {integrity: sha1-SMBQux/owmJJOoyvVSTj6VkXAc8=} + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} d3-path@3.1.0: - resolution: {integrity: sha1-It+TkDL7WnGuixgA1h3beFHEJSY=} + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} engines: {node: '>=12'} d3-polygon@3.0.1: - resolution: {integrity: sha1-C0XT3RxIopyOBX5hNWk+yAvxY5g=} + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} engines: {node: '>=12'} d3-quadtree@3.0.1: - resolution: {integrity: sha1-bco+i+Kzk8mp1RTau9gKkt7vGk8=} + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} engines: {node: '>=12'} d3-random@3.0.1: - resolution: {integrity: sha1-1JJjeNMz2cC/0eb6AZTTCuuqIPQ=} + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} engines: {node: '>=12'} d3-sankey@0.12.3: - resolution: {integrity: sha1-s8JoYnvXLl2AM26N5qy/7J0V0B0=} + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} d3-scale-chromatic@3.1.0: - resolution: {integrity: sha1-NMOdopiyPCDgLxpLI5vQ8i5/ExQ=} + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} engines: {node: '>=12'} d3-scale@4.0.2: - resolution: {integrity: sha1-grOOjo/3CAdk+Nzsd71L45Nok5Y=} + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} engines: {node: '>=12'} d3-selection@3.0.0: - resolution: {integrity: sha1-wlM4IH76csxbm9FFihpBkB8eGzE=} + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} engines: {node: '>=12'} d3-shape@1.3.7: - resolution: {integrity: sha1-32OAG+B7yYa8VPY3ibT+UCmStdc=} + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} d3-shape@3.2.0: - resolution: {integrity: sha1-oag5y9m6RfKGdMadf4Vbz5HfxqU=} + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} engines: {node: '>=12'} d3-time-format@4.1.0: - resolution: {integrity: sha1-erUlelBB0R7LT+cKXH0WoZW7QIo=} + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} engines: {node: '>=12'} d3-time@3.1.0: - resolution: {integrity: sha1-kxDbVumS48AXXh7zheVF5Iqbtcc=} + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} engines: {node: '>=12'} d3-timer@3.0.1: - resolution: {integrity: sha1-YoTSonCChbGrt+IB7aQ4CvNeY7A=} + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} engines: {node: '>=12'} d3-transition@3.0.1: - resolution: {integrity: sha1-aGn93hRIhoB3/dWYkgDLYbKhZF8=} + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} engines: {node: '>=12'} peerDependencies: d3-selection: 2 - 3 d3-zoom@3.0.0: - resolution: {integrity: sha1-0T9BZccyF//qpUKVzWlps+eu6PM=} + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} engines: {node: '>=12'} d3@7.9.0: - resolution: {integrity: sha1-V556yz10nK+IYL0XQa6NNxBwzV0=} + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} engines: {node: '>=12'} dagre-d3-es@7.0.14: - resolution: {integrity: sha1-EnInbiZFfPO5faxWn48FMewzw3c=} + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} dagre@0.8.5: - resolution: {integrity: sha1-ujCwBV2sErbB/MJHgXRCd30Gr+4=} + resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} data-uri-to-buffer@6.0.2: - resolution: {integrity: sha1-ili7ZzhLJho47xi+oYEMsBut0os=} + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} data-urls@3.0.2: - resolution: {integrity: sha1-nPJKR3riK871zV9vC/vB0tO+kUM=} + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} data-urls@7.0.0: - resolution: {integrity: sha1-bc6LYyJqHs/dkHzhiozPse7lBtM=} + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} data-view-buffer@1.0.2: - resolution: {integrity: sha1-IRoDupXsr3eYqMcZjXlTYhH4hXA=} + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} data-view-byte-length@1.0.2: - resolution: {integrity: sha1-noD3ylJFPOPpPSWjUxh2fqdwRzU=} + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} engines: {node: '>= 0.4'} data-view-byte-offset@1.0.1: - resolution: {integrity: sha1-BoMH+bcat2274QKROJ4CCFZgYZE=} + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} date-fns@2.30.0: - resolution: {integrity: sha1-82fmRIOf9XiU7GrEgN5AyuSw9NA=} + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} date-fns@4.1.0: - resolution: {integrity: sha1-ZLPYP/9aqAQ49bGmM8LoO4ocLRQ=} + resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} dayjs@1.11.20: - resolution: {integrity: sha1-iNkZ/WOdyZFBXaX0y28bZlCBGTg=} + resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} dbus-next@0.10.2: - resolution: {integrity: sha1-phI84DY0ETWiJq4PF3hKWwHll3c=} + resolution: {integrity: sha512-kLNQoadPstLgKKGIXKrnRsMgtAK/o+ix3ZmcfTfvBHzghiO9yHXpoKImGnB50EXwnfSFaSAullW/7UrSkAISSQ==} debounce@1.2.1: - resolution: {integrity: sha1-OIgdj0FmpcWEgCDBGCe4NLyz4KU=} + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} debug@2.6.9: - resolution: {integrity: sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=} + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -12155,7 +12173,7 @@ packages: optional: true debug@3.2.7: - resolution: {integrity: sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=} + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -12163,7 +12181,7 @@ packages: optional: true debug@4.4.1: - resolution: {integrity: sha1-5ai8bLxMbNPmQwiwaTo9T6VQGJs=} + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -12172,7 +12190,7 @@ packages: optional: true debug@4.4.3: - resolution: {integrity: sha1-xq5DLZvZZiWC/OCHCbA4xY6ePWo=} + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -12181,21 +12199,21 @@ packages: optional: true decamelize@4.0.0: - resolution: {integrity: sha1-qkcte/Zg6xXzSU79UxyrfypwmDc=} + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} engines: {node: '>=10'} decimal.js@10.6.0: - resolution: {integrity: sha1-5kmkPjq5U6chkv9Zg4ZeUJ837Zo=} + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} decode-named-character-reference@1.1.0: - resolution: {integrity: sha1-XWzmh5KAiQEhDaxCqOmFNRHiuL8=} + resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} decompress-response@6.0.0: - resolution: {integrity: sha1-yjh2Et234QS9FthaqwDV7PCcZvw=} + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} dedent@1.7.0: - resolution: {integrity: sha1-wflEUzXwF1qWWHviRaKC/0UURso=} + resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -12203,315 +12221,315 @@ packages: optional: true deep-equal@1.0.1: - resolution: {integrity: sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=} + resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} deep-extend@0.6.0: - resolution: {integrity: sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=} + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} deep-is@0.1.4: - resolution: {integrity: sha1-pvLc5hL63S7x9Rm3NVHxfoUZmDE=} + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} deepmerge@4.3.1: - resolution: {integrity: sha1-RLXyFHzTsA1LVhN2hZZvJv0l3Uo=} + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} default-browser-id@5.0.0: - resolution: {integrity: sha1-odmL+WDBUILYo/pp6DFQzMzDryY=} + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} engines: {node: '>=18'} default-browser-id@5.0.1: - resolution: {integrity: sha1-96fMuPUQS/jg9xujscz6Xq/bIeg=} + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} engines: {node: '>=18'} default-browser@5.2.1: - resolution: {integrity: sha1-e3umEgT/PkJbVWhprm0+nZ8XEs8=} + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} engines: {node: '>=18'} default-browser@5.5.0: - resolution: {integrity: sha1-J5LohvJCKJRUWUfMgOGkRElsWXY=} + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} engines: {node: '>=18'} default-gateway@6.0.3: - resolution: {integrity: sha1-gZSUyIgFO9t0PtvzQ9bN9/KUOnE=} + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} defaults@1.0.4: - resolution: {integrity: sha1-sLAgYsHiqmL/XZUo8PmLqpCXjXo=} + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} defer-to-connect@2.0.1: - resolution: {integrity: sha1-gBa9tBQ+RjK3ejRJxiNid95SBYc=} + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} define-data-property@1.1.4: - resolution: {integrity: sha1-iU3BQbt9MGCuQ2b2oBB+aPvkjF4=} + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} define-lazy-prop@2.0.0: - resolution: {integrity: sha1-P3rkIRKbyqrJvHSQXJigAJ7J7n8=} + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} define-lazy-prop@3.0.0: - resolution: {integrity: sha1-27Ga37dG1/xtc0oGty9KANAhJV8=} + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} define-properties@1.2.1: - resolution: {integrity: sha1-EHgcxhbrlRqAoDS6/Kpzd/avK2w=} + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} degenerator@5.0.1: - resolution: {integrity: sha1-lAO/KXxtrZoezkCbN9snlU+R8vU=} + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} engines: {node: '>= 14'} delaunator@5.0.1: - resolution: {integrity: sha1-OQMrCAU5I+kk1glP4s3hqZzFEng=} + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} delayed-stream@1.0.0: - resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} delegates@1.0.0: - resolution: {integrity: sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=} + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} depd@1.1.2: - resolution: {integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=} + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} depd@2.0.0: - resolution: {integrity: sha1-tpYWPMdXVg0JzyLMj60Vcbeedt8=} + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} dependency-graph@0.11.0: - resolution: {integrity: sha1-rAzn7WilTaIhZahel6AdU/XrLic=} + resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} engines: {node: '>= 0.6.0'} dependency-tree@11.5.0: - resolution: {integrity: sha1-//lUj4bm7OrOch34pcbaSzToyDQ=} + resolution: {integrity: sha512-K9zBwKDZrot3RkxizugpVSdImxULAg4Ycp3+ydy2r561k96oiiw6nfsOR15fwNDQ5BF2UXe+2JFM/H5Xz4MGQg==} engines: {node: '>=18'} hasBin: true dequal@2.0.3: - resolution: {integrity: sha1-JkQhTxmX057Q7g7OcjNUkKesZ74=} + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} destroy@1.2.0: - resolution: {integrity: sha1-SANzVQmti+VSk0xn32FPlOZvoBU=} + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} detect-indent@6.1.0: - resolution: {integrity: sha1-WSSF67v2s7GrK+F1yDk9BMoNV+Y=} + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} detect-indent@7.0.1: - resolution: {integrity: sha1-y7BgoShCucTTM/HKxKpNobtmvCU=} + resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} engines: {node: '>=12.20'} detect-libc@2.0.3: - resolution: {integrity: sha1-8M1QO0D5k5uJRpfRmtUIleMM9wA=} + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} detect-libc@2.1.2: - resolution: {integrity: sha1-aJxdzcGQDvVYOky59te0c3QgdK0=} + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} detect-newline@3.1.0: - resolution: {integrity: sha1-V29d/GOuGhkv8ZLYrTr2MImRtlE=} + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} detect-newline@4.0.1: - resolution: {integrity: sha1-/O/bVxPh+4yyg5uLbuIuZxarjyM=} + resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} detect-node@2.1.0: - resolution: {integrity: sha1-yccHdaScPQO8LAbZpzvlUPl4+LE=} + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} detective-amd@6.1.0: - resolution: {integrity: sha1-esNfVTJa9d+XS7D+T9ysAycZ3DE=} + resolution: {integrity: sha512-fmI6LGMvotqd49QaA3ZYw+q0aGp2yXmMjzIuY6fH9j9YFIXY/73yDhMwhX9cPbhWd+AH06NH1Di/LKOuCH0Ubg==} engines: {node: '>=18'} hasBin: true detective-cjs@6.1.1: - resolution: {integrity: sha1-t8eLZJ29+gu6IoqyjJcH9KBNX9c=} + resolution: {integrity: sha512-pSh7mkCKEtLlmANqLu3KDFS3NV8Hx41jy/JF1/gAWOgU+Uo5QTkeI1tWNP4dWGo4L0E9j18Ez9EPsTleautKqA==} engines: {node: '>=18'} detective-es6@5.0.2: - resolution: {integrity: sha1-r8okW+VMu4uzFlkbGCy/m8gkPcA=} + resolution: {integrity: sha512-+qHHGYhjupiVs4rnIpI9nZ5B130A4AmE35ZX1w33hb46vcZ7T3jfDbvmPw0FhWtMHn5BS5HHu7ZtnZ53bMcXZA==} engines: {node: '>=18'} detective-postcss@8.0.4: - resolution: {integrity: sha1-1zlIPDDfu/YZQNH9sF0lBmNQcYk=} + resolution: {integrity: sha512-DZ7M/hWPZyr17ZUdoQ+TVXaPj70mYr4XXrAE+GeJbca44haCvZgb191L/jLJmFYewhxRJuBd4lUtNSu986TXag==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4.47 detective-sass@6.0.2: - resolution: {integrity: sha1-PzpHkYhKujU/wm3pCQvI3zLf0MQ=} + resolution: {integrity: sha512-i3xpXHDKS0qI2aFW4asQ7fqlPK00ndOVZELvQapFJCaF0VxYmsNWtd0AmvXbTLMk7bfO5VdIeorhY9KfmHVoVA==} engines: {node: '>=18'} detective-scss@5.0.2: - resolution: {integrity: sha1-GcAu4IXhyZTMK9QJ9tX302sVIgo=} + resolution: {integrity: sha512-9JOEMZ8pDh3ShXmftq7hoQqqJsClaGgxo1hghfCeFlmKf5TC/Twtwb0PAaK8dXwpg9Z0uCmEYSrCxO+kel2eEg==} engines: {node: '>=18'} detective-stylus@5.0.1: - resolution: {integrity: sha1-V9VKC0BTBe4WZV5CAIs4qCep8Xk=} + resolution: {integrity: sha512-Dgn0bUqdGbE3oZJ+WCKf8Dmu7VWLcmRJGc6RCzBgG31DLIyai9WAoEhYRgIHpt/BCRMrnXLbGWGPQuBUrnF0TA==} engines: {node: '>=18'} detective-typescript@14.1.2: - resolution: {integrity: sha1-EwIIq40NIZkxrnOUfOVoFKRittM=} + resolution: {integrity: sha512-bIeEn0eVi/JRsE1YizBR2ilnMlWRAIBJJ6kXCKNFxEEWhUcEY3R6I3KYIAy48ieURbD1hcb3Ebvl8AqeoPMSzg==} engines: {node: '>=18'} peerDependencies: typescript: ^5.4.4 || ^6.0.2 detective-vue2@2.3.0: - resolution: {integrity: sha1-jiApqW713PtXxdn+BbojCNbqK44=} + resolution: {integrity: sha512-3gwbZPqVTm9sL9XdZsgEJ7x4x99O853VVZHapQAiEkGuMJMpFPjHDrecSgfqnS5JW3FJfYXesLZGvUOibjn49g==} engines: {node: '>=18'} peerDependencies: typescript: ^5.4.4 || ^6.0.2 devlop@1.1.0: - resolution: {integrity: sha1-TbfCyk3G4Og0wwvnDJS7yXbccBg=} + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} devtools-protocol@0.0.1367902: - resolution: {integrity: sha1-czO/xEZsWlSkxt5Iqd+8tLgRZgw=} + resolution: {integrity: sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==} devtools-protocol@0.0.1566079: - resolution: {integrity: sha1-KASe7QJaJc866pZPbGvVF3lsRKw=} + resolution: {integrity: sha512-MJfAEA1UfVhSs7fbSQOG4czavUp1ajfg6prlAN0+cmfa2zNjaIbvq8VneP7do1WAQQIvgNJWSMeP6UyI90gIlQ==} diff-sequences@29.6.3: - resolution: {integrity: sha1-Ter4lNEUB8Ue/IQYAS+ecLhOqSE=} + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} diff@4.0.4: - resolution: {integrity: sha1-em2/2jJfJfB1F+m1GPiXwIMy4H0=} + resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} engines: {node: '>=0.3.1'} diff@5.2.2: - resolution: {integrity: sha1-CkdCeXKB0Jz6aZt56jLSdyNiO60=} + resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==} engines: {node: '>=0.3.1'} diff@7.0.0: - resolution: {integrity: sha1-P7NNOHzXbYA/buvqZ7kh2rAYKpo=} + resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} engines: {node: '>=0.3.1'} dir-compare@4.2.0: - resolution: {integrity: sha1-0dSZnBT79VKBBx/a5Ck7O5zobxk=} + resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==} dir-glob@3.0.1: - resolution: {integrity: sha1-Vtv3PZkqSpO6FYT0U0Bj/S5BcX8=} + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dmg-builder@26.8.1: - resolution: {integrity: sha1-35mqeQZ2rCoqwDM7utvvO2B2ywM=} + resolution: {integrity: sha512-glMJgnTreo8CFINujtAhCgN96QAqApDMZ8Vl1r8f0QT8QprvC1UCltV4CcWj20YoIyLZx6IUskaJZ0NV8fokcg==} dmg-license@1.0.11: - resolution: {integrity: sha1-ezvDdF0bUr51BrTugMth325M15o=} + resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==} engines: {node: '>=8'} os: [darwin] hasBin: true dns-packet@5.6.1: - resolution: {integrity: sha1-roiK1CWp0UeKBnQlarhm3hASzy8=} + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} doctypes@1.1.0: - resolution: {integrity: sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=} + resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} dom-converter@0.2.0: - resolution: {integrity: sha1-ZyGp2u4uKTaClVtq/kFncWJ7t2g=} + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} dom-serializer@1.4.1: - resolution: {integrity: sha1-3l1Bsa6ikCFdxFptrorc8dMuLTA=} + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} dom-serializer@2.0.0: - resolution: {integrity: sha1-5BuALh7t+fbK4YPOXmIteJ19jlM=} + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} domelementtype@2.3.0: - resolution: {integrity: sha1-XEXo6GmVJiYzHXqrMm0B2vZdWJ0=} + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} domexception@4.0.0: - resolution: {integrity: sha1-StG+VsytyG/HbQMzU5magDfQNnM=} + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} deprecated: Use your platform's native DOMException instead domhandler@4.3.1: - resolution: {integrity: sha1-jXkgM0FvWdaLwDpap7AYwcqJJ5w=} + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} domhandler@5.0.3: - resolution: {integrity: sha1-zDhff3UfHR/GUMITdIBCVFOMfTE=} + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} dompurify@3.4.11: - resolution: {integrity: sha1-Kci6SWR18nnvQBV4QGhFL7FKBoA=} + resolution: {integrity: sha512-zhlUV12GsaRzMsf9q5M254YhA4+VuF0fG+QFqu6aYpoGlKtz+w8//jBcGVYBgQkR5GHjUomejY84AV+/uPbWdw==} domutils@2.8.0: - resolution: {integrity: sha1-RDfe9dtuLR9dbuhZvZXKfQIEgTU=} + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} domutils@3.1.0: - resolution: {integrity: sha1-xH9VEnjT3EsLGrjLtC11Gm8Ngk4=} + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} domutils@3.2.2: - resolution: {integrity: sha1-7b/itmiwwdl8JLrw8QYrEyIhvHg=} + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} dot-case@3.0.4: - resolution: {integrity: sha1-mytnDQCkMWZ6inW6Kc0bmICc51E=} + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dotenv-expand@11.0.7: - resolution: {integrity: sha1-r2la6gB9b9yEyGzY0K1760CgvQg=} + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} engines: {node: '>=12'} dotenv@16.5.0: - resolution: {integrity: sha1-CStJ8l+AjwIAUAUdH/JY5ATHhpI=} + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} engines: {node: '>=12'} dotenv@16.6.1: - resolution: {integrity: sha1-dz8OaVJ6gxXHKF1e5zxEWdIKgCA=} + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} dotenv@17.4.2: - resolution: {integrity: sha1-wH5Up0bhHroCHdnhBHztWv3BwDQ=} + resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} engines: {node: '>=12'} dunder-proto@1.0.1: - resolution: {integrity: sha1-165mfh3INIL4tw/Q9u78UNow9Yo=} + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} duplexer@0.1.2: - resolution: {integrity: sha1-Or5DrvODX4rgd9E23c4PJ2sEAOY=} + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} eastasianwidth@0.2.0: - resolution: {integrity: sha1-aWzi7Aqg5uqTo5f/zySqeEDIJ8s=} + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha1-rg8PothQRe8UqBfao86azQSJ5b8=} + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} ee-first@1.1.1: - resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} ejs@3.1.10: - resolution: {integrity: sha1-aauDWLFOiW+AzDnmIIe4hQDDrDs=} + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} hasBin: true electron-builder-squirrel-windows@26.8.1: - resolution: {integrity: sha1-G23XCUsg+GNYUcz5b8MqXKuSC+k=} + resolution: {integrity: sha512-o288fIdgPLHA76eDrFADHPoo7VyGkDCYbLV1GzndaMSAVBoZrGvM9m2IehdcVMzdAZJ2eV9bgyissQXHv5tGzA==} electron-builder@26.8.1: - resolution: {integrity: sha1-1JBWsv5dN/D5SqLrDh2zjyYfyMA=} + resolution: {integrity: sha512-uWhx1r74NGpCagG0ULs/P9Nqv2nsoo+7eo4fLUOB8L8MdWltq9odW/uuLXMFCDGnPafknYLZgjNX0ZIFRzOQAw==} engines: {node: '>=14.0.0'} hasBin: true electron-publish@26.8.1: - resolution: {integrity: sha1-ajL6ju0NQZcd2lMHK+oGuZMr5YM=} + resolution: {integrity: sha512-q+jrSTIh/Cv4eGZa7oVR+grEJo/FoLMYBAnSL5GCtqwUpr1T+VgKB/dn1pnzxIxqD8S/jP1yilT9VrwCqINR4w==} electron-to-chromium@1.5.389: - resolution: {integrity: sha1-U4vp6+x4Am1Nq6a+Mhq4VN+sKo8=} + resolution: {integrity: sha512-cEto7aeOqBfU1D+c5py5pE+ooscKE75JifxLBdFUZsqAxRS6y7kebtxAZvICszSl05gPjYHDTjY+lXpyGvpJbg==} electron-updater@6.6.2: - resolution: {integrity: sha1-PmXgRPGpmwDWHiAOJN6OcJxpzpk=} + resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} electron-vite@4.0.1: - resolution: {integrity: sha1-bN95j4QsJVd5mDzK3Qaz1HXAL1c=} + resolution: {integrity: sha512-QqacJbA8f1pmwUTqki1qLL5vIBaOQmeq13CZZefZ3r3vKVaIoC7cpoTgE+KPKxJDFTax+iFZV0VYvLVWPiQ8Aw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -12522,218 +12540,218 @@ packages: optional: true electron-winstaller@5.4.0: - resolution: {integrity: sha1-8GYNR21cT1ef337dLwzwHVTE0LI=} + resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} electron@40.8.5: - resolution: {integrity: sha1-p+RZou7jW9AsMtqHFwySA4NlbE0=} + resolution: {integrity: sha512-pgTY/VPQKaiU4sTjfU96iyxCXrFm4htVPCMRT4b7q9ijNTRgtLmLvcmzp2G4e7xDrq9p7OLHSmu1rBKFf6Y1/A==} engines: {node: '>= 12.20.55'} hasBin: true emittery@0.13.1: - resolution: {integrity: sha1-wEuMNFdJDghHrlH87Tr1LTOOPa0=} + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} emoji-regex@10.4.0: - resolution: {integrity: sha1-A1U6/qgLOXV0nPyzb3dsomjkE9Q=} + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} emoji-regex@8.0.0: - resolution: {integrity: sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=} + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} emoji-regex@9.2.2: - resolution: {integrity: sha1-hAyIA7DYBH9P8M+WMXazLU7z7XI=} + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} emojilib@2.4.0: - resolution: {integrity: sha1-rFGKi7DV923aVyicyy/fnTmuch4=} + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} encodeurl@1.0.2: - resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} encodeurl@2.0.0: - resolution: {integrity: sha1-e46omAd9fkCdOsRUdOo46vCFelg=} + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} encoding-japanese@2.2.0: - resolution: {integrity: sha1-DvLSNRJQVH9DKi3RVUU1VcFt61k=} + resolution: {integrity: sha512-EuJWwlHPZ1LbADuKTClvHtwbaFn4rOD+dRAbWysqEOXRc2Uui0hJInNJrsdH0c+OhJA4nrCBdSkW4DD5YxAo6A==} engines: {node: '>=8.10.0'} encoding-sniffer@0.2.1: - resolution: {integrity: sha1-OW7JesIs5aA3ukSvGZKsnUanuBk=} + resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} encoding@0.1.13: - resolution: {integrity: sha1-VldK/deR9UqOmyeFwFgqLSYhD6k=} + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} end-of-stream@1.4.4: - resolution: {integrity: sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=} + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} end-of-stream@1.4.5: - resolution: {integrity: sha1-c0TXEd6kDgt0q8LtSXeHQ8ztsIw=} + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} enhanced-resolve@5.15.0: - resolution: {integrity: sha1-GvlGx9k2A+uI6Yls7kkE3AEunDU=} + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} enhanced-resolve@5.19.0: - resolution: {integrity: sha1-ZodEahXpaeqmPC+iaUUQ4Xrm2Xw=} + resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} engines: {node: '>=10.13.0'} enhanced-resolve@5.24.2: - resolution: {integrity: sha1-8l1wOiRDHLHgL5RK23Su+k/LjX4=} + resolution: {integrity: sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw==} engines: {node: '>=10.13.0'} entities@2.2.0: - resolution: {integrity: sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=} + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} entities@4.5.0: - resolution: {integrity: sha1-XSaOpecRPsdMTQM7eepaNaSI+0g=} + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} entities@6.0.1: - resolution: {integrity: sha1-wow0pDN5yn9h0HQTCy9fcCCjBpQ=} + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} entities@7.0.1: - resolution: {integrity: sha1-JuioiInbY0F9y5oeeaPxvJK1l2s=} + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} engines: {node: '>=0.12'} env-paths@2.2.1: - resolution: {integrity: sha1-QgOZ1BbOH76bwKB8Yvpo1n/Q+PI=} + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} envinfo@7.11.0: - resolution: {integrity: sha1-w3k/RChKVf+Mgvrx/9kbxkeOoB8=} + resolution: {integrity: sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==} engines: {node: '>=4'} hasBin: true environment@1.1.0: - resolution: {integrity: sha1-jobGaxgPNjx6sxF4fgJZZl9FqfE=} + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} err-code@2.0.3: - resolution: {integrity: sha1-I8Lzt1b/38YI0w4nyalBAkgH5/k=} + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} errno@0.1.8: - resolution: {integrity: sha1-i7Ppx9Rjvkl2/4iPdrSAnrwugR8=} + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true error-ex@1.3.2: - resolution: {integrity: sha1-tKxAZIEH/c3PriQvQovqihTU8b8=} + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} errorstacks@2.4.1: - resolution: {integrity: sha1-Ba323h9bBKZvLBLMBZPhvisYzQ8=} + resolution: {integrity: sha512-jE4i0SMYevwu/xxAuzhly/KTwtj0xDhbzB6m1xPImxTkw8wcCbgarOQPfCVMi5JKVyW7in29pNJCCJrry3Ynnw==} es-abstract@1.24.0: - resolution: {integrity: sha1-xEcy0r6wrMHtYN+ECGnjEG568yg=} + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} engines: {node: '>= 0.4'} es-define-property@1.0.1: - resolution: {integrity: sha1-mD6y+aZyTpMD9hrd8BHHLgngsPo=} + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} es-errors@1.3.0: - resolution: {integrity: sha1-BfdaJdq5jk+x3NXhRywFRtUFfI8=} + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} es-module-lexer@1.7.0: - resolution: {integrity: sha1-kVlgFWGICoXyc0VgqQmbLDHlNyo=} + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} es-module-lexer@2.3.0: - resolution: {integrity: sha1-/adwI0w0UGTBIuuQXhxCAP+kzn4=} + resolution: {integrity: sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw==} es-object-atoms@1.1.1: - resolution: {integrity: sha1-HE8sSDcydZfOadLKGQp/3RcjOME=} + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} es-object-atoms@1.1.2: - resolution: {integrity: sha1-otCzcyBXJN+lJdI7DD4bHKWCyZs=} + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} engines: {node: '>= 0.4'} es-set-tostringtag@2.1.0: - resolution: {integrity: sha1-8x274MGDsAptJutjJcgQwP0YvU0=} + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} es-to-primitive@1.3.0: - resolution: {integrity: sha1-lsicgsxJ/YeUokg1uj4f+H8hThg=} + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} es-toolkit@1.46.1: - resolution: {integrity: sha1-OMonGRqYqGf8VEuBzxR3polH+wY=} + resolution: {integrity: sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==} es6-error@4.1.1: - resolution: {integrity: sha1-njr0B0Wd7tR+mpH5uIWoTrBcVh0=} + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} esbuild@0.21.5: - resolution: {integrity: sha1-nKMBsSCSKVm3ZjYNisgw2g0CmX0=} + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true esbuild@0.25.12: - resolution: {integrity: sha1-l6HQQfSrAML84vg40rmWmi0ql6U=} + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} hasBin: true esbuild@0.27.7: - resolution: {integrity: sha1-vK3OIrLz/XbyV+OmT4OmSYb+oR8=} + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} engines: {node: '>=18'} hasBin: true esbuild@0.28.1: - resolution: {integrity: sha1-70W0Y0ycnZeilq6kEUpfmED5VXg=} + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} engines: {node: '>=18'} hasBin: true escalade@3.2.0: - resolution: {integrity: sha1-ARo/aYVroYnf+n3I/M6Z0qh5A+U=} + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} escape-html@1.0.3: - resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} escape-string-regexp@1.0.5: - resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} escape-string-regexp@2.0.0: - resolution: {integrity: sha1-owME6Z2qMuI7L9IPUbq9B8/8o0Q=} + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} escape-string-regexp@4.0.0: - resolution: {integrity: sha1-FLqDpdNz49MR5a/KKc9b+tllvzQ=} + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} escape-string-regexp@5.0.0: - resolution: {integrity: sha1-RoMSa1ALYXYvLb66zhgG6L4xscg=} + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} escodegen@2.1.0: - resolution: {integrity: sha1-upO7t6Q5htKdYEH5n1Ji2nc+Lhc=} + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} hasBin: true eslint-plugin-sonarjs@4.1.0: - resolution: {integrity: sha1-YYeeWoU2peU7UkAYfMETpoP3EF4=} + resolution: {integrity: sha512-rh+FlVz0yfd2RNIb6WqSkuGh0addX/Qi5scwQ5FphXDFrM6fZKcxP1+attJ78yUKcyYfiu6MTaISPpAFPzqRJw==} peerDependencies: eslint: ^8.0.0 || ^9.0.0 || ^10.0.0 eslint-scope@5.1.1: - resolution: {integrity: sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=} + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} eslint-scope@9.1.2: - resolution: {integrity: sha1-ud5qzi+rHP8k0uWNhbdMj86jmAI=} + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: - resolution: {integrity: sha1-DNcv6FUOPC6uFWqWpN3c0cisWAA=} + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} eslint-visitor-keys@5.0.1: - resolution: {integrity: sha1-njyUiWl4JNLUzjqK0SYo+R6fWb4=} + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint@10.6.0: - resolution: {integrity: sha1-4bQFnFgr6VDHCIybVfmEc4skPCc=} + resolution: {integrity: sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -12743,209 +12761,209 @@ packages: optional: true espree@11.2.0: - resolution: {integrity: sha1-AdXkfcMyqrowWQCDYkVKjMNMyqU=} + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} esprima@1.2.5: - resolution: {integrity: sha1-CZNQL+r2aBODJXVvMPmlH+7sEek=} + resolution: {integrity: sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ==} engines: {node: '>=0.4.0'} hasBin: true esprima@4.0.1: - resolution: {integrity: sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=} + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true esquery@1.7.0: - resolution: {integrity: sha1-CNBI8mHw3e21uulfRoCUY9nJSW0=} + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} esrecurse@4.3.0: - resolution: {integrity: sha1-eteWTWeauyi+5yzsY3WLHF0smSE=} + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} estraverse@4.3.0: - resolution: {integrity: sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=} + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} estraverse@5.3.0: - resolution: {integrity: sha1-LupSkHAvJquP5TcDcP+GyWXSESM=} + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} estree-walker@2.0.2: - resolution: {integrity: sha1-UvAQF4wqTBF6d1fP6UKtt9LaTKw=} + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} esutils@2.0.3: - resolution: {integrity: sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=} + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} etag@1.8.1: - resolution: {integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=} + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} event-stream@3.3.4: - resolution: {integrity: sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=} + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} event-target-shim@5.0.1: - resolution: {integrity: sha1-XU0+vflYPWOlMzzi3rdICrKwV4k=} + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} eventemitter3@4.0.7: - resolution: {integrity: sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=} + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} eventemitter3@5.0.4: - resolution: {integrity: sha1-qG1mFwQzcS3egUcHrFK1JxzrH+s=} + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} events@3.3.0: - resolution: {integrity: sha1-Mala0Kkk4tLEGagTrrLE6HjqdAA=} + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} eventsource-parser@3.0.6: - resolution: {integrity: sha1-KS4WXjTKy8k2w8knGe8ybUrrTpA=} + resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} engines: {node: '>=18.0.0'} eventsource-parser@3.1.0: - resolution: {integrity: sha1-ThmOuRzTM9Co3cwDZQKzYYol9Ek=} + resolution: {integrity: sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==} engines: {node: '>=18.0.0'} eventsource@3.0.7: - resolution: {integrity: sha1-EVdiLi9Td7tq7yEUNycougwVaYk=} + resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} engines: {node: '>=18.0.0'} execa@1.0.0: - resolution: {integrity: sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=} + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} execa@4.1.0: - resolution: {integrity: sha1-TlSRrRVy8vF6d9OIxshXE1sihHo=} + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} engines: {node: '>=10'} execa@5.1.1: - resolution: {integrity: sha1-+ArZy/Qpj3vR1MlVXCHpN0HEEd0=} + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} exifreader@4.40.3: - resolution: {integrity: sha1-P1uewWrL5upiH3Uth0Tzo+ta5Ow=} + resolution: {integrity: sha512-58NvuV/lmrUoxR6Y3s5U3rwxn8ITB8xod2WgOkwew0oR5ziQj2bcJSXMbOTQPytnZi3grztHQhgZnHBSe3/P4A==} exit@0.1.2: - resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=} + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} expand-template@2.0.3: - resolution: {integrity: sha1-bhSz/O4POmNA7LV9LokYaSBSpHw=} + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} expect@29.7.0: - resolution: {integrity: sha1-V4h0WQ3LMhRRQITAgRXYruYeEbw=} + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} exponential-backoff@3.1.3: - resolution: {integrity: sha1-Uc+SwcBJPHZgU/nTq+5ENMJE0vY=} + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} express-rate-limit@7.5.1: - resolution: {integrity: sha1-jDpC9pIJo6HJaYkAcOzp4gqHnew=} + resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==} engines: {node: '>= 16'} peerDependencies: express: '>= 4.11' express-rate-limit@8.3.1: - resolution: {integrity: sha1-CqugmOrdQPZzfzCpjmsW+hop7fs=} + resolution: {integrity: sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==} engines: {node: '>= 16'} peerDependencies: express: '>= 4.11' express-rate-limit@8.5.2: - resolution: {integrity: sha1-WSLb923yEkYRzqlV2TQys3UUsvM=} + resolution: {integrity: sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==} engines: {node: '>= 16'} peerDependencies: express: '>= 4.11' express@4.22.1: - resolution: {integrity: sha1-HeI6CXRaT//bOSR7NEu16v84IGk=} + resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} engines: {node: '>= 0.10.0'} express@4.22.2: - resolution: {integrity: sha1-wXrgmB5e/CSyInLw4EHEZiUDtwA=} + resolution: {integrity: sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==} engines: {node: '>= 0.10.0'} express@5.2.1: - resolution: {integrity: sha1-jyHRW20yf5K0eU7PjLCKcvlWrAQ=} + resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} engines: {node: '>= 18'} extend@3.0.2: - resolution: {integrity: sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=} + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} extract-zip@2.0.1: - resolution: {integrity: sha1-Zj3KVv5G34kNXxMe9KBtIruLoTo=} + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} hasBin: true extsprintf@1.4.1: - resolution: {integrity: sha1-jRcsBkhn8jXAyEpZaAbSeb9LzAc=} + resolution: {integrity: sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==} engines: {'0': node >=0.6.0} fast-deep-equal@3.1.3: - resolution: {integrity: sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=} + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-fifo@1.3.2: - resolution: {integrity: sha1-KG4x3pbrltOKl4mYFXQLoqTzZAw=} + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} fast-glob@3.3.2: - resolution: {integrity: sha1-qQRQHlfP3S/83tRemaVP71XkYSk=} + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} fast-glob@3.3.3: - resolution: {integrity: sha1-0G1YXOjbqQoWsFBcVDw8z7OuuBg=} + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=} + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} fast-levenshtein@2.0.6: - resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} fast-levenshtein@3.0.0: - resolution: {integrity: sha1-N7iZrkfhCQ5A4/0jGOTV8BQsqRI=} + resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} fast-uri@3.1.2: - resolution: {integrity: sha1-ivPU/J0+cbEVcswmc7UUp9GoyOw=} + resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} fast-uri@3.1.3: - resolution: {integrity: sha1-9pWkDwBqulBWMVc6ACHdshGUrRE=} + resolution: {integrity: sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==} fast-xml-builder@1.2.0: - resolution: {integrity: sha1-q9I2MUWnYl2Xia2W2jdfq+PP8ow=} + resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==} fast-xml-parser@5.7.0: - resolution: {integrity: sha1-uT5Jo9YqiCTFIS2PoJmsLlSNVIo=} + resolution: {integrity: sha512-MTcrUoRQ1GSQ9iG3QJzBGquYYYeA7piZaJoIWbPFGbRn6Jj6z7xgoAyi4DrZX4y2ZIQQBF59gc/zmvvejjgoFQ==} hasBin: true fast-xml-parser@5.7.1: - resolution: {integrity: sha1-F2l1UL3SoKDUfNxLRWwAnEy+igY=} + resolution: {integrity: sha512-8Cc3f8GUGUULg34pBch/KGyPLglS+OFs05deyOlY7fL2MTagYPKrVQNmR1fLF/yJ9PH5ZSTd3YDF6pnmeZU+zA==} hasBin: true fastest-levenshtein@1.0.16: - resolution: {integrity: sha1-IQ5htv8YHekeqbPRuE/e3UfgNOU=} + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} fastq@1.15.0: - resolution: {integrity: sha1-0E0HxqKmj+RZn+qNLhA6k3+uazo=} + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} faye-websocket@0.11.4: - resolution: {integrity: sha1-fw2Sdc/dhqHJY9yLZfzEUe3Lsdo=} + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} fb-watchman@2.0.2: - resolution: {integrity: sha1-6VJO5rXHfp5QAa8PhfOtu4YjJVw=} + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} fd-package-json@2.0.0: - resolution: {integrity: sha1-A/U85aCvVSwvT69wOiTlJjEKJBE=} + resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} fd-slicer@1.1.0: - resolution: {integrity: sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=} + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} fdir@6.5.0: - resolution: {integrity: sha1-7Sq5Z6MxreYvGNB32uGSaE1Q01A=} + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 @@ -12954,77 +12972,77 @@ packages: optional: true file-entry-cache@8.0.0: - resolution: {integrity: sha1-d4e93PETG/+5JjbGlFe7wO3W2B8=} + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} file-size@1.0.0: - resolution: {integrity: sha1-MzgmfV0ga79g9N9gwZ1+04E6Rlc=} + resolution: {integrity: sha512-tLIdonWTpABkU6Axg2yGChYdrOsy4V8xcm0IcyAP8fSsu6jiXLm5pgs083e4sq5fzNRZuAYolUbZyYmPvCKfwQ==} file-uri-to-path@1.0.0: - resolution: {integrity: sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=} + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} filelist@1.0.4: - resolution: {integrity: sha1-94l4oelEd1/55i50RCTyFeWDUrU=} + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} filing-cabinet@5.5.1: - resolution: {integrity: sha1-iYwmkC6sQSBM+9+6Bhfm6aGBzAI=} + resolution: {integrity: sha512-PzLBTChlVPn6LnNxF0KWs+XqPziVh3Sfmz/3TXOymHxu6a9yhrDcQn7YwgpcRM6mqhR2WHVGPR8RU4fmcF1IVA==} engines: {node: '>=18'} hasBin: true fill-range@7.1.1: - resolution: {integrity: sha1-RCZdPKwH4+p9wkdRY4BkN1SgUpI=} + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} finalhandler@1.3.2: - resolution: {integrity: sha1-HrwiKPx2c6rEpHLDEMwFt32FK4g=} + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} engines: {node: '>= 0.8'} finalhandler@2.1.1: - resolution: {integrity: sha1-osUXplWYUrzbBtH4vX9Rto+tgJk=} + resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} engines: {node: '>= 18.0.0'} find-config@1.0.0: - resolution: {integrity: sha1-6vorm8B/qckOmgw++c7PHMgA9TA=} + resolution: {integrity: sha512-Z+suHH+7LSE40WfUeZPIxSxypCWvrzdVc60xAjUShZeT5eMWM0/FQUduq3HjluyfAHWvC/aOBkT1pTZktyF/jg==} engines: {node: '>= 0.12'} find-exec@1.0.3: - resolution: {integrity: sha1-xLGPeVlo8XMAYHdvxS+Cm5d60p4=} + resolution: {integrity: sha512-gnG38zW90mS8hm5smNcrBnakPEt+cGJoiMkJwCU0IYnEb0H2NQk0NIljhNW+48oniCriFek/PH6QXbwsJo/qug==} find-replace@3.0.0: - resolution: {integrity: sha1-Pn4j07BRZ6dvdwyfvVJYsN72jDg=} + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} engines: {node: '>=4.0.0'} find-up@4.1.0: - resolution: {integrity: sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=} + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} find-up@5.0.0: - resolution: {integrity: sha1-TJKBnstwg1YeT0okCoa+UZj1Nvw=} + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} find-up@7.0.0: - resolution: {integrity: sha1-6N7BRV90942IitZb98oT3StOZvs=} + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} engines: {node: '>=18'} flat-cache@4.0.1: - resolution: {integrity: sha1-Ds45/LFO4BL0sEEL0z3ZwfAREnw=} + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} flat@5.0.2: - resolution: {integrity: sha1-jKb+MyBp/6nTJMMnGYxZglnOskE=} + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true flatbuffers@24.3.25: - resolution: {integrity: sha1-4vkiWbqKpTrNCveESvt8frlecIk=} + resolution: {integrity: sha512-3HDgPbgiwWMI9zVB7VYBHaMrbOO7Gm0v+yD2FV/sCKj+9NDeVL7BOBYUuhWAQGKWOzBo8S9WdMvV0eixO233XQ==} flatbuffers@25.9.23: - resolution: {integrity: sha1-NGgRVX/pMSq1ZHU155PHYenIHrE=} + resolution: {integrity: sha512-MI1qs7Lo4Syw0EOzUl0xjs2lsoeqFku44KpngfIduHBYvzm8h2+7K8YMQh1JtVVVrUvhLpNwqVi4DERegUJhPQ==} flatted@3.4.2: - resolution: {integrity: sha1-9cI8EH8PN96NvfJPE3IrO5jVJyY=} + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} follow-redirects@1.16.0: - resolution: {integrity: sha1-KEdKFZ07nRHvYgUKFO1g5N9tYbw=} + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -13033,466 +13051,466 @@ packages: optional: true for-each@0.3.5: - resolution: {integrity: sha1-1lBogCeCaSD+6wr3R+57lCGkHUc=} + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} for-in@0.1.8: - resolution: {integrity: sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=} + resolution: {integrity: sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==} engines: {node: '>=0.10.0'} for-in@1.0.2: - resolution: {integrity: sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=} + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} engines: {node: '>=0.10.0'} for-own@0.1.5: - resolution: {integrity: sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=} + resolution: {integrity: sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==} engines: {node: '>=0.10.0'} foreground-child@3.3.1: - resolution: {integrity: sha1-Mujp7Rtoo0l777msK2rfkqY4V28=} + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} form-data-encoder@1.7.2: - resolution: {integrity: sha1-Hxrj3M9Y7UaQuG2H5PV8ZU+6sEA=} + resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} form-data@4.0.6: - resolution: {integrity: sha1-KOhk4beG2+u2jbH0UvljUnhmWCc=} + resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} engines: {node: '>= 6'} formatly@0.3.0: - resolution: {integrity: sha1-W7O05pL1qMdK2P4mFU3Qp0qsaBk=} + resolution: {integrity: sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==} engines: {node: '>=18.3.0'} hasBin: true formdata-node@4.4.1: - resolution: {integrity: sha1-I/aly5y1UxWRLL7E/3sPWbvRkeI=} + resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} engines: {node: '>= 12.20'} forwarded@0.2.0: - resolution: {integrity: sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE=} + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} fresh@0.5.2: - resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} fresh@2.0.0: - resolution: {integrity: sha1-jdffahs6Gzpc8YbAWl3SZ2ImNaQ=} + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} from@0.1.7: - resolution: {integrity: sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=} + resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} fs-constants@1.0.0: - resolution: {integrity: sha1-a+Dem+mYzhavivwkSXue6bfM2a0=} + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} fs-extra@10.1.0: - resolution: {integrity: sha1-Aoc8+8QITd4SfqpfmQXu8jJdGr8=} + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} fs-extra@11.3.0: - resolution: {integrity: sha1-DaztE2u69lpVWjJnGa+TGtx6MU0=} + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} engines: {node: '>=14.14'} fs-extra@11.3.4: - resolution: {integrity: sha1-q2k07Ki89vf2uCdC4zWR+GMB1vw=} + resolution: {integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==} engines: {node: '>=14.14'} fs-extra@11.3.6: - resolution: {integrity: sha1-98uA6d9VDNHbb1N/pc3VaNPnDRA=} + resolution: {integrity: sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA==} engines: {node: '>=14.14'} fs-extra@7.0.1: - resolution: {integrity: sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=} + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} fs-extra@8.1.0: - resolution: {integrity: sha1-SdQ8RaiM2Wd2aMt74bRu/bjS4cA=} + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} fs-extra@9.1.0: - resolution: {integrity: sha1-WVRGDHZKjaIJS6NVS/g55rmnyG0=} + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} fs.realpath@1.0.0: - resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} fsevents@2.3.2: - resolution: {integrity: sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=} + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] fsevents@2.3.3: - resolution: {integrity: sha1-ysZAd4XQNnWipeGlMFxpezR9kNY=} + 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: sha1-LALYZNl/PqbIgwxGTL0Rq26rehw=} + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} function.prototype.name@1.1.8: - resolution: {integrity: sha1-5o4d97JZpclJ7u+Vzb3lPt/6u3g=} + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} functional-red-black-tree@1.0.1: - resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} functions-have-names@1.2.3: - resolution: {integrity: sha1-BAT+TuK6L2B/Dg7DyAuumUEzuDQ=} + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} gaxios@6.7.1: - resolution: {integrity: sha1-69n3CT7eO6UCaF5zOQJIu1t/cfs=} + resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} engines: {node: '>=14'} gcp-metadata@6.1.1: - resolution: {integrity: sha1-9lqmn1RrxW4RYGHRN9P1+QvexJQ=} + resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} engines: {node: '>=14'} generator-function@2.0.1: - resolution: {integrity: sha1-DnXdQQ0SQ2h6C6LpUblO7bj3N6I=} + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} gensync@1.0.0-beta.2: - resolution: {integrity: sha1-MqbudsPX9S1GsrGuXZP+qFgKJeA=} + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} get-amd-module-type@6.0.2: - resolution: {integrity: sha1-JXYE6Va8fsP0jaIJyKflukRwovo=} + resolution: {integrity: sha512-7zShVYAYtMnj9S65CfN+hvpBCByfuB1OY8xID01nZEzXTZbx4YyysAfi+nMl95JSR6odt4q8TCj2W63KAoyVLQ==} engines: {node: '>=18'} get-caller-file@2.0.5: - resolution: {integrity: sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=} + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} get-east-asian-width@1.3.0: - resolution: {integrity: sha1-IbQHHuWO0E7g22UzcbVbQpmHU4k=} + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} engines: {node: '>=18'} get-east-asian-width@1.6.0: - resolution: {integrity: sha1-IWkA+R3xGossGYw+HZPWwDWndrk=} + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} engines: {node: '>=18'} get-folder-size@5.0.0: - resolution: {integrity: sha1-VUokjsgxWHH4nUZyRPUrTJ+UzeE=} + resolution: {integrity: sha512-+fgtvbL83tSDypEK+T411GDBQVQtxv+qtQgbV+HVa/TYubqDhNd5ghH/D6cOHY9iC5/88GtOZB7WI8PXy2A3bg==} engines: {node: '>=18.11.0'} hasBin: true get-intrinsic@1.3.0: - resolution: {integrity: sha1-dD8OO2lkqTpUke0b/6rgVNf5jQE=} + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} get-own-enumerable-property-symbols@3.0.2: - resolution: {integrity: sha1-tf3nfyLL4185C04ImSLFC85u9mQ=} + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} get-package-type@0.1.0: - resolution: {integrity: sha1-jeLYA8/0TfO8bEVuZmizbDkm4Ro=} + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} get-proto@1.0.1: - resolution: {integrity: sha1-FQs/J0OGnvPoUewMSdFbHRTQDuE=} + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} get-stream@4.1.0: - resolution: {integrity: sha1-wbJVV189wh1Zv8ec09K0axw6VLU=} + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} get-stream@5.2.0: - resolution: {integrity: sha1-SWaheV7lrOZecGxLe+txJX1uItM=} + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} get-stream@6.0.1: - resolution: {integrity: sha1-omLY7vZ6ztV8KFKtYWdSakPL97c=} + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} get-symbol-description@1.1.0: - resolution: {integrity: sha1-e91U4L7+j/yfO04gMiDZ8eiBtu4=} + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} get-tsconfig@4.14.0: - resolution: {integrity: sha1-mF2FxSqZA4ZCgMzCRI1BP78e/tg=} + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} get-uri@6.0.4: - resolution: {integrity: sha1-barunhL5dZ4Z5VujE5Vog+9Q4Kc=} + resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} engines: {node: '>= 14'} git-hooks-list@1.0.3: - resolution: {integrity: sha1-vluq94IDzjQvL4RKnSsD26G0UVY=} + resolution: {integrity: sha512-Y7wLWcrLUXwk2noSka166byGCvhMtDRpgHdzCno1UQv/n/Hegp++a2xBWJL1lJarnKD3SWaljD+0z1ztqxuKyQ==} git-hooks-list@4.1.1: - resolution: {integrity: sha1-rjQLgqkxI1THO0gAfzOEC72D08A=} + resolution: {integrity: sha512-cmP497iLq54AZnv4YRAEMnEyQ1eIn4tGKbmswqwmFV4GBnAqE8NLtWxxdXa++AalfgL5EBH4IxTPyquEuGY/jA==} github-from-package@0.0.0: - resolution: {integrity: sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=} + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} glob-parent@5.1.2: - resolution: {integrity: sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=} + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} glob-parent@6.0.2: - resolution: {integrity: sha1-bSN9mQg5UMeSkPJMdkKj3poo+eM=} + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} glob-to-regex.js@1.2.0: - resolution: {integrity: sha1-KzI3KCcdEzgwhQ4yMR9AdmxfZBM=} + resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' glob-to-regexp@0.4.1: - resolution: {integrity: sha1-x1KXCHyFG5pXi9IX3VmpL1n+VG4=} + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} glob@10.5.0: - resolution: {integrity: sha1-jsA1WRnNMzjChCiiPU8k7MX+c4w=} + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} 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 hasBin: true glob@11.1.0: - resolution: {integrity: sha1-T4JlduTrmcfa04N5PS+fCPZ+UKY=} + resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} engines: {node: 20 || >=22} 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 hasBin: true glob@13.0.6: - resolution: {integrity: sha1-B4ZmVmpCUUfMrPvS4zLetmor5x0=} + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} glob@7.2.3: - resolution: {integrity: sha1-uN8PuAK7+o6JvR2Ti04WV47UTys=} + 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 glob@8.1.0: - resolution: {integrity: sha1-04j2Vlk+9wjuPjRkD9+5mp/Rwz4=} + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} 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 glob@9.3.5: - resolution: {integrity: sha1-yi7YykUngaMAloVgf98CWomd/iE=} + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} engines: {node: '>=16 || 14 >=14.17'} 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-agent@3.0.0: - resolution: {integrity: sha1-rnzTG9NYO5PFoWQ3oa/ifMM6GrY=} + resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} engines: {node: '>=10.0'} globals@17.7.0: - resolution: {integrity: sha1-VT1VCQtN3oIJ7C2kJYDW5+fYsQ0=} + resolution: {integrity: sha512-Czmyns5dUsq4seFBR/Kdydhmo8y9kC79hiSkPn0YcGtNnYWnrgt0vjrSjx9tspoDGWm2CMarffRuLjM4xUz8xg==} engines: {node: '>=18'} globalthis@1.0.4: - resolution: {integrity: sha1-dDDtOpddl7+1m8zkH1yruvplEjY=} + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} globby@10.0.0: - resolution: {integrity: sha1-q/zQYwA3rhdKiFkBMsL2gE4pEHI=} + resolution: {integrity: sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw==} engines: {node: '>=8'} globby@10.0.1: - resolution: {integrity: sha1-R4LDTLdd1oM1EzXFgpzDQg5gayI=} + resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} engines: {node: '>=8'} globby@11.1.0: - resolution: {integrity: sha1-vUvpi7BC+D15b344EZkfvoKg00s=} + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} globby@14.0.1: - resolution: {integrity: sha1-obRIQap/TG2K8rw5lREJ13MBlZs=} + resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} engines: {node: '>=18'} globby@14.1.0: - resolution: {integrity: sha1-E4t453z1qNeU4yexXc6Avx+wpz4=} + resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} engines: {node: '>=18'} gonzales-pe@4.3.0: - resolution: {integrity: sha1-/p3sXzxVfurQn/hoxlgmvlTQZ7M=} + resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} engines: {node: '>=0.6.0'} hasBin: true google-auth-library@9.15.1: - resolution: {integrity: sha1-DF2E7RiQsjdfHNdPA6x7gGs5KSg=} + resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==} engines: {node: '>=14'} google-logging-utils@0.0.2: - resolution: {integrity: sha1-X9g34G+jNNpFBDO54+GHDBWURmo=} + resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} engines: {node: '>=14'} googleapis-common@7.2.0: - resolution: {integrity: sha1-XBkQLJrx5dJ1YL5eae4sz2h1XUI=} + resolution: {integrity: sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA==} engines: {node: '>=14.0.0'} googleapis@144.0.0: - resolution: {integrity: sha1-lpr/Kb524wjqde5S8QmRr0yN3GM=} + resolution: {integrity: sha512-ELcWOXtJxjPX4vsKMh+7V+jZvgPwYMlEhQFiu2sa9Qmt5veX8nwXPksOWGGN6Zk4xCiLygUyaz7xGtcMO+Onxw==} engines: {node: '>=14.0.0'} gopd@1.2.0: - resolution: {integrity: sha1-ifVrghe9vIgCvSmd9tfxCB1+UaE=} + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} got@11.8.6: - resolution: {integrity: sha1-J26Cfq2Hcu3bz8lxcFkLhBgjIzo=} + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} engines: {node: '>=10.19.0'} graceful-fs@4.2.11: - resolution: {integrity: sha1-QYPk6L8Iu24Fu7L30uDI9xLKQOM=} + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} graphlib@2.1.8: - resolution: {integrity: sha1-V2HUFHN4cAhMkux7XbywWSydNdo=} + resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} graphology-communities-louvain@2.0.2: - resolution: {integrity: sha1-r+eqjc091co1Bibi9Ig2Jbuvo8c=} + resolution: {integrity: sha512-zt+2hHVPYxjEquyecxWXoUoIuN/UvYzsvI7boDdMNz0rRvpESQ7+e+Ejv6wK7AThycbZXuQ6DkG8NPMCq6XwoA==} peerDependencies: graphology-types: '>=0.19.0' graphology-indices@0.17.0: - resolution: {integrity: sha1-uTrTIWL/iwmBRUeu2xASSPD8vS4=} + resolution: {integrity: sha512-A7RXuKQvdqSWOpn7ZVQo4S33O0vCfPBnUSf7FwE0zNCasqwZVUaCXePuWo5HBpWw68KJcwObZDHpFk6HKH6MYQ==} peerDependencies: graphology-types: '>=0.20.0' graphology-layout-forceatlas2@0.10.1: - resolution: {integrity: sha1-dBhCE1YJ2C0S21pf33RnIGLCggU=} + resolution: {integrity: sha512-ogzBeF1FvWzjkikrIFwxhlZXvD2+wlY54lqhsrWprcdPjopM2J9HoMweUmIgwaTvY4bUYVimpSsOdvDv1gPRFQ==} peerDependencies: graphology-types: '>=0.19.0' graphology-layout-noverlap@0.4.2: - resolution: {integrity: sha1-L/oFTO7rqjH8/+aV0nH8VXB80pw=} + resolution: {integrity: sha512-13WwZSx96zim6l1dfZONcqLh3oqyRcjIBsqz2c2iJ3ohgs3605IDWjldH41Gnhh462xGB1j6VGmuGhZ2FKISXA==} peerDependencies: graphology-types: '>=0.19.0' graphology-layout@0.6.1: - resolution: {integrity: sha1-58HWXAIuM3sRyXfi0wq+QHagMn0=} + resolution: {integrity: sha512-m9aMvbd0uDPffUCFPng5ibRkb2pmfNvdKjQWeZrf71RS1aOoat5874+DcyNfMeCT4aQguKC7Lj9eCbqZj/h8Ag==} peerDependencies: graphology-types: '>=0.19.0' graphology-metrics@2.4.0: - resolution: {integrity: sha1-MHJU9cWU9VWKmqEUfuSwssdnKDQ=} + resolution: {integrity: sha512-7WOfOP+mFLCaTJx55Qg4eY+211vr1/b3D/R3biz3SXGhAaCVcWYkfabnmO4O4WBNWANEHtVnFrGgJ0kj6MM6xw==} peerDependencies: graphology-types: '>=0.20.0' graphology-shortest-path@2.1.0: - resolution: {integrity: sha1-tcWlaOfIayTL/SBC+dhPKlTgszE=} + resolution: {integrity: sha512-KbT9CTkP/u72vGEJzyRr24xFC7usI9Es3LMmCPHGwQ1KTsoZjxwA9lMKxfU0syvT/w+7fZUdB/Hu2wWYcJBm6Q==} peerDependencies: graphology-types: '>=0.20.0' graphology-types@0.24.8: - resolution: {integrity: sha1-KeQtH71h1lBHYMsxNekde+tOYEs=} + resolution: {integrity: sha512-hDRKYXa8TsoZHjgEaysSRyPdT6uB78Ci8WnjgbStlQysz7xR52PInxNsmnB7IBOM1BhikxkNyCVEFgmPKnpx3Q==} graphology-utils@2.5.2: - resolution: {integrity: sha1-TTDW5WfSfAHxBeFJSvgWdC6NJEA=} + resolution: {integrity: sha512-ckHg8MXrXJkOARk56ZaSCM1g1Wihe2d6iTmz1enGOz4W/l831MBCKSayeFQfowgF8wd+PQ4rlch/56Vs/VZLDQ==} peerDependencies: graphology-types: '>=0.23.0' graphology@0.25.4: - resolution: {integrity: sha1-5SimRVWsHzkqnZZTIa2lsrhD7+E=} + resolution: {integrity: sha512-33g0Ol9nkWdD6ulw687viS8YJQBxqG5LWII6FI6nul0pq6iM2t5EKquOTFDbyTblRB3O9I+7KX4xI8u5ffekAQ==} peerDependencies: graphology-types: '>=0.24.0' gtoken@7.1.0: - resolution: {integrity: sha1-1htOvRATIiKBf3IiseYGS9Rj/CY=} + resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} engines: {node: '>=14.0.0'} guid-typescript@1.0.9: - resolution: {integrity: sha1-4193ADU1sCl+oIVI9azmrbFIDdw=} + resolution: {integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==} hachure-fill@0.5.2: - resolution: {integrity: sha1-0ZvEzIdQpZYrR/sTAFV6hfz5NMw=} + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} handle-thing@2.0.1: - resolution: {integrity: sha1-hX95zjWVgMNA1DCBzGSJcNC7I04=} + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} handlebars@4.7.9: - resolution: {integrity: sha1-bxOQgqtY3E5aDlHv59ta6JDVag8=} + resolution: {integrity: sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==} engines: {node: '>=0.4.7'} hasBin: true has-bigints@1.1.0: - resolution: {integrity: sha1-KGB+llrJZ+A80qLHCiY2oe2tSf4=} + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} has-flag@3.0.0: - resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} has-flag@4.0.0: - resolution: {integrity: sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=} + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} has-property-descriptors@1.0.2: - resolution: {integrity: sha1-lj7X0HHce/XwhMW/vg0bYiJYaFQ=} + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} has-proto@1.2.0: - resolution: {integrity: sha1-XeWm6r2V/f/ZgYtDBV6AZeOf6dU=} + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} engines: {node: '>= 0.4'} has-symbols@1.1.0: - resolution: {integrity: sha1-/JxqeDoISVHQuXH+EBjegTcHozg=} + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} has-tostringtag@1.0.2: - resolution: {integrity: sha1-LNxC1AvvLltO6rfAGnPFTOerWrw=} + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} hasown@2.0.4: - resolution: {integrity: sha1-jGLYy5C+sqrV0KW2dYGtmFTD8AM=} + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} he@1.2.0: - resolution: {integrity: sha1-hK5l+n6vsWX922FWauFLrwVmTw8=} + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true hexy@0.2.11: - resolution: {integrity: sha1-mTnCXLb4apEwLyK4qKclc1GOJbQ=} + resolution: {integrity: sha512-ciq6hFsSG/Bpt2DmrZJtv+56zpPdnq+NQ4ijEFrveKN0ZG1mhl/LdT1NQZ9se6ty1fACcI4d4vYqC9v8EYpH2A==} hasBin: true highlight.js@10.7.3: - resolution: {integrity: sha1-aXJy45kTVuQMPKxWanTu9oF1ZTE=} + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} hono@4.12.25: - resolution: {integrity: sha1-8tmZalToycDF9d4cjzqWLkOpjE4=} + resolution: {integrity: sha512-2NFaIyNVgJmBs/ecmtGzlmluTFs5cHEWGTdu0t1HBwYzoGXOL5nUQBRMXsXWla5i4KkG//QMzVP88m1+I3fdAQ==} engines: {node: '>=16.9.0'} hono@4.12.29: - resolution: {integrity: sha1-VUGKdlMd0m3w8xA1M/Ss1p41Z4c=} + resolution: {integrity: sha512-1hNiRjawYrLq/4m3DQQjPGFg0VZkk4RjQJDff/excI6Dm9BiL75qxGrd7/c6YOxPdq6AscP3LiXhQ6fKFC1Waw==} engines: {node: '>=16.9.0'} hosted-git-info@4.1.0: - resolution: {integrity: sha1-gnuChn6f8cjQxNnVOIA5fSyG0iQ=} + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} hosted-git-info@7.0.2: - resolution: {integrity: sha1-m3UaysCXdXZn8wEUYH73tmH/Txc=} + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} hpack.js@2.1.6: - resolution: {integrity: sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=} + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} hpagent@1.2.0: - resolution: {integrity: sha1-CuQXiVQw6zdwwDRDRWuNkMpGSQM=} + resolution: {integrity: sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==} engines: {node: '>=14'} html-encoding-sniffer@3.0.0: - resolution: {integrity: sha1-LLGozw21JBR3blsqegTV3ZgVjek=} + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} html-encoding-sniffer@6.0.0: - resolution: {integrity: sha1-+Nk5Czs0i1DU9hwW3S71wFmAqII=} + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} html-escaper@2.0.2: - resolution: {integrity: sha1-39YAJ9o2o238viNiYsAKWCJoFFM=} + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} html-link-extractor@1.0.5: - resolution: {integrity: sha1-pL40XLE7jDNS2CsoyLEku3v13W8=} + resolution: {integrity: sha512-ADd49pudM157uWHwHQPUSX4ssMsvR/yHIswOR5CUfBdK9g9ZYGMhVSE6KZVHJ6kCkR0gH4htsfzU6zECDNVwyw==} html-minifier-terser@6.1.0: - resolution: {integrity: sha1-v8gYk0zAeRj2s2afV3Ts39SPMqs=} + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} engines: {node: '>=12'} hasBin: true html-to-text@9.0.5: - resolution: {integrity: sha1-YUmg9hiueg24CF3Km7+W0yu4No0=} + resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} engines: {node: '>=14'} html-webpack-plugin@5.6.3: - resolution: {integrity: sha1-oxFF8P7kGE1Tp5T5UTFH3x5lNoU=} + resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} engines: {node: '>=10.13.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -13504,49 +13522,49 @@ packages: optional: true htmlparser2@10.0.0: - resolution: {integrity: sha1-d60kkDe2a/jMmcbihu9zuDrrYh0=} + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} htmlparser2@6.1.0: - resolution: {integrity: sha1-xNditsM3GgXb5l6UrkOp+EX7j7c=} + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} htmlparser2@8.0.2: - resolution: {integrity: sha1-8AIVFwWzg+YkM7XPRm9bcW7a7CE=} + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} http-assert@1.5.0: - resolution: {integrity: sha1-w4nM2HrBbtLfpiRv1zuSaqAOa48=} + resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} engines: {node: '>= 0.8'} http-cache-semantics@4.2.0: - resolution: {integrity: sha1-IF9Ntk+FYrdqT/kjWqUnmDmgndU=} + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} http-deceiver@1.2.7: - resolution: {integrity: sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=} + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} http-errors@1.6.3: - resolution: {integrity: sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=} + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} engines: {node: '>= 0.6'} http-errors@1.8.1: - resolution: {integrity: sha1-fD8oV3y8iiBziEVdvWIpXtB71ow=} + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} engines: {node: '>= 0.6'} http-errors@2.0.0: - resolution: {integrity: sha1-t3dKFIbvc892Z6ya4IWMASxXudM=} + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} http-errors@2.0.1: - resolution: {integrity: sha1-NtL2W8kJyHkAGN02+02T2myq4Gs=} + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} http-parser-js@0.5.10: - resolution: {integrity: sha1-syd71tftVYjiDqc79yT8vkRgkHU=} + resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} http-proxy-agent@7.0.2: - resolution: {integrity: sha1-mosfJGhmwChQlIZYX2K48sGMJw4=} + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} http-proxy-middleware@2.0.10: - resolution: {integrity: sha1-st97cFID16jCaayEUM+WsAxTL5Q=} + resolution: {integrity: sha512-RKzRWNPxUZqbuk3BC5mGVJbBnWgr+diEnjJexIOytFbBzDy88Fbh/YvBr3DsNrl1jYAfjWfpATEv0NO35FDuPQ==} engines: {node: '>=12.0.0'} peerDependencies: '@types/express': ^4.17.13 @@ -13555,124 +13573,124 @@ packages: optional: true http-proxy@1.18.1: - resolution: {integrity: sha1-QBVB8FNIhLv5UmAzTnL4juOXZUk=} + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} http2-wrapper@1.0.3: - resolution: {integrity: sha1-uPVeDB8l1OvQizsMLAeflZCACz0=} + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} engines: {node: '>=10.19.0'} https-proxy-agent@4.0.0: - resolution: {integrity: sha1-cCtx+1UgoTKmbeH2dUHZ5iFU2Cs=} + resolution: {integrity: sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==} engines: {node: '>= 6.0.0'} https-proxy-agent@5.0.1: - resolution: {integrity: sha1-xZ7yJKBP6LdU89sAY6Jeow0ABdY=} + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} https-proxy-agent@7.0.6: - resolution: {integrity: sha1-2o3+rH2hMLBcK6S1nJts1mYRprk=} + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} human-signals@1.1.1: - resolution: {integrity: sha1-xbHNFPUK6uCatsWf5jujOV/k36M=} + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} human-signals@2.1.0: - resolution: {integrity: sha1-3JH8ukLk0G5Kuu0zs+ejwC9RTqA=} + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} humanize-ms@1.2.1: - resolution: {integrity: sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=} + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} hyperdyperid@1.2.0: - resolution: {integrity: sha1-WWaNMjrakiKNKoadPkdNWjO2nms=} + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} engines: {node: '>=10.18'} iconv-corefoundation@1.1.7: - resolution: {integrity: sha1-MQZearLJJyFUyLCCEVHiyI8bACo=} + resolution: {integrity: sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==} engines: {node: ^8.11.2 || >=10} os: [darwin] iconv-lite@0.4.24: - resolution: {integrity: sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=} + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} iconv-lite@0.6.3: - resolution: {integrity: sha1-pS+AvzjaGVLrXGgXkHGYcaGnJQE=} + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} iconv-lite@0.7.2: - resolution: {integrity: sha1-0L3qw/ErSDW3NZwq2JxCKk0cxy4=} + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} ieee754@1.2.1: - resolution: {integrity: sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=} + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} ignore@5.3.2: - resolution: {integrity: sha1-PNQOcp82Q/2HywTlC/DrcivFlvU=} + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} ignore@7.0.5: - resolution: {integrity: sha1-TLX2zX1MerA2VzjHrqiIuqbX79k=} + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} image-size@0.5.5: - resolution: {integrity: sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=} + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} engines: {node: '>=0.10.0'} hasBin: true immediate@3.0.6: - resolution: {integrity: sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=} + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} import-fresh@3.3.0: - resolution: {integrity: sha1-NxYsJfy566oublPVtNiM4X2eDCs=} + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} import-local@3.1.0: - resolution: {integrity: sha1-tEed+KX9RPbNziQHBnVnYGPJXLQ=} + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true import-local@3.2.0: - resolution: {integrity: sha1-w9XHRXmMAqb4uJdyarpRABhu4mA=} + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} engines: {node: '>=8'} hasBin: true import-meta-resolve@4.2.0: - resolution: {integrity: sha1-CMuFtb037MjrHg9nDcJ2cALUNzQ=} + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} imurmurhash@0.1.4: - resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} indent-string@4.0.0: - resolution: {integrity: sha1-Yk+PRJfWGbLZdoUx1Y9BIoVNclE=} + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} indent-string@5.0.0: - resolution: {integrity: sha1-T9KYD8yvhiLRTGTWlPTPM8gZUaU=} + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} inflation@2.1.0: - resolution: {integrity: sha1-khTbEaR+b3VtERxPnflpccYPiGw=} + resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==} engines: {node: '>= 0.8.0'} inflight@1.0.6: - resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.3: - resolution: {integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=} + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} inherits@2.0.4: - resolution: {integrity: sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=} + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} ini@1.3.8: - resolution: {integrity: sha1-op2kJbSIBvNHZ6Tvzjlyaa8oQyw=} + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} ink@5.0.1: - resolution: {integrity: sha1-8u+XlqORGDDDmV3t0ifshK4n3ks=} + resolution: {integrity: sha512-ae4AW/t8jlkj/6Ou21H2av0wxTk8vrGzXv+v2v7j4in+bl1M5XRMVbfNghzhBokV++FjF8RBDJvYo+ttR9YVRg==} engines: {node: '>=18'} peerDependencies: '@types/react': '>=18.0.0' @@ -13685,417 +13703,417 @@ packages: optional: true internal-ip@6.2.0: - resolution: {integrity: sha1-1VQeeXFuQGt0rGsHuFbvGNwWIcE=} + resolution: {integrity: sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==} engines: {node: '>=10'} internal-slot@1.1.0: - resolution: {integrity: sha1-HqyRdilH0vcFa8g42T4TsulgSWE=} + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} internmap@1.0.1: - resolution: {integrity: sha1-ABfMijuZYF8DAvKxmNJy4BXl35U=} + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} internmap@2.0.3: - resolution: {integrity: sha1-ZoXyN1XkPFJOJR0py8lySOMGEAk=} + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} interpret@1.4.0: - resolution: {integrity: sha1-Zlq4vE2iendKQFhOgS4+D6RbGh4=} + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} engines: {node: '>= 0.10'} interpret@3.1.1: - resolution: {integrity: sha1-W+DO7WfKecbEvFzw1+6EPc6hEMQ=} + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} engines: {node: '>=10.13.0'} ip-address@10.1.0: - resolution: {integrity: sha1-2Nz/s00OAuskFCdESm4j9bBZWqQ=} + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} ip-address@10.2.0: - resolution: {integrity: sha1-gF/BeLIMUYvUyFSLJP4wiS1/MgY=} + resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} engines: {node: '>= 12'} ip-regex@4.3.0: - resolution: {integrity: sha1-aHJ1qw9X+naXj/j03dyKI9WZDbU=} + resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} engines: {node: '>=8'} ipaddr.js@1.9.1: - resolution: {integrity: sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=} + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} ipaddr.js@2.4.0: - resolution: {integrity: sha1-A46c6vghnvxbt2NHt+t4eHXVCVs=} + resolution: {integrity: sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==} engines: {node: '>= 10'} is-absolute-url@4.0.1: - resolution: {integrity: sha1-FuTUh9T97QXP4GheU+yGgEpelNw=} + resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} is-array-buffer@3.0.5: - resolution: {integrity: sha1-ZXQuHmh70sxmYlMGj9hwf+TUQoA=} + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} is-arrayish@0.2.1: - resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} is-arrayish@0.3.2: - resolution: {integrity: sha1-RXSirlb3qyBolvtDHq7tBm/fjwM=} + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} is-async-function@2.1.1: - resolution: {integrity: sha1-PmkBjI4E5ztzh5PQIL/ohLn9NSM=} + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} is-bigint@1.1.0: - resolution: {integrity: sha1-3aejRF31ekJYPbQihoLrp8QXBnI=} + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} is-binary-path@2.1.0: - resolution: {integrity: sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=} + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} is-boolean-object@1.2.2: - resolution: {integrity: sha1-cGf0dwmAmjk8cf9bs+E12KkhXZ4=} + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} is-buffer@1.1.6: - resolution: {integrity: sha1-76ouqdqg16suoTqXsritUf776L4=} + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} is-callable@1.2.7: - resolution: {integrity: sha1-O8KoXqdC2eNiBdys3XLKH9xRsFU=} + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} is-core-module@2.13.1: - resolution: {integrity: sha1-rQ11Msb+qdoevcgnQtdFJcYnM4Q=} + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} is-core-module@2.16.2: - resolution: {integrity: sha1-PgdFCoCA684/vwysSU9NKrMk4II=} + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} engines: {node: '>= 0.4'} is-data-view@1.0.2: - resolution: {integrity: sha1-uuCkG5aImGwhiN2mZX5WuPnmO44=} + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} engines: {node: '>= 0.4'} is-date-object@1.1.0: - resolution: {integrity: sha1-rYVUGZb8eqiycpcB0ntzGfldgvc=} + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} is-docker@2.2.1: - resolution: {integrity: sha1-M+6r4jz+hvFL3kQIoCwM+4U6zao=} + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true is-docker@3.0.0: - resolution: {integrity: sha1-kAk6oxBid9inelkQ265xdH4VogA=} + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true is-expression@4.0.0: - resolution: {integrity: sha1-wzFVliq/IdCv0lUlFNZ9LsFv0qs=} + resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} is-extendable@0.1.1: - resolution: {integrity: sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=} + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} is-extglob@2.1.1: - resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} is-finalizationregistry@1.1.1: - resolution: {integrity: sha1-7v3NxslN3QZ02chYh7+T+USpfJA=} + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=} + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha1-+uMWfHKedGP4RhzlErCApJJoqog=} + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} is-fullwidth-code-point@5.1.0: - resolution: {integrity: sha1-BGsqbU9rFWsiM9MgfUtal4OZm5g=} + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} is-generator-fn@2.1.0: - resolution: {integrity: sha1-fRQK3DiarzARqPKipM+m+q3/sRg=} + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} is-generator-function@1.1.2: - resolution: {integrity: sha1-rjth49XqTkg5uQutIrAjNQUaF9U=} + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} is-glob@4.0.3: - resolution: {integrity: sha1-ZPYeQsu7LuwgcanawLKLoeZdUIQ=} + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} is-in-ci@0.1.0: - resolution: {integrity: sha1-XgfWoC7DqCktP1kJczV++j/OsNM=} + resolution: {integrity: sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ==} engines: {node: '>=18'} hasBin: true is-inside-container@1.0.0: - resolution: {integrity: sha1-6B+6aZZi6zHb2vJnZqYdSBRxfqQ=} + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} hasBin: true is-interactive@1.0.0: - resolution: {integrity: sha1-zqbmrlyHCnsKAAQHC3tYfgJSkS4=} + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} is-interactive@2.0.0: - resolution: {integrity: sha1-QMV2FFk4JtoRAK3mBZd41ZfxbpA=} + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} is-ip@3.1.0: - resolution: {integrity: sha1-KuXd+vrwXLgAimIJPPKXNPZXxdg=} + resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==} engines: {node: '>=8'} is-map@2.0.3: - resolution: {integrity: sha1-7elrf+HicLPERl46RlZYdkkm1i4=} + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} is-module@1.0.0: - resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} is-negative-zero@2.0.3: - resolution: {integrity: sha1-ztkDoCespjgbd3pXQwadc3akl0c=} + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} is-network-error@1.3.2: - resolution: {integrity: sha1-lGC8MPhBmkvKdxFPTeiKPuXgxRk=} + resolution: {integrity: sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==} engines: {node: '>=16'} is-number-object@1.1.1: - resolution: {integrity: sha1-FEsh6VobwUggXcwoFKkTTsQbJUE=} + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} is-number@7.0.0: - resolution: {integrity: sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=} + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} is-obj@1.0.1: - resolution: {integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8=} + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} engines: {node: '>=0.10.0'} is-path-inside@3.0.3: - resolution: {integrity: sha1-0jE2LlOgf/Kw4Op/7QSRYf/RYoM=} + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} is-plain-obj@2.1.0: - resolution: {integrity: sha1-ReQuN/zPH0Dajl927iFRWEDAkoc=} + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} is-plain-obj@3.0.0: - resolution: {integrity: sha1-r28uoUrFpkYYOlu9tbqrvBVq2dc=} + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} is-plain-obj@4.1.0: - resolution: {integrity: sha1-1lAl7ew2V84DL9fbY8l4g+rtcfA=} + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} is-plain-object@2.0.4: - resolution: {integrity: sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=} + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} is-plain-object@3.0.1: - resolution: {integrity: sha1-Zi2S0kwKpDAkB7DUXSHyJRyF+Fs=} + resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} engines: {node: '>=0.10.0'} is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha1-Fx7W8Z46xVQ5Tt94yqBXhKRb67U=} + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} is-promise@2.2.2: - resolution: {integrity: sha1-OauVnMv5p3TPB597QMeib3YxNfE=} + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} is-promise@4.0.0: - resolution: {integrity: sha1-Qv+fhCBsGZHSbev1IN1cAQQt0vM=} + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} is-regex@1.2.1: - resolution: {integrity: sha1-dtcKPtEO+b5I61d4h9dCBb8MrSI=} + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} is-regexp@1.0.0: - resolution: {integrity: sha1-/S2INUXEa6xaYz57mgnof6LLUGk=} + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} engines: {node: '>=0.10.0'} is-relative-url@4.1.0: - resolution: {integrity: sha1-/o77Jhaycs8UHTyd6XYFlOU0U6c=} + resolution: {integrity: sha512-vhIXKasjAuxS7n+sdv7pJQykEAgS+YU8VBQOENXwo/VZpOHDgBBsIbHo7zFKaWBjYWF4qxERdhbPRRtFAeJKfg==} engines: {node: '>=14.16'} is-set@2.0.3: - resolution: {integrity: sha1-irIJ6kJGCBQTct7W4MsgDvHZ0B0=} + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} is-shared-array-buffer@1.0.4: - resolution: {integrity: sha1-m2eES9m38ka6BwjDqT40Jpx3T28=} + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} is-stream@1.1.0: - resolution: {integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ=} + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} is-stream@2.0.1: - resolution: {integrity: sha1-+sHj1TuXrVqdCunO8jifWBClwHc=} + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} is-string@1.1.1: - resolution: {integrity: sha1-kuo/PVxbbgOcqGd+WsjQfqdzy7k=} + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} is-symbol@1.1.1: - resolution: {integrity: sha1-9HdhJ59TLisFpwJKdQbbvtrNBjQ=} + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} is-typed-array@1.1.15: - resolution: {integrity: sha1-S/tKRbYc7oOlpG+6d45OjVnAzgs=} + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} is-unicode-supported@0.1.0: - resolution: {integrity: sha1-PybHaoCVk7Ur+i7LVxDtJ3m1Iqc=} + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} is-unicode-supported@1.3.0: - resolution: {integrity: sha1-2CSYS2FsKSouGYIH1KYJmDhC9xQ=} + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} is-unicode-supported@2.1.0: - resolution: {integrity: sha1-CfCrDebTdE1I0mXruY9l0R8qmzo=} + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} is-url-superb@4.0.0: - resolution: {integrity: sha1-tU0dJJm7FnknSKyWeqPstBozqMI=} + resolution: {integrity: sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==} engines: {node: '>=10'} is-weakmap@2.0.2: - resolution: {integrity: sha1-v3JhXWSd/l9pkHnFS4PkfRrhnP0=} + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} is-weakref@1.1.1: - resolution: {integrity: sha1-7qQwGCvo1kF0vZa/+8RvIb8/kpM=} + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} engines: {node: '>= 0.4'} is-weakset@2.0.4: - resolution: {integrity: sha1-yfXesLwZBsbW8QJ/KE3fRZJJ2so=} + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} is-what@3.14.1: - resolution: {integrity: sha1-4SIvRt3ahd6tD9HJ3xMXYOd3VcE=} + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} is-wsl@2.2.0: - resolution: {integrity: sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE=} + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} is-wsl@3.1.0: - resolution: {integrity: sha1-4cZX45wQCQr8vt7GFyD2uSTDy9I=} + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} is-wsl@3.1.1: - resolution: {integrity: sha1-MniXsmgyo+sRfabCdJLQTKEyWU8=} + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} engines: {node: '>=16'} isarray@0.0.1: - resolution: {integrity: sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=} + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} isarray@1.0.0: - resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} isarray@2.0.5: - resolution: {integrity: sha1-ivHkwSISRMxiRZ+vOJQNTmRKVyM=} + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} isbinaryfile@4.0.10: - resolution: {integrity: sha1-DFteMMJVei8G/r03tzIpRqruQrM=} + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} engines: {node: '>= 8.0.0'} isbinaryfile@5.0.0: - resolution: {integrity: sha1-A0t+VJidq4mGWYy86kH2ZmPGUjQ=} + resolution: {integrity: sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==} engines: {node: '>= 14.0.0'} isbinaryfile@5.0.7: - resolution: {integrity: sha1-Gac/IoG3No3KnTs6yKBDQHRnCXk=} + resolution: {integrity: sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==} engines: {node: '>= 18.0.0'} isexe@2.0.0: - resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} isexe@3.1.5: - resolution: {integrity: sha1-QuNo9o1eENrf7k/ae1ULwtiJLck=} + resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} engines: {node: '>=18'} isexe@4.0.0: - resolution: {integrity: sha1-SPZXavjoehj+t5a37V4uWQO0Pco=} + resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} engines: {node: '>=20'} isobject@3.0.1: - resolution: {integrity: sha1-TkMekrEalzFjaqH5yNHMvP2reN8=} + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} isomorphic-ws@5.0.0: - resolution: {integrity: sha1-5VKRSJEuy5tFG0btRNU9rhzgS78=} + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} peerDependencies: ws: '*' isomorphic.js@0.2.5: - resolution: {integrity: sha1-E+7PNvLbpT6F01XhG/nUIIxvf4g=} + resolution: {integrity: sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==} istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha1-GJ55CdCjn6Wj361bA/cZR3cBkdM=} + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha1-LRZsSwZE1Do58Ev2wu3R5YXzF1Y=} + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha1-0QyIhcISVXThwjHKyt+VVnXhzj0=} + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha1-+hVAHfbBWHS8shBfdzMl14xmZ2U=} + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} engines: {node: '>=10'} istanbul-lib-report@3.0.1: - resolution: {integrity: sha1-kIMFusmlvRdaxqdEier9D8JEWn0=} + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha1-iV86cJ/PujTG3lpCk5Ai8+Q1hVE=} + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} istanbul-reports@3.1.6: - resolution: {integrity: sha1-JUS8q0doFUKBovCHBHGQJwTMqho=} + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} engines: {node: '>=8'} istextorbinary@6.0.0: - resolution: {integrity: sha1-vG51QQBrwgP+/+FmKNCnKJOyrVQ=} + resolution: {integrity: sha512-4j3UqQCa06GAf6QHlN3giz2EeFU7qc6Q5uB/aY7Gmb3xmLDLepDOtsZqkb4sCfJgFvTbLUinNw0kHgHs8XOHoQ==} engines: {node: '>=10'} jackspeak@3.4.3: - resolution: {integrity: sha1-iDOp2Jq0rN5hiJQr0cU7Y5DtWoo=} + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} jackspeak@4.1.1: - resolution: {integrity: sha1-lodgMPRQUCBH/H6Mf8+M6BJOQ64=} + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} engines: {node: 20 || >=22} jake@10.8.7: - resolution: {integrity: sha1-Y6MoIRd5QMM/NW4LpE/5004cfY8=} + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} engines: {node: '>=10'} hasBin: true jest-changed-files@29.7.0: - resolution: {integrity: sha1-HAbQfnfHjhWF0CBCTe3BDW4XrDo=} + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-chrome@0.8.0: - resolution: {integrity: sha1-90H1z0kpIybrmiUHERuad6AaSV0=} + resolution: {integrity: sha512-39RR1GT9nI4e4jsuH1vIf4l5ApxxkcstjGJr+GsOURL8f4Db0UlbRnsZaM+ZRniaGtokqklUH5VFKGZZ6YztUg==} peerDependencies: jest: ^26.0.1 || ^27.0.0 jest-circus@29.7.0: - resolution: {integrity: sha1-toF6RfzINdixbVli0MAmRz7jZoo=} + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-cli@29.7.0: - resolution: {integrity: sha1-VZLJQHmODK5nfuwWkmTy2DmjeZU=} + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -14105,7 +14123,7 @@ packages: optional: true jest-config@29.7.0: - resolution: {integrity: sha1-vL2ogG28wBseMWpGu3QIWoSwJF8=} + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -14117,19 +14135,19 @@ packages: optional: true jest-diff@29.7.0: - resolution: {integrity: sha1-AXk0pm67fs9vIF6EaZvhCv1wRYo=} + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-docblock@29.7.0: - resolution: {integrity: sha1-j922rcPNyVXJPiqH9hz9NQ1dEZo=} + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-each@29.7.0: - resolution: {integrity: sha1-FiqbPyMovdmRvqq/+7dHReVld9E=} + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-environment-jsdom@29.7.0: - resolution: {integrity: sha1-0gb6NVGTPD/VGeXf21ig9ROag38=} + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: canvas: ^2.5.0 @@ -14138,35 +14156,35 @@ packages: optional: true jest-environment-node@29.7.0: - resolution: {integrity: sha1-C5PhEd2o7BILyDAObR+5V24WQ3Y=} + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-get-type@29.6.3: - resolution: {integrity: sha1-NvSZ/c6hl8EEWhJzGcBIFyOQj9E=} + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-haste-map@29.7.0: - resolution: {integrity: sha1-PCOWUkSC9aBQY3bmyFjDu8wXsQQ=} + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-leak-detector@29.7.0: - resolution: {integrity: sha1-W37A2t/f7Ayjg9yaoBbTa16kxyg=} + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-matcher-utils@29.7.0: - resolution: {integrity: sha1-ro/sef8kn9WSzoDj7kdOg6bETxI=} + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-message-util@29.7.0: - resolution: {integrity: sha1-i8OS4gTpXf51ZKu+cqQE4o5R9/M=} + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-mock@29.7.0: - resolution: {integrity: sha1-ToNs9g6Zxvz6vp+Z0Bfz/dUKY0c=} + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-pnp-resolver@1.2.3: - resolution: {integrity: sha1-kwsVRhZNStWTfVVA5xHU041MrS4=} + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: jest-resolve: '*' @@ -14175,51 +14193,51 @@ packages: optional: true jest-regex-util@29.6.3: - resolution: {integrity: sha1-SlVtnHdq9o4cX0gZT00DJ9JOilI=} + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha1-GwTywJXzf8d2/0CAPckpIbHohCg=} + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-resolve@29.7.0: - resolution: {integrity: sha1-ZNaomS3Sb2NasMAeXu9Dmca8vDA=} + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-runner@29.7.0: - resolution: {integrity: sha1-gJrwctQIpT3P0uhJpMl20xMvcY4=} + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-runtime@29.7.0: - resolution: {integrity: sha1-7+yzFBz303Z6OgzI98mZBYfT2Bc=} + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-snapshot@29.7.0: - resolution: {integrity: sha1-wsV0w/UYZdobsykDZ3imm/iKa+U=} + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-util@29.7.0: - resolution: {integrity: sha1-I8K2K/sivoK0TemAVYAv83EPwLw=} + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-validate@29.7.0: - resolution: {integrity: sha1-e/cFURxk2lkdRrFfzkFADVIUfZw=} + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-watcher@29.7.0: - resolution: {integrity: sha1-eBDTDWGcOmIJMiPOa7NZyhsoovI=} + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-worker@27.5.1: - resolution: {integrity: sha1-jRRvCQDolzsQa29zzB6ajLhvjbA=} + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} jest-worker@29.7.0: - resolution: {integrity: sha1-rK0HOsu663JivVOJ4bz0PhAFjUo=} + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest@29.7.0: - resolution: {integrity: sha1-mUZ2/CQXfwiPHF43N/VpcgT/JhM=} + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -14229,47 +14247,47 @@ packages: optional: true jiti@2.7.0: - resolution: {integrity: sha1-l0Io8vTKK8IYhaF5e0X+po6VDGQ=} + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true jju@1.4.0: - resolution: {integrity: sha1-o6vicYryQaKykE+EpiWXDzia4yo=} + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} jose@5.10.0: - resolution: {integrity: sha1-w3NGoJnWRnxAE1GpoMIWHg9SxL4=} + resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} jose@6.1.3: - resolution: {integrity: sha1-hFPXvoive7fWSgSB1qNaAUW6PqU=} + resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} jose@6.2.3: - resolution: {integrity: sha1-CXUZetlzJRIhxlijzdxLlRolDC0=} + resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} js-stringify@1.0.2: - resolution: {integrity: sha1-Fzb939lyTyijaCrcYjCufk6Weds=} + resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} js-tokens@4.0.0: - resolution: {integrity: sha1-GSA/tZmR35jjoocFDUZHzerzJJk=} + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} js-yaml@3.15.0: - resolution: {integrity: sha1-WG5SFOr+Pok3VqQel5tQ2J0+Smc=} + resolution: {integrity: sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==} hasBin: true js-yaml@4.3.0: - resolution: {integrity: sha1-0ZAFcqf3zwtfVAyDZz5gutNDZZI=} + resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} hasBin: true jsbi@2.0.5: - resolution: {integrity: sha1-gliQEdqH3Fm0tUnZTc71GpFV9v4=} + resolution: {integrity: sha512-TzO/62Hxeb26QMb4IGlI/5X+QLr9Uqp1FPkwp2+KOICW+Q+vSuFj61c8pkT6wAns4WcK56X7CmSHhJeDGWOqxQ==} jscpd-sarif-reporter@4.2.5: - resolution: {integrity: sha1-IDPIPfmUWaZNQcGhn/7Msoq38Z0=} + resolution: {integrity: sha512-O8LcM9grAS5yO5x1Q0yegYaYcUX//IEBEyvzGFSYCeo1YzHbMnAI6EK7oTrwD+7Csjvfg9m8B8G7OOxzcSlr9w==} jscpd@4.2.5: - resolution: {integrity: sha1-VKT0MeI49dobZg5TlRj1WkFc/ns=} + resolution: {integrity: sha512-KDpApYw1ChGelfHb7MwYTEx694OnW52pv3McAasidUV4ILcGDQMiVJzB+vI8ox+ZPVfOSvdXQCk8uRa9B0LXnw==} hasBin: true jsdom@20.0.3: - resolution: {integrity: sha1-iGpBuh1HJvZ6iFgCjJlIn+1q1Ns=} + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} engines: {node: '>=14'} peerDependencies: canvas: ^2.5.0 @@ -14278,7 +14296,7 @@ packages: optional: true jsdom@28.1.0: - resolution: {integrity: sha1-rEID5Y/STXsPNDWasA1tnK69S2I=} + resolution: {integrity: sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 @@ -14287,392 +14305,392 @@ packages: optional: true jsesc@3.1.0: - resolution: {integrity: sha1-dNM1ojT2ftGZB/2t+sfM+dQJgl0=} + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} hasBin: true json-bigint@1.0.0: - resolution: {integrity: sha1-rlR4I6wMrYOYZn+M2e9HMPWwH/E=} + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} json-bignum@0.0.3: - resolution: {integrity: sha1-QRY7UENsdz2CQk28IO1w23YEuNc=} + resolution: {integrity: sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==} engines: {node: '>=0.8'} json-buffer@3.0.1: - resolution: {integrity: sha1-kziAKjDTtmBfvgYT4JQAjKjAWhM=} + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=} + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} json-parse-even-better-errors@3.0.2: - resolution: {integrity: sha1-tD016JwPO+a1+76dxsgkZ7MMKNo=} + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} json-schema-to-ts@3.1.1: - resolution: {integrity: sha1-gfOsr1o0c2SS9vX1GHDvns4cqFM=} + resolution: {integrity: sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==} engines: {node: '>=16'} json-schema-traverse@0.4.1: - resolution: {integrity: sha1-afaofZUTq4u4/mO9sJecRI5oRmA=} + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} json-schema-traverse@1.0.0: - resolution: {integrity: sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=} + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} json-schema-typed@8.0.2: - resolution: {integrity: sha1-6Y7nsYmf9KGEU00fFnwojGa77/Q=} + resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} json-stringify-safe@5.0.1: - resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} json5@2.2.3: - resolution: {integrity: sha1-eM1vGhm9wStz21rQxh79ZsHikoM=} + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true jsonc-parser@3.2.1: - resolution: {integrity: sha1-AxkEVxzPkp12cO6MVHVFCByzfxo=} + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} jsonfile@4.0.0: - resolution: {integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=} + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} jsonfile@6.1.0: - resolution: {integrity: sha1-vFWyY0eTxnnsZAMJTrE2mKbsCq4=} + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} jsonfile@6.2.0: - resolution: {integrity: sha1-fCZb0bZd5pd0eDAAh8mfHIQ4P2I=} + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} jsonfile@6.2.1: - resolution: {integrity: sha1-tuMXF/Isw3MwsIHOAFHtXeU68vY=} + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} jsonpath@1.3.0: - resolution: {integrity: sha1-YjGXlw+0M4RcaAJL+eK4ZPU3arI=} + resolution: {integrity: sha512-0kjkYHJBkAy50Z5QzArZ7udmvxrJzkpKYW27fiF//BrMY7TQibYLl+FYIXN2BiYmwMIVzSfD8aDRj6IzgBX2/w==} jsonwebtoken@9.0.2: - resolution: {integrity: sha1-Zf+R9KvvF4RpfUCVK7GZjFBMqvM=} + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} engines: {node: '>=12', npm: '>=6'} jstransformer@1.0.0: - resolution: {integrity: sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=} + resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} jsx-ast-utils-x@0.1.0: - resolution: {integrity: sha1-sJM9ZqaeCqGuI/dPuHsHnsKYZS8=} + resolution: {integrity: sha512-eQQBjBnsVtGacsG9uJNB8qOr3yA8rga4wAaGG1qRcBzSIvfhERLrWxMAM1hp5fcS6Abo8M4+bUBTekYR0qTPQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} jszip@3.10.1: - resolution: {integrity: sha1-NK7nDrGOofrsL1iSCKFX0f6wkcI=} + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} jwa@1.4.2: - resolution: {integrity: sha1-FgEaxttI3nsQJ3fleJeQFSDux7k=} + resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} jwa@2.0.1: - resolution: {integrity: sha1-v4F20a0M1y4PP1gzhZWhPhELyAQ=} + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} jws@3.2.3: - resolution: {integrity: sha1-WsBpC0YJAKJyZd4kUgUmhTwLjKE=} + resolution: {integrity: sha512-byiJ0FLRdLdSVSReO/U4E7RoEyOCKnEnEPMjq3HxWtvzLsV08/i5RQKsFVNkCldrCaPr2vDNAOMsfs8T/Hze7g==} jws@4.0.1: - resolution: {integrity: sha1-B+3Bvo+sIOZ3soPs4mFJi9OPBpA=} + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} katex@0.16.22: - resolution: {integrity: sha1-0rPWZGSx5taeZGOyiobO1aAsXM0=} + resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} hasBin: true katex@0.16.45: - resolution: {integrity: sha1-umDTnFR0a2uNOc4Of26s4HFDFJw=} + resolution: {integrity: sha512-pQpZbdBu7wCTmQUh7ufPmLr0pFoObnGUoL/yhtwJDgmmQpbkg/0HSVti25Fu4rmd1oCR6NGWe9vqTWuWv3GcNA==} hasBin: true keygrip@1.1.0: - resolution: {integrity: sha1-hxsWgdXhWcYqRFsMdLYV4JF+ciY=} + resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} engines: {node: '>= 0.6'} keytar@7.9.0: - resolution: {integrity: sha1-TGIlcI9RtQy/d8Wq6BchlkwpGMs=} + resolution: {integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==} keyv@4.5.4: - resolution: {integrity: sha1-qHmpnilFL5QkOfKkBeOvizHU3pM=} + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} khroma@2.1.0: - resolution: {integrity: sha1-RfLOlM4jGkN89bY8LohubrQru7E=} + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} kind-of@2.0.1: - resolution: {integrity: sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=} + resolution: {integrity: sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg==} engines: {node: '>=0.10.0'} kind-of@3.2.2: - resolution: {integrity: sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=} + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} engines: {node: '>=0.10.0'} kind-of@6.0.3: - resolution: {integrity: sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=} + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} kleur@3.0.3: - resolution: {integrity: sha1-p5yezIbuHOP6YgbRIWxQHxR/wH4=} + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} knip@6.24.0: - resolution: {integrity: sha1-h66MjDIs6sxjBWgyXcDsmMKuCUY=} + resolution: {integrity: sha512-PokLlgeEjLh1rAsB7ts+52wZ37HBr1nDhE6NNONwEaXdeZGCJOkP7ZlIAI2Gtu8xohquzTWy75bc/1diI9shQw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true koa-compose@4.1.0: - resolution: {integrity: sha1-UHMGuTcZAdtBEhyBLpI9DWfT6Hc=} + resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} koa-convert@2.0.0: - resolution: {integrity: sha1-hqDETYHUBVG64i/uZwmQRXPupPU=} + resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} engines: {node: '>= 10'} koa-etag@4.0.0: - resolution: {integrity: sha1-LCu3rmnKGsbO0Juijct4UjyBBBQ=} + resolution: {integrity: sha512-1cSdezCkBWlyuB9l6c/IFoe1ANCDdPBxkDkRiaIup40xpUub6U/wwRXoKBZw/O5BifX9OlqAjYnDyzM6+l+TAg==} koa-send@5.0.1: - resolution: {integrity: sha1-Odzuv6+zldDWC+r/ujpwtPVD/nk=} + resolution: {integrity: sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==} engines: {node: '>= 8'} koa-static@5.0.0: - resolution: {integrity: sha1-XpL8lrU3rVIZ9CUxnJW2R3J3aUM=} + resolution: {integrity: sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==} engines: {node: '>= 7.6.0'} koa@2.16.4: - resolution: {integrity: sha1-MDuZb1w/Kju3ccfbXkMD7gXyJl8=} + resolution: {integrity: sha512-3An0GCLDSR34tsCO4H8Tef8Pp2ngtaZDAZnsWJYelqXUK5wyiHvGItgK/xcSkmHLSTn1Jcho1mRQs2ehRzvKKw==} engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} koffi@2.11.0: - resolution: {integrity: sha1-mDalb3J7iWt5FqhOeVQhfJVIxiQ=} + resolution: {integrity: sha512-AJ6MHz9Z8OIftKu322jrKJFvy/rZTdCD4b7F457WrK71rxYV7O5PSdWsJDN0p3rY1BZaPeLHVwyt4i2Xyk8wJg==} launch-editor@2.14.1: - resolution: {integrity: sha1-9+DaP1iq6gP+oBB02EC19zntfdw=} + resolution: {integrity: sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==} layout-base@1.0.2: - resolution: {integrity: sha1-EpHilog8Miqd1MXdggY3IbU+JuI=} + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} layout-base@2.0.1: - resolution: {integrity: sha1-0DN5E1hskPnCwHUpIGn1wtpd0oU=} + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} lazy-cache@0.2.7: - resolution: {integrity: sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=} + resolution: {integrity: sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==} engines: {node: '>=0.10.0'} lazy-cache@1.0.4: - resolution: {integrity: sha1-odePw6UEdMuAhF07O24dpJpEbo4=} + resolution: {integrity: sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==} engines: {node: '>=0.10.0'} lazy-val@1.0.5: - resolution: {integrity: sha1-bPO59bwxzufuPjacCDK3WD3Nkj0=} + resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} lazystream@1.0.1: - resolution: {integrity: sha1-SUyDEGLx+UCCUexE2xy6KSQqJjg=} + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} leac@0.6.0: - resolution: {integrity: sha1-3PE244LmZr0kdfRKEJYGG3DcCRI=} + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} less@4.3.0: - resolution: {integrity: sha1-7wz8JgqcqAee2NDjUSvaihLILyo=} + resolution: {integrity: sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==} engines: {node: '>=14'} hasBin: true leven@3.1.0: - resolution: {integrity: sha1-d4kd6DQGTMy6gq54QrtrFKE+1/I=} + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} levn@0.4.1: - resolution: {integrity: sha1-rkViwAdHO5MqYgDUAyaN0v/8at4=} + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} lib0@0.2.108: - resolution: {integrity: sha1-6OEH1oD0T1+Hm78/gpXMKuMVkn8=} + resolution: {integrity: sha512-+3eK/B0SqYoZiQu9fNk4VEc6EX8cb0Li96tPGKgugzoGj/OdRdREtuTLvUW+mtinoB2mFiJjSqOJBIaMkAGhxQ==} engines: {node: '>=16'} hasBin: true lib0@0.2.117: - resolution: {integrity: sha1-bD+SZHXSiQSvBbWQcDy7vClHVxY=} + resolution: {integrity: sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw==} engines: {node: '>=16'} hasBin: true libbase64@1.3.0: - resolution: {integrity: sha1-BTMUdVoF0uXwi7/EjQKQ6TIvRAY=} + resolution: {integrity: sha512-GgOXd0Eo6phYgh0DJtjQ2tO8dc0IVINtZJeARPeiIJqge+HdsWSuaDTe8ztQ7j/cONByDZ3zeB325AHiv5O0dg==} libmime@5.3.7: - resolution: {integrity: sha1-ODW2RD2YLVzRrDLuJBrbvBGzRAY=} + resolution: {integrity: sha512-FlDb3Wtha8P01kTL3P9M+ZDNDWPKPmKHWaU/cG/lg5pfuAwdflVpZE+wm9m7pKmC5ww6s+zTxBKS1p6yl3KpSw==} libqp@2.1.1: - resolution: {integrity: sha1-8b52elj5ZvUAWXmXyrcs/B4Xq/o=} + resolution: {integrity: sha512-0Wd+GPz1O134cP62YU2GTOPNA7Qgl09XwCqM5zpBv87ERCXdfDtyKXvV7c9U22yWJh44QZqBocFnXN11K96qow==} lie@3.3.0: - resolution: {integrity: sha1-3Pgt7lRfRgdNryAMfBxaCOD0D2o=} + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} lighthouse-logger@1.4.2: - resolution: {integrity: sha1-rvkPnpfNgds2fHY0KS7iIHkoCqo=} + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} lilconfig@3.1.3: - resolution: {integrity: sha1-obz9Ylf5WFv1rhTO7rt7VZAl5MQ=} + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} lines-and-columns@1.2.4: - resolution: {integrity: sha1-7KKE910pZQeTCdwK2SVauy68FjI=} + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} lines-and-columns@2.0.4: - resolution: {integrity: sha1-0AMYhVkF0mYNjAgi4/WkcVhV/EI=} + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} link-check@5.5.1: - resolution: {integrity: sha1-8XIJZYSn7UOok2qNWGmkOod75qA=} + resolution: {integrity: sha512-GrtE4Zp/FBduvElmad375NrPeMYnKwNt9rH/TDG/rbQbHL0QVC4S/cEPVKZ0CkhXlVuiK+/5flGpRxQzoLbjEA==} linkify-it@5.0.0: - resolution: {integrity: sha1-nvI4v6bccL2Of5VytS02mvVptCE=} + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} linkify-it@5.0.2: - resolution: {integrity: sha1-074KaTrz2p3ziD8eNGoOl0YajBk=} + resolution: {integrity: sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==} lit-element@4.2.2: - resolution: {integrity: sha1-90/L++qUXq5WFOziKmdPpSyjNls=} + resolution: {integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==} lit-html@3.3.2: - resolution: {integrity: sha1-TbEf2/mPyKDF6r2bHn0IjTuyAaI=} + resolution: {integrity: sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==} lit@3.3.2: - resolution: {integrity: sha1-2SMOu/I3v9PSCRvAtWxXakcKxNc=} + resolution: {integrity: sha512-NF9zbsP79l4ao2SNrH3NkfmFgN/hBYSQo90saIVI1o5GpjAdCPVstVzO1MrLOakHoEhYkrtRjPK6Ob521aoYWQ==} loader-runner@4.3.2: - resolution: {integrity: sha1-mRPToVlx+PY1kV5gH7XJ1JXZGOk=} + resolution: {integrity: sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==} engines: {node: '>=6.11.5'} locate-path@5.0.0: - resolution: {integrity: sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=} + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} locate-path@6.0.0: - resolution: {integrity: sha1-VTIeswn+u8WcSAHZMackUqaB0oY=} + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} locate-path@7.2.0: - resolution: {integrity: sha1-acsXeb2Qs1qx53Hh8viaICwqioo=} + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} lodash-es@4.18.1: - resolution: {integrity: sha1-uWLuuA2dmDqQC/NClh+3QYyhCx0=} + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} lodash.camelcase@4.3.0: - resolution: {integrity: sha1-soqmKIorn8ZRA1x3EfZathkDMaY=} + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} lodash.debounce@4.0.8: - resolution: {integrity: sha1-gteb/zCmfEAF/9XiUVMArZyk168=} + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} lodash.defaults@4.2.0: - resolution: {integrity: sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=} + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} lodash.difference@4.5.0: - resolution: {integrity: sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=} + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} lodash.escaperegexp@4.1.2: - resolution: {integrity: sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=} + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} lodash.flatten@4.4.0: - resolution: {integrity: sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=} + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} lodash.includes@4.3.0: - resolution: {integrity: sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=} + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} lodash.isboolean@3.0.3: - resolution: {integrity: sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=} + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} lodash.isequal@4.5.0: - resolution: {integrity: sha1-QVxEePK8wwEgwizhDtMib30+GOA=} + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. lodash.isinteger@4.0.4: - resolution: {integrity: sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=} + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} lodash.isnumber@3.0.3: - resolution: {integrity: sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=} + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} lodash.isplainobject@4.0.6: - resolution: {integrity: sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=} + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} lodash.isstring@4.0.1: - resolution: {integrity: sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=} + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} lodash.memoize@4.1.2: - resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=} + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} lodash.merge@4.6.2: - resolution: {integrity: sha1-VYqlO0O2YeGSWgr9+japoQhf5Xo=} + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} lodash.once@4.1.1: - resolution: {integrity: sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=} + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} lodash.throttle@4.1.1: - resolution: {integrity: sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=} + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} lodash.truncate@4.4.2: - resolution: {integrity: sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=} + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} lodash.union@4.6.0: - resolution: {integrity: sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=} + resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} lodash@4.18.1: - resolution: {integrity: sha1-/ytmwfYybVlRPeJAe/iBQ5gSdxw=} + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} log-symbols@4.1.0: - resolution: {integrity: sha1-P727lbRoOsn8eFER55LlWNSr1QM=} + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} log-symbols@6.0.0: - resolution: {integrity: sha1-u5Xl8FMiZRysMMD+tkBPnyqKlDk=} + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} log-update@4.0.0: - resolution: {integrity: sha1-WJ7NNSRx8qHAxXAodUOmTf0g4KE=} + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} engines: {node: '>=10'} long@4.0.0: - resolution: {integrity: sha1-mntxz7fTYaGU6lVSQckvdGjVvyg=} + resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} long@5.3.2: - resolution: {integrity: sha1-HYRGMJWZkmLX17f4v9SozFUWf4M=} + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} longest-streak@3.1.0: - resolution: {integrity: sha1-YvpnzZWHQqFXSvnzmGY2QQLZDNQ=} + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} loose-envify@1.4.0: - resolution: {integrity: sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=} + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true lower-case@2.0.2: - resolution: {integrity: sha1-b6I3xj29xKgsoP2ILkci3F5jTig=} + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} lowercase-keys@2.0.0: - resolution: {integrity: sha1-JgPni3tLAAbLyi+8yKMgJVislHk=} + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} lru-cache@10.4.3: - resolution: {integrity: sha1-QQ/IoXtw5ZgBPfJXwkRrfzOD8Rk=} + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@11.2.7: - resolution: {integrity: sha1-kSdAJhfzTNZ2e5ba7pjCjnRFjTU=} + resolution: {integrity: sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==} engines: {node: 20 || >=22} lru-cache@5.1.1: - resolution: {integrity: sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=} + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} lru-cache@6.0.0: - resolution: {integrity: sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ=} + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} lru-cache@7.18.3: - resolution: {integrity: sha1-95OJbg/Q6VSlnf3YLwdzgI32qok=} + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} lru-cache@8.0.5: - resolution: {integrity: sha1-mD/jN/PhdmZ/jlZ8/M58sGTqIU4=} + resolution: {integrity: sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==} engines: {node: '>=16.14'} madge@8.0.0: - resolution: {integrity: sha1-zKSrZvs4jntr9DwfeNyqs8rTD1A=} + resolution: {integrity: sha512-9sSsi3TBPhmkTCIpVQF0SPiChj1L7Rq9kU2KDG1o6v2XH9cCw086MopjVCD+vuoL5v8S77DTbVopTO8OUiQpIw==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -14682,410 +14700,410 @@ packages: optional: true magic-string@0.30.17: - resolution: {integrity: sha1-RQpElnPSRg5bvPupphkWoXFMdFM=} + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} magic-string@0.30.21: - resolution: {integrity: sha1-VnY+wJoPqAkd8nh5/ZTRkHjADZE=} + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} mailparser@3.9.6: - resolution: {integrity: sha1-cmSgWfM3tyGu82QiDSXkVNRUTcs=} + resolution: {integrity: sha512-EJYTDWMrOS1kddK1mTsRkrx2Ngh2nYsg54SRMWVVWGVEGbHH4tod8tqqU9hIRPgGQVboSjFubDn9cboSitbM3Q==} make-dir@2.1.0: - resolution: {integrity: sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=} + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} make-dir@4.0.0: - resolution: {integrity: sha1-w8IwencSd82WODBfkVwprnQbYU4=} + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} make-error@1.3.6: - resolution: {integrity: sha1-LrLjfqm2fEiR9oShOUeZr0hM96I=} + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} makeerror@1.0.12: - resolution: {integrity: sha1-Pl3SB5qC6BLpg8xmEMSiyw6qgBo=} + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} map-stream@0.1.0: - resolution: {integrity: sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=} + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} markdown-it-texmath@1.0.0: - resolution: {integrity: sha1-ZXA7I10HqPlrxYy/nUeK9XFU5fA=} + resolution: {integrity: sha512-4hhkiX8/gus+6e53PLCUmUrsa6ZWGgJW2XCW6O0ASvZUiezIK900ZicinTDtG3kAO2kon7oUA/ReWmpW2FByxg==} markdown-it@14.2.0: - resolution: {integrity: sha1-BtSNkDXnfVscha2zFUgvyCQCie8=} + resolution: {integrity: sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==} hasBin: true markdown-link-check@3.14.2: - resolution: {integrity: sha1-VoPfsDnYxlgRejlQ9PqsnGd04Pg=} + resolution: {integrity: sha512-DPJ+itd3D5fcfXD5s1i53lugH0Z/h80kkQxlYCBh8tFwEZGhyVgDcLl0rnKlWssAVDAmSmcbePpHpMEY+JcMMQ==} hasBin: true markdown-link-extractor@4.0.3: - resolution: {integrity: sha1-S8oCVcWD8Bex8M6FfVoa9Wr5msQ=} + resolution: {integrity: sha512-aEltJiQ4/oC0h6Jbw/uuATGSHZPkcH8DIunNH1A0e+GSFkvZ6BbBkdvBTVfIV8r6HapCU3yTd0eFdi3ZeM1eAQ==} markdown-table@2.0.0: - resolution: {integrity: sha1-GUqQztJtMf51PYuUNEMCFMARhls=} + resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==} markdown-table@3.0.4: - resolution: {integrity: sha1-/kTW1BD/nW8uoXl6P2CqTStjHCo=} + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} marked-terminal@7.3.0: - resolution: {integrity: sha1-eoYjZWXz3VMPRl/86cP4ti7ycOg=} + resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} engines: {node: '>=16.0.0'} peerDependencies: marked: '>=1 <16' marked@15.0.12: - resolution: {integrity: sha1-MHIsc0bhLQotAgermwxPAQLYbE4=} + resolution: {integrity: sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==} engines: {node: '>= 18'} hasBin: true marked@16.0.0: - resolution: {integrity: sha1-DEjnl4LyYiT4zjSHhkTYwyCtWZ8=} + resolution: {integrity: sha512-MUKMXDjsD/eptB7GPzxo4xcnLS6oo7/RHimUMHEDRhUooPwmN9BEpMl7AEOJv3bmso169wHI2wUF9VQgL7zfmA==} engines: {node: '>= 20'} hasBin: true marked@16.4.2: - resolution: {integrity: sha1-SVmmS+bEhvDbdGfq184ojeVCkKM=} + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} engines: {node: '>= 20'} hasBin: true marked@17.0.6: - resolution: {integrity: sha1-KpdYaictO+WIDxmOAgt0rSfPhro=} + resolution: {integrity: sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA==} engines: {node: '>= 20'} hasBin: true marky@1.3.0: - resolution: {integrity: sha1-QitjsLr2UCLwLtphojjszbvBSZc=} + resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} matcher@3.0.0: - resolution: {integrity: sha1-vZBg9MW3CqgEHMxvgDaHYJlPMMo=} + resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} engines: {node: '>=10'} math-intrinsics@1.1.0: - resolution: {integrity: sha1-oN10voHiqlwvJ+Zc4oNgXuTit/k=} + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} mdast-util-definitions@6.0.0: - resolution: {integrity: sha1-wbtwbl52u5P5oJ3XrxdAAq5prCQ=} + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} mdast-util-find-and-replace@3.0.2: - resolution: {integrity: sha1-cKMXTIlOFN9yKr9DvCUMuuRLEd8=} + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} mdast-util-from-markdown@2.0.2: - resolution: {integrity: sha1-SFA5DKfPF0E6m5oPvvzRvA60Fgo=} + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} mdast-util-gfm-autolink-literal@2.0.1: - resolution: {integrity: sha1-q9VXYwM3vTCm1aS9glLhwtwIddU=} + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} mdast-util-gfm-footnote@2.1.0: - resolution: {integrity: sha1-d3jp2co99yOMwr0/orG/amWxlAM=} + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha1-1E756O0oOsjBFlqw0N/QWMJ2TBY=} + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha1-ekNftiI6crCGKzOvvXErba6HjTg=} + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha1-5oCV0vikMD7yQJSrZC4QR7mRqTY=} + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} mdast-util-gfm@3.1.0: - resolution: {integrity: sha1-LN9juSwqMxQGsPsNtMB3wbAzF1E=} + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} mdast-util-math@3.0.0: - resolution: {integrity: sha1-jXndO6+KuKx4H2K4hTdoGQuaALA=} + resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} mdast-util-phrasing@4.1.0: - resolution: {integrity: sha1-fMCo3sMOrwS3salmGpKtszgqpuM=} + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} mdast-util-to-markdown@2.1.2: - resolution: {integrity: sha1-+RD/5giX8Eu0t+fuQ0SG92KINhs=} + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} mdast-util-to-string@4.0.0: - resolution: {integrity: sha1-elEhR1VWoE5+3etnsmSq550xKBQ=} + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} mdn-data@2.27.1: - resolution: {integrity: sha1-43ucUIgLdTZsTUCsY9m7ys22Hw4=} + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} mdurl@2.0.0: - resolution: {integrity: sha1-gGduwEMwJd0+F+6YPQ/o3loiN+A=} + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} media-typer@0.3.0: - resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} media-typer@1.1.0: - resolution: {integrity: sha1-ardLjy0zIPIGSyqHo455Mf86VWE=} + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} memfs@4.57.7: - resolution: {integrity: sha1-uti8FoDYtTSdpldbCVd5lW9ribA=} + resolution: {integrity: sha512-YZPphUQZSRGk6ddPlsNuMbztrLwsbUATFNZcqKscSbSJZ4g0+Y3vSZLJ/rfnGZaB1FFhC7SrywZXev6i8lnHgg==} peerDependencies: tslib: '2' memory-pager@1.5.0: - resolution: {integrity: sha1-2HUWVdItOEaCdByXLyw9bfo+ZrU=} + resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} merge-deep@3.0.3: - resolution: {integrity: sha1-Gisq6SbaiyrpOgrBXZDNGSJ2YAM=} + resolution: {integrity: sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==} engines: {node: '>=0.10.0'} merge-descriptors@1.0.3: - resolution: {integrity: sha1-2AMZpl88eTU1Hlz9rI+TGFBNvtU=} + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} merge-descriptors@2.0.0: - resolution: {integrity: sha1-6pIvZgY1oiSe5WXgRJ+VHmtgOAg=} + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} engines: {node: '>=18'} merge-stream@2.0.0: - resolution: {integrity: sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=} + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} merge2@1.4.1: - resolution: {integrity: sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=} + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} mermaid@11.15.0: - resolution: {integrity: sha1-tIXBPqXh508zKMS7AEJ72of6HB4=} + resolution: {integrity: sha512-pTMbcf3rWdtLiYGpmoTjHEpeY8seiy6sR+9nD7LOs8KfUbHE4lOUAprTRqRAcWSQ6MQpdX+YEsxShtGsINtPtw==} methods@1.1.2: - resolution: {integrity: sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=} + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} mic@2.1.2: - resolution: {integrity: sha1-8DQoOBeY/4iakEBaAxgVHbBUpO0=} + resolution: {integrity: sha512-rpl4tgdXX24sAzYwjRc5OZfGNAuhUIIjdd0cw8+Ubq7rp3iGhi40AdqcwurDWhEZADk60tPOxb3E2MpoeLeyxw==} micromark-core-commonmark@2.0.3: - resolution: {integrity: sha1-xpFjDkhQIaaM8o28Kyyifr9njNQ=} + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} micromark-extension-gfm-autolink-literal@2.1.0: - resolution: {integrity: sha1-Yoau6WhsRGLB41UqnVBf7dzuuTU=} + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} micromark-extension-gfm-footnote@2.1.0: - resolution: {integrity: sha1-TatW1OOYuYU/b+TvrE/JNh8+B1A=} + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} micromark-extension-gfm-strikethrough@2.1.0: - resolution: {integrity: sha1-hhBt+LOmkrX2qSKA04eb5r5G2SM=} + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} micromark-extension-gfm-table@2.1.1: - resolution: {integrity: sha1-+scLy/Uf5l9fRAMxGNOb6Km1lAs=} + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha1-8m2KeAe1mF+6E89hRltYyl/33Fc=} + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} micromark-extension-gfm-task-list-item@2.1.0: - resolution: {integrity: sha1-vMNNgFY5gpmQ7BdcPuoSu1t4Hyw=} + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} micromark-extension-gfm@3.0.0: - resolution: {integrity: sha1-PhM3arld16XP0OKVYN/pmWV7PFs=} + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} micromark-extension-math@3.1.0: - resolution: {integrity: sha1-xC7jsd1amgNYToPdjwjj3lECEsE=} + resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==} micromark-factory-destination@2.0.1: - resolution: {integrity: sha1-j++OD3CB8EdPvdkt61DJkKAmRjk=} + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} micromark-factory-label@2.0.1: - resolution: {integrity: sha1-UmfvqX8eUlTvx/ILRZo4yyEFi6E=} + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} micromark-factory-space@2.0.1: - resolution: {integrity: sha1-NtAhLpYrKzEh+FJfx6PHwCnzNPw=} + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} micromark-factory-title@2.0.1: - resolution: {integrity: sha1-I35KpdWKlYY/AQMtnumwkPHebpQ=} + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} micromark-factory-whitespace@2.0.1: - resolution: {integrity: sha1-BrJrKYPE0nv8xlezPiUTTUhosLE=} + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} micromark-util-character@2.1.1: - resolution: {integrity: sha1-L5h4MaQNTFEKwmHomFLE6XA8zaY=} + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} micromark-util-chunked@2.0.1: - resolution: {integrity: sha1-R/vNk0caP8yrhs/wOEf8NVLbEFE=} + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} micromark-util-classify-character@2.0.1: - resolution: {integrity: sha1-05n6+cRcoUyLS+mLHqSBvO2Htik=} + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} micromark-util-combine-extensions@2.0.1: - resolution: {integrity: sha1-Kg9JCrCL/1zC/V7sbdDKBPibMKk=} + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} micromark-util-decode-numeric-character-reference@2.0.2: - resolution: {integrity: sha1-/PFbZgl5OI5vEYzba/fXnXPSb+U=} + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} micromark-util-decode-string@2.0.1: - resolution: {integrity: sha1-bLmVguXScehO/KjmGoB5lNcWHrI=} + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} micromark-util-encode@2.0.1: - resolution: {integrity: sha1-DVHRwJVVHPqsNoMmljz1XxX1QLg=} + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} micromark-util-html-tag-name@2.0.1: - resolution: {integrity: sha1-5AQDCWSBmGtBwQZif5j3LU0QuCU=} + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} micromark-util-normalize-identifier@2.0.1: - resolution: {integrity: sha1-ww13sugyrPZSb4vxqke8nJQ4wW0=} + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} micromark-util-resolve-all@2.0.1: - resolution: {integrity: sha1-4aLWLN0jcjCirhGDkCexk4HjHos=} + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha1-q4l4m4GKWHUrc9a1UjhiG3+qj9c=} + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} micromark-util-subtokenize@2.1.0: - resolution: {integrity: sha1-2K3lug8xl6HPaimZ+7/mNXoaGe4=} + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} micromark-util-symbol@2.0.1: - resolution: {integrity: sha1-5dpJTo6ysHGg0I+zT2zv7GwKGbg=} + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} micromark-util-types@2.0.2: - resolution: {integrity: sha1-8AIl9fWg68MlT5bDa2YFxLOTkI4=} + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} micromark@4.0.2: - resolution: {integrity: sha1-kTlaPhiEoZjmIRbjPJxWjjmTb9s=} + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} micromatch@4.0.8: - resolution: {integrity: sha1-1m+hjzpHB2eJMgubGvMr2G2fogI=} + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} microsoft-cognitiveservices-speech-sdk@1.43.1: - resolution: {integrity: sha1-QWVkDgBMTUE9HrSiVeTeRrxad4s=} + resolution: {integrity: sha512-xO/rlhNSodzCNBtlA3edXDO0+8Q2tMG96nNsjE0JiyAR4Ul/qsZtM4iggTSi+Zax3JtYzrH7W+7349vdpJNaTA==} mime-db@1.52.0: - resolution: {integrity: sha1-u6vNwChZ9JhzAchW4zh85exDv3A=} + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} mime-db@1.54.0: - resolution: {integrity: sha1-zds+5PnGRTDf9kAjZmHULLajFPU=} + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} mime-types@2.1.35: - resolution: {integrity: sha1-OBqHG2KnNEUGYK497uRIE/cNlZo=} + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} mime-types@3.0.2: - resolution: {integrity: sha1-OQAtQYJXXVrwNv+hGBAPJSSy4qs=} + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} engines: {node: '>=18'} mime@1.6.0: - resolution: {integrity: sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=} + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true mime@2.6.0: - resolution: {integrity: sha1-oqaCqVzU0MsdYlfij4PafjWAA2c=} + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} engines: {node: '>=4.0.0'} hasBin: true mimic-fn@2.1.0: - resolution: {integrity: sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=} + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} mimic-function@5.0.1: - resolution: {integrity: sha1-rL4rM0n5m53qyn+3Dki4PpTmcHY=} + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} mimic-response@1.0.1: - resolution: {integrity: sha1-SSNTiHju9CBjy4o+OweYeBSHqxs=} + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} mimic-response@3.1.0: - resolution: {integrity: sha1-LR1Zr5wbEpgVrMwsRqAipc4fo8k=} + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} minimalistic-assert@1.0.1: - resolution: {integrity: sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=} + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} minimatch@10.2.4: - resolution: {integrity: sha1-Rls6zL0CGLgoH1MB4nztxpf5b94=} + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} minimatch@10.2.5: - resolution: {integrity: sha1-vUhoegvjjtKWE5kQVgD4MglYYdE=} + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} minimatch@3.1.5: - resolution: {integrity: sha1-WAyI+NVEXyvWqo88re+g3nn71p4=} + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} minimatch@5.1.9: - resolution: {integrity: sha1-EpPvFdsAmLOUVA6Pn3RPn9qN7ks=} + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} engines: {node: '>=10'} minimatch@8.0.7: - resolution: {integrity: sha1-lUdm4i2oij4KF62TtYwVydiled4=} + resolution: {integrity: sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==} engines: {node: '>=16 || 14 >=14.17'} minimatch@9.0.9: - resolution: {integrity: sha1-mwy5/LeAh/b9fqur4lEcTT1gV04=} + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} minimist@1.2.8: - resolution: {integrity: sha1-waRk52kzAuCCoHXO4MBXdBrEdyw=} + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} minipass@4.2.8: - resolution: {integrity: sha1-8AEPZDk+z8HRzLX1gryvRfSOGjo=} + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} engines: {node: '>=8'} minipass@7.1.2: - resolution: {integrity: sha1-k6libOXl5mvU24aEnnUV6SNApwc=} + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} minipass@7.1.3: - resolution: {integrity: sha1-eTibTrG7LQA6m7qH1JLyvTe9xls=} + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} minizlib@3.1.0: - resolution: {integrity: sha1-atdsOo8QInybUdHJrI4wsn9aJRw=} + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} mitt@3.0.1: - resolution: {integrity: sha1-6jbPDMMEA2Aa4HTI93twks2rNtE=} + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} mixin-object@2.0.1: - resolution: {integrity: sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=} + resolution: {integrity: sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==} engines: {node: '>=0.10.0'} mkdirp-classic@0.5.3: - resolution: {integrity: sha1-+hDJEVzG2IZb4iG6R+6b7XhgERM=} + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} mkdirp@0.5.6: - resolution: {integrity: sha1-fe8D0kMtyuS6HWEURcSDlgYiVfY=} + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true mkdirp@1.0.4: - resolution: {integrity: sha1-PrXtYmInVteaXw4qIh3+utdcL34=} + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true mkdirp@3.0.1: - resolution: {integrity: sha1-5E5MVgf7J5wWgkFxPMbg/qmty1A=} + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} hasBin: true mnemonist@0.39.8: - resolution: {integrity: sha1-kHjNg4YIGv2YbMo0tStdhOp6TTg=} + resolution: {integrity: sha512-vyWo2K3fjrUw8YeeZ1zF0fy6Mu59RHokURlld8ymdUPjMlD9EC9ov1/YPqTgqRvUN9nTr3Gqfz29LYAmu0PHPQ==} mocha@10.8.2: - resolution: {integrity: sha1-jYNC0BbtQRsSpCnrcxuCX5Ya+5Y=} + resolution: {integrity: sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==} engines: {node: '>= 14.0.0'} hasBin: true mocha@11.7.5: - resolution: {integrity: sha1-WPW7+l4CEc5+XuYSgQfO/CUVpic=} + resolution: {integrity: sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true module-definition@6.0.2: - resolution: {integrity: sha1-1yo2E9v2/nJH6+9k8R/dws0YuDs=} + resolution: {integrity: sha512-SvAU3lB0+Yjbq55yHY3wkRZBOh+fhU1SnIF3IFbTewv6mtAh7yUT8ACHAJ2mGIJ7tCes2QuCL/cl6m0JSZ/ArA==} engines: {node: '>=18'} hasBin: true module-lookup-amd@9.1.3: - resolution: {integrity: sha1-maPDow/wSYxpS6H25N4SY6ceVVE=} + resolution: {integrity: sha512-Jc3XmOaR9FdfMJSK8+vyLgsCkzm8z2L0NS6vrlRWi12DjS7MY7TMNE7E1yj8yXx837xtMDbKSSgcdXnFlJ2YLg==} engines: {node: '>=18'} hasBin: true mongodb-connection-string-url@3.0.0: - resolution: {integrity: sha1-tPh/kv2Fk/O5Nl9ZJRWgbTBKHpw=} + resolution: {integrity: sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==} mongodb@6.16.0: - resolution: {integrity: sha1-KnoZhuwVHZxzj8jOTPQyTD9yii8=} + resolution: {integrity: sha512-D1PNcdT0y4Grhou5Zi/qgipZOYeWrhLEpk33n3nm6LGtz61jvO88WlrWCK/bigMjpnOdAUKKQwsGIl0NtWMyYw==} engines: {node: '>=16.20.1'} peerDependencies: '@aws-sdk/credential-providers': ^3.188.0 @@ -15112,127 +15130,127 @@ packages: optional: true ms@2.0.0: - resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} ms@2.1.3: - resolution: {integrity: sha1-V0yBOM4dK1hh8LRFedut1gxmFbI=} + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} multicast-dns@7.2.5: - resolution: {integrity: sha1-d+tGBX9NetvRbZKQ+nKZ9vpkzO0=} + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} hasBin: true multimatch@5.0.0: - resolution: {integrity: sha1-kyuACWPOp6MaAzMo+h4MOhh02+Y=} + resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} engines: {node: '>=10'} mute-stream@0.0.8: - resolution: {integrity: sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=} + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} mute-stream@2.0.0: - resolution: {integrity: sha1-pURvwMUStxyDxE2QjVx7e0xJOys=} + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} mz@2.7.0: - resolution: {integrity: sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI=} + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} nanocolors@0.2.13: - resolution: {integrity: sha1-39HtC/qwXp/lQOtodFJfChaECZs=} + resolution: {integrity: sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==} nanoid@3.3.11: - resolution: {integrity: sha1-T08RLO++MDIC8hmYOBKJNiZtGFs=} + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true nanoid@3.3.15: - resolution: {integrity: sha1-NsSQ+tjG6GyCTJQN/d6Zm2ntQxY=} + resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true nanoid@5.1.5: - resolution: {integrity: sha1-91l/nZBU602pVIzdU8pw8XkOh94=} + resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==} engines: {node: ^18 || >=20} hasBin: true napi-build-utils@2.0.0: - resolution: {integrity: sha1-E8IsAYf8/MzhRhhEE2NypH3cAn4=} + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} natural-compare@1.4.0: - resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} natural-orderby@3.0.2: - resolution: {integrity: sha1-G4dNaF+9aL6rLG59FPKY4D1jHsM=} + resolution: {integrity: sha512-x7ZdOwBxZCEm9MM7+eQCjkrNLrW3rkBKNHVr78zbtqnMGVNlnDi6C/eUEYgxHNrcbu0ymvjzcwIL/6H1iHri9g==} engines: {node: '>=18'} needle@3.3.1: - resolution: {integrity: sha1-Y/da7FgMLnfiCfPzJOLN89Kb0Ek=} + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} engines: {node: '>= 4.4.x'} hasBin: true needle@3.5.0: - resolution: {integrity: sha1-qiAjZCy0GxGhG6u3M/2PqVKRkRI=} + resolution: {integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==} engines: {node: '>= 4.4.x'} hasBin: true negotiator@0.6.3: - resolution: {integrity: sha1-WOMjpy/twNb5zU0x/kn1FHlZDM0=} + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} negotiator@0.6.4: - resolution: {integrity: sha1-d3lI4kUmUcVwtxLdAcI+JicT//c=} + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} engines: {node: '>= 0.6'} negotiator@1.0.0: - resolution: {integrity: sha1-tskbtHFy1p+Tz9fDV7u1KQGbX2o=} + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} neo-async@2.6.2: - resolution: {integrity: sha1-tKr7k+OustgXTKU88WOrfXMIMF8=} + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} netmask@2.0.2: - resolution: {integrity: sha1-iwGgdkQGXVNjg4NYI7xSAE66xec=} + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} nice-try@1.0.5: - resolution: {integrity: sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=} + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} no-case@3.0.4: - resolution: {integrity: sha1-02H9XJgA9VhVGoNp/A3NRmK2Ek0=} + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} node-abi@3.77.0: - resolution: {integrity: sha1-OtkNXJ1FZjQg5apP9Y2/TjYlQZo=} + resolution: {integrity: sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ==} engines: {node: '>=10'} node-abi@4.33.0: - resolution: {integrity: sha1-zOm3vODL+h1dWptpCLxe7WmJacw=} + resolution: {integrity: sha512-vLBWCKb+7LWsX+TbfzWOkw0W81m377tyx3hOweBTjO43CXZnRGS1/JPWs20fr0PgZyDXk6ROYrylsEycK8raDA==} engines: {node: '>=22.12.0'} node-addon-api@1.7.2: - resolution: {integrity: sha1-PfMLlXILU8JOWZSLSVMrZiRE9U0=} + resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==} node-addon-api@4.3.0: - resolution: {integrity: sha1-UqGgtHUZPgko6Y4EJqDRJUeCt38=} + resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} node-addon-api@7.1.1: - resolution: {integrity: sha1-Grpmk7DyVSWKBJ1iEykykyKq1Vg=} + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} node-api-version@0.2.1: - resolution: {integrity: sha1-GbrVT21lYoy+5OYHoyXkSIrOLek=} + resolution: {integrity: sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==} node-domexception@1.0.0: - resolution: {integrity: sha1-aIjbRqH3HAt2s/dVUBa2P+ZHZuU=} + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} deprecated: Use your platform's native DOMException instead node-email-verifier@3.4.1: - resolution: {integrity: sha1-CNRFpHrzTjMzJEdIm8A2DOVfgBk=} + resolution: {integrity: sha512-69JMeWgEUrCji+dOLULirdSoosRxgAq2y+imfmHHBGvgTwyTKqvm65Ls3+W30DCIWMrYj5kKVb/DHTQDK7OVwQ==} engines: {node: '>=18.0.0'} node-emoji@2.2.0: - resolution: {integrity: sha1-HQAOPHbkYld4lb4bQ29KotZ2DrA=} + resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} engines: {node: '>=18'} node-fetch@2.7.0: - resolution: {integrity: sha1-0PD6bj4twdJ+/NitmdVQvalNGH0=} + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -15241,156 +15259,156 @@ packages: optional: true node-gyp@12.4.0: - resolution: {integrity: sha1-LQF7bqHKkpTbvudb5TNyj0klcCQ=} + resolution: {integrity: sha512-OMcPNvqTCFUnNaBlmdgq+lfNqY7gTiSmNRDjY3uAXRyudeKZEZxu3CLtjMQrx4zZxCX2b/mpNqTtwuCJgXhHkw==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true node-int64@0.4.0: - resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=} + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} node-pty@1.1.0: - resolution: {integrity: sha1-Fhk21FpHdRwuO2lMNl5zAXQXqIc=} + resolution: {integrity: sha512-20JqtutY6JPXTUnL0ij1uad7Qe1baT46lyolh2sSENDd4sTzKZ4nmAFkeAARDKwmlLjPx6XKRlwRUxwjOy+lUg==} node-releases@2.0.51: - resolution: {integrity: sha1-zcCEM1d/WzKtAWlEgXJuIu61Su8=} + resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==} engines: {node: '>=18'} node-rsa@1.1.1: - resolution: {integrity: sha1-79mtOCCXeC9QYVM5hJb3nkRkQ00=} + resolution: {integrity: sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==} node-sarif-builder@2.0.3: - resolution: {integrity: sha1-F5rlkM4CD5f55FA33BzehapDmOw=} + resolution: {integrity: sha512-Pzr3rol8fvhG/oJjIq2NTVB0vmdNNlz22FENhhPojYRZ4/ee08CfK4YuKmuL54V9MLhI1kpzxfOJ/63LzmZzDg==} engines: {node: '>=14'} node-sarif-builder@4.1.0: - resolution: {integrity: sha1-Jjhit2aUMI0NkVmIqHsyqgy2NDk=} + resolution: {integrity: sha512-IWqZF6u0EI/07HTBm+zZ+MgXgWl09dnSJRGaDCPBSlOqilDcx6pj3Mpb3HvPN8V2Gr+ISw7ZrMsL7STWs1F++w==} engines: {node: '>=20'} node-source-walk@7.0.2: - resolution: {integrity: sha1-sHUlnLQMMVhXBEe+e9Tez/0gdpQ=} + resolution: {integrity: sha512-71kFFjYaSshDTA8/a2HiTYPLdASWjLJxUyJxGE+ffxU+KhxSBtM9kiLUX+R2yooFdSFKMFpi4n3PFtDy6qXv8A==} engines: {node: '>=18'} nodemailer@8.0.4: - resolution: {integrity: sha1-tjYmWFaT83o5Ddrs3ic9qZHHYBA=} + resolution: {integrity: sha512-k+jf6N8PfQJ0Fe8ZhJlgqU5qJU44Lpvp2yvidH3vp1lPnVQMgi4yEEMPXg5eJS1gFIJTVq1NHBk7Ia9ARdSBdQ==} engines: {node: '>=6.0.0'} noms@0.0.0: - resolution: {integrity: sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=} + resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} nopt@9.0.0: - resolution: {integrity: sha1-a/8INrKWTSRQi2tBtamknE9KH5Y=} + resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true normalize-package-data@6.0.2: - resolution: {integrity: sha1-p7wiFn/iQCVBK8/wqWUet2iwNQY=} + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} normalize-path@3.0.0: - resolution: {integrity: sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=} + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} normalize-url@6.1.0: - resolution: {integrity: sha1-QNCIW1Nd7/4/MUe+yHfQX+TFZoo=} + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} npm-run-path@2.0.2: - resolution: {integrity: sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=} + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} engines: {node: '>=4'} npm-run-path@4.0.1: - resolution: {integrity: sha1-t+zR5e1T2o43pV4cImnguX7XSOo=} + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} nth-check@2.1.1: - resolution: {integrity: sha1-yeq0KO/842zWuSySS9sADvHx7R0=} + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} nwsapi@2.2.20: - resolution: {integrity: sha1-IuUyU8Yeew5+k870LIkRVLzKEe8=} + resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} object-assign@4.1.1: - resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} object-hash@3.0.0: - resolution: {integrity: sha1-c/l/dT57r/wOLMnW4HkHl0Ssguk=} + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} object-inspect@1.13.4: - resolution: {integrity: sha1-g3UmXiG8IND6WCwi4bE0hdbgAhM=} + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} object-keys@1.1.1: - resolution: {integrity: sha1-HEfyct8nfzsdrwYWd9nILiMixg4=} + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} object-treeify@4.0.1: - resolution: {integrity: sha1-+Rp97HldgnWIbn8b14QI9pdb6CU=} + resolution: {integrity: sha512-Y6tg5rHfsefSkfKujv2SwHulInROy/rCL5F4w0QOWxut8AnxYxf0YmNhTh95Zfyxpsudo66uqkux0ACFnyMSgQ==} engines: {node: '>= 16'} object.assign@4.1.7: - resolution: {integrity: sha1-jBTKGkJMalYbC7KiL2b1BJqUXT0=} + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} obliterator@2.0.5: - resolution: {integrity: sha1-Ax4BRTVLDBiEAzauUdQefW0sdqo=} + resolution: {integrity: sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==} obuf@1.1.2: - resolution: {integrity: sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=} + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} on-finished@2.4.1: - resolution: {integrity: sha1-WMjEQRblSEWtV/FKsQsDUzGErD8=} + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} on-headers@1.1.0: - resolution: {integrity: sha1-WdpPkcRfX5icbkvO3Fo7Cu1w/2U=} + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} engines: {node: '>= 0.8'} once@1.4.0: - resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} onetime@5.1.2: - resolution: {integrity: sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=} + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} onetime@7.0.0: - resolution: {integrity: sha1-nxbJLYye9RIOOs2d2ZV8zuzBq2A=} + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} only@0.0.2: - resolution: {integrity: sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=} + resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} onnxruntime-common@1.21.0: - resolution: {integrity: sha1-qB1BkdQYrLv/JUapVMwswj7rCfg=} + resolution: {integrity: sha512-Q632iLLrtCAVOTO65dh2+mNbQir/QNTVBG3h/QdZBpns7mZ0RYbLRBgGABPbpU9351AgYy7SJf1WaeVwMrBFPQ==} onnxruntime-common@1.22.0-dev.20250409-89f8206ba4: - resolution: {integrity: sha1-PUo5VjuT2z0EKLVSfLpYo8j4JsI=} + resolution: {integrity: sha512-vDJMkfCfb0b1A836rgHj+ORuZf4B4+cc2bASQtpeoJLueuFc5DuYwjIZUBrSvx/fO5IrLjLz+oTrB3pcGlhovQ==} onnxruntime-node@1.21.0: - resolution: {integrity: sha1-f09ZRVuvhRGB4gf8hAEoisLrENE=} + resolution: {integrity: sha512-NeaCX6WW2L8cRCSqy3bInlo5ojjQqu2fD3D+9W5qb5irwxhEyWKXeH2vZ8W9r6VxaMPUan+4/7NDwZMtouZxEw==} os: [win32, darwin, linux] onnxruntime-web@1.22.0-dev.20250409-89f8206ba4: - resolution: {integrity: sha1-0eOgTgPf7jkrQdQg71R7agNRsGs=} + resolution: {integrity: sha512-0uS76OPgH0hWCPrFKlL8kYVV7ckM7t/36HfbgoFw6Nd0CZVVbQC4PkrR8mBX8LtNUFZO25IQBqV2Hx2ho3FlbQ==} open@10.1.0: - resolution: {integrity: sha1-p3lebl1Rmr5ChtmTe7JLURIlmOE=} + resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} open@10.1.2: - resolution: {integrity: sha1-1d9AmEdVyanDyT34FWoSRn6IKSU=} + resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==} engines: {node: '>=18'} open@10.2.0: - resolution: {integrity: sha1-udhVvgB2IOgLb7BfrJgUH+Yttzw=} + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} open@8.4.2: - resolution: {integrity: sha1-W1/+Ko95Pc0qrXPlUMuHtZywhPk=} + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} openai@4.103.0: - resolution: {integrity: sha1-hO5S/sIvNIbcwQcziy6vVo70kks=} + resolution: {integrity: sha512-eWcz9kdurkGOFDtd5ySS5y251H2uBgq9+1a2lTBnjMMzlexJ40Am5t6Mu76SSE87VvitPa0dkIAp75F+dZVC0g==} hasBin: true peerDependencies: ws: ^8.18.0 @@ -15402,7 +15420,7 @@ packages: optional: true openai@6.41.0: - resolution: {integrity: sha1-snQ1RQFn9BWqOKj4maMaXKD7NH8=} + resolution: {integrity: sha512-IGWPopZq6Rjoynjfb3NSLf/z2MTw7UiOsm9TAjPGAjUESH7Uq41Trg4QWehBEn58p74i+m7uoRPV2vXcpPXhyA==} peerDependencies: ws: ^8.18.0 zod: ^3.25 || ^4.0 @@ -15413,461 +15431,461 @@ packages: optional: true optionator@0.9.4: - resolution: {integrity: sha1-fqHBpdkddk+yghOciP4R4YKjpzQ=} + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} ora@5.4.1: - resolution: {integrity: sha1-GyZ4Qmr0rEpQkAjl5KyemVnbnhg=} + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} ora@8.2.0: - resolution: {integrity: sha1-j7u3FRr+M7VA3RU/Fx/6i9OOmGE=} + resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} engines: {node: '>=18'} orderedmap@2.1.1: - resolution: {integrity: sha1-YUgSacRAMcRJkVSXv1pK0nPFEtI=} + resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} os-homedir@1.0.2: - resolution: {integrity: sha1-/7xJiDNuDoM94MFox+8VISGqf7M=} + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} engines: {node: '>=0.10.0'} own-keys@1.0.1: - resolution: {integrity: sha1-5ABpEKK/kTWFKJZ27r1vOQz1E1g=} + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} oxc-parser@0.137.0: - resolution: {integrity: sha1-uIocWuKz02e50KHBy0LKXIF0XsQ=} + resolution: {integrity: sha512-yFImD+WLElJpLKy8llG1qe4DCmMsL18peRp8XP1JKfig/gISbJkglnpDtX2aTmAn10kZF7164HbN2H8QPsXxGg==} engines: {node: ^20.19.0 || >=22.12.0} oxc-resolver@11.21.3: - resolution: {integrity: sha1-D94b2AHOHCyV7wEEBgc6p80P6Mw=} + resolution: {integrity: sha512-2Mx3fKQz7+xgrBONjsxOgCGtMHOn38/HxMzW1I5efwXB5a4lRN0Vp40gYUJFBWJslcrvwoofTrqoTnLbwTd3pA==} p-cancelable@2.1.1: - resolution: {integrity: sha1-qrf71BZYL6MqPbSYWcEiSHxe0s8=} + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} p-event@4.2.0: - resolution: {integrity: sha1-r0sEnIrNka6BCD69Hm9criBEwbU=} + resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} engines: {node: '>=8'} p-finally@1.0.0: - resolution: {integrity: sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=} + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} p-limit@2.3.0: - resolution: {integrity: sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=} + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} p-limit@3.1.0: - resolution: {integrity: sha1-4drMvnjQ0TiMoYxk/qOOPlfjcGs=} + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} p-limit@4.0.0: - resolution: {integrity: sha1-kUr2VE7TK/pUZwsGHK/L0EmEtkQ=} + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} p-locate@4.1.0: - resolution: {integrity: sha1-o0KLtwiLOmApL2aRkni3wpetTwc=} + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} p-locate@5.0.0: - resolution: {integrity: sha1-g8gxXGeFAF470CGDlBHJ4RDm2DQ=} + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} p-locate@6.0.0: - resolution: {integrity: sha1-PamknUk0uQEIncozAvpl3FoFwE8=} + 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: sha1-uy+Vpe2i7BaOySdOBqdHw+KQTSs=} + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} p-retry@6.2.1: - resolution: {integrity: sha1-gYKPjcYcbvWoAFhUkVcsyYknA68=} + resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} engines: {node: '>=16.17'} p-timeout@3.2.0: - resolution: {integrity: sha1-x+F6vJcdKnli74NiazXWNazyPf4=} + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} p-try@2.2.0: - resolution: {integrity: sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=} + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} pac-proxy-agent@7.2.0: - resolution: {integrity: sha1-nPrzP/Jdo29hR6IIRCMOySwG5d8=} + resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} engines: {node: '>= 14'} pac-resolver@7.0.1: - resolution: {integrity: sha1-VGdVWOo2i2TSEP2ckqZAtfO4q7Y=} + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} engines: {node: '>= 14'} package-json-from-dist@1.0.1: - resolution: {integrity: sha1-TxRxoBCCeob5TP2bByfjbSZ95QU=} + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} package-manager-detector@1.6.0: - resolution: {integrity: sha1-cNDPCqAsh37q9mxNmE7eC+kTBzQ=} + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} pako@1.0.11: - resolution: {integrity: sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=} + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} pandemonium@2.4.1: - resolution: {integrity: sha1-vVHKchhMauE1+QSaM8hgW/25V00=} + resolution: {integrity: sha512-wRqjisUyiUfXowgm7MFH2rwJzKIr20rca5FsHXCMNm1W5YPP1hCtrZfgmQ62kP7OZ7Xt+cR858aB28lu5NX55g==} param-case@3.0.4: - resolution: {integrity: sha1-fRf+SqEr3jTUp32RrPtiGcqtAcU=} + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} parent-module@1.0.1: - resolution: {integrity: sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=} + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} parse-json@5.2.0: - resolution: {integrity: sha1-x2/Gbe5UIxyWKyK8yKcs8vmXU80=} + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} parse-json@7.1.1: - resolution: {integrity: sha1-aPfm8O34jFSrFMAOtwC3U7FOISA=} + resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} engines: {node: '>=16'} parse-ms@2.1.0: - resolution: {integrity: sha1-NIVlp1PUOR+lJAKZVrFyy3dTCX0=} + resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} engines: {node: '>=6'} parse-node-version@1.0.1: - resolution: {integrity: sha1-4rXb7eAOf6m8NjYH9TMn6LBzGJs=} + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} parse-semver@1.1.1: - resolution: {integrity: sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=} + resolution: {integrity: sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==} parse5-htmlparser2-tree-adapter@6.0.1: - resolution: {integrity: sha1-LN+a2CMyEUA3DU2/XT6Sx8jdxuY=} + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} parse5-htmlparser2-tree-adapter@7.0.0: - resolution: {integrity: sha1-I8LMIzvPCbt766i4pp1GsIxiwvE=} + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} parse5-htmlparser2-tree-adapter@7.1.0: - resolution: {integrity: sha1-tagGVI7Yk6Q+JMy0L7t4BpMR6Bs=} + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} parse5-parser-stream@7.1.2: - resolution: {integrity: sha1-18IOrcN5aNJy4sAmYP/5LdJ+YOE=} + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} parse5@5.1.1: - resolution: {integrity: sha1-9o5OW6GFKsLK3AD0VV//bCq7YXg=} + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} parse5@6.0.1: - resolution: {integrity: sha1-4aHAhcVps9wIMhGE8Zo5zCf3wws=} + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} parse5@7.1.2: - resolution: {integrity: sha1-Bza+u/13eTgjJAojt/xeAQt/jjI=} + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} parse5@7.3.0: - resolution: {integrity: sha1-1+Ik+nI5nHoXUJn0X8KtAksF7AU=} + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} parse5@8.0.0: - resolution: {integrity: sha1-rOsmf2sV+bbmup41v91IH8IWexI=} + resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} parseley@0.12.1: - resolution: {integrity: sha1-Sv1WHVAhXr4lnj56hT5i9gBoOu8=} + resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} parseurl@1.3.3: - resolution: {integrity: sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=} + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} pascal-case@3.1.2: - resolution: {integrity: sha1-tI4O8rmOIF58Ha50fQsVCCN2YOs=} + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} patch-console@2.0.0: - resolution: {integrity: sha1-kCP0ZlhA5m9A6c53T5BKYxZ0M7s=} + resolution: {integrity: sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} path-data-parser@0.1.0: - resolution: {integrity: sha1-j1ulzHD8e+yz3O+uoI4mWaumC4w=} + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} path-exists@4.0.0: - resolution: {integrity: sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=} + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} path-exists@5.0.0: - resolution: {integrity: sha1-pqrZSJIAsh+rMeSc8JJ35RFvuec=} + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} path-expression-matcher@1.5.0: - resolution: {integrity: sha1-O5hUXciP/rtZPi2EWNCSnaknX0o=} + resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==} engines: {node: '>=14.0.0'} path-is-absolute@1.0.1: - resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} path-key@2.0.1: - resolution: {integrity: sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=} + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} engines: {node: '>=4'} path-key@3.1.1: - resolution: {integrity: sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=} + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} path-parse@1.0.7: - resolution: {integrity: sha1-+8EUtgykKzDZ2vWFjkvWi77bZzU=} + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} path-scurry@1.11.1: - resolution: {integrity: sha1-eWCmaIiFlKByCxKpEdGnQqufEdI=} + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} path-scurry@2.0.2: - resolution: {integrity: sha1-a+DQ7gKhDZ4N56mLrmXhgskGH4U=} + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} engines: {node: 18 || 20 || >=22} path-to-regexp@0.1.13: - resolution: {integrity: sha1-myLsFrw6uI0FoMfjaYaUIUAasX0=} + resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} path-to-regexp@8.4.2: - resolution: {integrity: sha1-eVxCDE98pFxbiHNm9iLuDJhSzM0=} + resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} path-type@4.0.0: - resolution: {integrity: sha1-hO0BwKe6OAr+CdkKjBgNzZ0DBDs=} + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} path-type@5.0.0: - resolution: {integrity: sha1-FLAe166n3fnHw/RhgdTQT5x4W7g=} + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} engines: {node: '>=12'} path-type@6.0.0: - resolution: {integrity: sha1-Lxu2eRqRzpkZTK7eXWxZIO2B61E=} + resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} engines: {node: '>=18'} pause-stream@0.0.11: - resolution: {integrity: sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=} + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} pbf@3.3.0: - resolution: {integrity: sha1-F5Dz2ZEYMzzH9JjegWAoo0bvNn8=} + resolution: {integrity: sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==} hasBin: true pdfjs-dist@5.3.31: - resolution: {integrity: sha1-DEKfO8Q8V+walfoodPL5MYnS1A4=} + resolution: {integrity: sha512-EhPdIjNX0fcdwYQO+e3BAAJPXt+XI29TZWC7COhIXs/K0JHcUt1Gdz1ITpebTwVMFiLsukdUZ3u0oTO7jij+VA==} engines: {node: '>=20.16.0 || >=22.3.0'} pe-library@0.4.1: - resolution: {integrity: sha1-4mm+A0DcsTqmlJ10PafWWMPi++o=} + resolution: {integrity: sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==} engines: {node: '>=12', npm: '>=6'} peberminta@0.9.0: - resolution: {integrity: sha1-jsm8DrhLfTaBJucc6QM1Adyio1I=} + resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} pend@1.2.0: - resolution: {integrity: sha1-elfrVQpng/kRUzH89GY9XI4AelA=} + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} picocolors@1.1.1: - resolution: {integrity: sha1-PTIa8+q5ObCDyPkpodEs2oHCa2s=} + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@2.3.2: - resolution: {integrity: sha1-WpQpFeJrNy3A8OZ1MUmhbmscVgE=} + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} picomatch@4.0.4: - resolution: {integrity: sha1-/W9eAKFDCG4HTf/kySS4+yk7BYk=} + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} picospinner@2.0.0: - resolution: {integrity: sha1-Kzz39JsOy9Kt4T4AX0XomGGjNNA=} + resolution: {integrity: sha512-bRX16jAx5sDlSAEKJ26hKloGU+w2DIkGw0qeUn87WkT8xircacGumNFHS0d/s51S9QbrtoEFwRSAvIvHNstfjA==} engines: {node: '>=18.0.0'} pify@4.0.1: - resolution: {integrity: sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=} + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} pirates@4.0.7: - resolution: {integrity: sha1-ZDtKGMQlfIplEEtz8wSc6aChXiI=} + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} pkce-challenge@5.0.1: - resolution: {integrity: sha1-O0RGhlsXsXRems4gFqMfSN32Iw0=} + resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} engines: {node: '>=16.20.0'} pkg-dir@4.2.0: - resolution: {integrity: sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=} + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} pkijs@3.4.0: - resolution: {integrity: sha1-2RZN7zD/bZe+LYiWbV42GSSZypw=} + resolution: {integrity: sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==} engines: {node: '>=16.0.0'} platform@1.3.6: - resolution: {integrity: sha1-SLTOmDFksgnC1FoQetsx9HOm56c=} + resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} play-sound@1.1.6: - resolution: {integrity: sha1-5i7Z2vhQarqVno/SZ8Sdm5edifo=} + resolution: {integrity: sha512-09eO4QiXNFXJffJaOW5P6x6F5RLihpLUkXttvUZeWml0fU6x6Zp7AjG9zaeMpgH2ZNvq4GR1ytB22ddYcqJIZA==} playwright-core@1.57.0: - resolution: {integrity: sha1-PcyahlryVvqfCvDWf8jdVO7K6/U=} + resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==} engines: {node: '>=18'} hasBin: true playwright@1.57.0: - resolution: {integrity: sha1-dNHaz/UEjcQL9GdpQLGQHhitD0Y=} + resolution: {integrity: sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==} engines: {node: '>=18'} hasBin: true plist@3.1.0: - resolution: {integrity: sha1-eXpRapPmL1veVeC5zJyWf4YIk8k=} + resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} engines: {node: '>=10.4.0'} plist@3.1.1: - resolution: {integrity: sha1-+mCZ4ePPbqGAJY6+Y3jqOHjCyEE=} + resolution: {integrity: sha512-ZIfcLJC+7E7FBFnDxm9MPmt7D+DidyQ26lewieO75AdhA2ayMtsJSES0iWzqJQbcVRSrTufQoy0DR94xHue0oA==} engines: {node: '>=10.4.0'} pluralize@2.0.0: - resolution: {integrity: sha1-crcmqm+sHt7uQiVsfY3CVrM1Z38=} + resolution: {integrity: sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==} pluralize@8.0.0: - resolution: {integrity: sha1-Gm+hajjRKhkB4DIPoBcFHFOc47E=} + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} points-on-curve@0.2.0: - resolution: {integrity: sha1-fbuYxDeRhZQ0KEdhMw+ok8uBtNE=} + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} points-on-path@0.2.1: - resolution: {integrity: sha1-VTICtUJMU77TcTWzGIWOrP+F3VI=} + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} portfinder@1.0.38: - resolution: {integrity: sha1-5Ps6LYiLINKXfaBQ5Iq14fV6GF4=} + resolution: {integrity: sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==} engines: {node: '>= 10.12'} possible-typed-array-names@1.1.0: - resolution: {integrity: sha1-k+NYK8DlQmWG2dB7ee5A/IQd5K4=} + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} postcss-values-parser@6.0.2: - resolution: {integrity: sha1-Y27cW4bJU4lvG7DXp6ZhXfAPt28=} + resolution: {integrity: sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==} engines: {node: '>=10'} peerDependencies: postcss: ^8.2.9 postcss@8.5.14: - resolution: {integrity: sha1-pmwteAj632nrtbhKA/i6/XbEkZw=} + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} postcss@8.5.16: - resolution: {integrity: sha1-EjDOC13zVMJMDqRfmc5faognnSg=} + resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==} engines: {node: ^10 || ^12 || >=14} postject@1.0.0-alpha.6: - resolution: {integrity: sha1-nQIjMicuLPzo3qTPzh7m3Rsu4TU=} + resolution: {integrity: sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==} engines: {node: '>=14.0.0'} hasBin: true prebuild-install@7.1.3: - resolution: {integrity: sha1-1jCrrSsUdEPyCiEpF76uaLgJLuw=} + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} engines: {node: '>=10'} deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. hasBin: true precinct@12.3.2: - resolution: {integrity: sha1-DWoV0umVF0SiT13mqyfJsmk2URk=} + resolution: {integrity: sha512-JbJevI1K80z8e/WIyDt/4vUN/4qcfBSKKqOjJA4mosPPPb7zODKRJQV7YN7apVWN3k58nZYm/vEsLgEGYmnxwg==} engines: {node: '>=18'} hasBin: true prelude-ls@1.2.1: - resolution: {integrity: sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=} + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} prettier@3.5.3: - resolution: {integrity: sha1-T8LODWV+egLmAlSfBTsjnLff4bU=} + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} engines: {node: '>=14'} hasBin: true pretty-error@4.0.0: - resolution: {integrity: sha1-kKcD9G3XI0rbRtD4SCPp0cuPENY=} + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} pretty-format@29.7.0: - resolution: {integrity: sha1-ykLHWDEPNlv6caC9oKgHFgt3aBI=} + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} pretty-ms@7.0.1: - resolution: {integrity: sha1-fZA+qrKB99jgPGb4Z+I53DL7c+g=} + resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} engines: {node: '>=10'} priorityqueuejs@2.0.0: - resolution: {integrity: sha1-lgZAQO3YR+6d0wE9jhYpc5mmvU8=} + resolution: {integrity: sha512-19BMarhgpq3x4ccvVi8k2QpJZcymo/iFUcrhPd4V96kYGovOdTsWwy7fxChYi4QY+m2EnGBWSX9Buakz+tWNQQ==} prismjs@1.30.0: - resolution: {integrity: sha1-2XCZadnU4WQD9vNIxjVTsZ8Jdak=} + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} proc-log@6.1.0: - resolution: {integrity: sha1-GFGUgqN9UZjiMRM6cBRKUPIfAhU=} + resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} engines: {node: ^20.17.0 || >=22.9.0} process-nextick-args@2.0.1: - resolution: {integrity: sha1-eCDZsWEgzFXKmud5JoCufbptf+I=} + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} process@0.11.10: - resolution: {integrity: sha1-czIwDoQBYb2j5podHZGn1LwW8YI=} + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} progress@2.0.3: - resolution: {integrity: sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=} + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} promise-retry@2.0.1: - resolution: {integrity: sha1-/3R6E2IKtXumiPX8Z4VUEMNw2iI=} + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} promise@7.3.1: - resolution: {integrity: sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=} + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} prompts@2.4.2: - resolution: {integrity: sha1-e1fnOzpIAprRDr1E90sBcipMsGk=} + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} proper-lockfile@4.1.2: - resolution: {integrity: sha1-yLneKvay8WAQZ/mOAaxmuqIjFB8=} + resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} prosemirror-changeset@2.3.1: - resolution: {integrity: sha1-7uMpnPq8egJ2lOmr3E6FUF6d1ec=} + resolution: {integrity: sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==} prosemirror-commands@1.7.1: - resolution: {integrity: sha1-0QH++FYYsb5T1bmeoXvuVgB4Gzg=} + resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==} prosemirror-dropcursor@1.8.2: - resolution: {integrity: sha1-LtMMR5YQnd6xz3KCNys4UFKLcig=} + resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==} prosemirror-gapcursor@1.3.2: - resolution: {integrity: sha1-X6M2uDeJxhmac0HJSTWH4kkhXLQ=} + resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==} prosemirror-history@1.4.1: - resolution: {integrity: sha1-zDcKRvtinoOjOUag4SYS6TSri5g=} + resolution: {integrity: sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==} prosemirror-inputrules@1.5.0: - resolution: {integrity: sha1-4iv68dbqT+JArUR8GErz1SDUPDc=} + resolution: {integrity: sha512-K0xJRCmt+uSw7xesnHmcn72yBGTbY45vm8gXI4LZXbx2Z0jwh5aF9xrGQgrVPu0WbyFVFF3E/o9VhJYz6SQWnA==} prosemirror-keymap@1.2.3: - resolution: {integrity: sha1-wParlfdcC4LJfkTraq8py/wVBHI=} + resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==} prosemirror-model@1.25.1: - resolution: {integrity: sha1-rq6fHsefyqdvb8YZgA2R+89yaHA=} + resolution: {integrity: sha512-AUvbm7qqmpZa5d9fPKMvH1Q5bqYQvAZWOGRvxsB6iFLyycvC9MwNemNVjHVrWgjaoxAfY8XVg7DbvQ/qxvI9Eg==} prosemirror-safari-ime-span@1.0.2: - resolution: {integrity: sha1-IMncsz39aLLlneiSO2UG+dwHw1Y=} + resolution: {integrity: sha512-QJqD8s1zE/CuK56kDsUhndh5hiHh/gFnAuPOA9ytva2s85/ZEt2tNWeALTJN48DtWghSKOmiBsvVn2OlnJ5H2w==} prosemirror-schema-list@1.5.1: - resolution: {integrity: sha1-WGnI90nodFw5RUi7EYILD+seMvU=} + resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==} prosemirror-state@1.4.3: - resolution: {integrity: sha1-lK7PP/1U7DfoeqcXnRNQjaGBoIA=} + resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==} prosemirror-tables@1.7.1: - resolution: {integrity: sha1-3yUH8oXGx1Ywl7SQTLfEueDNcks=} + resolution: {integrity: sha512-eRQ97Bf+i9Eby99QbyAiyov43iOKgWa7QCGly+lrDt7efZ1v8NWolhXiB43hSDGIXT1UXgbs4KJN3a06FGpr1Q==} prosemirror-transform@1.10.4: - resolution: {integrity: sha1-VkGerBT59WYSyAauRvkjhkjz8C4=} + resolution: {integrity: sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==} prosemirror-view@1.40.0: - resolution: {integrity: sha1-IS5iegxPAZismCOhIy4AmcmpKGU=} + resolution: {integrity: sha512-2G3svX0Cr1sJjkD/DYWSe3cfV5VPVTBOxI9XQEGWJDFEpsZb/gh4MV29ctv+OJx2RFX4BLt09i+6zaGM/ldkCw==} prosemirror-virtual-cursor@0.4.2: - resolution: {integrity: sha1-t5gloF2cmseLLdaQwtnrZ0UPtC0=} + resolution: {integrity: sha512-pUMKnIuOhhnMcgIJUjhIQTVJruBEGxfMBVQSrK0g2qhGPDm1i12KdsVaFw15dYk+29tZcxjMeR7P5VDKwmbwJg==} peerDependencies: prosemirror-model: ^1.0.0 prosemirror-state: ^1.0.0 @@ -15881,89 +15899,89 @@ packages: optional: true protobufjs@7.6.4: - resolution: {integrity: sha1-i7AAMAAm79Y+t5UdJuXbs49WWPI=} + resolution: {integrity: sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw==} engines: {node: '>=12.0.0'} protocol-buffers-schema@3.6.1: - resolution: {integrity: sha1-/ZpYpcTpY4W5ZICPPd1Y+e8Yw8g=} + resolution: {integrity: sha512-VG2K63Igkiv9p76tk1lilczEK1cT+kCjKtkdhw1dQZV3k3IXJbd3o6Ho8b9zJZaHSnT2hKe4I+ObmX9w6m5SmQ==} proxy-addr@2.0.7: - resolution: {integrity: sha1-8Z/mnOqzEe65S0LnDowgcPm6ECU=} + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} proxy-agent@6.5.0: - resolution: {integrity: sha1-nkmsuo5O4jSqy1Ofie2cI9AvIy0=} + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} engines: {node: '>= 14'} proxy-from-env@1.1.0: - resolution: {integrity: sha1-4QLxbKNVQkhldV0sno6k8k1Yw+I=} + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} prr@1.0.1: - resolution: {integrity: sha1-0/wRS6BplaRexok/SEzrHXj19HY=} + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} psl@1.15.0: - resolution: {integrity: sha1-vazjGJbx2XzsannoIkiYzpPZdMY=} + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} pug-attrs@3.0.0: - resolution: {integrity: sha1-sQRR4DSBZeMfrRzCPr3dncc0fEE=} + resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} pug-code-gen@3.0.4: - resolution: {integrity: sha1-KoLNMX9Jg9m2G1EDXeNOT5ZNeI0=} + resolution: {integrity: sha512-6okWYIKdasTyXICyEtvobmTZAVX57JkzgzIi4iRJlin8kmhG+Xry2dsus+Mun/nGCn6F2U49haHI5mkELXB14g==} pug-error@2.1.0: - resolution: {integrity: sha1-F+o3tYe2RD1LjxSDdOwntUtAblU=} + resolution: {integrity: sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==} pug-filters@4.0.0: - resolution: {integrity: sha1-0+Sa9bqEcum3pm2YDnB86dLMm14=} + resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} pug-lexer@5.0.1: - resolution: {integrity: sha1-rkRijFvvmxkLZlaDsojKkCS4sNU=} + resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} pug-linker@4.0.0: - resolution: {integrity: sha1-EsvAWU/Fo+Brn8Web5PBRpYqdwg=} + resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} pug-load@3.0.0: - resolution: {integrity: sha1-n9nNpSICsIrbEdJWgfufNL1BtmI=} + resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} pug-parser@6.0.0: - resolution: {integrity: sha1-qP3ANYY6lbLB3F6/Ts+AtOdqEmA=} + resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} pug-runtime@3.0.1: - resolution: {integrity: sha1-9jaXYgRyPzWoxfb61qzaKhkbg9c=} + resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} pug-strip-comments@2.0.0: - resolution: {integrity: sha1-+UsH/WtJVSMzD0kKf1VLT/h2MD4=} + resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} pug-walk@2.0.0: - resolution: {integrity: sha1-QXqrwpIyu0SZtbUGmistKiTV9f4=} + resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} pug@3.0.4: - resolution: {integrity: sha1-kEOujdhfyL61vs8J3Y5LdUuUsp8=} + resolution: {integrity: sha512-kFfq5mMzrS7+wrl5pLJzZEzemx34OQ0w4SARfhy/3yxTlhbstsudDwJzhf1hP02yHzbjoVMSXUj/Sz6RNfMyXg==} pump@3.0.2: - resolution: {integrity: sha1-g28+3WvC7lmSVskk/+DYhXPdy/g=} + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} pump@3.0.4: - resolution: {integrity: sha1-HzE0MFJ/qLkFYi69Iv4UROdXqzw=} + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} punycode.js@2.3.1: - resolution: {integrity: sha1-a1PlatdViCNOefSv+pCXLH3Yzbc=} + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} punycode@2.3.1: - resolution: {integrity: sha1-AnQi4vrsCyXhVJw+G9gwm5EztuU=} + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} puppeteer-core@23.11.1: - resolution: {integrity: sha1-PgZN4Rs8s6LfGoBg/y0FtBvlg9s=} + resolution: {integrity: sha512-3HZ2/7hdDKZvZQ7dhhITOUg4/wOrDRjyK2ZBllRB0ZCOi9u0cwq1ACHDjBB+nX+7+kltHjQvBRdeY7+W0T+7Gg==} engines: {node: '>=18'} puppeteer-core@24.37.5: - resolution: {integrity: sha1-uVf0JHF8E/8VdlvGZKm5eAjly7Q=} + resolution: {integrity: sha512-ybL7iE78YPN4T6J+sPLO7r0lSByp/0NN6PvfBEql219cOnttoTFzCWKiBOjstXSqi/OKpwae623DWAsL7cn2MQ==} engines: {node: '>=18'} puppeteer-extra-plugin-adblocker@2.13.6: - resolution: {integrity: sha1-mYKCQ1ebWe2B6LHaI9FqOg265Vc=} + resolution: {integrity: sha512-AftgnUZ1rg2RPe9RpX6rkYAxEohwp3iFeGIyjsAuTaIiw4VLZqOb1LSY8/S60vAxpeat60fbCajxoUetmLy4Dw==} engines: {node: '>=8'} peerDependencies: puppeteer: '*' @@ -15978,7 +15996,7 @@ packages: optional: true puppeteer-extra-plugin-stealth@2.11.2: - resolution: {integrity: sha1-vT9aF4HKyKmMmD0UgIZYWoT8yPE=} + resolution: {integrity: sha512-bUemM5XmTj9i2ZerBzsk2AN5is0wHMNE6K0hXBzBXOzP5m5G3Wl0RHhiqKeHToe/uIH8AoZiGhc1tCkLZQPKTQ==} engines: {node: '>=8'} peerDependencies: playwright-extra: '*' @@ -15990,7 +16008,7 @@ packages: optional: true puppeteer-extra-plugin-user-data-dir@2.4.1: - resolution: {integrity: sha1-TqnVbSBFVnKlT+CGMJoQKlEmQRw=} + resolution: {integrity: sha512-kH1GnCcqEDoBXO7epAse4TBPJh9tEpVEK/vkedKfjOVOhZAvLkHGc9swMs5ChrJbRnf8Hdpug6TJlEuimXNQ+g==} engines: {node: '>=8'} peerDependencies: playwright-extra: '*' @@ -16002,7 +16020,7 @@ packages: optional: true puppeteer-extra-plugin-user-preferences@2.4.1: - resolution: {integrity: sha1-247GPASmoQqPiZfhX9/98TJyFh0=} + resolution: {integrity: sha512-i1oAZxRbc1bk8MZufKCruCEC3CCafO9RKMkkodZltI4OqibLFXF3tj6HZ4LZ9C5vCXZjYcDWazgtY69mnmrQ9A==} engines: {node: '>=8'} peerDependencies: playwright-extra: '*' @@ -16014,7 +16032,7 @@ packages: optional: true puppeteer-extra-plugin@3.2.3: - resolution: {integrity: sha1-UMnwdJwAW7x7iyCLzQCp1GoVtYU=} + resolution: {integrity: sha512-6RNy0e6pH8vaS3akPIKGg28xcryKscczt4wIl0ePciZENGE2yoaQJNd17UiEbdmh5/6WW6dPcfRWT9lxBwCi2Q==} engines: {node: '>=9.11.2'} peerDependencies: playwright-extra: '*' @@ -16026,7 +16044,7 @@ packages: optional: true puppeteer-extra@3.3.6: - resolution: {integrity: sha1-/Bb/OWquUmZIQtqaVX6o+lHqqLc=} + resolution: {integrity: sha512-rsLBE/6mMxAjlLd06LuGacrukP2bqbzKCLzV1vrhHFavqQE/taQ2UXv3H5P0Ls7nsrASa+6x3bDbXHpqMwq+7A==} engines: {node: '>=8'} peerDependencies: '@types/puppeteer': '*' @@ -16041,967 +16059,967 @@ packages: optional: true puppeteer@24.37.5: - resolution: {integrity: sha1-xhkyzbK8U9GJcGcb4Y1UchbSlfA=} + resolution: {integrity: sha512-3PAOIQLceyEmn1Fi76GkGO2EVxztv5OtdlB1m8hMUZL3f8KDHnlvXbvCXv+Ls7KzF1R0KdKBqLuT/Hhrok12hQ==} engines: {node: '>=18'} hasBin: true pure-rand@6.1.0: - resolution: {integrity: sha1-0XPPIyWCMZdsy9sFJHyXh5V2BPI=} + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} pvtsutils@1.3.6: - resolution: {integrity: sha1-7EbjTbdCK55P3FSQV4wYg2V9YAE=} + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} pvutils@1.1.5: - resolution: {integrity: sha1-hLDepKXWcCSaqYAFEYBO4LfCgJw=} + resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} engines: {node: '>=16.0.0'} qs@6.13.0: - resolution: {integrity: sha1-bKO9WEOffiRWVXmJl3h7DYilGQY=} + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} qs@6.14.2: - resolution: {integrity: sha1-tWNM+dmtmJjjH7o1BOhm6O+2eYw=} + resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} engines: {node: '>=0.6'} qs@6.15.3: - resolution: {integrity: sha1-doUhMqWO1cfA72fkRBubtdYGGzs=} + resolution: {integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==} engines: {node: '>=0.6'} querystringify@2.2.0: - resolution: {integrity: sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=} + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} queue-microtask@1.2.3: - resolution: {integrity: sha1-SSkii7xyTfrEPg77BYyve2z7YkM=} + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} quick-lru@5.1.1: - resolution: {integrity: sha1-NmST5rPkKjpoheLpnRj4D7eoyTI=} + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} quote-unquote@1.0.0: - resolution: {integrity: sha1-Z6mncUjv/q+BpNQoQEpxC6qsigs=} + resolution: {integrity: sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==} range-parser@1.2.1: - resolution: {integrity: sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=} + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} raw-body@2.5.2: - resolution: {integrity: sha1-mf69g7kOCJdQh+jx+UGaFJNmtoo=} + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} raw-body@2.5.3: - resolution: {integrity: sha1-EcZlDudwp94bSU8ZeSfeDJI4IuI=} + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} engines: {node: '>= 0.8'} raw-body@3.0.2: - resolution: {integrity: sha1-PjraWuVWj5CV2EN2/TpJuPsAClE=} + resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} rc-config-loader@4.1.3: - resolution: {integrity: sha1-E1KYa4otjZbW/QVKW7GaYMV2h2o=} + resolution: {integrity: sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==} rc@1.2.8: - resolution: {integrity: sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=} + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true react-is@18.2.0: - resolution: {integrity: sha1-GZQx7qqi4J+GQn77tPFHPttHYJs=} + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} react-reconciler@0.29.2: - resolution: {integrity: sha1-js+vymNUmk9PPkweBJ3VrZrDpU8=} + resolution: {integrity: sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg==} engines: {node: '>=0.10.0'} peerDependencies: react: ^18.3.1 react@18.3.1: - resolution: {integrity: sha1-SauJIAnFOTNiW9FrJTP8dUyrKJE=} + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} read-binary-file-arch@1.0.6: - resolution: {integrity: sha1-lZxGN9qpMigKm5EbGmdmp+RCiPw=} + resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==} hasBin: true read-pkg@8.1.0: - resolution: {integrity: sha1-bPVguR2Q32i85lhSfn4+7nX3xMc=} + resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==} engines: {node: '>=16'} read@1.0.7: - resolution: {integrity: sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=} + resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} engines: {node: '>=0.8'} readable-stream@1.0.34: - resolution: {integrity: sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=} + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} readable-stream@2.3.8: - resolution: {integrity: sha1-kRJegEK7obmIf0k0X2J3Anzovps=} + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} readable-stream@3.6.2: - resolution: {integrity: sha1-VqmzbqllwAxak+8x6xEaDxEFaWc=} + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} readable-stream@4.5.2: - resolution: {integrity: sha1-nn/ExFCZuu7ZNL/265e6bPJyngk=} + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} readdir-glob@1.1.3: - resolution: {integrity: sha1-w9gx9R9ee/pi+i/75LUIxkDwlYQ=} + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} readdirp@3.6.0: - resolution: {integrity: sha1-dKNwvYVxFuJFspzJc0DNQxoCpsc=} + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} readdirp@4.1.2: - resolution: {integrity: sha1-64WAFDX78qfuWPGeCSGwaPxplI0=} + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} readline@1.3.0: - resolution: {integrity: sha1-xYDXfvLPyHUrEySYBg3JeTp6wBw=} + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} rechoir@0.6.2: - resolution: {integrity: sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=} + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} rechoir@0.8.0: - resolution: {integrity: sha1-Sfhm4NMhRhQto62PDv81KzIV/yI=} + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} engines: {node: '>= 10.13.0'} refa@0.12.1: - resolution: {integrity: sha1-2sE8R4LcIra65szoGiuGOIjqOcY=} + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} reflect-metadata@0.2.2: - resolution: {integrity: sha1-QAyEW2y6h6IfLGXErrFY9PpNnFs=} + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} reflect.getprototypeof@1.0.10: - resolution: {integrity: sha1-xikhnnijMW2LYEx2XvaJlpZOe/k=} + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} regenerator-runtime@0.14.0: - resolution: {integrity: sha1-XhnWjrEtSG95fhWjxqkY987F60U=} + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} regexp-ast-analysis@0.7.1: - resolution: {integrity: sha1-wOJMsqkPbq3Uy6q6EpMX4p0pxII=} + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} regexp.escape@2.0.1: - resolution: {integrity: sha1-CeS+750gLb1zmGjzgYIj+XfPkdo=} + resolution: {integrity: sha512-JItRb4rmyTzmERBkAf6J87LjDPy/RscIwmaJQ3gsFlAzrmZbZU8LwBw5IydFZXW9hqpgbPlGbMhtpqtuAhMgtg==} engines: {node: '>= 0.4'} regexp.prototype.flags@1.5.4: - resolution: {integrity: sha1-GtbGLUSiWQB+VbOXDgD3Ru+8qhk=} + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} relateurl@0.2.7: - resolution: {integrity: sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=} + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} remark-gfm@4.0.1: - resolution: {integrity: sha1-MyJ7KnQ5dnDTV78FwJjq+FE/DWs=} + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} remark-inline-links@7.0.0: - resolution: {integrity: sha1-d/v/gGGrw9DsNBh6txZ4pxDfBeE=} + resolution: {integrity: sha512-4uj1pPM+F495ySZhTIB6ay2oSkTsKgmYaKk/q5HIdhX2fuyLEegpjWa0VdJRJ01sgOqAFo7MBKdDUejIYBMVMQ==} remark-math@6.0.0: - resolution: {integrity: sha1-Cs33RnXxwZX+pu//p4WC9+1/wNc=} + resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} remark-parse@11.0.0: - resolution: {integrity: sha1-qmB0P8s36/awaSBOtNowTkDbRaE=} + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} remark-stringify@11.0.0: - resolution: {integrity: sha1-TFsB3XEcJp3xqq4RdD634udjb9M=} + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} remark@15.0.1: - resolution: {integrity: sha1-rH51YyYFE7ZkJrxH+FDnqlhiw3w=} + resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} renderkid@3.0.0: - resolution: {integrity: sha1-X9gj5NaVHTc1jsyaWLHwaDa2Joo=} + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} repeat-string@1.6.1: - resolution: {integrity: sha1-jcrkcOHIirwtYA//Sndihtp15jc=} + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} require-directory@2.1.1: - resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} require-from-string@2.0.2: - resolution: {integrity: sha1-iaf92TgmEmcxjq/hT5wy5ZjDaQk=} + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} requirejs-config-file@4.0.0: - resolution: {integrity: sha1-QkTaXdH1mHQDjMEJHQeNYgq7brw=} + resolution: {integrity: sha512-jnIre8cbWOyvr8a5F2KuqBnY+SDA4NXr/hzEZJG79Mxm2WiFQz2dzhC8ibtPJS7zkmBEl1mxSwp5HhC1W4qpxw==} engines: {node: '>=10.13.0'} requirejs@2.3.8: - resolution: {integrity: sha1-vKBhS2GKshIkYll+RIeNt1WLu6M=} + resolution: {integrity: sha512-7/cTSLOdYkNBNJcDMWf+luFvMriVm7eYxp4BcFCsAX0wF421Vyce5SXP17c+Jd5otXKGNehIonFlyQXSowL6Mw==} engines: {node: '>=0.4.0'} hasBin: true requires-port@1.0.0: - resolution: {integrity: sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=} + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} resedit@1.7.2: - resolution: {integrity: sha1-sQQRcLmYEXEME/lJx9Ilhx3kzHg=} + resolution: {integrity: sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==} engines: {node: '>=12', npm: '>=6'} resolve-alpn@1.2.1: - resolution: {integrity: sha1-t629rDVGqq7CC0Xn2CZZJwcnJvk=} + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} resolve-cwd@3.0.0: - resolution: {integrity: sha1-DwB18bslRHZs9zumpuKt/ryxPy0=} + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} resolve-dependency-path@4.0.1: - resolution: {integrity: sha1-G51D5bYjhDAeJtBAufzmHuXbYL0=} + resolution: {integrity: sha512-YQftIIC4vzO9UMhO/sCgXukNyiwVRCVaxiWskCBy7Zpqkplm8kTAISZ8O1MoKW1ca6xzgLUBjZTcDgypXvXxiQ==} engines: {node: '>=18'} resolve-from@4.0.0: - resolution: {integrity: sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=} + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} resolve-from@5.0.0: - resolution: {integrity: sha1-w1IlhD3493bfIcV1V7wIfp39/Gk=} + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} resolve-path@1.4.0: - resolution: {integrity: sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=} + resolution: {integrity: sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==} engines: {node: '>= 0.8'} resolve-pkg-maps@1.0.0: - resolution: {integrity: sha1-YWs9wsVwVrVYjDHN9LPWTbEzcg8=} + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} resolve-protobuf-schema@2.1.0: - resolution: {integrity: sha1-nKmp5pzxkrva8QBuwZc5SKpKN1g=} + resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} resolve.exports@2.0.3: - resolution: {integrity: sha1-QZVebxtAE7dYb4c3SaY13qB+vj8=} + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} resolve@1.22.12: - resolution: {integrity: sha1-9bKmgIl8acI4oTzRaxVnH4tzVJ8=} + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} engines: {node: '>= 0.4'} hasBin: true resolve@1.22.8: - resolution: {integrity: sha1-tsh6nyqgbfq1Lj1wrIzeMh+lpI0=} + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true responselike@2.0.1: - resolution: {integrity: sha1-mgvI/cJS8/scymiwFlkQWboUIrw=} + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} restore-cursor@3.1.0: - resolution: {integrity: sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=} + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} restore-cursor@4.0.0: - resolution: {integrity: sha1-UZVgpDGJdQlt725gnUQQDtqkzLk=} + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} restore-cursor@5.1.0: - resolution: {integrity: sha1-B2bZVpnvrLFBUJk/VbrwlT6h6+c=} + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} retry@0.12.0: - resolution: {integrity: sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=} + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} retry@0.13.1: - resolution: {integrity: sha1-GFsVh6z2eRnWOzVzSeA1N7JIRlg=} + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} reusify@1.0.4: - resolution: {integrity: sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY=} + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rimraf@2.6.3: - resolution: {integrity: sha1-stEE/g2Psnz54KHNqCYt04M8bKs=} + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rimraf@3.0.2: - resolution: {integrity: sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=} + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rimraf@4.4.1: - resolution: {integrity: sha1-vTM2T2cCHFt56T1/T6BWjHwht1U=} + resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} engines: {node: '>=14'} hasBin: true rimraf@5.0.10: - resolution: {integrity: sha1-I7mEPT3JLbcfluGizpLjn9KoIhw=} + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true rimraf@6.0.1: - resolution: {integrity: sha1-/7itiETdYDMqsV9SvBBLw+1x6k4=} + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} engines: {node: 20 || >=22} hasBin: true roarr@2.15.4: - resolution: {integrity: sha1-9f55W3uDjM/jXcYI4Cgrnrouev0=} + resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} robust-predicates@3.0.2: - resolution: {integrity: sha1-1bKFKMSCTSD8SN8ZKNQdnvoa13E=} + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} rollup-plugin-copy@3.5.0: - resolution: {integrity: sha1-f/oqeoMD4UOHb6ZPte7ZAi0wTus=} + resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} engines: {node: '>=8.3'} rollup@4.59.0: - resolution: {integrity: sha1-z3TtrBfBSG9WLXKKTZI6aUq98G8=} + resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true rope-sequence@1.3.4: - resolution: {integrity: sha1-34VxGq7NMvHnVvduQ6QVFxI11CU=} + resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} roughjs@4.6.6: - resolution: {integrity: sha1-EFn0ml4MgN7lQaAFsgzDIrIiFYs=} + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} router@2.2.0: - resolution: {integrity: sha1-AZvmILcRyHZBFnzHm5kJDwCxRu8=} + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} run-applescript@7.0.0: - resolution: {integrity: sha1-5aVTwr/9Yg4WnSdsHNjxtkd4++s=} + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} engines: {node: '>=18'} run-parallel@1.2.0: - resolution: {integrity: sha1-ZtE2jae9+SHrnZW9GpIp5/IaQ+4=} + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} run-script-os@1.1.6: - resolution: {integrity: sha1-iwF3+xtUyZpnD5XH/cVPGLnHI0c=} + resolution: {integrity: sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==} hasBin: true rw@1.3.3: - resolution: {integrity: sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=} + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} rxjs@7.8.1: - resolution: {integrity: sha1-b289meqARCke/ZLnx/z1YsQFdUM=} + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} safe-array-concat@1.1.3: - resolution: {integrity: sha1-yeVOxPYDsLu45+UAel7nrs0VOMM=} + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} safe-buffer@5.1.2: - resolution: {integrity: sha1-mR7GnSluAxN0fVm9/St0XDX4go0=} + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} safe-buffer@5.2.1: - resolution: {integrity: sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=} + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} safe-push-apply@1.0.0: - resolution: {integrity: sha1-AYUOmBwWAtOYyFCB82Dk5tA9J/U=} + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} engines: {node: '>= 0.4'} safe-regex-test@1.1.0: - resolution: {integrity: sha1-f4fftnoxUHguqvGFg/9dFxGsEME=} + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} safer-buffer@2.1.2: - resolution: {integrity: sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=} + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} sanitize-filename@1.6.3: - resolution: {integrity: sha1-dV69dSBFkxl34wsgJdNA18kJA3g=} + resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} sanitize-filename@1.6.4: - resolution: {integrity: sha1-trOevtm9GhiYuFxcAwidp0WQ1vg=} + resolution: {integrity: sha512-9ZyI08PsvdQl2r/bBIGubpVdR3RR9sY6RDiWFPreA21C/EFlQhmgo20UZlNjZMMZNubusLhAQozkA0Od5J21Eg==} sass-lookup@6.1.2: - resolution: {integrity: sha1-7vzJDr6uRR0lKkqdjQkP7xpionk=} + resolution: {integrity: sha512-GjmndmKQBtlPil79RK72L7yc5kDXZPCQeH97bP8R8DcxtXQJO6vECExb3WP/m6+cxaV9h4ZxrSRvCkPG2v/VSw==} engines: {node: '>=18'} hasBin: true sax@1.3.0: - resolution: {integrity: sha1-pdvnfbO+BcnR7neF29PqneUVk9A=} + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} sax@1.6.0: - resolution: {integrity: sha1-2lljdikwe5fnxMso4ICnvDhWDVs=} + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} saxes@6.0.0: - resolution: {integrity: sha1-/ltKR2jfTxSiAbG6amXB89mYjMU=} + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} scheduler@0.23.2: - resolution: {integrity: sha1-QUumSjsoKJLpRM8hCOzAeNEVzcM=} + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} schema-utils@4.2.0: - resolution: {integrity: sha1-cNfJPhU6JzqAWAGILr07/yDYnIs=} + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} engines: {node: '>= 12.13.0'} schema-utils@4.3.3: - resolution: {integrity: sha1-WxhQkS+jHfkHFpY9RdkSH9/An0Y=} + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} scslre@0.3.0: - resolution: {integrity: sha1-wyEem/xVR/yGseq6o07RplcGAVU=} + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} engines: {node: ^14.0.0 || >=16.0.0} secretlint@9.3.2: - resolution: {integrity: sha1-INXib/mVkOs62BS423g2tawVVtU=} + resolution: {integrity: sha512-IuFrtWMGeVFSWpuhn1T6JC0mgfwD9rbFNZG1aWtpkBKOUCbcKZ+RoJcJjdJ0DXv8oa9vRg/+DZUl6Q6omZdPQQ==} engines: {node: ^14.13.1 || >=16.0.0} hasBin: true secure-json-parse@4.1.0: - resolution: {integrity: sha1-Txq0HGehNJfqG5Exu0GDoihlR3w=} + resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==} selderee@0.11.0: - resolution: {integrity: sha1-avDHmD4HOtPjV4f/4gzv2drw7Io=} + resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} select-hose@2.0.0: - resolution: {integrity: sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=} + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} selfsigned@5.5.0: - resolution: {integrity: sha1-TJq3x8nzXxj7apiCwlPrDmvWVXs=} + resolution: {integrity: sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==} engines: {node: '>=18'} semaphore@1.1.0: - resolution: {integrity: sha1-qq2LhrIP6OmzKxbcLuaCqM0mqKo=} + resolution: {integrity: sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==} engines: {node: '>=0.8.0'} semver-compare@1.0.0: - resolution: {integrity: sha1-De4hahyUGrN+nvsXiPavxf9VN/w=} + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} semver@5.7.2: - resolution: {integrity: sha1-SNVdtzfDKHzUg14X+hP+rOHEHvg=} + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true semver@6.3.1: - resolution: {integrity: sha1-VW0u+GiRRuRtzqS/3QlfNDTf/LQ=} + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true semver@7.5.4: - resolution: {integrity: sha1-SDmG7E7TjhxsSMNIlKkYLb/2im4=} + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true semver@7.7.1: - resolution: {integrity: sha1-q9UJjYKxjGyB9gdP8mR/0+ciDJ8=} + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} engines: {node: '>=10'} hasBin: true semver@7.7.2: - resolution: {integrity: sha1-Z9mf3NNc7CHm+Lh6f9UVoz+YK1g=} + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true semver@7.7.3: - resolution: {integrity: sha1-S19BQ9AHYzqNxnHNCm75FHuLuUY=} + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} hasBin: true semver@7.7.4: - resolution: {integrity: sha1-KEZONgYOmR+noR0CedLT87V6foo=} + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} hasBin: true semver@7.8.0: - resolution: {integrity: sha1-7QZhA5/LzaLOcfAfpq2++qdwQN8=} + resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} engines: {node: '>=10'} hasBin: true semver@7.8.4: - resolution: {integrity: sha1-xz7O664GFpNL6N/yin/XB1fI5pY=} + resolution: {integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==} engines: {node: '>=10'} hasBin: true send@0.19.0: - resolution: {integrity: sha1-u8WjiMjqbASJZwSdvqwOSj8J1/g=} + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} send@0.19.1: - resolution: {integrity: sha1-HCVjsu5P5RC4BrIexG81UAWjafk=} + resolution: {integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==} engines: {node: '>= 0.8.0'} send@0.19.2: - resolution: {integrity: sha1-WbwNobTqetQnNv1kKxxClOEU/yk=} + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} engines: {node: '>= 0.8.0'} send@1.2.1: - resolution: {integrity: sha1-nqt0O4dPNVD0CiaGe/KGrWDT8+0=} + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} engines: {node: '>= 18'} serialize-error@7.0.1: - resolution: {integrity: sha1-8TYLBEf2H/tIPsQVfHN/q313jhg=} + resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} serialize-javascript@7.0.5: - resolution: {integrity: sha1-x5jMBVL/uwiYGRSkKodW4znQ1bE=} + resolution: {integrity: sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==} engines: {node: '>=20.0.0'} serve-index@1.9.2: - resolution: {integrity: sha1-KYjjYSEG14peSEnd/1Us5709m8s=} + resolution: {integrity: sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==} engines: {node: '>= 0.8.0'} serve-static@1.16.2: - resolution: {integrity: sha1-tqU0PaR/a90mc4SL9FdUlB6AMpY=} + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} serve-static@1.16.3: - resolution: {integrity: sha1-qXt02VV3hYPzhipPC4QetNXXjPk=} + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} engines: {node: '>= 0.8.0'} serve-static@2.2.1: - resolution: {integrity: sha1-fxhqSk5fW2Y616QpT/G/N88OmKk=} + resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} engines: {node: '>= 18'} set-function-length@1.2.2: - resolution: {integrity: sha1-qscjFBmOrtl1z3eyw7a4gGleVEk=} + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} set-function-name@2.0.2: - resolution: {integrity: sha1-FqcFxaDcL15jjKltiozU4cK5CYU=} + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} set-proto@1.0.0: - resolution: {integrity: sha1-B2Dbz/MLLX6AH9bhmYPlbaM3Vl4=} + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} setimmediate@1.0.5: - resolution: {integrity: sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=} + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} setprototypeof@1.1.0: - resolution: {integrity: sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=} + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} setprototypeof@1.2.0: - resolution: {integrity: sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ=} + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} shallow-clone@0.1.2: - resolution: {integrity: sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=} + resolution: {integrity: sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw==} engines: {node: '>=0.10.0'} shallow-clone@3.0.1: - resolution: {integrity: sha1-jymBrZJTH1UDWwH7IwdppA4C76M=} + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} sharp@0.33.5: - resolution: {integrity: sha1-E+DkEwzDCdapSXWWcVJAsuwMWU4=} + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} sharp@0.34.5: - resolution: {integrity: sha1-tvFI5LjGHxeXveEanRz+u64sV7A=} + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@1.2.0: - resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=} + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} shebang-command@2.0.0: - resolution: {integrity: sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=} + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} shebang-regex@1.0.0: - resolution: {integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=} + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} shebang-regex@3.0.0: - resolution: {integrity: sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=} + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} shell-quote@1.8.4: - resolution: {integrity: sha1-Lt2aTc78lmSeLiyxL2N7Hx2SoZA=} + resolution: {integrity: sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==} engines: {node: '>= 0.4'} shelljs@0.9.2: - resolution: {integrity: sha1-qKxyRDRSDNeuJNUgceN6GKwrsYM=} + resolution: {integrity: sha512-S3I64fEiKgTZzKCC46zT/Ib9meqofLrQVbpSswtjFfAVDW+AZ54WTnAM/3/yENoxz/V1Cy6u3kiiEbQ4DNphvw==} engines: {node: '>=18'} hasBin: true shx@0.4.0: - resolution: {integrity: sha1-xupqzn53jaCrMtLqud71nXiOkzY=} + resolution: {integrity: sha512-Z0KixSIlGPpijKgcH6oCMCbltPImvaKy0sGH8AkLRXw1KyzpKtaCTizP2xen+hNDqVF4xxgvA0KXSb9o4Q6hnA==} engines: {node: '>=18'} hasBin: true side-channel-list@1.0.0: - resolution: {integrity: sha1-EMtZhCYxFdO3oOM2WR4pCoMK+K0=} + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} side-channel-list@1.0.1: - resolution: {integrity: sha1-wuC1oUpUCuvuO7xsP4ZmzJtQkSc=} + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} engines: {node: '>= 0.4'} side-channel-map@1.0.1: - resolution: {integrity: sha1-1rtrN5Asb+9RdOX1M/q0xzKib0I=} + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} engines: {node: '>= 0.4'} side-channel-weakmap@1.0.2: - resolution: {integrity: sha1-Ed2hnVNo5Azp7CvcH7DsvAeQ7Oo=} + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} engines: {node: '>= 0.4'} side-channel@1.1.0: - resolution: {integrity: sha1-w/z/nE2pMnhIczNeyXZfqU/2a8k=} + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} side-channel@1.1.1: - resolution: {integrity: sha1-6gLGLgXcS+pn1EQvD7ce4ZL44Ks=} + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} engines: {node: '>= 0.4'} signal-exit@3.0.7: - resolution: {integrity: sha1-qaF2f4r4QVURTqq9c/mSc8j1mtk=} + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} signal-exit@4.1.0: - resolution: {integrity: sha1-lSGIwcvVRgcOLdIND0HArgUwywQ=} + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} simple-concat@1.0.1: - resolution: {integrity: sha1-9Gl2CCujXCJj8cirXt/ibEHJVS8=} + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} simple-get@4.0.1: - resolution: {integrity: sha1-SjnbVJKHyXnTUhEvoD/Zn9a8NUM=} + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} simple-swizzle@0.2.2: - resolution: {integrity: sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=} + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} simple-update-notifier@2.0.0: - resolution: {integrity: sha1-1wuSvat9bZDf1zkxGVowtuPXzrs=} + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} engines: {node: '>=10'} sisteransi@1.0.5: - resolution: {integrity: sha1-E01oEpd1ZDfMBcoBNw06elcQde0=} + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} skin-tone@2.0.0: - resolution: {integrity: sha1-Tjkzq0XA1PT3gXRdZLn0wgjkEjc=} + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} slash@3.0.0: - resolution: {integrity: sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=} + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} slash@5.1.0: - resolution: {integrity: sha1-vjrd3N8JrDjuvo3Nx7GlenWwlc4=} + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} slice-ansi@3.0.0: - resolution: {integrity: sha1-Md3BCTCht+C2ewjJbC9Jt3p4l4c=} + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} slice-ansi@4.0.0: - resolution: {integrity: sha1-UA6N0P1VsFgVCGJVsxla3ypF/ms=} + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} slice-ansi@5.0.0: - resolution: {integrity: sha1-tzBjxXqpb5zYgWVLFSlNldKFxCo=} + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} slice-ansi@7.1.0: - resolution: {integrity: sha1-zWtGVeKYqNG96wQlCkMwlLNHuak=} + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} engines: {node: '>=18'} smart-buffer@4.2.0: - resolution: {integrity: sha1-bh1x+k8YwF99D/IW3RakgdDo2a4=} + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} smol-toml@1.7.0: - resolution: {integrity: sha1-7RslnOfgWQffGr51iXG9Cg7ywN0=} + resolution: {integrity: sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==} engines: {node: '>= 18'} sockjs@0.3.24: - resolution: {integrity: sha1-ybyJlfM6ERvqA5XsMKoyBr21zM4=} + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} socks-proxy-agent@8.0.5: - resolution: {integrity: sha1-uc205+mYUJ12WdaJznaXrCFkW+4=} + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} socks@2.8.7: - resolution: {integrity: sha1-4vsdmmA63XUFCiBn24w4GgtWaeo=} + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} sort-object-keys@1.1.3: - resolution: {integrity: sha1-v/gz/oXKsUezR0LkWGNFPB4ZC0U=} + resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} sort-package-json@1.57.0: - resolution: {integrity: sha1-6V+0Svjt4LthR+PzklgQLUuyP8Q=} + resolution: {integrity: sha512-FYsjYn2dHTRb41wqnv+uEqCUvBpK3jZcTp9rbz2qDTmel7Pmdtf+i2rLaaPMRZeSVM60V3Se31GyWFpmKs4Q5Q==} hasBin: true sort-package-json@3.2.1: - resolution: {integrity: sha1-iJ8730PO7/X6QninxTrlsVINKH4=} + resolution: {integrity: sha512-rTfRdb20vuoAn7LDlEtCqOkYfl2X+Qze6cLbNOzcDpbmKEhJI30tTN44d5shbKJnXsvz24QQhlCm81Bag7EOKg==} hasBin: true source-map-js@1.2.1: - resolution: {integrity: sha1-HOVlD93YerwJnto33P8CTCZnrkY=} + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} source-map-support@0.5.13: - resolution: {integrity: sha1-MbJKnC5zwt6FBmwP631Edn7VKTI=} + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} source-map-support@0.5.21: - resolution: {integrity: sha1-BP58f54e0tZiIzwoyys1ufY/bk8=} + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} source-map@0.6.1: - resolution: {integrity: sha1-dHIq8y6WFOnCh6jQu95IteLxomM=} + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} source-map@0.7.4: - resolution: {integrity: sha1-qbvnBcnYhG9OCP9nZazw8bCJhlY=} + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} source-map@0.7.6: - resolution: {integrity: sha1-o2WKuH5bZCnIofO6AIPUxhyj7wI=} + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} spark-md5@3.0.2: - resolution: {integrity: sha1-eVLEoweENHq87nMmjkc7nAFn4/w=} + resolution: {integrity: sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==} sparse-bitfield@3.0.3: - resolution: {integrity: sha1-/0rm5oZWBWuks+eSqzM004JzyhE=} + resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} spdx-correct@3.2.0: - resolution: {integrity: sha1-T1qwZo8AWeNPnADc4zF4ShLeTpw=} + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} spdx-exceptions@2.5.0: - resolution: {integrity: sha1-XWB9J/yAb2bXtkp2ZlD6iQ8E7WY=} + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} spdx-expression-parse@3.0.1: - resolution: {integrity: sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=} + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} spdx-license-ids@3.0.21: - resolution: {integrity: sha1-bW6YDJ3ytvyQU0OjstcCpiOVNsM=} + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} spdy-transport@3.0.0: - resolution: {integrity: sha1-ANSGOmQArXXfkzYaFghgXl3NzzE=} + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} spdy@4.0.2: - resolution: {integrity: sha1-t09GYgOj7aRSwCSSuR+56EonZ3s=} + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} split@0.3.3: - resolution: {integrity: sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=} + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} sprintf-js@1.0.3: - resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} sprintf-js@1.1.3: - resolution: {integrity: sha1-SRS5A6L4toXRf994pw6RfocuREo=} + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} stack-utils@2.0.6: - resolution: {integrity: sha1-qvB0gWnAL8M8gjKrzPkz9Uocw08=} + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} stat-mode@1.0.0: - resolution: {integrity: sha1-aLVcth6mOf9XE282shaikYANFGU=} + resolution: {integrity: sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==} engines: {node: '>= 6'} static-eval@2.1.1: - resolution: {integrity: sha1-caxqE6oyueFMW18GPDYhdrDVhLo=} + resolution: {integrity: sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA==} statuses@1.5.0: - resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} statuses@2.0.1: - resolution: {integrity: sha1-VcsADM8dSHKL0jxoWgY5mM8aG2M=} + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} statuses@2.0.2: - resolution: {integrity: sha1-j3XuzvdlteHPzcCA2llAntQk44I=} + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} stdin-discarder@0.2.2: - resolution: {integrity: sha1-OQA39ExK4aGuU1xf443Dq6jZl74=} + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} stop-iteration-iterator@1.1.0: - resolution: {integrity: sha1-9IH/cKVI9hJNAxLDqhTL+nqlQq0=} + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} stream-browserify@3.0.0: - resolution: {integrity: sha1-IrCihQzfZQPnMIXaH8e30MISLy8=} + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} stream-combiner@0.0.4: - resolution: {integrity: sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=} + resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} stream-to-array@2.3.0: - resolution: {integrity: sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=} + resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} streamx@2.22.0: - resolution: {integrity: sha1-zXteV8larvD/myrveQWvpi7G5Kc=} + resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==} string-compare@1.1.2: - resolution: {integrity: sha1-ByuOAKcTCLTkE3caGcpVtQ0L41g=} + resolution: {integrity: sha512-LKBVyWCmTPu6fg5Q8Jfdz7yFK9qaJMPVW+zJ1a23o8VuZa0UIgQ3oIsNaNUAXONRtFwD4dP5F/C/VuH+nDruig==} string-length@4.0.2: - resolution: {integrity: sha1-qKjce9XBqCubPIuH4SX2aHG25Xo=} + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} string-width@4.2.3: - resolution: {integrity: sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA=} + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} string-width@5.1.2: - resolution: {integrity: sha1-FPja7G2B5yIdKjV+Zoyrc728p5Q=} + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} string-width@7.2.0: - resolution: {integrity: sha1-tbuOIWXOJ11NQ0dt0nAK2Qkdttw=} + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} string.prototype.trim@1.2.10: - resolution: {integrity: sha1-QLLdXulMlZtNz7HWXOcukNpIDIE=} + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} string.prototype.trimend@1.0.9: - resolution: {integrity: sha1-YuJzEnLNKFBBs2WWBU6fZlabaUI=} + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} engines: {node: '>= 0.4'} string.prototype.trimstart@1.0.8: - resolution: {integrity: sha1-fug03ajHwX7/MRhHK7Nb/tqjTd4=} + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} string_decoder@0.10.31: - resolution: {integrity: sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=} + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} string_decoder@1.1.1: - resolution: {integrity: sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=} + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} string_decoder@1.3.0: - resolution: {integrity: sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=} + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} stringify-object@3.3.0: - resolution: {integrity: sha1-cDBlrvyhkwDTzoivT1s5VtdVZik=} + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} engines: {node: '>=4'} strip-ansi@6.0.1: - resolution: {integrity: sha1-nibGPTD1NEPpSJSVshBdN7Z6hdk=} + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} strip-ansi@7.1.0: - resolution: {integrity: sha1-1bZWjKaJ2FYTcLBwdoXSJDT6/0U=} + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} strip-ansi@7.1.2: - resolution: {integrity: sha1-Eyh1q95njH6o1pFTPy5+Irt0Tbo=} + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-bom@3.0.0: - resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} strip-bom@4.0.0: - resolution: {integrity: sha1-nDUFwdtFvO3KPZz3oW9cWqOQGHg=} + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} strip-eof@1.0.0: - resolution: {integrity: sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=} + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} strip-final-newline@2.0.0: - resolution: {integrity: sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=} + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} strip-json-comments@2.0.1: - resolution: {integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo=} + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} strip-json-comments@3.1.1: - resolution: {integrity: sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=} + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} strip-json-comments@5.0.3: - resolution: {integrity: sha1-tzBCSd1ALuZ/1RitqZOrNZNFi88=} + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} engines: {node: '>=14.16'} strnum@2.2.3: - resolution: {integrity: sha1-ARn84CdJoRuxJqTWhqxdvfbldYY=} + resolution: {integrity: sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==} structured-source@4.0.0: - resolution: {integrity: sha1-DJ5Z7kPe3Y/GCmNzH2DjWBAqSUg=} + resolution: {integrity: sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==} style-mod@4.1.2: - resolution: {integrity: sha1-yiOKGtR4ZSD3UVqFOdWmNpHXv2c=} + resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} stylis@4.4.0: - resolution: {integrity: sha1-xYRsk0X0v8Ub0MvXyjWgdE9IWl0=} + resolution: {integrity: sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==} stylus-lookup@6.1.2: - resolution: {integrity: sha1-W/3hcwW8dj31511FXpGe95Vf4Ms=} + resolution: {integrity: sha512-O+Q/SJ8s1X2aMLh4213fQ9X/bND9M3dhSsyTRe+O1OXPcewGLiYmAtKCrnP7FDvDBaXB2ZHPkCt3zi4cJXBlCQ==} engines: {node: '>=18'} hasBin: true sumchecker@3.0.1: - resolution: {integrity: sha1-Y3fplnlauwttNI6bPh37JDRajkI=} + resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} engines: {node: '>= 8.0'} supports-color@10.2.2: - resolution: {integrity: sha1-RmwpeMxc0AUtVCoLV2RhwrgC67Q=} + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} engines: {node: '>=18'} supports-color@5.5.0: - resolution: {integrity: sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=} + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} supports-color@7.2.0: - resolution: {integrity: sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=} + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} supports-color@8.1.1: - resolution: {integrity: sha1-zW/BfihQDP9WwbhsCn/UpUpzAFw=} + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} supports-hyperlinks@2.3.0: - resolution: {integrity: sha1-OUNUQ0fB/5CxXv+wP8FK5F7BBiQ=} + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} engines: {node: '>=8'} supports-hyperlinks@3.2.0: - resolution: {integrity: sha1-uOSFsXloHepJah56vfiYW9MUVGE=} + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} engines: {node: '>=14.18'} supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha1-btpL00SjyUrqN21MwxvHcxEDngk=} + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} symbol-tree@3.2.4: - resolution: {integrity: sha1-QwY30ki6d+B4iDlR+5qg7tfGP6I=} + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} table-layout@4.1.1: - resolution: {integrity: sha1-D3KWXeGlwMFBnJuiHK5Oc6L3OkI=} + resolution: {integrity: sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==} engines: {node: '>=12.17'} table@6.9.0: - resolution: {integrity: sha1-UAQK+mJkFBx1ZrO4HU2CxHqGaPU=} + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} tapable@2.2.1: - resolution: {integrity: sha1-GWenPvQGCoLxKrlq+G1S/bdu7KA=} + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} tapable@2.3.3: - resolution: {integrity: sha1-XafJmSxGA4IhJnmFqyhCGoh58WA=} + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} tar-fs@2.1.4: - resolution: {integrity: sha1-gAgk2/TvBt7Zr+pKyv5xxnx2uTA=} + resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} tar-fs@3.1.1: - resolution: {integrity: sha1-TxZOWftg8QPUcjYHMejGu0p/6e8=} + resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==} tar-stream@2.2.0: - resolution: {integrity: sha1-rK2EwoQTawYNw/qmRHSqmuvXcoc=} + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} tar-stream@3.1.7: - resolution: {integrity: sha1-JLP7XqutoZ/nM47W0m5ffEgueSs=} + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} tar@7.5.16: - resolution: {integrity: sha1-8R4GOv7UVU91gEnQgpCeN9a1PO0=} + resolution: {integrity: sha512-56adEpPMouktRlBLXiaYFFzZ/3+JXa8P9n7WbR+ibIjtviN55mEaOkiysCnPnWm+7kkui1Dn8J9l+g6zV8731w==} engines: {node: '>=18'} tar@7.5.19: - resolution: {integrity: sha1-2JFea3F/gDannYOcqUSBmLACsKc=} + resolution: {integrity: sha512-4LeEWl96twnS2Q7Bz4MGqgazLqO+hJN63GZxXoIqh1T3VweYD997gbU1ItNsQafqqXTXd5WFyFdReLtwvRBNiw==} engines: {node: '>=18'} temp-file@3.4.0: - resolution: {integrity: sha1-dm6iiRHGg5lsJI7xog7qBNUWUsc=} + resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==} temp@0.9.4: - resolution: {integrity: sha1-zSCoWAy2NjXQ5OnUvZidRChudiA=} + resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==} engines: {node: '>=6.0.0'} terminal-link@2.1.1: - resolution: {integrity: sha1-FKZKJ6s8Dfkz6lRvulXy0HjtyZQ=} + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} engines: {node: '>=8'} terser-webpack-plugin@5.6.1: - resolution: {integrity: sha1-R7xBvYuPq4ODti7HY7c5SCkJfns=} + resolution: {integrity: sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ==} engines: {node: '>= 10.13.0'} peerDependencies: '@minify-html/node': '*' @@ -17044,191 +17062,191 @@ packages: optional: true terser@5.27.0: - resolution: {integrity: sha1-cBCGidmrJf72HE6T6Ajp/Qkr8gw=} + resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} engines: {node: '>=10'} hasBin: true terser@5.49.0: - resolution: {integrity: sha1-MLNB/fcM/JhIaWUSWuZg/ahANnA=} + resolution: {integrity: sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==} engines: {node: '>=10'} hasBin: true test-exclude@6.0.0: - resolution: {integrity: sha1-BKhphmHYBepvopO2y55jrARO8V4=} + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} test-exclude@7.0.1: - resolution: {integrity: sha1-ILO6SQasIJlOJ1u8r9aNUQJkwqI=} + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} text-decoder@1.2.1: - resolution: {integrity: sha1-4XP1Eh2Xv6P/hyNCmtW6kuHq1n4=} + resolution: {integrity: sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==} text-table@0.2.0: - resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} textextensions@5.16.0: - resolution: {integrity: sha1-V91gwwUBm7oyHoSLH98Pmb+lnsE=} + resolution: {integrity: sha512-7D/r3s6uPZyU//MCYrX6I14nzauDwJ5CxazouuRGNuvSCihW87ufN6VLoROLCrHg6FblLuJrT6N2BVaPVzqElw==} engines: {node: '>=0.8'} thenify-all@1.6.0: - resolution: {integrity: sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=} + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} thenify@3.3.1: - resolution: {integrity: sha1-iTLmhqQGYDigFt2eLKRq3Zg4qV8=} + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} thingies@2.6.0: - resolution: {integrity: sha1-4JuYueb2yvinWeyoSB/qHel00rE=} + resolution: {integrity: sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg==} engines: {node: '>=10.18'} peerDependencies: tslib: ^2 through2@2.0.5: - resolution: {integrity: sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=} + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} through@2.3.8: - resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} thunky@1.1.0: - resolution: {integrity: sha1-Wrr3FKlAXbBQRzK7zNLO3Z75U30=} + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} tiny-async-pool@1.3.0: - resolution: {integrity: sha1-wBPhs2kJXnAF21WV+V5kbMpu+KU=} + resolution: {integrity: sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==} tiny-typed-emitter@2.1.0: - resolution: {integrity: sha1-s7An/dOJ/4GhUsjoR+4vW+n617U=} + resolution: {integrity: sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==} tinyexec@1.1.2: - resolution: {integrity: sha1-Ef7vIEtwbUZoykAT2ynzvWT1xNw=} + resolution: {integrity: sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==} engines: {node: '>=18'} tinyglobby@0.2.12: - resolution: {integrity: sha1-rJQaQuDFdzvQtdCPMt6C50oaYbU=} + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} engines: {node: '>=12.0.0'} tinyglobby@0.2.14: - resolution: {integrity: sha1-UoCwzz+XKwUOdK6IQGwKalj0B50=} + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} tinyglobby@0.2.15: - resolution: {integrity: sha1-4ijdHmOM6pk9L9tPzS1GAqeZUcI=} + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} tinyglobby@0.2.17: - resolution: {integrity: sha1-ViqabJ6ys7Ej05cZ+a9btE/NdjE=} + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} tlds@1.261.0: - resolution: {integrity: sha1-BV5BLpLwH4SpyKwFBNNHLWizxMk=} + resolution: {integrity: sha512-QXqwfEl9ddlGBaRFXIvNKK6OhipSiLXuRuLJX5DErz0o0Q0rYxulWLdFryTkV5PkdZct5iMInwYEGe/eR++1AA==} hasBin: true tldts-core@5.7.112: - resolution: {integrity: sha1-FoRZqnlJX11GQHpoWnqfDNyaJys=} + resolution: {integrity: sha512-mutrEUgG2sp0e/MIAnv9TbSLR0IPbvmAImpzqul5O/HJ2XM1/I1sajchQ/fbj0fPdA31IiuWde8EUhfwyldY1Q==} tldts-core@6.1.86: - resolution: {integrity: sha1-qT5u2dUFy1TFQs5D/rFMc5EyZdg=} + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} tldts-core@7.0.26: - resolution: {integrity: sha1-Bw8UvHpN6r8RXGUBvFwLrk2nTRc=} + resolution: {integrity: sha512-5WJ2SqFsv4G2Dwi7ZFVRnz6b2H1od39QME1lc2y5Ew3eWiZMAeqOAfWpRP9jHvhUl881406QtZTODvjttJs+ew==} tldts-experimental@5.7.112: - resolution: {integrity: sha1-akS+EoERYefa8uiZUFY7jn2pTtE=} + resolution: {integrity: sha512-Nq5qWN4OiLziAOOOEoSME7cZI4Hz8Srt+9q6cl8mZ5EAhCfmeE6l7K5XjuIKN+pySuGUvthE5aPiD185YU1/lg==} tldts-experimental@6.1.66: - resolution: {integrity: sha1-3uyv0mTuvmDel7F3H3j8VU1lpj4=} + resolution: {integrity: sha512-hAgdTxaOC1QP2WoB4HKH1R6Df7MDusIFtljZ9XB3bndsQPKeUxHyAuOmvXxzdF7MrgfJmMtfusavNlX/ateEow==} tldts@7.0.26: - resolution: {integrity: sha1-vyRy7YTlX6qv9cJCTAOmurabksU=} + resolution: {integrity: sha512-WiGwQjr0qYdNNG8KpMKlSvpxz652lqa3Rd+/hSaDcY4Uo6SKWZq2LAF+hsAhUewTtYhXlorBKgNF3Kk8hnjGoQ==} hasBin: true tmp-promise@3.0.3: - resolution: {integrity: sha1-YKGhzJjJiGdPy/0jtuM2e96sTOc=} + resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} tmp@0.2.7: - resolution: {integrity: sha1-JvTbEdFgHOgBLcuKeY7OHAapkFk=} + resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} engines: {node: '>=14.14'} tmpl@1.0.5: - resolution: {integrity: sha1-hoPguQK7nCDE9ybjwLafNlGMB8w=} + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} to-regex-range@5.0.1: - resolution: {integrity: sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=} + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} toidentifier@1.0.1: - resolution: {integrity: sha1-O+NDIaiKgg7RvYDfqjPkefu43TU=} + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} token-stream@1.0.0: - resolution: {integrity: sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=} + resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} tough-cookie@4.1.4: - resolution: {integrity: sha1-lF8UYbRbWox2ghwz6knDrBksGzY=} + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} tough-cookie@6.0.1: - resolution: {integrity: sha1-pJX4M4NmCe2YPBm8ZWOc+861THY=} + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} engines: {node: '>=16'} tr46@0.0.3: - resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=} + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} tr46@3.0.0: - resolution: {integrity: sha1-VVxOKXqVBhfo7t3vYzyH1NnWy/k=} + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} tr46@4.1.1: - resolution: {integrity: sha1-KBp1jcyCrrT+OMff5NEaOVqshGk=} + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} tr46@5.1.1: - resolution: {integrity: sha1-lq6GfN24/bZKScwwWajUKLzyOMo=} + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} tr46@6.0.0: - resolution: {integrity: sha1-9aGuVGoK2zKid6InjQ0X+i+Qk+Y=} + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} engines: {node: '>=20'} tree-dump@1.1.0: - resolution: {integrity: sha1-qykSkWncRgBEFPWp1KPG6J8T6KQ=} + resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' tree-kill@1.2.2: - resolution: {integrity: sha1-TKCakJLIi3OnzcXooBtQeweQoMw=} + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true trough@2.2.0: - resolution: {integrity: sha1-lKYL1r03XBUsHfkRpLEdWwJW9Q8=} + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} truncate-utf8-bytes@1.0.2: - resolution: {integrity: sha1-QFkjkJWS1W94pYGENLC3hInKXys=} + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} ts-algebra@2.0.0: - resolution: {integrity: sha1-Tj4JU4ePJlGPzn9rsRUGSmU4i3o=} + resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==} ts-api-utils@2.5.0: - resolution: {integrity: sha1-Ss1KFV4ic0mQpe0f6el/ETvLN8E=} + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' ts-dedent@2.2.0: - resolution: {integrity: sha1-OeS9KXzQNikq4jlOs0Er5j9WO7U=} + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} ts-deepmerge@7.0.2: - resolution: {integrity: sha1-YzOtzeg+TEI2bpqaf5VcdO6RNUc=} + resolution: {integrity: sha512-akcpDTPuez4xzULo5NwuoKwYRtjQJ9eoNfBACiBMaXwNAx7B1PKfe5wqUFJuW5uKzQ68YjDFwPaWHDG1KnFGsA==} engines: {node: '>=14.13.1'} ts-graphviz@2.1.6: - resolution: {integrity: sha1-AH/LQrToxV0mVD7OnoY5W9PDz9Y=} + resolution: {integrity: sha512-XyLVuhBVvdJTJr2FJJV2L1pc4MwSjMhcunRVgDE9k4wbb2ee7ORYnPewxMWUav12vxyfUM686MSGsqnVRIInuw==} engines: {node: '>=18'} ts-jest@29.3.3: - resolution: {integrity: sha1-wkwxqdEiaPiImePusFkSyrQsV0w=} + resolution: {integrity: sha512-y6jLm19SL4GroiBmHwFK4dSHUfDNmOrJbRfp6QmDIlI9p5tT5Q8ItccB4pTIslCIqOZuQnBwpTR0bQ5eUMYwkw==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -17252,7 +17270,7 @@ packages: optional: true ts-jest@29.4.9: - resolution: {integrity: sha1-R9wz0PXDa93O3Rav764oXgsEnS0=} + resolution: {integrity: sha512-LTb9496gYPMCqjeDLdPrKuXtncudeV1yRZnF4Wo5l3SFi0RYEnYRNgMrFIdg+FHvfzjCyQk1cLncWVqiSX+EvQ==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -17279,14 +17297,14 @@ packages: optional: true ts-loader@9.5.2: - resolution: {integrity: sha1-Hz1/S7cJtIeqomDo8ZswFjXQgCA=} + resolution: {integrity: sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==} engines: {node: '>=12.0.0'} peerDependencies: typescript: '*' webpack: ^5.0.0 ts-node@10.9.2: - resolution: {integrity: sha1-cPAhyeGFvM3Kgg4m3EE4BcEBxx8=} + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -17300,76 +17318,76 @@ packages: optional: true tsconfig-paths@4.2.0: - resolution: {integrity: sha1-73jhkDkTNEbSRL6sD9ahYy4tEHw=} + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} tslib@1.14.1: - resolution: {integrity: sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=} + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} tslib@2.6.2: - resolution: {integrity: sha1-cDrClCXns3zW/UVukkBNRtHz5K4=} + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} tslib@2.8.1: - resolution: {integrity: sha1-YS7+TtI11Wfoq6Xypfq3AoCt6D8=} + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} tsscmp@1.0.6: - resolution: {integrity: sha1-hbmVg6w1iexL/vgltQAKqRHWBes=} + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} tsx@4.21.0: - resolution: {integrity: sha1-Mqps8XSB4zb3Vhleb+BNrj5jCLE=} + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} engines: {node: '>=18.0.0'} hasBin: true tsyringe@4.10.0: - resolution: {integrity: sha1-0MlYFdWERkIUBgKF6qrdlKoDKZw=} + resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} engines: {node: '>= 6.0.0'} tunnel-agent@0.6.0: - resolution: {integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=} + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} tunnel@0.0.6: - resolution: {integrity: sha1-cvExSzSlsZLbASMk3yzFh8pH+Sw=} + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} type-check@0.4.0: - resolution: {integrity: sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE=} + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} type-detect@4.0.8: - resolution: {integrity: sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw=} + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} type-fest@0.13.1: - resolution: {integrity: sha1-AXLLW86AsL1ULqNI21DH4hg02TQ=} + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} type-fest@0.21.3: - resolution: {integrity: sha1-0mCiSwGYQ24TP6JqUkptZfo7Ljc=} + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} type-fest@2.19.0: - resolution: {integrity: sha1-iAaAFbszA2pZi5UuVekxGmD9Ops=} + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} type-fest@3.13.1: - resolution: {integrity: sha1-u3RMHwZ4vqdUOi0ewk6D5o6MhwY=} + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} type-fest@4.41.0: - resolution: {integrity: sha1-auHI5XMSc8K/H1itOcuuLJGkbFg=} + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} type-is@1.6.18: - resolution: {integrity: sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=} + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} type-is@2.0.1: - resolution: {integrity: sha1-ZPbPA/kvzkAVwrIkeT9r3UsGjJc=} + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} typechat@0.1.1: - resolution: {integrity: sha1-+qW7DRtkeF9FbOnD7HMCxXfZJQk=} + resolution: {integrity: sha512-Sw96vmkYqbAahqam7vCp8P/MjIGsR26Odz17UHpVGniYN5ir2B37nRRkoDuRpA5djwNQB+W5TB7w2xoF6kwbHQ==} engines: {node: '>=18'} peerDependencies: typescript: ^5.3.3 @@ -17381,245 +17399,245 @@ packages: optional: true typed-array-buffer@1.0.3: - resolution: {integrity: sha1-pyOVRQpIaewDP9VJNxtHrzou5TY=} + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} typed-array-byte-length@1.0.3: - resolution: {integrity: sha1-hAegT314aE89JSqhoUPSt3tBYM4=} + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} engines: {node: '>= 0.4'} typed-array-byte-offset@1.0.4: - resolution: {integrity: sha1-rjaYuOyRqKuUUBYQiu8A1b/xI1U=} + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} engines: {node: '>= 0.4'} typed-array-length@1.0.7: - resolution: {integrity: sha1-7k3v+YS2S+HhGLDejJyHfVznPT0=} + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} typed-query-selector@2.12.0: - resolution: {integrity: sha1-krZdvApCZV/M9K6xoIsd3c6K9fI=} + resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} typed-query-selector@2.12.2: - resolution: {integrity: sha1-ZeJGKsawrs+uG/rBpPMCcHDbq6o=} + resolution: {integrity: sha512-EOPFbyIub4ngnEdqi2yOcNeDLaX/0jcE1JoAXQDDMIthap7FoN795lc/SHfIq2d416VufXpM8z/lD+WRm2gfOQ==} typed-rest-client@1.8.11: - resolution: {integrity: sha1-aQbwLjyR6NhRV58lWr8P1ggAoE0=} + resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==} typescript-eslint@8.62.1: - resolution: {integrity: sha1-65P9lNUnqgTsW4RPsLStphPMfT8=} + resolution: {integrity: sha512-vymnnM5g0AKQDSAyfP12nMIBvgwgA42syg74kkuZ4x1VuTzwQKwc5h9rGxeShCjny5o+zWAb6OEoz7XLgrIkIw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' typescript@5.4.5: - resolution: {integrity: sha1-QszvLFcf29D2cYsdH15uXvAG9hE=} + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true typescript@5.9.3: - resolution: {integrity: sha1-W09Z4VMQqxeiFvXWz1PuR27eZw8=} + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true typical@4.0.0: - resolution: {integrity: sha1-y+r/O5164eK7+vWk5vEezP3pT8Q=} + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} engines: {node: '>=8'} typical@7.3.0: - resolution: {integrity: sha1-kwN2vjRCKHCfE0YTkR+iKqCWF6Q=} + resolution: {integrity: sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==} engines: {node: '>=12.17'} uc.micro@2.1.0: - resolution: {integrity: sha1-+NP30OxMPeo1p+PI76TLi0XJ5+4=} + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} uglify-js@3.19.3: - resolution: {integrity: sha1-gjFem7xvKyWIiFis0f/4RBA1t38=} + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} hasBin: true unbash@4.0.2: - resolution: {integrity: sha1-eewPzKmQ4kx45r3cybjLfXVlM/A=} + resolution: {integrity: sha512-8gwNZ29+0/3zmXw7ToIHZtg6wK37xnniRUdBt7B27xZxaxfgR5tGMaGHT0t0dLtBV9fXE7zurh0s6Z1DHVjfWg==} engines: {node: '>=14'} unbox-primitive@1.1.0: - resolution: {integrity: sha1-jZ0snt7qhGDH81AzqIhnlEk00eI=} + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} unbzip2-stream@1.4.3: - resolution: {integrity: sha1-sNoExDcTEd93HNwhXofyEwmRrOc=} + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} underscore@1.13.6: - resolution: {integrity: sha1-BHhqH1idxsCfdh/F9FuJ6TUTZEE=} + resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} underscore@1.13.8: - resolution: {integrity: sha1-qTohGGwEnb8OhHSW26cre9jB6Ss=} + resolution: {integrity: sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==} undici-types@5.26.5: - resolution: {integrity: sha1-vNU5iT0AtW6WT9JlekhmsiGmVhc=} + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} undici-types@6.21.0: - resolution: {integrity: sha1-aR0ArzkJvpOn+qE75hs6W1DvEss=} + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} undici-types@7.16.0: - resolution: {integrity: sha1-/8zf82rqSITL/OmnUKBYAiT1ikY=} + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} undici-types@7.24.4: - resolution: {integrity: sha1-ZC2sDLZaKuOJ+MIo/aknMIxlVDs=} + resolution: {integrity: sha512-cRaY9PagdEZoRmcwzk3tUV3SVGrVQkR6bcSilav/A0vXsfpW4Lvd0BvgRMwTEDTLLGN+QdyBTG+nnvTgJhdt6w==} undici-types@8.3.0: - resolution: {integrity: sha1-ROn8nzJEZIzeo15Pm7LWgelBCAk=} + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} undici@6.27.0: - resolution: {integrity: sha1-Qfnkj3xaQNJzdsqurYyan8e8qcQ=} + resolution: {integrity: sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==} engines: {node: '>=18.17'} undici@7.28.0: - resolution: {integrity: sha1-l9ZFZBmLKFvCgfDo4pWX49Ef5+w=} + resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} engines: {node: '>=20.18.1'} unicode-emoji-modifier-base@1.0.0: - resolution: {integrity: sha1-271bVLow8ofiqNWiSdpsDO82lFk=} + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} engines: {node: '>=4'} unicorn-magic@0.1.0: - resolution: {integrity: sha1-G7mlHII6r51zqL/NPRoj3elLDOQ=} + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} unicorn-magic@0.3.0: - resolution: {integrity: sha1-Tv1FyFpp4N1XbSVTL7+iKqXIoQQ=} + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} unified@11.0.5: - resolution: {integrity: sha1-9mZ3YQpcCp7pDKsrjU1mA3Am2eE=} + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} unist-util-is@5.2.1: - resolution: {integrity: sha1-t0lg4UXBjctiJrxXkzWX9Uht6uk=} + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} unist-util-is@6.0.0: - resolution: {integrity: sha1-t3WVZIav8Qep3tlx2ZbBczdL5CQ=} + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} unist-util-remove-position@5.0.0: - resolution: {integrity: sha1-/qaKJWWECclGBAi8a0mRuWW1IWM=} + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} unist-util-stringify-position@4.0.0: - resolution: {integrity: sha1-RJxuIaiA4IVb9aq63rOnQDFKusI=} + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} unist-util-visit-parents@5.1.3: - resolution: {integrity: sha1-tFIIEbDKNChWM3hQRd96jWd2z+s=} + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} unist-util-visit-parents@6.0.1: - resolution: {integrity: sha1-TV+FdVw7jw3GniHspdbYLSIWKBU=} + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} unist-util-visit@4.1.2: - resolution: {integrity: sha1-ElpC0euHYoNxWjy1zOqlMYKMcuI=} + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} unist-util-visit@5.0.0: - resolution: {integrity: sha1-p94fMfcv/TUZ6nGBTMz1/WqSF9Y=} + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} universalify@0.1.2: - resolution: {integrity: sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=} + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} universalify@0.2.0: - resolution: {integrity: sha1-ZFF2BWb6hXU0dFqx3elS0bF2G+A=} + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} universalify@2.0.1: - resolution: {integrity: sha1-Fo78IYCWTmOG0GHglN9hr+I5sY0=} + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} unpipe@1.0.0: - resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=} + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} untildify@4.0.0: - resolution: {integrity: sha1-K8lHuVNlJIfkYAlJ+wkeOujNkZs=} + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} update-browserslist-db@1.2.3: - resolution: {integrity: sha1-ZNdttYcTE2rL60xJEUNmzGzC6A0=} + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' uri-js@4.4.1: - resolution: {integrity: sha1-mxpSWVIlhZ5V9mnZKPiMbFfyp34=} + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} url-join@4.0.1: - resolution: {integrity: sha1-tkLiGiZGgI/6F4xMX9o5hE4Szec=} + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} url-parse@1.5.10: - resolution: {integrity: sha1-nTwvc2wddd070r5QfcwRHx4uqcE=} + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} url-template@2.0.8: - resolution: {integrity: sha1-/FZaPMy/93MMd19WQflVV5FDnyE=} + resolution: {integrity: sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==} user-home@2.0.0: - resolution: {integrity: sha1-nHC/2Babwdy/SGBODwS4tJzenp8=} + resolution: {integrity: sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==} engines: {node: '>=0.10.0'} utf8-byte-length@1.0.4: - resolution: {integrity: sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=} + resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==} util-deprecate@1.0.2: - resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} utila@0.4.0: - resolution: {integrity: sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=} + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} utils-merge@1.0.1: - resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} uuid@14.0.1: - resolution: {integrity: sha1-ill1s+A4kCv9FpoQtSAvXsDPP68=} + resolution: {integrity: sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==} hasBin: true uuid@8.3.2: - resolution: {integrity: sha1-gNW1ztJxu5r2xEXyGhoExgbO++I=} + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuid@9.0.1: - resolution: {integrity: sha1-4YjUyIU8xyIiA5LEJM1jfzIpPzA=} + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha1-Yzbo1xllyz01obu3hoRFp8BSZL8=} + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} v8-to-istanbul@9.1.3: - resolution: {integrity: sha1-6kVmBBAc0YAFrCyuPN0aoFimMGs=} + resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} engines: {node: '>=10.12.0'} validate-npm-package-license@3.0.4: - resolution: {integrity: sha1-/JH2uce6FchX9MssXe/uw51PQQo=} + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} validate-npm-package-name@6.0.0: - resolution: {integrity: sha1-Ot2WbIU8/jbg6OanYu3XKubx1qw=} + resolution: {integrity: sha512-d7KLgL1LD3U3fgnvWEY1cQXoO/q6EQ1BSz48Sa149V/5zVTAbgmZIpyI8TRi6U9/JNyeYLlTKsEMPtLC27RFUg==} engines: {node: ^18.17.0 || >=20.5.0} validator@13.15.23: - resolution: {integrity: sha1-Wah0+E5FlFiONAmrHtvmTpbQxi0=} + resolution: {integrity: sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==} engines: {node: '>= 0.10'} vary@1.1.2: - resolution: {integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=} + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} verror@1.10.1: - resolution: {integrity: sha1-S/Ce7M9FY7EJ7Us9RYOAyXKwzes=} + resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==} engines: {node: '>=0.6.0'} vfile-message@4.0.2: - resolution: {integrity: sha1-yIPJ9nfHLBZjYv1jXyH8Flp9EYE=} + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} vfile@6.0.3: - resolution: {integrity: sha1-NlKrHEllMYUr9VprrFevmB68OKs=} + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} vite@5.4.21: - resolution: {integrity: sha1-hKT3xdhgsHFnbTm6UTwNWY/ccCc=} + resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -17650,7 +17668,7 @@ packages: optional: true vite@6.4.3: - resolution: {integrity: sha1-haFk23znBvKndoEu+is0DxchhY4=} + resolution: {integrity: sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -17690,36 +17708,36 @@ packages: optional: true void-elements@3.1.0: - resolution: {integrity: sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=} + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} vscode-jsonrpc@8.2.0: - resolution: {integrity: sha1-9D36NftR52PRfNlNzKDJRY81q/k=} + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} engines: {node: '>=14.0.0'} vscode-jsonrpc@8.2.1: - resolution: {integrity: sha1-oyLMDx2X95T/2cTNKomKC94JfzQ=} + resolution: {integrity: sha512-kdjOSJ2lLIn7r1rtrMbbNCHjyMPfRnowdKjBQ+mGq6NAW5QY2bEZC/khaC5OR8svbbjvLEaIXkOq45e2X9BIbQ==} engines: {node: '>=14.0.0'} vscode-languageclient@9.0.1: - resolution: {integrity: sha1-zf4gJncmyNTbg53B6dGBbhKW6FQ=} + resolution: {integrity: sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==} engines: {vscode: ^1.82.0} vscode-languageserver-protocol@3.17.5: - resolution: {integrity: sha1-hkqLjzkINVcvThO9n4MT0OOsS+o=} + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} vscode-languageserver-textdocument@1.0.12: - resolution: {integrity: sha1-RX7gQnGrOJmKCTxowjQvU/bkpjE=} + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} vscode-languageserver-types@3.17.5: - resolution: {integrity: sha1-MnNnbwzy6rQLP0TQhay7fwijnYo=} + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} vscode-languageserver@9.0.1: - resolution: {integrity: sha1-UArvggl+uU35DQCGeLC2tfR0AVs=} + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} hasBin: true vue@3.5.16: - resolution: {integrity: sha1-8M3ojCaINU8A/y136ylcJkQPjHo=} + resolution: {integrity: sha512-rjOV2ecxMd5SiAmof2xzh2WxntRcigkX/He4YFJ6WdRvVUrbt6DxC1Iujh10XLl8xCDRDtGKMeO3D+pRQ1PP9w==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -17727,57 +17745,57 @@ packages: optional: true w3c-keyname@2.2.8: - resolution: {integrity: sha1-exfIxog9TouGrIq6edOeiA+IacU=} + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} w3c-xmlserializer@4.0.0: - resolution: {integrity: sha1-rr3ISSDYBiIpNuPNzkCOMkiKMHM=} + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} w3c-xmlserializer@5.0.0: - resolution: {integrity: sha1-+SW6JoVRWFlNkHMTzt0UdsWWf2w=} + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} walk-up-path@4.0.0: - resolution: {integrity: sha1-WQZm3PgUbi1yMYFk8fKsbvUdQZg=} + resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} engines: {node: 20 || >=22} walkdir@0.4.1: - resolution: {integrity: sha1-3BGfg/RCHfUuMGHlFCKKLbIK+jk=} + resolution: {integrity: sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==} engines: {node: '>=6.0.0'} walker@1.0.8: - resolution: {integrity: sha1-vUmNtHev5XPcBBhfAR06uKjXZT8=} + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} watchpack@2.5.2: - resolution: {integrity: sha1-4S6C2EZ0Jm/Bxtv+OIkbkv8FIuw=} + resolution: {integrity: sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==} engines: {node: '>=10.13.0'} wbuf@1.7.3: - resolution: {integrity: sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=} + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} wcwidth@1.0.1: - resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=} + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} web-streams-polyfill@4.0.0-beta.3: - resolution: {integrity: sha1-KJhIa3T1FWCV5HPv6Ync8YUEejg=} + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} engines: {node: '>= 14'} webdriver-bidi-protocol@0.4.1: - resolution: {integrity: sha1-1BHnuOFYQI2DuxZrC08QVPo/B34=} + resolution: {integrity: sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==} webidl-conversions@3.0.1: - resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=} + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} webidl-conversions@7.0.0: - resolution: {integrity: sha1-JWtOGIK+feu/AdBfCqIDl3jqCAo=} + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} webidl-conversions@8.0.1: - resolution: {integrity: sha1-Blflcf5vBvyxXKUO0f28tJXNFoY=} + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} webpack-cli@5.1.4: - resolution: {integrity: sha1-yOBGun6q5JEdfnHislt3b8w1dZs=} + resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} engines: {node: '>=14.15.0'} hasBin: true peerDependencies: @@ -17794,7 +17812,7 @@ packages: optional: true webpack-dev-middleware@7.4.5: - resolution: {integrity: sha1-1OhyCqKcsDvBWAhKlO20WU47esA=} + resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==} engines: {node: '>= 18.12.0'} peerDependencies: webpack: ^5.0.0 @@ -17803,7 +17821,7 @@ packages: optional: true webpack-dev-server@5.2.5: - resolution: {integrity: sha1-ZI/Oqsalc2sJNeXB5V1qodBiYRk=} + resolution: {integrity: sha512-4wZtCquSuv9CKX8oybo+mqxtxZqWz47uM1Ch94lxowBztOhWCbhqvRbfC/mODOwxgV2brY+JGZpHq58/SuVFYg==} engines: {node: '>= 18.12.0'} hasBin: true peerDependencies: @@ -17816,15 +17834,15 @@ packages: optional: true webpack-merge@5.10.0: - resolution: {integrity: sha1-o61ddzJB6caCgDq/Yo1M1iuKQXc=} + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} engines: {node: '>=10.0.0'} webpack-sources@3.5.1: - resolution: {integrity: sha1-dsJBhIbcwCsqoGlMEEF2woWP6Eo=} + resolution: {integrity: sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==} engines: {node: '>=10.13.0'} webpack@5.105.0: - resolution: {integrity: sha1-OLXmxduMvoHeu9FuCJM1raBeojo=} + resolution: {integrity: sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -17834,152 +17852,152 @@ packages: optional: true websocket-driver@0.7.5: - resolution: {integrity: sha1-Vp0idkqyHy3iCvDnS0EeiuWg+kY=} + resolution: {integrity: sha512-ZL2+3c7kMBdIRCMz6l8jQMHyGVxj+UL+xVk74Ombiciboca8rHa15L86B19E5oh1pL9Ii/uj54gtsIrZGMo6zA==} engines: {node: '>=0.8.0'} websocket-extensions@0.1.4: - resolution: {integrity: sha1-f4RzvIOd/YdgituV1+sHUhFXikI=} + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} engines: {node: '>=0.8.0'} webvtt-parser@2.2.0: - resolution: {integrity: sha1-eQKfuQZ+3LIQgg+mEBw32bi3jZ8=} + resolution: {integrity: sha512-FzmaED+jZyt8SCJPTKbSsimrrnQU8ELlViE1wuF3x1pgiQUM8Llj5XWj2j/s6Tlk71ucPfGSMFqZWBtKn/0uEA==} whatwg-encoding@2.0.0: - resolution: {integrity: sha1-52NfWX/YcCCFhiaAWicp+naYrFM=} + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-encoding@3.1.1: - resolution: {integrity: sha1-0PTvdpkF1CbhaI8+NDgambYLduU=} + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-mimetype@3.0.0: - resolution: {integrity: sha1-X6GnYjhn/xr2yj3HKta4pCCL66c=} + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} whatwg-mimetype@4.0.0: - resolution: {integrity: sha1-vBv5SphdxQOI1UqSWKxAXDyi/Ao=} + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} whatwg-mimetype@5.0.0: - resolution: {integrity: sha1-2CMoldvVJ86u5079QWIAj7ioz0g=} + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} engines: {node: '>=20'} whatwg-url@11.0.0: - resolution: {integrity: sha1-CoSe67X68hGbkBu3b9eVwoSNQBg=} + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} whatwg-url@13.0.0: - resolution: {integrity: sha1-t7U2rKSDBjlKNORL2o6Z8zJBD48=} + resolution: {integrity: sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==} engines: {node: '>=16'} whatwg-url@14.2.0: - resolution: {integrity: sha1-TuAtXXJRVdrgBPaulcc+fvXZVmM=} + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} whatwg-url@16.0.1: - resolution: {integrity: sha1-BH9/S9Nu92txmMFy0bHOvGb3ZN0=} + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} whatwg-url@5.0.0: - resolution: {integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0=} + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} which-boxed-primitive@1.1.1: - resolution: {integrity: sha1-127Cfff6Fl8Y1YCDdKX+I8KbF24=} + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} which-builtin-type@1.2.1: - resolution: {integrity: sha1-iRg9obSQerCJprAgKcxdjWV0Jw4=} + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} engines: {node: '>= 0.4'} which-collection@1.0.2: - resolution: {integrity: sha1-Yn73YkOSChB+fOjpYZHevksWwqA=} + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} which-typed-array@1.1.19: - resolution: {integrity: sha1-3wOELocLa4jhF1JKSzZLb8aJ+VY=} + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} engines: {node: '>= 0.4'} which@1.3.1: - resolution: {integrity: sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=} + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true which@2.0.2: - resolution: {integrity: sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=} + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true which@5.0.0: - resolution: {integrity: sha1-2T8tk/eYNNQ2PH0MI+ANB8RmyNY=} + resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} engines: {node: ^18.17.0 || >=20.5.0} hasBin: true which@6.0.1: - resolution: {integrity: sha1-AhZCRDoZj7k7eEpWBnIcsYz8v84=} + resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true widest-line@3.1.0: - resolution: {integrity: sha1-gpIzO79my0X/DeFgOxNreuFJbso=} + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} widest-line@5.0.0: - resolution: {integrity: sha1-t0gmoeSAeDNF8M2QYbSXU8nacNA=} + resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} engines: {node: '>=18'} wildcard@2.0.1: - resolution: {integrity: sha1-WrENAkhxmJVINrY0n3T/+WHhD2c=} + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} winreg@1.2.5: - resolution: {integrity: sha1-tlA4PokniVJJS10RO6BJpaT6ltg=} + resolution: {integrity: sha512-uf7tHf+tw0B1y+x+mKTLHkykBgK2KMs3g+KlzmyMbLvICSHQyB/xOFjTT8qZ3oeTFyU7Bbj4FzXitGG6jvKhYw==} with@7.0.2: - resolution: {integrity: sha1-zO461ULSVTinp6gKrSErmChJW6w=} + resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} engines: {node: '>= 10.0.0'} word-wrap@1.2.5: - resolution: {integrity: sha1-0sRcbdT7zmIaZvE2y+Mor9BBCzQ=} + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} wordwrap@1.0.0: - resolution: {integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=} + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} wordwrapjs@5.1.0: - resolution: {integrity: sha1-TE0gRG3MZwsU+hFe9Pj9mUevKzo=} + resolution: {integrity: sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==} engines: {node: '>=12.17'} workerpool@6.5.1: - resolution: {integrity: sha1-Bg9zs50Mr5fG22TaAEzQG0wJlUQ=} + resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} workerpool@9.3.4: - resolution: {integrity: sha1-9skjlbIUGv144qiJ6AyzOP6fykE=} + resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} wrap-ansi@6.2.0: - resolution: {integrity: sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=} + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} wrap-ansi@7.0.0: - resolution: {integrity: sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=} + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} wrap-ansi@8.1.0: - resolution: {integrity: sha1-VtwiNo7lcPrOG0mBmXXZuaXq0hQ=} + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} wrap-ansi@9.0.0: - resolution: {integrity: sha1-Gj3Itw2F7rg5jd+x5KAs0Ybliz4=} + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} engines: {node: '>=18'} wrappy@1.0.2: - resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} write-file-atomic@4.0.2: - resolution: {integrity: sha1-qd8Brlt3hYoCf9LoB2juQzVV/P0=} + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} ws@7.5.11: - resolution: {integrity: sha1-lGDa8YEruBpCPFuerHRpQahjEPo=} + resolution: {integrity: sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -17991,7 +18009,7 @@ packages: optional: true ws@8.21.0: - resolution: {integrity: sha1-AS5BP8B0KZRRIbDBUxWMQ0MIaVE=} + resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -18003,59 +18021,59 @@ packages: optional: true wsl-utils@0.1.0: - resolution: {integrity: sha1-h4PU32cdTVA2W+LuTHGRegVXuqs=} + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} engines: {node: '>=18'} xml-name-validator@4.0.0: - resolution: {integrity: sha1-eaAG4uYxSahgDxVDDwpHJdFSSDU=} + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} xml-name-validator@5.0.0: - resolution: {integrity: sha1-gr6blX96/az5YeWYDxvyJ8C/dnM=} + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} xml-naming@0.1.0: - resolution: {integrity: sha1-ircQbFuNI8qi+rrByt8XE2N5+9g=} + resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==} engines: {node: '>=16.0.0'} xml2js@0.4.23: - resolution: {integrity: sha1-oMaVFnUkIesqx1juTUzPWIQ+rGY=} + resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} engines: {node: '>=4.0.0'} xml2js@0.5.0: - resolution: {integrity: sha1-2UQGMfuy7YACA/rRBvJyT2LEk7c=} + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} engines: {node: '>=4.0.0'} xml2js@0.6.2: - resolution: {integrity: sha1-3QtjAIOqCcFh4lpNCQHisqkptJk=} + resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} engines: {node: '>=4.0.0'} xmlbuilder2@4.0.3: - resolution: {integrity: sha1-kWYPptMPGdcW+LEZTFZ2htRALGM=} + resolution: {integrity: sha512-bx8Q1STctnNaaDymWnkfQLKofs0mGNN7rLLapJlGuV3VlvegD7Ls4ggMjE3aUSWItCCzU0PEv45lI87iSigiCA==} engines: {node: '>=20.0'} xmlbuilder@11.0.1: - resolution: {integrity: sha1-vpuuHIoEbnazESdyY0fQrXACvrM=} + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} engines: {node: '>=4.0'} xmlbuilder@15.1.1: - resolution: {integrity: sha1-nc3OSe6mbY0QtCyulKecPI0MLsU=} + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} xmlchars@2.2.0: - resolution: {integrity: sha1-Bg/hvLf5x2/ioX24apvDq4lCEMs=} + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} xss@1.0.15: - resolution: {integrity: sha1-lqDhOIbwZhBjAotBDtGxhnD05Zo=} + resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} engines: {node: '>= 0.10.0'} hasBin: true xtend@4.0.2: - resolution: {integrity: sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=} + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} y-prosemirror@1.3.5: - resolution: {integrity: sha1-tz3+4G+ck2hDQGNbKahPnjoAHJ0=} + resolution: {integrity: sha512-qW8fXCb72L6H2BWiuhZdSJ6hiShHUog08gh6KvBqLjhK6Et9DxfDnMDvx6yyO3iCdnEhDfUJviRvaMAAXb0dNg==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} peerDependencies: prosemirror-model: ^1.7.1 @@ -18065,126 +18083,126 @@ packages: yjs: ^13.5.38 y-protocols@1.0.6: - resolution: {integrity: sha1-ZtrYqVdSYjRD6OKMDpI2gtLA1JU=} + resolution: {integrity: sha512-vHRF2L6iT3rwj1jub/K5tYcTT/mEYDUppgNPXwp8fmLpui9f7Yeq3OEtTLVF012j39QnV+KEQpNqoN7CWU7Y9Q==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} peerDependencies: yjs: ^13.0.0 y-websocket@3.0.0: - resolution: {integrity: sha1-6GvbKcwKU8uNbjPsjSRhSnI4Mq8=} + resolution: {integrity: sha512-mUHy7AzkOZ834T/7piqtlA8Yk6AchqKqcrCXjKW8J1w2lPtRDjz8W5/CvXz9higKAHgKRKqpI3T33YkRFLkPtg==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} peerDependencies: yjs: ^13.5.6 y18n@5.0.8: - resolution: {integrity: sha1-f0k00PfKjFb5UxSTndzS3ZHOHVU=} + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} yallist@3.1.1: - resolution: {integrity: sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=} + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} yallist@4.0.0: - resolution: {integrity: sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=} + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} yallist@5.0.0: - resolution: {integrity: sha1-AOLeRDY57Q14/YfeDSdGn7z/tTM=} + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} yaml@2.8.3: - resolution: {integrity: sha1-oNa9Lvs90DxZNwIjcBg05gQJvX0=} + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} engines: {node: '>= 14.6'} hasBin: true yaml@2.9.0: - resolution: {integrity: sha1-eCdK/ZNZih391hMN9qVm3vy/mqQ=} + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} hasBin: true yargs-parser@20.2.9: - resolution: {integrity: sha1-LrfcOwKJcY/ClfNidThFxBoMlO4=} + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} yargs-parser@21.1.1: - resolution: {integrity: sha1-kJa87r+ZDSG7MfqVFuDt4pSnfTU=} + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} yargs-unparser@2.0.0: - resolution: {integrity: sha1-8TH5ImkRrl2a04xDL+gJNmwjJes=} + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} engines: {node: '>=10'} yargs@16.2.0: - resolution: {integrity: sha1-HIK/D2tqZur85+8w43b0mhJHf2Y=} + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} yargs@17.7.2: - resolution: {integrity: sha1-mR3zmspnWhkrgW4eA2P5110qomk=} + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} yauzl@2.10.0: - resolution: {integrity: sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=} + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} yazl@2.5.1: - resolution: {integrity: sha1-o9ZdPdZZpbCTeFDoYJ8i//orXDU=} + resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==} yjs@13.6.27: - resolution: {integrity: sha1-iJm+kp1X2gWgqhEtBEpcIEOTq3s=} + resolution: {integrity: sha512-OIDwaflOaq4wC6YlPBy2L6ceKeKuF7DeTxx+jPzv1FHn9tCZ0ZwSRnUBxD05E3yed46fv/FWJbvR+Ud7x0L7zw==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} ylru@1.4.0: - resolution: {integrity: sha1-DPCqV+nCT4osveDMHKLJWSrE4PY=} + resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} engines: {node: '>= 4.0.0'} yn@3.1.1: - resolution: {integrity: sha1-HodAGgnXZ8HV6rJqbkwYUYLS61A=} + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} yocto-queue@0.1.0: - resolution: {integrity: sha1-ApTrPe4FAo0x7hpfosVWpqrxChs=} + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} yocto-queue@1.1.1: - resolution: {integrity: sha1-/vZc46yfijLOrFpjT3ThflsjIRA=} + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} yoctocolors-cjs@2.1.2: - resolution: {integrity: sha1-9LkFqECjdQaBOnrKoo/r6XdnokI=} + resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} engines: {node: '>=18'} yoga-wasm-web@0.3.3: - resolution: {integrity: sha1-646fyxjl5lGZRzLxmiIMuIXZMro=} + resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} zip-stream@2.1.3: - resolution: {integrity: sha1-JsxL25NkGoWQ3QcRLh93rxdYhls=} + resolution: {integrity: sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==} engines: {node: '>= 6'} zip-stream@6.0.1: - resolution: {integrity: sha1-4UG5MO1gzK9df6nIJg4NF0iiu/s=} + resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} zod-to-json-schema@3.25.1: - resolution: {integrity: sha1-fySWIQGkOd2t4r8a6rPDv+x9hLo=} + resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} peerDependencies: zod: ^3.25 || ^4 zod-to-json-schema@3.25.2: - resolution: {integrity: sha1-P6eZp7rdVUVBRy+2WEP9xGCy5ao=} + resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} peerDependencies: zod: ^3.25.28 || ^4 zod@3.23.8: - resolution: {integrity: sha1-43uVe11SB5dp+4CXCZtZLw70Bn0=} + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} zod@3.25.76: - resolution: {integrity: sha1-JoQcP2/SKmonYOfMtxkXl2hHHjQ=} + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} zod@4.1.13: - resolution: {integrity: sha1-k2maiv6Te6lrrbsM6L5gM8CktrE=} + resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} zod@4.3.6: - resolution: {integrity: sha1-icVuCqfSsFEH2JRBIicIeIWrESo=} + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} zwitch@2.0.4: - resolution: {integrity: sha1-yCfUsKy3b8PmhaTG7CkC1RBw6dc=} + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: @@ -20722,10 +20740,10 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(supports-color@8.1.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5))': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.15.18)(typescript@5.4.5))': dependencies: '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0(supports-color@8.1.1) + '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 @@ -20736,7 +20754,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.15.18)(typescript@5.4.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -20757,10 +20775,10 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.15.18)(typescript@5.4.5))': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.4.5))': dependencies: '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0(supports-color@8.1.1) + '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 @@ -20771,7 +20789,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.15.18)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.4.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -20792,10 +20810,10 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.4.5))': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5))': dependencies: '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0(supports-color@8.1.1) + '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 @@ -20806,7 +20824,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -20830,7 +20848,7 @@ snapshots: '@jest/core@29.7.0(ts-node@10.9.2(@types/node@26.1.1)(typescript@5.4.5))': dependencies: '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0(supports-color@8.1.1) + '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 @@ -20898,7 +20916,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/reporters@29.7.0(supports-color@8.1.1)': + '@jest/reporters@29.7.0': dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 29.7.0 @@ -20915,7 +20933,7 @@ snapshots: istanbul-lib-coverage: 3.2.2 istanbul-lib-instrument: 6.0.3 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1(supports-color@8.1.1) + istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.6 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -22396,18 +22414,18 @@ snapshots: dependencies: '@secretlint/types': 9.3.2 - '@secretlint/config-loader@9.3.2(supports-color@8.1.1)': + '@secretlint/config-loader@9.3.2': dependencies: '@secretlint/profiler': 9.3.2 '@secretlint/resolver': 9.3.2 '@secretlint/types': 9.3.2 ajv: 8.20.0 debug: 4.4.3(supports-color@8.1.1) - rc-config-loader: 4.1.3(supports-color@8.1.1) + rc-config-loader: 4.1.3 transitivePeerDependencies: - supports-color - '@secretlint/core@9.3.2(supports-color@8.1.1)': + '@secretlint/core@9.3.2': dependencies: '@secretlint/profiler': 9.3.2 '@secretlint/types': 9.3.2 @@ -22416,11 +22434,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@secretlint/formatter@9.3.2(supports-color@8.1.1)': + '@secretlint/formatter@9.3.2': dependencies: '@secretlint/resolver': 9.3.2 '@secretlint/types': 9.3.2 - '@textlint/linter-formatter': 14.7.1(supports-color@8.1.1) + '@textlint/linter-formatter': 14.7.1 '@textlint/module-interop': 14.7.1 '@textlint/types': 14.7.1 chalk: 4.1.2 @@ -22432,11 +22450,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@secretlint/node@9.3.2(supports-color@8.1.1)': + '@secretlint/node@9.3.2': dependencies: - '@secretlint/config-loader': 9.3.2(supports-color@8.1.1) - '@secretlint/core': 9.3.2(supports-color@8.1.1) - '@secretlint/formatter': 9.3.2(supports-color@8.1.1) + '@secretlint/config-loader': 9.3.2 + '@secretlint/core': 9.3.2 + '@secretlint/formatter': 9.3.2 '@secretlint/profiler': 9.3.2 '@secretlint/source-creator': 9.3.2 '@secretlint/types': 9.3.2 @@ -22835,7 +22853,7 @@ snapshots: '@textlint/ast-node-types@14.7.1': {} - '@textlint/linter-formatter@14.7.1(supports-color@8.1.1)': + '@textlint/linter-formatter@14.7.1': dependencies: '@azu/format-text': 1.0.2 '@azu/style-format': 1.0.1 @@ -23778,7 +23796,7 @@ snapshots: '@vscode/vsce@3.4.0(supports-color@8.1.1)': dependencies: '@azure/identity': 4.13.1 - '@secretlint/node': 9.3.2(supports-color@8.1.1) + '@secretlint/node': 9.3.2 '@secretlint/secretlint-formatter-sarif': 9.3.2 '@secretlint/secretlint-rule-no-dotenv': 9.3.2 '@secretlint/secretlint-rule-preset-recommend': 9.3.2 @@ -23956,7 +23974,7 @@ snapshots: internal-ip: 6.2.0 nanocolors: 0.2.13 open: 8.4.2 - portfinder: 1.0.38 + portfinder: 1.0.38(supports-color@8.1.1) transitivePeerDependencies: - bufferutil - supports-color @@ -24069,7 +24087,7 @@ snapshots: diff: 5.2.2 globby: 11.1.0 nanocolors: 0.2.13 - portfinder: 1.0.38 + portfinder: 1.0.38(supports-color@8.1.1) source-map: 0.7.4 transitivePeerDependencies: - bare-abort-controller @@ -28105,7 +28123,7 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@4.0.1(supports-color@8.1.1): + istanbul-lib-source-maps@4.0.1: dependencies: debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 @@ -28217,7 +28235,7 @@ snapshots: jest-cli@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(supports-color@8.1.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 @@ -28730,9 +28748,9 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@22.20.1)(supports-color@8.1.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)): + jest@29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(supports-color@8.1.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) '@jest/types': 29.6.3 import-local: 3.2.0 jest-cli: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) @@ -30638,7 +30656,7 @@ snapshots: path-data-parser: 0.1.0 points-on-curve: 0.2.0 - portfinder@1.0.38: + portfinder@1.0.38(supports-color@8.1.1): dependencies: async: 3.2.6 debug: 4.4.3(supports-color@8.1.1) @@ -31175,7 +31193,7 @@ snapshots: iconv-lite: 0.7.2 unpipe: 1.0.0 - rc-config-loader@4.1.3(supports-color@8.1.1): + rc-config-loader@4.1.3: dependencies: debug: 4.4.3(supports-color@8.1.1) js-yaml: 4.3.0 @@ -31633,8 +31651,8 @@ snapshots: secretlint@9.3.2(supports-color@8.1.1): dependencies: '@secretlint/config-creator': 9.3.2 - '@secretlint/formatter': 9.3.2(supports-color@8.1.1) - '@secretlint/node': 9.3.2(supports-color@8.1.1) + '@secretlint/formatter': 9.3.2 + '@secretlint/node': 9.3.2 '@secretlint/profiler': 9.3.2 debug: 4.4.3(supports-color@8.1.1) globby: 14.1.0 @@ -32645,7 +32663,7 @@ snapshots: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.9 - jest: 29.7.0(@types/node@22.20.1)(supports-color@8.1.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) + jest: 29.7.0(@types/node@22.20.1)(ts-node@10.9.2(@types/node@22.20.1)(typescript@5.4.5)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6