From 8d1bbf7ac48b4a0a439b546869b2fee7264d9a9d Mon Sep 17 00:00:00 2001 From: Hardik Dodiya Date: Fri, 20 Mar 2026 14:37:28 +0100 Subject: [PATCH] Migrate Docs to VitePress --- .github/workflows/publish-docs.yml | 57 + .github/workflows/publish_docs.yaml | 33 - .gitignore | 5 + Makefile | 23 +- REUSE.toml | 5 +- docs/.vitepress/config.mts | 89 + docs/.vitepress/theme/components/VPFooter.vue | 237 + docs/.vitepress/theme/custom.css | 38 + docs/.vitepress/theme/index.js | 5 + docs/Dockerfile | 14 +- docs/api-reference/api.md | 14 +- docs/architecture.md | 4 +- docs/development/dev_docs.md | 2 +- docs/index.md | 29 + docs/installation/helm.md | 8 + docs/installation/kustomize.md | 13 + docs/public/bmwe.png | Bin 0 -> 63318 bytes docs/quickstart.md | 24 + docs/requirements.txt | 1 - hack/api-reference/config.yaml | 4 +- hack/start-docs.sh | 18 + mkdocs.yml | 62 - package-lock.json | 3981 +++++++++++++++++ package.json | 12 + 24 files changed, 4553 insertions(+), 125 deletions(-) create mode 100644 .github/workflows/publish-docs.yml delete mode 100644 .github/workflows/publish_docs.yaml create mode 100644 docs/.vitepress/config.mts create mode 100644 docs/.vitepress/theme/components/VPFooter.vue create mode 100644 docs/.vitepress/theme/custom.css create mode 100644 docs/.vitepress/theme/index.js create mode 100644 docs/index.md create mode 100644 docs/installation/helm.md create mode 100644 docs/installation/kustomize.md create mode 100644 docs/public/bmwe.png create mode 100644 docs/quickstart.md delete mode 100644 docs/requirements.txt create mode 100755 hack/start-docs.sh delete mode 100644 mkdocs.yml create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml new file mode 100644 index 00000000..b7546d88 --- /dev/null +++ b/.github/workflows/publish-docs.yml @@ -0,0 +1,57 @@ +name: Deploy VitePress site to Pages + +on: + push: + branches: [main] + pull_request: + types: [assigned, opened, synchronize, reopened] + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + build: + name: Run docs build + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + fetch-depth: 0 + - name: Setup Node + uses: actions/setup-node@v6 + with: + node-version: 24 + cache: npm + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Install dependencies + run: npm ci + - name: Build with VitePress + run: npm run docs:build + - name: Upload artifact + uses: actions/upload-pages-artifact@v4 + with: + path: docs/.vitepress/dist + if: github.event_name != 'pull_request' + + deploy: + if: github.event_name != 'pull_request' + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + needs: build + runs-on: ubuntu-latest + name: Run docs publish + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + diff --git a/.github/workflows/publish_docs.yaml b/.github/workflows/publish_docs.yaml deleted file mode 100644 index b25712ad..00000000 --- a/.github/workflows/publish_docs.yaml +++ /dev/null @@ -1,33 +0,0 @@ -name: Publish docs via GitHub Pages -on: - push: - branches: - - main -permissions: - contents: write -jobs: - deploy: - name: Deploy docs - runs-on: ubuntu-latest - steps: - - name: Checkout main - uses: actions/checkout@v6 - - name: Configure Git Credentials - run: | - git config user.name github-actions[bot] - git config user.email 41898282+github-actions[bot]@users.noreply.github.com - - uses: actions/setup-python@v6 - with: - python-version: 3.x - - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV - - uses: actions/cache@v5 - with: - key: mkdocs-material-${{ env.cache_id }} - path: .cache - restore-keys: | - mkdocs-material- - - run: pip install mkdocs-material - - name: Deploy docs - run: mkdocs gh-deploy --force -env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 057b085d..62474f9f 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,8 @@ vendor/ *.swp *.swo *~ + +# Node / VitePress +node_modules/ +docs/.vitepress/cache/ +docs/.vitepress/dist/ diff --git a/Makefile b/Makefile index e9da1bd2..60ea56f9 100644 --- a/Makefile +++ b/Makefile @@ -2,8 +2,9 @@ # Image URL to use all building/pushing image targets IMG ?= controller:latest -# Docker image name for the mkdocs based local development setup -IMAGE=ironcore-dev/boot-operator-docs +# Docker image name for the VitePress based local development setup +DOCS_IMAGE ?= ironcore-dev/boot-operator-docs +DOCS_PORT ?= 5173 # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) ifeq (,$(shell go env GOBIN)) @@ -237,13 +238,21 @@ $(GOLANGCI_LINT): $(LOCALBIN) .PHONY: startdocs -startdocs: ## Start the local mkdocs based development environment. - docker build -t $(IMAGE) -f docs/Dockerfile . --load - docker run -p 8000:8000 -v `pwd`/:/docs $(IMAGE) +startdocs: ## Start the local VitePress based development environment. + @# When users have `docker build` forwarded to buildx (via `docker buildx install`), + @# the resulting image may remain only in the build cache unless `--load` is used. + @# Prefer `buildx --load` when available to keep `$(CONTAINER_TOOL) run $(DOCS_IMAGE)` working. + @if $(CONTAINER_TOOL) buildx version >/dev/null 2>&1; then \ + $(CONTAINER_TOOL) buildx build --load -t $(DOCS_IMAGE) -f docs/Dockerfile .; \ + else \ + $(CONTAINER_TOOL) build -t $(DOCS_IMAGE) -f docs/Dockerfile .; \ + fi + $(CONTAINER_TOOL) run --rm -p $(DOCS_PORT):5173 -v "$(shell pwd)":/app $(DOCS_IMAGE) .PHONY: cleandocs -cleandocs: ## Remove all local mkdocs Docker images (cleanup). - docker container prune --force --filter "label=project=boot_operator" +cleandocs: ## Cleanup local docs Docker artifacts (image + dangling layers). + -$(CONTAINER_TOOL) image rm --force $(DOCS_IMAGE) + -$(CONTAINER_TOOL) image prune --force --filter "label=project=boot_operator" .PHONY: addlicense addlicense: $(ADDLICENSE) ## Download addlicense locally if necessary. diff --git a/REUSE.toml b/REUSE.toml index fcff7f45..59ae1772 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -27,10 +27,11 @@ path = [ "test/**", "CONTRIBUTING.md", "PROJECT", - "mkdocs.yml", ".dockerignore", ".golangci.yml", - "REUSE.toml" + "REUSE.toml", + "package-lock.json", + "package.json" ] precedence = "aggregate" SPDX-FileCopyrightText = "2025 SAP SE or an SAP affiliate company and IronCore contributors" diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts new file mode 100644 index 00000000..c39cc239 --- /dev/null +++ b/docs/.vitepress/config.mts @@ -0,0 +1,89 @@ +import { withMermaid } from "vitepress-plugin-mermaid"; +import { fileURLToPath, URL } from "node:url"; + +export default withMermaid({ + title: "Boot Operator", + description: "Kubernetes operator to automate bare metal network boot infrastructure", + base: "/boot-operator/", + head: [ + [ + "link", + { + rel: "icon", + href: "https://raw.githubusercontent.com/ironcore-dev/ironcore/refs/heads/main/docs/assets/logo_borderless.svg", + }, + ], + ], + vite: { + resolve: { + alias: [ + { + // Override default theme footer with our funding notice. + find: /^.*\/VPFooter\.vue$/, + replacement: fileURLToPath( + new URL("./theme/components/VPFooter.vue", import.meta.url), + ), + }, + ], + }, + }, + themeConfig: { + nav: [ + { text: "Home", link: "/" }, + { text: "Documentation", link: "/architecture" }, + { text: "Quickstart", link: "/quickstart" }, + { text: "IronCore Documentation", link: "https://ironcore-dev.github.io" }, + ], + + editLink: { + pattern: "https://github.com/ironcore-dev/boot-operator/blob/main/docs/:path", + text: "Edit this page on GitHub", + }, + + logo: { + src: "https://raw.githubusercontent.com/ironcore-dev/ironcore/refs/heads/main/docs/assets/logo_borderless.svg", + width: 24, + height: 24, + }, + + search: { + provider: "local", + }, + + sidebar: [ + { + items: [ + { text: "Quickstart", link: "/quickstart" }, + { + text: "Installation", + collapsed: true, + items: [ + { text: "Kustomize", link: "/installation/kustomize" }, + { text: "Helm", link: "/installation/helm" }, + ], + }, + { text: "Architecture", link: "/architecture" }, + { text: "API Reference", link: "/api-reference/api" }, + ], + }, + { + text: "Usage", + collapsed: false, + items: [{ text: "bootctl", link: "/usage/bootctl" }], + }, + { + text: "Development", + collapsed: false, + items: [ + { text: "Documentation", link: "/development/dev_docs" }, + { text: "Create UKI", link: "/development/create_uki" }, + ], + }, + ], + + socialLinks: [ + { icon: "github", link: "https://github.com/ironcore-dev/boot-operator" }, + ], + }, +}); + diff --git a/docs/.vitepress/theme/components/VPFooter.vue b/docs/.vitepress/theme/components/VPFooter.vue new file mode 100644 index 00000000..6745fbec --- /dev/null +++ b/docs/.vitepress/theme/components/VPFooter.vue @@ -0,0 +1,237 @@ + + + + + + + + + + diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css new file mode 100644 index 00000000..baa98f7c --- /dev/null +++ b/docs/.vitepress/theme/custom.css @@ -0,0 +1,38 @@ +:root { + --vp-home-hero-name-color: transparent; + --vp-home-hero-name-background: -webkit-linear-gradient( + 120deg, + #3456fe 30%, + #41d1ff + ); + --vp-home-hero-image-background-image: linear-gradient( + -45deg, + #3474fe 50%, + #47caff 50% + ); + --vp-home-hero-image-filter: blur(44px); +} + +@media (min-width: 640px) { + :root { + --vp-home-hero-image-filter: blur(56px); + } +} + +@media (min-width: 960px) { + :root { + --vp-home-hero-image-filter: blur(68px); + } +} + +.VPHero .VPImage { + filter: drop-shadow(-2px 4px 6px rgba(0, 0, 0, 0.2)); + padding: 18px; +} + +/* used in reference/default-theme-search */ +img[src='/search.png'] { + width: 100%; + aspect-ratio: 1 / 1; +} + diff --git a/docs/.vitepress/theme/index.js b/docs/.vitepress/theme/index.js new file mode 100644 index 00000000..31b60aec --- /dev/null +++ b/docs/.vitepress/theme/index.js @@ -0,0 +1,5 @@ +import DefaultTheme from 'vitepress/theme' +import './custom.css' + +export default DefaultTheme + diff --git a/docs/Dockerfile b/docs/Dockerfile index e3215546..904132be 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -1,14 +1,12 @@ -FROM squidfunk/mkdocs-material:latest +FROM node:24-alpine LABEL project=boot_operator -WORKDIR /docs +RUN apk add --no-cache bash -COPY docs/requirements.txt requirements.txt -RUN pip install --no-cache-dir -r requirements.txt +WORKDIR /app -EXPOSE 8000 +EXPOSE 5173 + +ENTRYPOINT ["./hack/start-docs.sh"] -# Start development server by default -ENTRYPOINT ["mkdocs"] -CMD ["serve", "--dev-addr=0.0.0.0:8000"] \ No newline at end of file diff --git a/docs/api-reference/api.md b/docs/api-reference/api.md index 24d5dddd..13bf47ad 100644 --- a/docs/api-reference/api.md +++ b/docs/api-reference/api.md @@ -30,7 +30,7 @@ HTTPBootConfig is the Schema for the httpbootconfigs API | --- | --- | --- | --- | | `apiVersion` _string_ | `boot.ironcore.dev/v1alpha1` | | | | `kind` _string_ | `HTTPBootConfig` | | | -| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | | | +| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | | | | `spec` _[HTTPBootConfigSpec](#httpbootconfigspec)_ | | | | | `status` _[HTTPBootConfigStatus](#httpbootconfigstatus)_ | | | | @@ -49,7 +49,7 @@ _Appears in:_ | Field | Description | Default | Validation | | --- | --- | --- | --- | | `systemUUID` _string_ | SystemUUID is the unique identifier (UUID) of the server. | | | -| `ignitionSecretRef` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#localobjectreference-v1-core)_ | IgnitionSecretRef is a reference to the secret containing Ignition configuration. | | | +| `ignitionSecretRef` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core)_ | IgnitionSecretRef is a reference to the secret containing Ignition configuration. | | | | `networkIdentifiers` _string array_ | NetworkIdentifiers is a list of IP addresses and MAC Addresses assigned to the server. | | | | `ukiURL` _string_ | UKIURL is the URL where the UKI (Unified Kernel Image) is hosted. | | | @@ -86,7 +86,7 @@ _Appears in:_ | Field | Description | Default | Validation | | --- | --- | --- | --- | | `state` _[HTTPBootConfigState](#httpbootconfigstate)_ | | | | -| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#condition-v1-meta) array_ | Conditions represent the latest available observations of the IPXEBootConfig's state | | | +| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#condition-v1-meta) array_ | Conditions represent the latest available observations of the IPXEBootConfig's state | | | #### IPXEBootConfig @@ -103,7 +103,7 @@ IPXEBootConfig is the Schema for the ipxebootconfigs API | --- | --- | --- | --- | | `apiVersion` _string_ | `boot.ironcore.dev/v1alpha1` | | | | `kind` _string_ | `IPXEBootConfig` | | | -| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | | | +| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | | | | `spec` _[IPXEBootConfigSpec](#ipxebootconfigspec)_ | | | | | `status` _[IPXEBootConfigStatus](#ipxebootconfigstatus)_ | | | | @@ -128,8 +128,8 @@ _Appears in:_ | `initrdURL` _string_ | InitrdURL is the URL where the Initrd (initial RAM disk) of the OS is hosted, eg. the URL to the Initrd layer of the OS OCI image. | | | | `squashfsURL` _string_ | SquashfsURL is the URL where the Squashfs of the OS is hosted, eg. the URL to the Squashfs layer of the OS OCI image. | | | | `ipxeServerURL` _string_ | IPXEServerURL is deprecated and will be removed. | | | -| `ignitionSecretRef` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#localobjectreference-v1-core)_ | IgnitionSecretRef is a reference to the secret containing the Ignition configuration. | | | -| `ipxeScriptSecretRef` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#localobjectreference-v1-core)_ | IPXEScriptSecretRef is a reference to the secret containing the custom IPXE script. | | | +| `ignitionSecretRef` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core)_ | IgnitionSecretRef is a reference to the secret containing the Ignition configuration. | | | +| `ipxeScriptSecretRef` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#localobjectreference-v1-core)_ | IPXEScriptSecretRef is a reference to the secret containing the custom IPXE script. | | | #### IPXEBootConfigState @@ -164,6 +164,6 @@ _Appears in:_ | Field | Description | Default | Validation | | --- | --- | --- | --- | | `state` _[IPXEBootConfigState](#ipxebootconfigstate)_ | Important: Run "make" to regenerate code after modifying this file | | | -| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#condition-v1-meta) array_ | Conditions represent the latest available observations of the IPXEBootConfig's state | | | +| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#condition-v1-meta) array_ | Conditions represent the latest available observations of the IPXEBootConfig's state | | | diff --git a/docs/architecture.md b/docs/architecture.md index b46e9744..75136ee7 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -17,9 +17,9 @@ Following are the Kubernetes CR and related controllers used to manage the boot ## Architectural Diagrams -![Diagram1](../assets/diagram1.png) +![Diagram1](./assets/diagram1.png) -![Diagram2](../assets/diagram2.png) +![Diagram2](./assets/diagram2.png) ### Workflow diff --git a/docs/development/dev_docs.md b/docs/development/dev_docs.md index 145d5fd9..ceceb9e6 100644 --- a/docs/development/dev_docs.md +++ b/docs/development/dev_docs.md @@ -8,7 +8,7 @@ You can run the documentation via: make startdocs ``` -You can remove the `mkdocs` container image by running: +You can remove the docs container image by running: ```shell make cleandocs diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..7a53a8be --- /dev/null +++ b/docs/index.md @@ -0,0 +1,29 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "Boot Operator" + text: "Kubernetes operator for bare metal boot provisioning" + tagline: "Run iPXE, HTTPBoot, image proxy, and ignition endpoints as Kubernetes-native infrastructure" + image: + src: https://raw.githubusercontent.com/ironcore-dev/ironcore/refs/heads/main/docs/assets/logo_borderless.svg + alt: IronCore + actions: + - theme: brand + text: Getting started + link: /quickstart + - theme: alt + text: API Reference + link: /api-reference/api + +features: + - title: Declarative Boot Configuration + details: Define per-machine boot behavior using Kubernetes resources and let controllers reconcile the full boot flow. + - title: Secure Image Delivery + details: Enforce OCI registry allow-lists at reconciliation and runtime while proxying images to nodes. + - title: Native Kubernetes Integration + details: Fully Kubernetes-native API for managing boot configuration, lifecycle, and infrastructure endpoints. + - title: Built-in Boot Services + details: Provides iPXE, HTTPBoot, ignition, and image proxy endpoints out of the box. +--- \ No newline at end of file diff --git a/docs/installation/helm.md b/docs/installation/helm.md new file mode 100644 index 00000000..0b719dca --- /dev/null +++ b/docs/installation/helm.md @@ -0,0 +1,8 @@ +# Helm + +This page describes installing Boot Operator with Helm. + +For now, it reuses the existing Helm installation guide content: + +- [Helm Installation Guide](../usage/installation.md) + diff --git a/docs/installation/kustomize.md b/docs/installation/kustomize.md new file mode 100644 index 00000000..4e659596 --- /dev/null +++ b/docs/installation/kustomize.md @@ -0,0 +1,13 @@ +# Kustomize + +This page is a stub to match the shared docs structure across IronCore operators. + +## Install CRDs and controller + +Use the manifests from `config/` (or the released install YAML, if published for your version). + +## Next Steps + +- [Quickstart](../quickstart.md) +- [Architecture](../architecture.md) + diff --git a/docs/public/bmwe.png b/docs/public/bmwe.png new file mode 100644 index 0000000000000000000000000000000000000000..ab642e34a7a8498d6c39c4e6e3a247108dc68e73 GIT binary patch literal 63318 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 R6-R*2O=I(Gm4;3){tJe3g)#sD literal 0 HcmV?d00001 diff --git a/docs/quickstart.md b/docs/quickstart.md new file mode 100644 index 00000000..a10b1026 --- /dev/null +++ b/docs/quickstart.md @@ -0,0 +1,24 @@ +# Quickstart + +Boot Operator is Kubernetes-native infrastructure for bare metal network boot: it serves HTTPBoot and iPXE (plus supporting endpoints like image proxy and ignition) based on declarative CRDs. + +This quickstart gets you from zero to a running Boot Operator deployment and your first boot configuration. + +By the end you will have: + +- A controller deployment running in your cluster +- The Boot Operator APIs (CRDs) installed and ready to use +- A clear path to wiring your machines to HTTPBoot or iPXE and iterating from there + +## Install + +Choose one of: + +- [Helm](./installation/helm.md) +- [Kustomize](./installation/kustomize.md) + +## Next Steps + +- Read the [Architecture](./architecture.md) +- Use the CLI: [bootctl](./usage/bootctl.md) +- Browse the [API Reference](./api-reference/api.md) diff --git a/docs/requirements.txt b/docs/requirements.txt deleted file mode 100644 index b5a29e7f..00000000 --- a/docs/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -# your mkdocs plugins go here \ No newline at end of file diff --git a/hack/api-reference/config.yaml b/hack/api-reference/config.yaml index f4e72a18..6b8dbd1f 100644 --- a/hack/api-reference/config.yaml +++ b/hack/api-reference/config.yaml @@ -6,7 +6,7 @@ processor: - "List$" render: - kubernetesVersion: "1.34" + kubernetesVersion: "1.35" externalPackages: - typeMatchPrefix: "^net/netip" docsURLTemplate: "https://pkg.go.dev/net/netip#{{.TypeIdentifier}}" @@ -15,7 +15,7 @@ render: - typeMatchPrefix: "^k8s\\.io/apimachinery/pkg/types" docsURLTemplate: "https://pkg.go.dev/k8s.io/apimachinery/pkg/types#{{.TypeIdentifier}}" - typeMatchPrefix: "^k8s\\.io/(api|apimachinery/pkg/apis)/" - docsURLTemplate: "https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#{{lower .TypeIdentifier}}-{{arrIndex .PackageSegments -1}}-{{arrIndex .PackageSegments -2}}" + docsURLTemplate: "https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.35/#{{lower .TypeIdentifier}}-{{arrIndex .PackageSegments -1}}-{{arrIndex .PackageSegments -2}}" typeDisplayNamePrefixOverrides: k8s.io/api/: "Kubernetes " k8s.io/apimachinery/pkg/apis/: "Kubernetes " diff --git a/hack/start-docs.sh b/hack/start-docs.sh new file mode 100755 index 00000000..ddd4770e --- /dev/null +++ b/hack/start-docs.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +npm ci + +npx vitepress dev docs --host 0.0.0.0 & +VITEPRESS_PID=$! + +handle_sigint() { + echo "Stopping VitePress dev server..." + kill -TERM "$VITEPRESS_PID" + wait "$VITEPRESS_PID" + exit 0 +} + +trap handle_sigint SIGINT + +wait "$VITEPRESS_PID" + diff --git a/mkdocs.yml b/mkdocs.yml deleted file mode 100644 index 2cffdb29..00000000 --- a/mkdocs.yml +++ /dev/null @@ -1,62 +0,0 @@ -site_name: IronCore / Boot Operator -repo_url: https://github.com/ironcore-dev/boot-operator/ -edit_uri: edit/main/docs/ -theme: - icon: - repo: fontawesome/brands/github - features: - - navigation.instant - - navigation.tracking - - navigation.expand - - navigation.indexes - - navigation.top - name: material - logo: https://raw.githubusercontent.com/ironcore-dev/ironcore/main/docs/assets/logo.svg - favicon: https://raw.githubusercontent.com/ironcore-dev/ironcore/main/docs/assets/favicon/favicon.ico - palette: - - media: "(prefers-color-scheme: light)" - scheme: default - primary: white - toggle: - icon: material/weather-night - name: Switch to dark mode - - media: "(prefers-color-scheme: dark)" - scheme: slate - primary: black - toggle: - icon: material/weather-sunny - name: Switch to light mode - font: - text: 'Work Sans' - -plugins: -- search - -markdown_extensions: -- pymdownx.highlight -- pymdownx.superfences: - custom_fences: - - name: mermaid - class: mermaid - format: !!python/name:pymdownx.superfences.fence_code_format -- pymdownx.snippets -- codehilite -- admonition -- abbr -- toc: - permalink: true - -nav: -- Home: README.md -- Architecture: architecture.md -- Usage: - - Bootctl: usage/bootctl.md -- Development Guide: - - Documentation: development/dev_docs.md - - Create Sample UKI Image: development/create_uki.md -- API Reference: api-reference/api.md - -extra: - social: - - icon: fontawesome/brands/github - link: https://github.com/ironcore-dev/boot-operator \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..8ed2d254 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3981 @@ +{ + "name": "app", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "vitepress": "^1.6.4", + "vitepress-plugin-mermaid": "^2.0.17" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz", + "integrity": "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.17.7", + "@algolia/autocomplete-shared": "1.17.7" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz", + "integrity": "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.7" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz", + "integrity": "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.7" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz", + "integrity": "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.27.0.tgz", + "integrity": "sha512-SITU5umoknxETtw67TxJu9njyMkWiH8pM+Bvw4dzfuIrIAT6Y1rmwV4y0A0didWoT+6xVuammIykbtBMolBcmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.27.0", + "@algolia/requester-browser-xhr": "5.27.0", + "@algolia/requester-fetch": "5.27.0", + "@algolia/requester-node-http": "5.27.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.27.0.tgz", + "integrity": "sha512-go1b9qIZK5vYEQ7jD2bsfhhhVsoh9cFxQ5xF8TzTsg2WOCZR3O92oXCkq15SOK0ngJfqDU6a/k0oZ4KuEnih1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.27.0", + "@algolia/requester-browser-xhr": "5.27.0", + "@algolia/requester-fetch": "5.27.0", + "@algolia/requester-node-http": "5.27.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.27.0.tgz", + "integrity": "sha512-tnFOzdNuMzsz93kOClj3fKfuYoF3oYaEB5bggULSj075GJ7HUNedBEm7a6ScrjtnOaOtipbnT7veUpHA4o4wEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.27.0.tgz", + "integrity": "sha512-y1qgw39qZijjQBXrqZTiwK1cWgWGRiLpJNWBv9w36nVMKfl9kInrfsYmdBAfmlhVgF/+Woe0y1jQ7pa4HyShAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.27.0", + "@algolia/requester-browser-xhr": "5.27.0", + "@algolia/requester-fetch": "5.27.0", + "@algolia/requester-node-http": "5.27.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.27.0.tgz", + "integrity": "sha512-XluG9qPZKEbiLoIfXTKbABsWDNOMPx0t6T2ImJTTeuX+U/zBdmfcqqgcgkqXp+vbXof/XX/4of9Eqo1JaqEmKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.27.0", + "@algolia/requester-browser-xhr": "5.27.0", + "@algolia/requester-fetch": "5.27.0", + "@algolia/requester-node-http": "5.27.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.27.0.tgz", + "integrity": "sha512-V8/To+SsAl2sdw2AAjeLJuCW1L+xpz+LAGerJK7HKqHzE5yQhWmIWZTzqYQcojkii4iBMYn0y3+uReWqT8XVSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.27.0", + "@algolia/requester-browser-xhr": "5.27.0", + "@algolia/requester-fetch": "5.27.0", + "@algolia/requester-node-http": "5.27.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.27.0.tgz", + "integrity": "sha512-EJJ7WmvmUXZdchueKFCK8UZFyLqy4Hz64snNp0cTc7c0MKaSeDGYEDxVsIJKp15r7ORaoGxSyS4y6BGZMXYuCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.27.0", + "@algolia/requester-browser-xhr": "5.27.0", + "@algolia/requester-fetch": "5.27.0", + "@algolia/requester-node-http": "5.27.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.27.0.tgz", + "integrity": "sha512-xNCyWeqpmEo4EdmpG57Fs1fJIQcPwt5NnJ6MBdXnUdMVXF4f5PHgza+HQWQQcYpCsune96jfmR0v7us6gRIlCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.27.0", + "@algolia/requester-browser-xhr": "5.27.0", + "@algolia/requester-fetch": "5.27.0", + "@algolia/requester-node-http": "5.27.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.27.0.tgz", + "integrity": "sha512-P0NDiEFyt9UYQLBI0IQocIT7xHpjMpoFN3UDeerbztlkH9HdqT0GGh1SHYmNWpbMWIGWhSJTtz6kSIWvFu4+pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.27.0", + "@algolia/requester-browser-xhr": "5.27.0", + "@algolia/requester-fetch": "5.27.0", + "@algolia/requester-node-http": "5.27.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.27.0.tgz", + "integrity": "sha512-cqfTMF1d1cc7hg0vITNAFxJZas7MJ4Obc36WwkKpY23NOtGb+4tH9X7UKlQa2PmTgbXIANoJ/DAQTeiVlD2I4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.27.0", + "@algolia/requester-browser-xhr": "5.27.0", + "@algolia/requester-fetch": "5.27.0", + "@algolia/requester-node-http": "5.27.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.27.0.tgz", + "integrity": "sha512-ErenYTcXl16wYXtf0pxLl9KLVxIztuehqXHfW9nNsD8mz9OX42HbXuPzT7y6JcPiWJpc/UU/LY5wBTB65vsEUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.27.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.27.0.tgz", + "integrity": "sha512-CNOvmXsVi+IvT7z1d+6X7FveVkgEQwTNgipjQCHTIbF9KSMfZR7tUsJC+NpELrm10ALdOMauah84ybs9rw1cKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.27.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.27.0.tgz", + "integrity": "sha512-Nx9EdLYZDsaYFTthqmc0XcVvsx6jqeEX8fNiYOB5i2HboQwl8pJPj1jFhGqoGd0KG7KFR+sdPO5/e0EDDAru2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.27.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", + "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@braintree/sanitize-url": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", + "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.1.tgz", + "integrity": "sha512-fRHyv6/f542qQqiRGalrfJl/evD39mAvbJLCekPazhiextEatq1Jx1K/i9gSd5NNO0ds03ek0Cbo/4uVKmOBcw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@chevrotain/gast": "11.1.1", + "@chevrotain/types": "11.1.1", + "lodash-es": "4.17.23" + } + }, + "node_modules/@chevrotain/gast": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.1.tgz", + "integrity": "sha512-Ko/5vPEYy1vn5CbCjjvnSO4U7GgxyGm+dfUZZJIWTlQFkXkyym0jFYrWEU10hyCjrA7rQtiHtBr0EaZqvHFZvg==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@chevrotain/types": "11.1.1", + "lodash-es": "4.17.23" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.1.tgz", + "integrity": "sha512-ctRw1OKSXkOrR8VTvOxrQ5USEc4sNrfwXHa1NuTcR7wre4YbjPcKw+82C2uylg/TEwFRgwLmbhlln4qkmDyteg==", + "dev": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@chevrotain/types": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.1.tgz", + "integrity": "sha512-wb2ToxG8LkgPYnKe9FH8oGn3TMCBdnwiuNC5l5y+CtlaVRbCytU0kbVsk6CGrqTL4ZN4ksJa0TXOYbxpbthtqw==", + "dev": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@chevrotain/utils": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.1.tgz", + "integrity": "sha512-71eTYMzYXYSFPrbg/ZwftSaSDld7UYlS8OQa3lNnn9jzNtpFbaReRRyghzqS7rI3CDaorqpPJJcXGHK+FE1TVQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@docsearch/css": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.8.2.tgz", + "integrity": "sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@docsearch/js": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.8.2.tgz", + "integrity": "sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/react": "3.8.2", + "preact": "^10.0.0" + } + }, + "node_modules/@docsearch/react": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.8.2.tgz", + "integrity": "sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "1.17.7", + "@algolia/autocomplete-preset-algolia": "1.17.7", + "@docsearch/css": "3.8.2", + "algoliasearch": "^5.14.2" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@iconify-json/simple-icons": { + "version": "1.2.38", + "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.38.tgz", + "integrity": "sha512-mvMeFQgVjoHanQE9Q7ihmriEXAorjLZW+crUgQspDjFpzWuQp2RZMTppl1MN6TQztMVTsNFgF6LDKsp+v1RYRg==", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.0.tgz", + "integrity": "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@antfu/install-pkg": "^1.1.0", + "@iconify/types": "^2.0.0", + "mlly": "^1.8.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@mermaid-js/mermaid-mindmap": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@mermaid-js/mermaid-mindmap/-/mermaid-mindmap-9.3.0.tgz", + "integrity": "sha512-IhtYSVBBRYviH1Ehu8gk69pMDF8DSRqXBRDMWrEfHoaMruHeaP2DXA3PBnuwsMaCdPQhlUUcy/7DBLAEIXvCAw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@braintree/sanitize-url": "^6.0.0", + "cytoscape": "^3.23.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.1.0", + "d3": "^7.0.0", + "khroma": "^2.0.0", + "non-layered-tidy-tree-layout": "^2.0.2" + } + }, + "node_modules/@mermaid-js/mermaid-mindmap/node_modules/@braintree/sanitize-url": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", + "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@mermaid-js/parser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.0.0.tgz", + "integrity": "sha512-vvK0Hi/VWndxoh03Mmz6wa1KDriSPjS2XMZL/1l19HFwygiObEEoEwSDxOqyLzzAI6J2PU3261JjTMTO7x+BPw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "langium": "^4.0.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", + "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", + "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^3.1.0" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", + "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.5.0.tgz", + "integrity": "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.5.0.tgz", + "integrity": "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/transformers": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-2.5.0.tgz", + "integrity": "sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "2.5.0", + "@shikijs/types": "2.5.0" + } + }, + "node_modules/@shikijs/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", + "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", + "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.16.tgz", + "integrity": "sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.2", + "@vue/shared": "3.5.16", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.16.tgz", + "integrity": "sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.16", + "@vue/shared": "3.5.16" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.16.tgz", + "integrity": "sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.2", + "@vue/compiler-core": "3.5.16", + "@vue/compiler-dom": "3.5.16", + "@vue/compiler-ssr": "3.5.16", + "@vue/shared": "3.5.16", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.17", + "postcss": "^8.5.3", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.16.tgz", + "integrity": "sha512-d2V7kfxbdsjrDSGlJE7my1ZzCXViEcqN6w14DOsDrUCHEA6vbnVCpRFfrc4ryCP/lCKzX2eS1YtnLE/BuC9f/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.16", + "@vue/shared": "3.5.16" + } + }, + "node_modules/@vue/devtools-api": { + "version": "7.7.6", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.6.tgz", + "integrity": "sha512-b2Xx0KvXZObePpXPYHvBRRJLDQn5nhKjXh7vUhMEtWxz1AYNFOVIsh5+HLP8xDGL7sy+Q7hXeUxPHB/KgbtsPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.7.6" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.7.6", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.6.tgz", + "integrity": "sha512-geu7ds7tem2Y7Wz+WgbnbZ6T5eadOvozHZ23Atk/8tksHMFOFylKi1xgGlQlVn0wlkEf4hu+vd5ctj1G4kFtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.7.6", + "birpc": "^2.3.0", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.2" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.7.6", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.6.tgz", + "integrity": "sha512-yFEgJZ/WblEsojQQceuyK6FzpFDx4kqrz2ohInxNj5/DnhoX023upTv4OD6lNPLAA5LLkbwPVb10o/7b+Y4FVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.16.tgz", + "integrity": "sha512-FG5Q5ee/kxhIm1p2bykPpPwqiUBV3kFySsHEQha5BJvjXdZTUfmya7wP7zC39dFuZAcf/PD5S4Lni55vGLMhvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.16" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.16.tgz", + "integrity": "sha512-bw5Ykq6+JFHYxrQa7Tjr+VSzw7Dj4ldR/udyBZbq73fCdJmyy5MPIFR9IX/M5Qs+TtTjuyUTCnmK3lWWwpAcFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.16", + "@vue/shared": "3.5.16" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.16.tgz", + "integrity": "sha512-T1qqYJsG2xMGhImRUV9y/RseB9d0eCYZQ4CWca9ztCuiPj/XWNNN+lkNBuzVbia5z4/cgxdL28NoQCvC0Xcfww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.16", + "@vue/runtime-core": "3.5.16", + "@vue/shared": "3.5.16", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.16.tgz", + "integrity": "sha512-BrX0qLiv/WugguGsnQUJiYOE0Fe5mZTwi6b7X/ybGB0vfrPH9z0gD/Y6WOR1sGCgX4gc25L1RYS5eYQKDMoNIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.16", + "@vue/shared": "3.5.16" + }, + "peerDependencies": { + "vue": "3.5.16" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.16.tgz", + "integrity": "sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz", + "integrity": "sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/integrations": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-12.8.2.tgz", + "integrity": "sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vueuse/core": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "^4", + "axios": "^1", + "change-case": "^5", + "drauu": "^0.4", + "focus-trap": "^7", + "fuse.js": "^7", + "idb-keyval": "^6", + "jwt-decode": "^4", + "nprogress": "^0.2", + "qrcode": "^1.5", + "sortablejs": "^1", + "universal-cookie": "^7" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.8.2.tgz", + "integrity": "sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz", + "integrity": "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/algoliasearch": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.27.0.tgz", + "integrity": "sha512-2PvAgvxxJzA3+dB+ERfS2JPdvUsxNf89Cc2GF5iCcFupTULOwmbfinvqrC4Qj9nHJJDNf494NqEN/1f9177ZTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-abtesting": "5.27.0", + "@algolia/client-analytics": "5.27.0", + "@algolia/client-common": "5.27.0", + "@algolia/client-insights": "5.27.0", + "@algolia/client-personalization": "5.27.0", + "@algolia/client-query-suggestions": "5.27.0", + "@algolia/client-search": "5.27.0", + "@algolia/ingestion": "1.27.0", + "@algolia/monitoring": "1.27.0", + "@algolia/recommend": "5.27.0", + "@algolia/requester-browser-xhr": "5.27.0", + "@algolia/requester-fetch": "5.27.0", + "@algolia/requester-node-http": "5.27.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/birpc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.3.0.tgz", + "integrity": "sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chevrotain": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.1.tgz", + "integrity": "sha512-f0yv5CPKaFxfsPTBzX7vGuim4oIC1/gcS7LUGdBSwl2dU6+FON6LVUksdOo1qJjoUvXNn45urgh8C+0a24pACQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@chevrotain/cst-dts-gen": "11.1.1", + "@chevrotain/gast": "11.1.1", + "@chevrotain/regexp-to-ast": "11.1.1", + "@chevrotain/types": "11.1.1", + "@chevrotain/utils": "11.1.1", + "lodash-es": "4.17.23" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "dev": true, + "license": "MIT", + "dependencies": { + "layout-base": "^1.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cytoscape": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.32.0.tgz", + "integrity": "sha512-5JHBC9n75kz5851jeklCPmZWcg3hUe6sjqJvyk3+hVqFaKcHwHgxsjeN1yLmggoUc6STbtm9/NQyabQehfjvWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "dev": true, + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dev": true, + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dev": true, + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dev": true, + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.13.tgz", + "integrity": "sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" + } + }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "dev": true, + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dompurify": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz", + "integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==", + "dev": true, + "license": "(MPL-2.0 OR Apache-2.0)", + "peer": true, + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/focus-trap": { + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.5.tgz", + "integrity": "sha512-7Ke1jyybbbPZyZXFxEftUtxFGLMpE2n6A+z//m4CRDlj0hW+o3iYSmh8nFlYMurOiJVDmJRilUQtJr08KfIxlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tabbable": "^6.2.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/katex": { + "version": "0.16.22", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", + "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", + "dev": true, + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "peer": true, + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==", + "dev": true + }, + "node_modules/langium": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/langium/-/langium-4.2.1.tgz", + "integrity": "sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "chevrotain": "~11.1.1", + "chevrotain-allstar": "~0.3.1", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.1.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/marked": { + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.2.1.tgz", + "integrity": "sha512-r3UrXED9lMlHF97jJByry90cwrZBBvZmjG1L68oYfuPMW+uDTnuMbyJDymCWwbTE+f+3LhpNDKfpR3a3saFyjA==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mermaid": { + "version": "11.12.3", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.3.tgz", + "integrity": "sha512-wN5ZSgJQIC+CHJut9xaKWsknLxaFBwCPwPkGTSUYrTiHORWvpT8RxGk849HPnpUAQ+/9BPRqYb80jTpearrHzQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@braintree/sanitize-url": "^7.1.1", + "@iconify/utils": "^3.0.1", + "@mermaid-js/parser": "^1.0.0", + "@types/d3": "^7.4.3", + "cytoscape": "^3.29.3", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.13", + "dayjs": "^1.11.18", + "dompurify": "^3.2.5", + "katex": "^0.16.22", + "khroma": "^2.1.0", + "lodash-es": "^4.17.23", + "marked": "^16.2.1", + "roughjs": "^4.6.6", + "stylis": "^4.3.6", + "ts-dedent": "^2.2.0", + "uuid": "^11.1.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/minisearch": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.2.tgz", + "integrity": "sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/mlly": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/non-layered-tidy-tree-layout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", + "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/oniguruma-to-es": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", + "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/package-manager-detector": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" + } + }, + "node_modules/postcss": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", + "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/preact": { + "version": "10.28.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.28.2.tgz", + "integrity": "sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "dev": true, + "license": "MIT" + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/rollup": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/search-insights": { + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/shiki": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.5.0.tgz", + "integrity": "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "2.5.0", + "@shikijs/engine-javascript": "2.5.0", + "@shikijs/engine-oniguruma": "2.5.0", + "@shikijs/langs": "2.5.0", + "@shikijs/themes": "2.5.0", + "@shikijs/types": "2.5.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/superjson": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", + "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.10" + } + }, + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "peer": true, + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitepress": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.6.4.tgz", + "integrity": "sha512-+2ym1/+0VVrbhNyRoFFesVvBvHAVMZMK0rw60E3X/5349M1GuVdKeazuksqopEdvkKwKGs21Q729jX81/bkBJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docsearch/css": "3.8.2", + "@docsearch/js": "3.8.2", + "@iconify-json/simple-icons": "^1.2.21", + "@shikijs/core": "^2.1.0", + "@shikijs/transformers": "^2.1.0", + "@shikijs/types": "^2.1.0", + "@types/markdown-it": "^14.1.2", + "@vitejs/plugin-vue": "^5.2.1", + "@vue/devtools-api": "^7.7.0", + "@vue/shared": "^3.5.13", + "@vueuse/core": "^12.4.0", + "@vueuse/integrations": "^12.4.0", + "focus-trap": "^7.6.4", + "mark.js": "8.11.1", + "minisearch": "^7.1.1", + "shiki": "^2.1.0", + "vite": "^5.4.14", + "vue": "^3.5.13" + }, + "bin": { + "vitepress": "bin/vitepress.js" + }, + "peerDependencies": { + "markdown-it-mathjax3": "^4", + "postcss": "^8" + }, + "peerDependenciesMeta": { + "markdown-it-mathjax3": { + "optional": true + }, + "postcss": { + "optional": true + } + } + }, + "node_modules/vitepress-plugin-mermaid": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/vitepress-plugin-mermaid/-/vitepress-plugin-mermaid-2.0.17.tgz", + "integrity": "sha512-IUzYpwf61GC6k0XzfmAmNrLvMi9TRrVRMsUyCA8KNXhg/mQ1VqWnO0/tBVPiX5UoKF1mDUwqn5QV4qAJl6JnUg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "@mermaid-js/mermaid-mindmap": "^9.3.0" + }, + "peerDependencies": { + "mermaid": "10 || 11", + "vitepress": "^1.0.0 || ^1.0.0-alpha" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/vue": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.16.tgz", + "integrity": "sha512-rjOV2ecxMd5SiAmof2xzh2WxntRcigkX/He4YFJ6WdRvVUrbt6DxC1Iujh10XLl8xCDRDtGKMeO3D+pRQ1PP9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.16", + "@vue/compiler-sfc": "3.5.16", + "@vue/runtime-dom": "3.5.16", + "@vue/server-renderer": "3.5.16", + "@vue/shared": "3.5.16" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..5cd901c0 --- /dev/null +++ b/package.json @@ -0,0 +1,12 @@ +{ + "devDependencies": { + "vitepress": "^1.6.4", + "vitepress-plugin-mermaid": "^2.0.17" + }, + "scripts": { + "docs:dev": "node_modules/.bin/vitepress dev docs", + "docs:build": "node_modules/.bin/vitepress build docs", + "docs:preview": "node_modules/.bin/vitepress preview docs" + } +} +